Skip to content

[Model] LongestPath #288

@isPANN

Description

@isPANN

name: Problem
about: Propose a new problem type
title: "[Model] LongestPath"
labels: model
assignees: ''

Motivation

LONGEST PATH (P105) from Garey & Johnson, A2 ND29. A classical NP-complete problem useful for reductions. Asks for a simple s-t path in a graph maximizing total edge length. NP-complete even with unit edge lengths, where it generalizes the Hamiltonian path problem. Solvable in polynomial time on DAGs.

Associated reduction rules:

  • As source: None found in the current rule set.
  • As target: R50: HAMILTONIAN PATH BETWEEN TWO VERTICES -> LONGEST PATH

Definition

Name: LongestPath

Canonical name: LONGEST PATH (also: Longest Simple Path, Maximum Weight Path)
Reference: Garey & Johnson, Computers and Intractability, A2 ND29

Mathematical definition:

INSTANCE: Graph G = (V,E), length l(e) ∈ Z^+ for each e ∈ E, specified vertices s,t ∈ V.
OBJECTIVE: Find a simple path in G from s to t that maximizes the total edge length, i.e., maximize the sum of l(e) over all edges e in the path.

Variables

  • Count: |E| binary variables (one per edge), indicating whether the edge is included in the path.
  • Per-variable domain: {0, 1} -- edge is excluded or included in the s-t path.
  • Meaning: The variable assignment encodes a subset of edges. A valid assignment is a subset S of E such that the subgraph induced by S forms a simple path from s to t. The objective value is the sum of l(e) for e in S. An assignment that does not form a valid simple s-t path is Invalid.

Schema (data type)

Type name: LongestPath
Variants: graph type (G), weight type (W)

Field Type Description
graph G The undirected graph G = (V, E)
lengths Vec<W> Edge length l(e) for each edge (indexed by edge index)
source usize Index of source vertex s
target usize Index of target vertex t

Notes:

  • This is an optimization problem: Metric = SolutionSize<W>, implementing OptimizationProblem with Direction::Maximize.
  • A configuration that does not form a valid simple s-t path evaluates to SolutionSize::Invalid.
  • A valid simple s-t path evaluates to SolutionSize::Valid(total_length) where total_length is the sum of edge lengths along the path.
  • The decision variant (is there a path of length ≥ K?) can be recovered by comparing the optimal value to the bound.
  • The unit-weight special case is equivalent to finding the longest simple path by hop count.
  • Polynomial-time solvable on DAGs (directed acyclic graphs) via topological sort + DP.

Complexity

  • Best known exact algorithm: O*(2^n) via inclusion-exclusion / algebraic methods. The color-coding technique of Alon, Yuster, and Zwick (1995) solves the k-path problem in O*(2^k) time (FPT in path length k). For general longest path, exhaustive search over all simple paths dominates.
  • Classic algorithm: O(n! / (n-k)!) brute force over all simple paths of length k; or O(n * 2^n) dynamic programming over vertex subsets (similar to Held-Karp).
  • NP-completeness: NP-complete by transformation from HAMILTONIAN PATH BETWEEN TWO VERTICES (Garey & Johnson, ND29). Remains NP-complete with unit edge lengths.
  • Special cases: Polynomial-time on DAGs, trees, interval graphs, and some other restricted graph classes.
  • References:
    • N. Alon, R. Yuster, U. Zwick (1995). "Color-coding." Journal of the ACM, 42(4):844-856.
    • R. Williams (2009). "Finding paths of length k in O*(2^k) time." Information Processing Letters, 109(6):315-318.

Extra Remark

Full book text:

INSTANCE: Graph G = (V,E), length l(e) ∈ Z^+ for each e ∈ E, positive integer K, specified vertices s,t ∈ V.
QUESTION: Is there a simple path in G from s to t of length K or more, i.e., whose edge lengths sum to at least K?
Reference: Transformation from HAMILTONIAN PATH BETWEEN TWO VERTICES.
Comment: Remains NP-complete if l(e) = 1 for all e ∈ E, as does the corresponding problem for directed paths in directed graphs. The general problem can be solved in polynomial time for acyclic digraphs, e.g., see [Lawler, 1976a]. The analogous directed and undirected "shortest path" problems can be solved for arbitrary graphs in polynomial time (e.g., see [Lawler, 1976a]), but are NP-complete if negative lengths are allowed.

How to solve

  • It can be solved by (existing) bruteforce -- enumerate all simple s-t paths and return the one with maximum total length.
  • It can be solved by reducing to integer programming.
  • Other: Held-Karp-style DP in O(n * 2^n); color-coding in O*(2^k) for k-length paths.

Example Instance

Instance 1 (optimal path length = 20):
Graph G with 7 vertices {0, 1, 2, 3, 4, 5, 6} and 10 edges:

  • Edges with lengths: {0,1}:3, {0,2}:2, {1,3}:4, {2,3}:1, {2,4}:5, {3,5}:2, {4,5}:3, {4,6}:2, {5,6}:4, {1,6}:1
  • s = 0, t = 6
  • Optimal path: 0 → 1 → 3 → 2 → 4 → 5 → 6
    • Length: 3 + 4 + 1 + 5 + 3 + 4 = 20
  • Suboptimal path: 0 → 2 → 4 → 5 → 3 → 1 → 6
    • Length: 2 + 5 + 3 + 2 + 4 + 1 = 17
  • Invalid configuration: edges {0,1}, {0,2}, {1,3} do not form a simple s-t path → Invalid

Metadata

Metadata

Assignees

No one assigned

    Labels

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

    Type

    No type

    Projects

    Status

    Done

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions