@techreport{oai:ipsj.ixsq.nii.ac.jp:00032671, author = {Etsuji, Tomita and Akira, Tanaka and Haruhisa, Takahashi and Etsuji, Tomita and Akira, Tanaka and Haruhisa, Takahashi}, issue = {98(1989-AL-012)}, month = {Nov}, note = {We present an algorithm for finding all the cliques of an undirected graph. It is a very simple backtracking searching algorithm whose basic techniques are based upon Bron and Kerbosch's and it outputs the cliques found in a tree-like form. Then we prove that its worst-case time complexity is O(3^<n/3>)=O(2^<n/1.89...>)=O(1.44^<...n>) for an n-vertex graph. This is optimal with respect to n since there exist up to 3 ^<n/3> cliques in an n-vertex graph. It is noted that a slight modification of this algorithm gives an O(2^<n/2.98>)-time simple algorithm for finding only one maximum clique., We present an algorithm for finding all the cliques of an undirected graph. It is a very simple backtracking searching algorithm, whose basic techniques are based upon Bron and Kerbosch's, and it outputs the cliques found in a tree-like form. Then we prove that its worst-case time complexity is O(3^<n/3>)=O(2^<n/1.89...>)=O(1.44^<...n>) for an n-vertex graph. This is optimal with respect to n since there exist up to 3 ^<n/3> cliques in an n-vertex graph. It is noted that a slight modification of this algorithm gives an O(2^<n/2.98>)-time simple algorithm for finding only one maximum clique.}, title = {An Optimal Algorithm for Finding All the Cliques}, year = {1989} }