-
Notifications
You must be signed in to change notification settings - Fork 1
Description
Motivation
One of Karp's 21 NP-complete problems; foundational in network design. Telecommunications backbone routing, VLSI chip interconnect, pipeline network planning, and phylogenetic tree construction all reduce to Steiner Tree. Has known reductions to ILP and SAT. Opens a new network design category in the reduction graph.
Definition
Name: SteinerTree
Reference: Karp, 1972; Hwang, Richards & Winter, The Steiner Tree Problem, 1992
Given an undirected weighted graph
The vertices in
Variables
-
Count:
$m = |E|$ (one variable per edge) -
Per-variable domain: binary
${0, 1}$ -
Meaning:
$y_e = 1$ if edge$e$ is included in the Steiner tree
Schema (data type)
Type name: SteinerTree
Variants: graph Steiner tree, Euclidean Steiner tree, rectilinear Steiner tree
| Field | Type | Description |
|---|---|---|
| graph | SimpleGraph |
The weighted undirected graph |
| terminals | Vec<usize> |
The terminal vertex set |
Problem Size
| Metric | Expression | Description |
|---|---|---|
| num_vertices | Number of vertices | |
| num_edges | Number of edges | |
| num_terminals | Number of terminal vertices |
Complexity
- Decision complexity: NP-complete (Karp, 1972)
-
Best known exact algorithm:
$O(3^{|T|} \cdot n + 2^{|T|} \cdot n^2)$ via Dreyfus-Wagner dynamic programming over terminal subsets - Approximation: 1.39-approximation (Byrka et al., 2013); the classic 2-approximation via minimum spanning tree of the terminal distance graph
- References: Karp 1972; Dreyfus & Wagner 1971; Byrka et al. 2013
Extra Remark
When
How to solve
- It can be solved by (existing) bruteforce.
- It can be solved by reducing to integer programming, through a new SteinerTree → ILP rule issue (to be filed).
Bruteforce: enumerate all subsets of edges, check if terminals are connected and the selected edges form a tree, return minimum weight.
Example Instance
(2) (2)
0 ----- 1 ----- 2
| |
(1) | | (6)
| |
3 ----- 4
(1)
Also:
| Edge | Weight |
|---|---|
| 2 | |
| 2 | |
| 1 | |
| 1 | |
| 5 | |
| 5 | |
| 6 |
Optimal Steiner tree: edges
Steiner vertices used:
Compare: the only direct terminal-terminal edge is