max_cliques#
- graph_tool.topology.max_cliques(g)[source]#
Return an iterator over the maximal cliques of the graph.
- Parameters:
- g
Graph
Graph to be used.
- g
- Returns:
- max_cliquesiterator over
numpy.ndarray
instances Iterator over lists of vertices corresponding to the maximal cliques.
- max_cliquesiterator over
Notes
This implements the Bron-Kerbosh algorithm [bron_algorithm_1973] [bron-kerbosh-wiki] with pivoting [tomita_worst-case_2006] [cazals_note_2008].
The worst case complexity of this algorithm is \(O(3^{V/3})\) for a graph of \(V\) vertices, but for sparse graphs it is typically much faster.
References
[bron_algorithm_1973]Coen Bron and Joep Kerbosch, “Algorithm 457: finding all cliques of an undirected graph”, Commun. ACM 16, 9, 575-577 (1973), DOI: 10.1145/362342.362367 [sci-hub, @tor]
[tomita_worst-case_2006]Etsuji Tomita, Akira Tanaka, and Haruhisa Takahashi. “The worst-case time complexity for generating all maximal cliques and computational experiments.” Theoretical Computer Science 363.1 28-42 (2006), DOI: 10.1016/j.tcs.2006.06.015 [sci-hub, @tor]
[cazals_note_2008]Frédéric Cazals, and Chinmay Karande, “A note on the problem of reporting maximal cliques.” Theoretical Computer Science 407.1-3 564-568 (2008), DOI: 10.1016/j.tcs.2008.05.010 [sci-hub, @tor]
Examples
>>> g = gt.collection.data["polblogs"] >>> sum(1 for c in gt.max_cliques(g)) 49618