A branch and bound algorithm for the maximum clique problem