Source: HAMILTONIAN CIRCUIT
Target: LONGEST CIRCUIT
Motivation: Establishes NP-hardness of LONGEST CIRCUIT via polynomial-time reduction from HAMILTONIAN CIRCUIT. The reduction assigns unit weight to every edge, producing a LongestCircuit optimization instance. A Hamiltonian circuit exists in the source graph if and only if the maximum circuit length in the constructed instance equals |V| (i.e., a circuit using all n vertices is achievable).
Reference: Garey & Johnson, Computers and Intractability, ND28, p.213
GJ Source Entry
[ND28] LONGEST CIRCUIT
INSTANCE: Graph G=(V,E), length l(e)∈Z^+ for each e∈E, positive integer K.
QUESTION: Is there a simple circuit in G of length K or more, i.e., whose edge lengths sum to at least K?
Reference: Transformation from HAMILTONIAN CIRCUIT.
Comment: Remains NP-complete if l(e)=1 for all e∈E, as does the corresponding problem for directed circuits in directed graphs. The directed problem with all l(e)=1 can be solved in polynomial time if G is a "tournament" [Morrow and Goodman, 1976]. The analogous directed and undirected problems, which ask for a simple circuit of length K or less, can be solved in polynomial time (e.g., see [Itai and Rodeh, 1977b]), but are NP-complete if negative lengths are allowed.
Reduction Algorithm
Summary:
Given a HAMILTONIAN CIRCUIT instance G = (V, E) with n = |V| vertices, construct a LONGEST CIRCUIT instance as follows:
-
Graph: Use the same graph G' = G = (V, E).
-
Edge lengths: For every edge e in E, set the length l(e) = 1 (unit weights).
-
Optimization formulation: The codebase implements LongestCircuit as an optimization problem (maximize total circuit length via Max<W::Sum>), not as a decision problem with a bound K. The reduction maps the HC instance to a LongestCircuit instance, and a Hamiltonian circuit exists in G if and only if the optimal circuit length equals n.
-
Correctness (forward): If G has a Hamiltonian circuit C visiting all n vertices, then C is a simple circuit in G' with exactly n edges, each of length 1, so the total length is n. This achieves the maximum possible value for any simple circuit on n vertices with unit weights.
-
Correctness (reverse): If the optimal circuit length in G' equals n, then there exists a simple circuit with exactly n unit-weight edges. Since a simple circuit can have at most n edges on n vertices, any such circuit must visit all n vertices exactly once — it is a Hamiltonian circuit in G.
Key invariant: With unit weights, a simple circuit of maximum length n exists if and only if the circuit visits all n vertices, i.e., it is Hamiltonian.
Time complexity of reduction: O(|E|) to assign unit weights.
Size Overhead
Symbols:
- n =
num_vertices of source HamiltonianCircuit instance (|V|)
- m =
num_edges of source HamiltonianCircuit instance (|E|)
| Target metric (code name) |
Polynomial (using symbols above) |
num_vertices |
num_vertices |
num_edges |
num_edges |
Derivation: The graph is unchanged. Each edge simply gets a unit length assigned. There is no bound field on LongestCircuit — the model is an optimization problem, not a decision problem.
Validation Method
- Closed-loop test: reduce a HamiltonianCircuit instance to LongestCircuit, solve target with BruteForce, extract solution, verify on source
- Test with known YES instance: the triangular prism graph (6 vertices, 9 edges) is Hamiltonian; the longest circuit instance should have optimal value = 6 (all vertices visited)
- Test with known NO instance: construct a graph without a Hamiltonian circuit; verify that the optimal circuit length is strictly less than n
- Witness extraction: the optimal LongestCircuit configuration (edge selection) should map back to a valid Hamiltonian circuit in the source graph
Example
Source instance (HamiltonianCircuit):
Graph G with 6 vertices {0, 1, 2, 3, 4, 5} and 9 edges:
- Edges: {0,1}, {1,2}, {2,3}, {3,4}, {4,5}, {5,0}, {0,3}, {1,4}, {2,5}
- (Triangular prism / prism graph)
- Hamiltonian circuit exists: 0 -> 1 -> 2 -> 3 -> 4 -> 5 -> 0
Constructed target instance (LongestCircuit):
- Same graph G' = G with 6 vertices and 9 edges
- Edge lengths: l(e) = 1 for all 9 edges
Solution mapping:
- Optimal LongestCircuit solution: simple circuit 0 -> 1 -> 2 -> 3 -> 4 -> 5 -> 0
- Optimal circuit length: 6 edges × 1 = 6 = n (all vertices visited)
- This circuit visits all 6 vertices exactly once, forming a Hamiltonian circuit in G
Verification:
- Forward: HC 0->1->2->3->4->5->0 maps to a circuit of length 6 = n (optimal, not just feasible)
- Reverse: any simple circuit of optimal length 6 with unit weights on a 6-vertex graph must visit all vertices -> Hamiltonian circuit
- The optimization value
Max(Some(6)) signals a YES instance; Max(Some(k)) with k < 6 signals NO
References
- [Morrow and Goodman, 1976]: [
Morrow1976] C. Morrow and S. Goodman (1976). "An efficient algorithm for finding a longest cycle in a tournament". In: Proceedings of the 7th Southeastern Conference on Combinatorics, Graph Theory, and Computing, pp. 453-462. Utilitas Mathematica Publishing.
- [Itai and Rodeh, 1977b]: [
Itai1977c] Alon Itai and Michael Rodeh (1977). "Some matching problems". In: Automata, Languages, and Programming. Springer.
Source: HAMILTONIAN CIRCUIT
Target: LONGEST CIRCUIT
Motivation: Establishes NP-hardness of LONGEST CIRCUIT via polynomial-time reduction from HAMILTONIAN CIRCUIT. The reduction assigns unit weight to every edge, producing a LongestCircuit optimization instance. A Hamiltonian circuit exists in the source graph if and only if the maximum circuit length in the constructed instance equals |V| (i.e., a circuit using all n vertices is achievable).
Reference: Garey & Johnson, Computers and Intractability, ND28, p.213
GJ Source Entry
Reduction Algorithm
Summary:
Given a HAMILTONIAN CIRCUIT instance G = (V, E) with n = |V| vertices, construct a LONGEST CIRCUIT instance as follows:
Graph: Use the same graph G' = G = (V, E).
Edge lengths: For every edge e in E, set the length l(e) = 1 (unit weights).
Optimization formulation: The codebase implements
LongestCircuitas an optimization problem (maximize total circuit length viaMax<W::Sum>), not as a decision problem with a bound K. The reduction maps the HC instance to a LongestCircuit instance, and a Hamiltonian circuit exists in G if and only if the optimal circuit length equals n.Correctness (forward): If G has a Hamiltonian circuit C visiting all n vertices, then C is a simple circuit in G' with exactly n edges, each of length 1, so the total length is n. This achieves the maximum possible value for any simple circuit on n vertices with unit weights.
Correctness (reverse): If the optimal circuit length in G' equals n, then there exists a simple circuit with exactly n unit-weight edges. Since a simple circuit can have at most n edges on n vertices, any such circuit must visit all n vertices exactly once — it is a Hamiltonian circuit in G.
Key invariant: With unit weights, a simple circuit of maximum length n exists if and only if the circuit visits all n vertices, i.e., it is Hamiltonian.
Time complexity of reduction: O(|E|) to assign unit weights.
Size Overhead
Symbols:
num_verticesof source HamiltonianCircuit instance (|V|)num_edgesof source HamiltonianCircuit instance (|E|)num_verticesnum_verticesnum_edgesnum_edgesDerivation: The graph is unchanged. Each edge simply gets a unit length assigned. There is no
boundfield onLongestCircuit— the model is an optimization problem, not a decision problem.Validation Method
Example
Source instance (HamiltonianCircuit):
Graph G with 6 vertices {0, 1, 2, 3, 4, 5} and 9 edges:
Constructed target instance (LongestCircuit):
Solution mapping:
Verification:
Max(Some(6))signals a YES instance;Max(Some(k))with k < 6 signals NOReferences
Morrow1976] C. Morrow and S. Goodman (1976). "An efficient algorithm for finding a longest cycle in a tournament". In: Proceedings of the 7th Southeastern Conference on Combinatorics, Graph Theory, and Computing, pp. 453-462. Utilitas Mathematica Publishing.Itai1977c] Alon Itai and Michael Rodeh (1977). "Some matching problems". In: Automata, Languages, and Programming. Springer.