name: Problem
about: Propose a new problem type
title: "[Model] DisjointConnectingPaths"
labels: model
assignees: ''
Motivation
DISJOINT CONNECTING PATHS (P116) from Garey & Johnson, A2 ND40. A classical NP-complete problem useful for reductions. It models the fundamental routing/interconnection problem: given a set of terminal pairs in a network, can all pairs be simultaneously connected by vertex-disjoint paths? This has applications in VLSI design, network routing, and wire layout.
Associated reduction rules:
- As source: None found in current rule set.
- As target: R61 (3SAT to DISJOINT CONNECTING PATHS)
Definition
Name: DisjointConnectingPaths
Canonical name: Disjoint Connecting Paths (also: Vertex-Disjoint Paths Problem, Node-Disjoint Paths, Interconnection Problem)
Reference: Garey & Johnson, Computers and Intractability, A2 ND40
Mathematical definition:
INSTANCE: Graph G = (V,E), collection of disjoint vertex pairs (s_1,t_1),(s_2,t_2),...,(s_k,t_k).
QUESTION: Does G contain k mutually vertex-disjoint paths, one connecting s_i and t_i for each i, 1 <= i <= k?
Variables
Let k = |terminal_pairs| denote the number of terminal pairs.
- Count: |E| binary variables (one per edge).
- Per-variable domain: {0, 1} — whether edge e is included in any of the k paths.
- Meaning: A valid configuration selects edges that form exactly k vertex-disjoint paths, one connecting s_i to t_i for each i, 1 ≤ i ≤ k. The metric is
bool: True if such paths exist, False otherwise.
Schema (data type)
Type name: DisjointConnectingPaths
Variants: graph topology (graph type parameter G)
| Field |
Type |
Description |
graph |
SimpleGraph |
The undirected graph G = (V, E) |
terminal_pairs |
Vec<(usize, usize)> |
The k disjoint terminal pairs (s_i, t_i) |
Notes:
- This is a satisfaction (decision) problem:
Metric = bool, implementing SatisfactionProblem.
- No weight type is needed.
- Key getter methods:
num_vertices() (= |V|), num_edges() (= |E|), num_pairs() (= k).
- The terminal vertices must be pairwise disjoint (no vertex appears in more than one pair).
Complexity
- Decision complexity: NP-complete (Knuth 1974, Karp 1975, Lynch 1974; transformation from 3SAT). Remains NP-complete for planar graphs (Lynch 1975).
- Fixed-parameter tractability: For fixed k (number of terminal pairs), the problem is solvable in polynomial time:
- O(n^3) by Robertson and Seymour's graph minor algorithm (1995), as part of their Graph Minors series.
- O(n^2) by Kawarabayashi, Kobayashi, and Reed (2012), improving the cubic bound.
- However, the constant factor is enormous (tower of exponentials in k), making these algorithms impractical.
- Best known exact algorithm (general k): Brute force enumeration of all possible edge subsets. No faster exact algorithm is known for the general case.
- Complexity string (for general k):
"2^num_edges" (brute force over all possible edge subsets; no faster exact algorithm is known for general k)
- References:
- N. Robertson and P.D. Seymour (1995). "Graph Minors. XIII. The Disjoint Paths Problem." Journal of Combinatorial Theory, Series B, 63(1):65-110. Polynomial algorithm for fixed k.
- K. Kawarabayashi, Y. Kobayashi, B. Reed (2012). "The disjoint paths problem in quadratic time." Journal of Combinatorial Theory, Series B, 102(2):424-435.
Extra Remark
Full book text:
INSTANCE: Graph G = (V,E), collection of disjoint vertex pairs (s_1,t_1),(s_2,t_2),...,(s_k,t_k).
QUESTION: Does G contain k mutually vertex-disjoint paths, one connecting s_i and t_i for each i, 1 <= i <= k?
Reference: [Knuth, 1974c], [Karp, 1975a], [Lynch, 1974]. Transformation from 3SAT.
Comment: Remains NP-complete for planar graphs [Lynch, 1974], [Lynch, 1975]. Complexity is open for any fixed k >= 2, but can be solved in polynomial time if k = 2 and G is planar or chordal [Perl and Shiloach, 1978]. (A polynomial time algorithm for the general 2 path problem has been announced in [Shiloach, 1978]). The directed version of this problem is also NP-complete in general and solvable in polynomial time when k = 2 and G is planar or acyclic [Perl and Shiloach, 1978].
How to solve
Example Instance
Instance 1 (YES — disjoint paths exist):
Graph G with 6 vertices {0, 1, 2, 3, 4, 5} and 7 edges:
0 — 1 — 3
| | |
2 — 4 — 5
- Edges: {0,1}, {1,3}, {0,2}, {1,4}, {2,4}, {3,5}, {4,5}
- Terminal pairs: (0, 3), (2, 5)
Vertex-disjoint paths:
- P1: 0 → 1 → 3 (connecting 0 to 3, using vertices {0, 1, 3})
- P2: 2 → 4 → 5 (connecting 2 to 5, using vertices {2, 4, 5})
- The paths are vertex-disjoint: {0, 1, 3} ∩ {2, 4, 5} = ∅
- Answer: YES
Instance 2 (NO — no disjoint paths):
Graph G with 6 vertices {0, 1, 2, 3, 4, 5} and 5 edges:
- Edges: {0,2}, {1,2}, {2,3}, {3,4}, {3,5}
- Terminal pairs: (0, 4), (1, 5)
- Vertex 2 and vertex 3 are cut vertices; any path from 0 to 4 must pass through 2 and 3, and any path from 1 to 5 must also pass through 2 and 3. Since both paths must share vertices 2 and 3, no vertex-disjoint solution exists.
- Answer: NO
name: Problem
about: Propose a new problem type
title: "[Model] DisjointConnectingPaths"
labels: model
assignees: ''
Motivation
DISJOINT CONNECTING PATHS (P116) from Garey & Johnson, A2 ND40. A classical NP-complete problem useful for reductions. It models the fundamental routing/interconnection problem: given a set of terminal pairs in a network, can all pairs be simultaneously connected by vertex-disjoint paths? This has applications in VLSI design, network routing, and wire layout.
Associated reduction rules:
Definition
Name:
DisjointConnectingPathsCanonical name: Disjoint Connecting Paths (also: Vertex-Disjoint Paths Problem, Node-Disjoint Paths, Interconnection Problem)
Reference: Garey & Johnson, Computers and Intractability, A2 ND40
Mathematical definition:
INSTANCE: Graph G = (V,E), collection of disjoint vertex pairs (s_1,t_1),(s_2,t_2),...,(s_k,t_k).
QUESTION: Does G contain k mutually vertex-disjoint paths, one connecting s_i and t_i for each i, 1 <= i <= k?
Variables
Let k = |terminal_pairs| denote the number of terminal pairs.
bool: True if such paths exist, False otherwise.Schema (data type)
Type name:
DisjointConnectingPathsVariants: graph topology (graph type parameter G)
graphSimpleGraphterminal_pairsVec<(usize, usize)>Notes:
Metric = bool, implementingSatisfactionProblem.num_vertices()(= |V|),num_edges()(= |E|),num_pairs()(= k).Complexity
"2^num_edges"(brute force over all possible edge subsets; no faster exact algorithm is known for general k)Extra Remark
Full book text:
INSTANCE: Graph G = (V,E), collection of disjoint vertex pairs (s_1,t_1),(s_2,t_2),...,(s_k,t_k).
QUESTION: Does G contain k mutually vertex-disjoint paths, one connecting s_i and t_i for each i, 1 <= i <= k?
Reference: [Knuth, 1974c], [Karp, 1975a], [Lynch, 1974]. Transformation from 3SAT.
Comment: Remains NP-complete for planar graphs [Lynch, 1974], [Lynch, 1975]. Complexity is open for any fixed k >= 2, but can be solved in polynomial time if k = 2 and G is planar or chordal [Perl and Shiloach, 1978]. (A polynomial time algorithm for the general 2 path problem has been announced in [Shiloach, 1978]). The directed version of this problem is also NP-complete in general and solvable in polynomial time when k = 2 and G is planar or acyclic [Perl and Shiloach, 1978].
How to solve
Example Instance
Instance 1 (YES — disjoint paths exist):
Graph G with 6 vertices {0, 1, 2, 3, 4, 5} and 7 edges:
Vertex-disjoint paths:
Instance 2 (NO — no disjoint paths):
Graph G with 6 vertices {0, 1, 2, 3, 4, 5} and 5 edges: