Skip to content

[Model] BiconnectivityAugmentation #230

@isPANN

Description

@isPANN

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_edges binary variables (one per potential edge listed in potential_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, implementing SatisfactionProblem.
  • 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 HashMap to 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:
    crate::declare_variants! {
        BiconnectivityAugmentation<SimpleGraph, i32> => "2^num_potential_edges",
    }
    This reflects the brute-force bound over all potential edge subsets. If a better exact algorithm is found in the literature, update accordingly.
  • 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

No one assigned

    Labels

    GoodAn issue passed all checks.modelA model problem to be implemented.

    Type

    No type

    Projects

    Status

    Review pool

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions