In a previous post we introduced the maximum clique problem (MCP) and reported performance of the efficient bit-parallel exact solver BBMC, implemented with BITSCAN and GRAPH libraries available in the Biicode repositories pablodev/bitscan and pablodev/graph respectively. BBMC is concerned with small and middle size graphs.
Also very challenging are real networks that arise from different fields such as social networks, infrastructure networks, scientific networks and so on. These graphs tend to have many thousands—even millions— of nodes but are usually very sparse —the Network Data Repository hosts more than 500 of such graphs—. An open problem is finding the clique number (the cardinality of a maximum clique) of such networks to get an insight into their structure. Unfortunately the problem is NP-hard and no polynomial algorithm is expected to be found; tailoring and exact solver for this task is as yet an open question .
BBMCSP can quickly solve the maximum clique problem of sparse networks
Only just some months ago it has been possible to tailor BBMC for real networks. The main problem in successful exact solvers for the middle size case is that the majority of them encode the adjacency matrix in full, whereas real graphs require some form of compression—i.e. typically a list of edges—. The new BBMCSP algorithm uses the sparse_graph type available in GRAPH to compress the adjacency matrix, while still taking advantage of fast bit string operations between vertex sets.
As in the previous post we will not go into implementation details here —see the pablodev/copt block to look at some source code—but report performance of BBMCSP over a number of massive networks available in the Network Data Repository. Experiments have been run on a Linux workstation with an Intel(R) Xeon(R) CPU E5-2690 v2 multi-core processor and 128GB of main memory, using always a single-core. The table reports comparison results against previous best PMC algorithm over 30 massive graphs. In the table each row is a network. Header dmax and davg stand for maximum graph degree and average graph degree respectively; w is the cardinality of the maximum clique, BBMCSP and PMC gives search time performance in seconds for both algorithms and PMC/BBMCSP reports the time ratio.
These and other algorithms have been tested over more than 275 real graphs. The full raw data together with a BBMCSP binary is available here. We believe BBMCSP results are clearly best on average for a stand-alone exact solver on massive graphs. If this is not the case, please let us know.
If we get a favorable feedback from readers interested in BBMCSP and/or in the maximum clique problem tailored for very large or massive graphs we will explain the BBMCSP algorithm in full together with implementation details concerning BITSCAN and GRAPH.
Hope you enjoy this new BITSCAN and GRAPH application and, as always, we look forward to read what you think. Just click on the sidebar button to try biicode, check our docs, forum and/or Stackoverflow tag for questions and answers or comment below to tell us your enquiries.
 Pardalos, P. Rebennack, S.; Experimental Algorithms. Lecture Notes in Computer Science, Volume 6049, 2010, pp 13-22.