name: Problem
about: Propose a new problem type
title: "[Model] BottleneckTravelingSalesman"
labels: model
assignees: ''
Motivation
BOTTLENECK TRAVELING SALESMAN (P100) from Garey & Johnson, A2 ND24. A variant of the classical Traveling Salesman Problem where the objective is to minimize the maximum (bottleneck) edge weight in a Hamiltonian tour rather than minimizing total tour length. NP-complete even when distances are restricted to {1, 2}. It is a target in the reduction from HAMILTONIAN CIRCUIT.
Associated rules:
Definition
Name: BottleneckTravelingSalesman
Canonical name: BOTTLENECK TRAVELING SALESMAN
Reference: Garey & Johnson, Computers and Intractability, A2 ND24
Mathematical definition:
INSTANCE: A weighted graph G = (V, E) with edge weights w: E → ℤ⁺.
OBJECTIVE: Find a Hamiltonian cycle H in G that minimizes the bottleneck (maximum edge weight), i.e., minimize max_{e ∈ H} w(e).
A configuration is a subset S ⊆ E. A configuration is feasible if S forms a Hamiltonian cycle (every vertex has degree exactly 2 in S, and S is connected). The objective value is max_{e ∈ S} w(e) for feasible configurations, and Invalid otherwise.
Variables
- Count: |E| variables (one per edge in the graph).
- Per-variable domain: {0, 1} — 1 if the edge is included in the tour, 0 otherwise.
- Meaning: A feasible assignment selects exactly |V| edges forming a Hamiltonian cycle. The objective value is the maximum weight among the selected edges.
Dims
[2; num_edges] — one binary variable per edge.
Schema (data type)
Type name: BottleneckTravelingSalesman
Variants: none
| Field |
Type |
Description |
graph |
SimpleGraph |
The underlying graph G = (V, E) |
edge_weights |
Vec<i32> |
Edge weights w: E → ℤ⁺ |
Notes:
- This is an optimization problem:
Metric = SolutionSize<i32>, Direction::Minimize.
- The objective is
max(selected edge weights), not sum — this is what distinguishes it from TravelingSalesman.
- No type parameters. Graph type and weight type are fixed to
SimpleGraph and i32. Variants can be added later if a concrete need arises.
Size fields
| Getter |
Meaning |
num_vertices |
Number of vertices |
num_edges |
Number of edges |
Complexity
- Best known exact algorithm: O(m² · 2^m) via the Held-Karp dynamic programming algorithm (Held & Karp, 1962), adapted for the bottleneck objective by replacing sum with max. Here m = |V| is the number of vertices.
- Complexity string:
"num_vertices^2 * 2^num_vertices"
- NP-completeness: NP-complete by reduction from HAMILTONIAN CIRCUIT (Garey & Johnson ND24). Remains NP-complete even when all edge weights are in {1, 2}.
- References:
- M. Held and R.M. Karp (1962). "A dynamic programming approach to sequencing problems." Journal of the Society for Industrial and Applied Mathematics, 10(1):196–210.
- P.C. Gilmore and R.E. Gomory (1964). "Sequencing a one state-variable machine: a solvable case of the traveling salesman problem." Operations Research 12, pp. 655–679. (Polynomial special case.)
Extra Remark
Full book text:
INSTANCE: Set C of m cities, distance d(ci,cj) ∈ Z+ for each pair of cities ci,cj ∈ C, positive integer B.
QUESTION: Is there a tour of C whose longest edge is no longer than B, i.e., a permutation <cπ(1),cπ(2),...,cπ(m)> of C such that d(cπ(i),cπ(i+1)) ≤ B for 1 ≤ i < m and such that d(cπ(m),cπ(1)) ≤ B?
Reference: Transformation from HAMILTONIAN CIRCUIT.
Comment: Remains NP-complete even if d(ci,cj) ∈ {1,2} for all ci,cj ∈ C. An important special case that is solvable in polynomial time can be found in [Gilmore and Gomory, 1964].
Note: Garey & Johnson state the decision version. We implement the optimization version (minimize bottleneck), which subsumes the decision problem: a tour with bottleneck ≤ B exists iff the optimal bottleneck is ≤ B.
How to solve
Example Instance
Complete graph K₅ on 5 vertices with edge weights:
0 1 2 3 4
0: - 5 4 4 5
1: 5 - 4 1 2
2: 4 4 - 1 5
3: 4 1 1 - 4
4: 5 2 5 4 -
Edge list with weights (lexicographic order):
| Edge |
Weight |
| (0,1) |
5 |
| (0,2) |
4 |
| (0,3) |
4 |
| (0,4) |
5 |
| (1,2) |
4 |
| (1,3) |
1 |
| (1,4) |
2 |
| (2,3) |
1 |
| (2,4) |
5 |
| (3,4) |
4 |
Search space: 2¹⁰ = 1024 binary configurations, 12 of which are valid Hamiltonian cycles.
Expected Outcome
Optimal tour: 0 → 2 → 1 → 4 → 3 → 0
Selected edges: {(0,2), (0,3), (1,2), (1,4), (3,4)} with weights [4, 4, 4, 2, 4]
Bottleneck (max edge weight): 4
Total weight: 18
This is the unique optimal solution — all 11 other Hamiltonian cycles have bottleneck = 5.
Contrast with standard TSP: The minimum total weight tour is 0 → 2 → 3 → 1 → 4 → 0 with total weight 13 but bottleneck = 5. The BTSP optimal tour "pays" a higher total weight (18 vs 13) to avoid all weight-5 edges, demonstrating the fundamental difference between minimizing the sum vs the maximum.
Bottleneck distribution across all 12 feasible tours:
- Bottleneck = 4: 1 tour (optimal)
- Bottleneck = 5: 11 tours (suboptimal)
name: Problem
about: Propose a new problem type
title: "[Model] BottleneckTravelingSalesman"
labels: model
assignees: ''
Motivation
BOTTLENECK TRAVELING SALESMAN (P100) from Garey & Johnson, A2 ND24. A variant of the classical Traveling Salesman Problem where the objective is to minimize the maximum (bottleneck) edge weight in a Hamiltonian tour rather than minimizing total tour length. NP-complete even when distances are restricted to {1, 2}. It is a target in the reduction from HAMILTONIAN CIRCUIT.
Associated rules:
Definition
Name:
BottleneckTravelingSalesmanCanonical name: BOTTLENECK TRAVELING SALESMAN
Reference: Garey & Johnson, Computers and Intractability, A2 ND24
Mathematical definition:
INSTANCE: A weighted graph G = (V, E) with edge weights w: E → ℤ⁺.
OBJECTIVE: Find a Hamiltonian cycle H in G that minimizes the bottleneck (maximum edge weight), i.e., minimize max_{e ∈ H} w(e).
A configuration is a subset S ⊆ E. A configuration is feasible if S forms a Hamiltonian cycle (every vertex has degree exactly 2 in S, and S is connected). The objective value is max_{e ∈ S} w(e) for feasible configurations, and Invalid otherwise.
Variables
Dims
[2; num_edges]— one binary variable per edge.Schema (data type)
Type name:
BottleneckTravelingSalesmanVariants: none
graphSimpleGraphedge_weightsVec<i32>Notes:
Metric = SolutionSize<i32>,Direction::Minimize.max(selected edge weights), notsum— this is what distinguishes it fromTravelingSalesman.SimpleGraphandi32. Variants can be added later if a concrete need arises.Size fields
num_verticesnum_edgesComplexity
"num_vertices^2 * 2^num_vertices"Extra Remark
Full book text:
INSTANCE: Set C of m cities, distance d(ci,cj) ∈ Z+ for each pair of cities ci,cj ∈ C, positive integer B.
QUESTION: Is there a tour of C whose longest edge is no longer than B, i.e., a permutation <cπ(1),cπ(2),...,cπ(m)> of C such that d(cπ(i),cπ(i+1)) ≤ B for 1 ≤ i < m and such that d(cπ(m),cπ(1)) ≤ B?
Reference: Transformation from HAMILTONIAN CIRCUIT.
Comment: Remains NP-complete even if d(ci,cj) ∈ {1,2} for all ci,cj ∈ C. An important special case that is solvable in polynomial time can be found in [Gilmore and Gomory, 1964].
Note: Garey & Johnson state the decision version. We implement the optimization version (minimize bottleneck), which subsumes the decision problem: a tour with bottleneck ≤ B exists iff the optimal bottleneck is ≤ B.
How to solve
Example Instance
Complete graph K₅ on 5 vertices with edge weights:
Edge list with weights (lexicographic order):
Search space: 2¹⁰ = 1024 binary configurations, 12 of which are valid Hamiltonian cycles.
Expected Outcome
Optimal tour: 0 → 2 → 1 → 4 → 3 → 0
Selected edges: {(0,2), (0,3), (1,2), (1,4), (3,4)} with weights [4, 4, 4, 2, 4]
Bottleneck (max edge weight): 4
Total weight: 18
This is the unique optimal solution — all 11 other Hamiltonian cycles have bottleneck = 5.
Contrast with standard TSP: The minimum total weight tour is 0 → 2 → 3 → 1 → 4 → 0 with total weight 13 but bottleneck = 5. The BTSP optimal tour "pays" a higher total weight (18 vs 13) to avoid all weight-5 edges, demonstrating the fundamental difference between minimizing the sum vs the maximum.
Bottleneck distribution across all 12 feasible tours: