Algorithm and references¶
Pivoter¶
Pivoter is an exact clique counting algorithm due to Shweta Jain and C. Seshadhri, described in:
- The Power of Pivoting for Exact Clique Counting (January 2020).
It avoids listing every maximal clique by organizing computation around a Succinct Clique Tree (SCT) and pivoting ideas adapted from classical clique enumeration, with degeneracy-based structure exploited for sparse graphs.
Reference code from the authors:
pivoterpy reimplements that workflow with a Python kernel and a Rust extension; it is not a line-for-line port of the authors’ Julia/C code, but follows the same family of ideas.
Degeneracy ordering¶
pivoterpy uses a degeneracy ordering of vertices (Batagelj–Završnik style in the current Rust pipeline) as part of the search structure. That choice affects performance and recursion shape, not the final counts for a fixed simple graph.
Related work (short timeline)¶
These are classic touchpoints in maximal clique listing and clique counting; Pivoter sits in the “exact counting with careful pivoting / structure” line.
April 1971 — Bron–Kerbosch
- C. Bron and J. Kerbosch — foundational backtracking for cliques.
- ACM Algorithm 457 (PDF)
October 2006 — Tomita et al.
- Worst-case analysis and experiments on maximal clique generation.
- Paper (Stanford CS224W readings)
2010–2011 — Eppstein, Löffler, Strash
- Near-optimal listing in sparse graphs and large sparse instances.
- arXiv:1006.5440 · arXiv:1103.0318
- Practical code: quick-cliques
Other Pivoter implementations¶
- Pivoter (Julia) — charunupara/Pivoter
- PyPivoter (Cython) — rckormos/PyPivoter
- pivoterpy (this project) — Python + Rust
Citation¶
Cite the original Pivoter paper for the algorithm.
If you also want to cite this package: