A solver for the vertex cover problem. This library provides algorithms and data structure to solve the vertex cover problem (efficiently). Functionalities include:
- A undirected, simple graph data structure that allows for dynamic behavior.
- Simple and advanced reduction rules to create a smaller problem instance. These rules include the following:
- Removal of isolated nodes and nodes of degree 1.
- Contraction of link nodes 1.
- Reduction of Cliques 2.
- Twin node rule 3. (with contraction TODO: cite)
- Unconfined node rule as described in 4, here dubbed
dominion
rule. - Network flow rule as described in 5.
- And its improvements as described in 6.
- Alternatives (funnel & desk) as described in 7.
- Algorithms to compute initial solutions, upper- and lower bounds. These include:
- A simple two-approximation.
- A lower bound heuristic that first removes cliques and then unbalanced edges.
- An upper bound heuristic that, step-by-step removes the node with the highest degree.
- A branch-and-reduce algorithm to compute the optimal solution.
- Includes mirror branching as described by 8.
- Initial version. Includes the basic algorithms and data structure.
- Fix input format to fit the PACE19 challenge format.
- Fix improper merging.
- Fixed bug in
finallize_solution()
. - Improved
branch_and_reduce()
. - Fix output format to fit the PACE19 challenge format.
- Twin rule
- Dominion rule
- Network flow rule
- Added diamond case to dominion rule.
- Local
k
node rule - Crown rule
DyUGraph.from_edge_iter()
- (Core rule)
- Alternatives (Funnel rule)
- Extended alternatives with the desk rule
- Improved twin rule
- Improved vertex selection for branching
- Mirror branching
- Improved LP rule (finding balanced independent sets)
- Carry LP network along
- MoMR branching
- Packing
- Branching
- Rules
- Initial local search
Footnotes
-
Chen, Jianer, Iyad A. Kanj, and Weijia Jia. "Vertex cover: further observations and further improvements." Journal of Algorithms 41.2 (2001): 280-301. ↩
-
Butenko, Sergiy, et al. "Finding maximum independent sets in graphs arising from coding theory." Proceedings of the 2002 ACM symposium on Applied computing. 2002. ↩
-
Xiao, Mingyu, and Hiroshi Nagamochi. "Confining sets and avoiding bottleneck cases: A simple maximum independent set algorithm in degree-3 graphs." Theoretical Computer Science 469 (2013): 92-104. ↩
-
Akiba, Takuya, and Yoichi Iwata. "Branch-and-reduce exponential/FPT algorithms in practice: A case study of vertex cover." Theoretical Computer Science 609 (2016): 211-225. ↩
-
Abu-Khzam, Faisal N., et al. "Kernelization algorithms for the vertex cover problem." (2017). ↩
-
Iwata, Yoichi, Keigo Oka, and Yuichi Yoshida. "Linear-time FPT algorithms via network flow." Proceedings of the twenty-fifth annual ACM-SIAM symposium on Discrete algorithms. Society for Industrial and Applied Mathematics, 2014. ↩
-
Xiao, Mingyu, and Hiroshi Nagamochi. "Confining sets and avoiding bottleneck cases: A simple maximum independent set algorithm in degree-3 graphs." Theoretical Computer Science 469 (2013): 92-104. ↩
-
Fomin, Fedor V., Fabrizio Grandoni, and Dieter Kratsch. "A measure & conquer approach for the analysis of exact algorithms." Journal of the ACM (JACM) 56.5 (2009): 1-32. ↩