Skip to content

[Model] BottleneckTravelingSalesman #240

Description

@isPANN

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

  • It can be solved by (existing) bruteforce — enumerate all subsets of edges, check for valid Hamiltonian cycles, return the one with minimum bottleneck (max edge weight).
  • It can be solved by reducing to integer programming.
  • Other: Held-Karp DP in O(m² · 2^m) time, adapted for bottleneck objective.

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)

Metadata

Metadata

Assignees

No one assigned

    Labels

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

    Type

    No type
    No fields configured for issues without a type.

    Projects

    Status
    Done

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions