There is a vast literature covering algorithms for this problem. An extensive survey is , available by anonymous FTP from DIMACS.
A very common approach to the problem of finding (truly) maximum clique is to use some variant on implicit enumeration. Some examples of use of this technique are Bron and Kerbosch , Akkoyunlu , Gerhards and Lindenberg , Loukakis and Tsouros , and Carraghan and Pardalos .
Approaches based on branch and bound include Babel  Balas and Yu , and Balas and Xue , which use coloring to obtain the required bounds, and Pardalos and Rodgers , which uses quadratic programming to obtain its bounds.
Polyedral approaches have been suggested by Nemhauser and Trotter  and Balas and Samuelsson .
Tarjan and Trojanowski  develop a recursive routine which has a worst case bound of .
There has been much theoretical work on the application of approximation algorithms to random graphs (where typically a random graph is one chosen uniformly at random from the set of all labeled graphs). Bollobás and Erdös  and Bollobás and Thomason  have very strong bounds on the size of the largest clique. Pittel  has analyzed a number of heuristics for such graphs, and found none that will find the largest clique in this model. Jerrum  has extended this work to include heuristics based on simulated annealing.
Other heuristic approaches that have been considered for clique include the ``GRASP'' technique of Feo, Resende, and Smith  and the use of interior point methods by Karmarkar, Ramakrishnan, and Resende .