Skip to content

[Model] MixedChinesePostman #242

@isPANN

Description

@isPANN

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

Motivation

CHINESE POSTMAN FOR MIXED GRAPHS (P101) from Garey & Johnson, A2 ND25. A fundamental problem in combinatorial optimization on mixed graphs (graphs containing both directed arcs and undirected edges). While the Chinese Postman Problem is polynomial-time solvable on purely undirected or purely directed graphs, the mixed case is NP-complete (Papadimitriou, 1976). It is a target in the reduction from 3SAT (R46).

Associated rules:

  • R46: 3SAT -> CHINESE POSTMAN FOR MIXED GRAPHS (incoming)

Definition

Name: MixedChinesePostman
Canonical name: CHINESE POSTMAN FOR MIXED GRAPHS (also: Mixed Chinese Postman Problem, MCPP)
Reference: Garey & Johnson, Computers and Intractability, A2 ND25

Mathematical definition:

INSTANCE: Mixed graph G = (V, A, E), where A is a set of directed edges (arcs) and E is a set of undirected edges on V, length l(e) ∈ Z_0+ for each e ∈ A∪E, bound B ∈ Z+.
QUESTION: Is there a closed walk in G that traverses each arc in its specified direction and each undirected edge in at least one direction, possibly traversing some arcs/edges multiple times, with total length ≤ B?

Variables

  • Count: |E| binary variables — one per undirected edge, representing the chosen traversal direction.
  • Per-variable domain: {0, 1} — 0 = forward direction (u → v), 1 = reverse direction (v → u), for each undirected edge {u, v}.
  • Meaning: A configuration fixes the orientation of every undirected edge. Given fixed orientations, the graph becomes purely directed and the minimum-cost Chinese Postman tour on this directed graph can be computed in polynomial time (via min-cost flow to balance vertex degrees). The configuration is satisfying if this minimum directed CPP cost is ≤ B.

Dims

[2; num_edges] — one binary variable per undirected edge.

Schema (data type)

Type name: MixedChinesePostman
Variants: weight type (W)

Prerequisite type: MixedGraph — a new graph topology type representing a graph with both directed arcs and undirected edges. Stores num_vertices: usize, arcs: Vec<(usize, usize)> (directed), and edges: Vec<(usize, usize)> (undirected). Lives under src/models/graph/.

Field Type Description
graph MixedGraph The mixed graph G = (V, A, E)
arc_weights Vec<W> Length for each arc in A (parallel to graph.arcs)
edge_weights Vec<W> Length for each undirected edge in E (parallel to graph.edges)
bound W The total length bound B

Notes:

  • This is a satisfaction (decision) problem: Metric = bool, implementing SatisfactionProblem.
  • MixedGraph is a new topology type (not parameterized by G). The problem struct is MixedChinesePostman<W>.
  • The cycle must traverse every arc in its specified direction and every undirected edge in at least one direction, possibly traversing some arcs/edges multiple times.
  • Given fixed edge orientations, the problem reduces to a directed Chinese Postman: find minimum-cost additional arc copies to make the directed graph Eulerian (balanced in-degree equals out-degree at every vertex), solvable via min-cost flow in O(V³).
  • Polynomial-time solvable when A = ∅ (undirected Chinese Postman, solved by T-join/matching) or E = ∅ (directed Chinese Postman, solved by min-cost flow).

Size fields

Getter Description
num_vertices Number of vertices |V|
num_arcs Number of directed arcs |A|
num_edges Number of undirected edges |E|
bound Total length bound B

Complexity

  • Best known exact algorithm: Brute-force enumeration over all 2^|E| orientations of undirected edges. For each orientation, solve the resulting directed Chinese Postman Problem via min-cost flow in O(V³). Total: O(2^|E| · |V|³).
  • Complexity expression: "2^num_edges * num_vertices^3"
  • NP-completeness: NP-complete (Papadimitriou, 1976, "On the complexity of edge traversing"). Remains NP-complete even if all edge lengths are equal (unit lengths), G is planar, and the maximum vertex degree is 3.
  • Special cases: Polynomial-time solvable when A = ∅ (Edmonds and Johnson, 1973) or E = ∅ (standard min-cost flow).
  • Approximation: A 3/2-approximation algorithm exists for the optimization version (Frederickson, SIAM J. Discrete Math.).
  • References:
    • C.H. Papadimitriou (1976). "On the complexity of edge traversing." Journal of the ACM, 23(3):544–554.
    • J. Edmonds and E.L. Johnson (1973). "Matching, Euler tours, and the Chinese postman." Mathematical Programming, 5:88–124.

Extra Remark

Full book text:

INSTANCE: Mixed graph G = (V,A,E), where A is a set of directed edges and E is a set of undirected edges on V, length l(e) ∈ Z0+ for each e ∈ A∪E, bound B ∈ Z+.
QUESTION: Is there a cycle in G that includes each directed and undirected edge at least once, traversing directed edges only in the specified direction, and that has total length no more than B?

Reference: [Papadimitriou, 1976b]. Transformation from 3SAT.
Comment: Remains NP-complete even if all edge lengths are equal, G is planar, and the maximum vertex degree is 3. Can be solved in polynomial time if either A or E is empty (i.e., if G is either a directed or an undirected graph) [Edmonds and Johnson, 1973].

How to solve

  • It can be solved by (existing) bruteforce.
  • It can be solved by reducing to integer programming — formulate as ILP to find minimum-cost additional edge/arc duplications making the mixed graph Eulerian.
  • Other: For each of the 2^|E| orientations of undirected edges, solve the resulting directed CPP via min-cost flow. Return YES if any orientation yields total cost ≤ B.

Example Instance

Instance 1 (YES — postman tour within bound):

Mixed graph G with 5 vertices {0, 1, 2, 3, 4}:

  • Arcs A (directed): (0→1, length 2), (1→2, length 3), (2→3, length 1), (3→0, length 4)
  • Edges E (undirected): {0,2, length 2}, {1,3, length 3}, {0,4, length 1}, {4,2, length 2}
  • Bound B = 24

Base traversal cost (sum of all arc/edge lengths): 2 + 3 + 1 + 4 + 2 + 3 + 1 + 2 = 18.

Optimal orientation: edge {0,2} as 2→0, edge {1,3} as 3→1, edge {0,4} as 0→4, edge {4,2} as 4→2.

With this orientation, the directed graph has arcs:

  • Original arcs: 0→1(2), 1→2(3), 2→3(1), 3→0(4)
  • Oriented edges: 2→0(2), 3→1(3), 0→4(1), 4→2(2)

Degree imbalance d(v) = out_degree − in_degree:

  • d(0) = 2 − 2 = 0
  • d(1) = 1 − 2 = −1 (deficit: needs 1 more outgoing)
  • d(2) = 2 − 3 = −1 (deficit: needs 1 more outgoing)
  • d(3) = 2 − 1 = +1 (surplus: needs 1 more incoming)
  • d(4) = 1 − 1 = 0

To balance: duplicate arcs along shortest path from surplus to deficit vertices. Duplicate 1→2(3) and 2→3(1), cost = 4. This routes the surplus at vertex 3 through 1→2→3, balancing all degrees.

Total cost = 18 (base) + 4 (duplications) = 22 ≤ 24 = B. ✅

Tour (Eulerian circuit on balanced graph): 0 → 1 → 2 → 3 → 0 → 4 → 2 → 3 → 1 → 2 → 0, total length = 22.

Suboptimal feasible solutions: Two additional orientations yield cost 24 (≤ B), providing suboptimal feasible solutions. For example, orienting {0,2} as 2→0, {1,3} as 1→3, {0,4} as 0→4, {4,2} as 4→2 gives balancing cost 6, total = 24.

Answer: YES

Expected Outcome: The optimal orientation achieves cost 22 ≤ 24 = B, with duplicated arcs 1→2 and 2→3. Two suboptimal orientations also feasible at cost 24.


Instance 2 (NO — postman tour exceeds bound):

Mixed graph G with 6 vertices {0, 1, 2, 3, 4, 5}:

  • Arcs A: (0→1, length 1), (1→0, length 1), (2→3, length 1)
  • Edges E: {0,2, length 1}, {1,3, length 1}, {3,4, length 5}, {4,5, length 5}, {5,2, length 5}
  • Bound B = 10

Base traversal cost: arcs = 1 + 1 + 1 = 3, edges = 1 + 1 + 5 + 5 + 5 = 17, total = 20.

Since the base cost alone (20) already exceeds B = 10, and any feasible tour must traverse every arc and edge at least once (total length ≥ 20), no tour can have total length ≤ 10.

Answer: NO

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