-
Notifications
You must be signed in to change notification settings - Fork 3
Description
name: Problem
about: Propose a new problem type
title: "[Model] BiconnectivityAugmentation"
labels: model
assignees: ''
Motivation
BICONNECTIVITY AUGMENTATION from Garey & Johnson, A2 ND18. An NP-complete graph augmentation problem studied by Eswaran and Tarjan (1976). Given an undirected graph with weighted potential edges, the goal is to add a minimum-weight set of edges so that the resulting graph is biconnected (2-vertex-connected: cannot be disconnected by removing any single vertex). The unweighted version is polynomial-time solvable, but the weighted version is NP-complete. This problem is fundamental to network design and fault-tolerant communication network construction.
Associated rules:
- R39: HAMILTONIAN CIRCUIT -> BICONNECTIVITY AUGMENTATION (ND18)
Prerequisites: This problem depends on HamiltonianCircuit (issue #216) which is not yet in the codebase. The associated reduction rule (issue #252) cannot be implemented until both models exist.
Definition
Name: BiconnectivityAugmentation
Canonical name: Biconnectivity Augmentation (also: Weighted 2-Vertex-Connectivity Augmentation)
Reference: Garey & Johnson, Computers and Intractability, A2 ND18
Mathematical definition:
INSTANCE: Graph G = (V,E), weight w({u,v}) in Z+ for each unordered pair {u,v} of vertices from V, positive integer B.
QUESTION: Is there a set E' of unordered pairs of vertices from V such that sum_{e in E'} w(e) <= B and such that the graph G' = (V, E union E') is biconnected, i.e., cannot be disconnected by removing a single vertex?
Variables
- Count:
num_potential_edgesbinary variables (one per potential edge listed inpotential_weights) - Per-variable domain: binary {0, 1} — whether edge {u,v} is added to E'
- Meaning: variable x_{u,v} = 1 if the edge {u,v} is added to E'. The configuration must satisfy: G' = (V, E union E') is biconnected and sum(w({u,v}) * x_{u,v}) <= B.
dims()specification:vec![2; self.potential_weights.len()]. Each variable is binary, representing whether a potential edge is added.
Schema (data type)
Type name: BiconnectivityAugmentation
Variants: graph topology (graph type parameter G), weight type (W)
| Field | Type | Description |
|---|---|---|
graph |
G: Graph |
The initial undirected graph G = (V, E) |
potential_weights |
Vec<(usize, usize, W)> |
Weighted potential edges: list of (u, v, weight) triples |
budget |
W |
Maximum total weight B for added edges |
Size fields (getter methods for overhead expressions):
num_vertices()→self.graph.num_vertices()(= |V|)num_edges()→self.graph.num_edges()(= |E|)num_potential_edges()→self.potential_weights.len()(= number of candidate edges)
Notes:
- This is a satisfaction (decision) problem:
Metric = bool, implementingSatisfactionProblem. - The optimization version minimizes sum(w(e)) for e in E' subject to biconnectivity of G union E'.
- A graph is biconnected if it is connected and has no articulation point (cut vertex).
- Potential edges are stored as explicit (u, v, weight) triples rather than a
HashMapto align with codebase conventions.
Complexity
- Decision complexity: NP-complete (Eswaran and Tarjan, 1976; transformation from HAMILTONIAN CIRCUIT). Remains NP-complete when all weights are 1 or 2 and E is empty. Solvable in polynomial time when all weights are equal.
- Best known exact algorithm: Brute-force enumeration over all subsets of potential edges with biconnectivity check:
O*(2^num_potential_edges)in the worst case. For practical instances, ILP-based exact methods with cut enumeration are used, but no better worst-case bound is known for the general weighted case. - Unweighted version: Solvable in O(n + m) time by finding the block-cut tree and computing the minimum number of edges to add (Eswaran and Tarjan, 1976).
- Approximation: 2-approximation via primal-dual methods (Frederickson and Ja'Ja', 1981). Note: the (1.5+epsilon)-approximation by Traub and Zenklusen (2023) addresses edge-connectivity augmentation (WCAP), not 2-vertex-connectivity/biconnectivity augmentation.
declare_variants!guidance:This reflects the brute-force bound over all potential edge subsets. If a better exact algorithm is found in the literature, update accordingly.crate::declare_variants! { BiconnectivityAugmentation<SimpleGraph, i32> => "2^num_potential_edges", }
- References:
- K.P. Eswaran, R.E. Tarjan (1976). "Augmentation Problems." SIAM Journal on Computing, 5(4):653-665.
- G.N. Frederickson, J. Ja'Ja' (1981). "Approximation Algorithms for Several Graph Augmentation Problems." SIAM Journal on Computing, 10(2):270-283.
Extra Remark
Full book text:
INSTANCE: Graph G = (V,E), weight w({u,v}) in Z+ for each unordered pair {u,v} of vertices from V, positive integer B.
QUESTION: Is there a set E' of unordered pairs of vertices from V such that sum_{e in E'} w(e) <= B and such that the graph G' = (V,E union E') is biconnected, i.e., cannot be disconnected by removing a single vertex?
Reference: [Eswaran and Tarjan, 1976]. Transformation from HAMILTONIAN CIRCUIT.
Comment: The related problem in which G' must be bridge connected, i.e., cannot be disconnected by removing a single edge, is also NP-complete. Both problems remain NP-complete if all weights are either 1 or 2 and E is empty. Both can be solved in polynomial time if all weights are equal.
How to solve
- It can be solved by (existing) bruteforce. Enumerate all subsets of potential edges, check if adding them achieves biconnectivity and total weight <= B.
- It can be solved by reducing to integer programming. Binary variable per potential edge, minimize total weight subject to biconnectivity constraints (no cut vertex).
- Other: For the unweighted case, linear-time algorithms exist based on the block-cut tree decomposition.
Example Instance
Graph G with 6 vertices {0, 1, 2, 3, 4, 5} and 5 edges (a path graph):
- Existing edges: {0,1}, {1,2}, {2,3}, {3,4}, {4,5}
- This is a path graph; every internal vertex is an articulation point, so G is NOT biconnected.
- Edge weights for all potential edges:
- {0,2}: w=1, {0,3}: w=2, {0,4}: w=3, {0,5}: w=2
- {1,3}: w=1, {1,4}: w=2, {1,5}: w=3
- {2,4}: w=1, {2,5}: w=2
- {3,5}: w=1
- Budget B = 4
Solution: add E' = {{0,2}, {1,3}, {2,4}, {3,5}} with weights 1+1+1+1 = 4 <= B:
- New graph G' has edges: {0,1}, {1,2}, {2,3}, {3,4}, {4,5}, {0,2}, {1,3}, {2,4}, {3,5}
- Check biconnectivity: remove any single vertex:
- Remove 0: remaining {1,2,3,4,5} connected via {1,2},{1,3},{2,3},{2,4},{3,4},{3,5},{4,5}
- Remove 1: remaining {0,2,3,4,5} connected via {0,2},{2,3},{2,4},{3,4},{3,5},{4,5}
- Remove 2: remaining {0,1,3,4,5} connected via {0,1},{1,3},{3,4},{3,5},{4,5}
- Remove 3: remaining {0,1,2,4,5} connected via {0,1},{0,2},{1,2},{2,4},{4,5}
- Remove 4: remaining {0,1,2,3,5} connected via {0,1},{0,2},{1,2},{1,3},{2,3},{3,5}
- Remove 5: remaining {0,1,2,3,4} connected via {0,1},{0,2},{1,2},{1,3},{2,3},{2,4},{3,4}
- G' is biconnected. Answer: YES with B=4.
- With B=3: we can only add 3 unit-weight edges. Adding {0,2},{1,3},{2,4} leaves vertex 5 as a pendant -- removing vertex 4 disconnects 5. Answer: NO.
Metadata
Metadata
Assignees
Labels
Type
Projects
Status