I'm looking for an explanation on how reducing the Hamiltonian cycle problem to the Hamiltonian path's one (to proof that also the latter is NP-complete). I couldn't find any on the web, can someone help me here? (linking a source is also good).

Thank you.

  • Abaco, my answer, which you accepted, is wrong. Aryabhata has given a correct solution. – Mike Spivey Oct 24 '11 at 21:06
  • 1
    @user96758: I think you're right. Given a vertex, among all the edges attached to it, at least 2 are in a HC (if it exists). In fact, when one of these 2 edges, say $e$ (without loss of generality, $e = \{u,v\}$, from $u$ to $v$), is removed, the new graph will have a HP starting from $v$ and ending at $u$. So we don't need additional vertices to reduce HC problem to HP problem. On the other hand, since the reducing cost is polynomial in all methods mentioned here and by other users, we just proved the same thing. – Shushan Wen Oct 11 '13 at 20:56
  • I found a much more compact solution in here: aduni.org/courses/algorithms/courseware/psets/… – user3420029 Jul 28 '16 at 12:21
up vote 23 down vote accepted

Note: The below is a Cook reduction and not a Karp reduction. The modern definitions of NP-Completeness use the Karp reduction.

For a reduction from Hamiltonian Cycle to Path.

Given a graph $G$ of which we need to find Hamiltonian Cycle, for a single edge $e = \{u,v\}$ add new vertices $u'$ and $v'$ such that $u'$ is connected only to $u$ and $v'$ is connected only to $v$ to give a new graph $G_e$.

$G_e$ has a Hamiltonian path if and only if $G$ has a Hamiltonian cycle with the edge $e=\{u,v\}$.

Run the Hamiltonian path algorithm on each $G_e$ for each edge $e \in G$. If all graphs have no Hamiltonian path, then $G$ has no Hamiltonian cycle. If at least one $G_e$ has a Hamiltonian path, then $G$ has a Hamiltonian cycle which contains the edge $e$.

  • I think you wrong about the reduction from HC to HP (answer #1). If we look about this case : U* ------------ V and implement your reduction: U' -------- U* ------------ V* ----------V'* It is prettry easy to see that in the graph after redcution there is an hemilton path .. (u' -> u -> v -> v') Hope to here your response (maybe I didn't understand the reduction) – Lital Zubery Dec 19 '12 at 13:24
  • @LitalZubery: If I understood you correctly, you are talking about the special case where G is exactly one single edge? Yes, that should be mentioned, but does not really break down the proof, as a finite number of exceptions will not hurt the NP-Completeness proof. – Aryabhata Dec 19 '12 at 17:20
  • I am confused, is this valid? – graphtheory92 Apr 21 '15 at 8:49
  • 1
    What precisely is the many-one reduction being described here? In order to show that a problem is NP complete we must use polynomial time many-one reductions, not polynomial time Turing reductions. – Carl Mummert Mar 24 at 14:18
  • 1
    @Aryabhata: indeed, but then it does not prove that anything is NP complete, as the question asked. – Carl Mummert Mar 26 at 20:09

This is a reduction from undirected Hamilton Cycle to undirected Hamilton Path. It takes a graph $G$ and returns a graph $f(G)$ such that $G$ has a Hamilton Cycle iff $f(G)$ has a Hamilton Path.

Given a graph $G = (V,E)$ we construct a graph $f(G)$ as follows.

Let $v \in V$ be a vertex of G, and let $v',s,t \notin V$.

We want to make $v'$ a "copy" of $v$, and add vertices of degree one; $s,t$, connected to $v,v'$, respectively. (See Figure 1.)

That is, $f(G)$ has vertices $V\cup \{v',s,t\}$ and edges $E\cup\{(v',w)|(v,w)\in E\}\cup\{(s,v),(v',t),(v,v')\}$.

Now if $G$ has a Hamilton Cycle, we may write it on the form $(v,u),edges,(u',v)$, where $edges$ is some list of edges which must form a simple path $u\ldots u'$ visiting all vertices but $v$. But then, $(s,v),(v,u),edges,(u',v'),(v',t)$ is a Hamilton Path between $s$ and $t$ in $f(G)$.

If on the other hand $f(G)$ has a Hamilton Path, then it must have $s$ and $t$ as endpoints, since they have degree 1. In which case it must (up to reversal) be of the form $(s,v),(v,y),edges',(y',v'),(v',t)$. But then, $G$ has a Hamilton cycle $(v,y),edges',(y',v)$.

Hamilton Cycle to Hamilton Path reduction

  • 1
    This should be the correct answer – nicole Feb 25 at 23:41

For the directed case,

Given $\langle G=(V,E)\rangle$ for the Hamiltonian cycle, we can construct input $\langle G',s,t\rangle$: choose a vertex $u \in V$ and divide it into two vertices, such that the edges that go out of $u$, will go out of $s$ and the vertices that get in to $u$, will get in to $t$.

The answer mentioned is correct for the purpose of showing reduction, but I have this idea which is faster than the idea presented. Please correct me if I am wrong. If ham path says no for even a single vertex then ham cycle says no. This means that all vertices should now say yes for Ham path(hence one method id to ask each egde).A faster method would be: Pick any vertex. For each of its edge remove the edge and add 2 vertices and join in same fashion as mentioned in the answer. If for any edge removal and addition of 2 new vertices ham path says yes, then output Yes.

Please correct me if I am wrong.

  • How is this faster than the other ideas presented? – D Poole Jul 28 '16 at 12:30

Just remove one edge from G, this will construct a G'. There's a Hamiltonian path in G' iff There's a Hamiltonian cycle in G.

  • 2
    This is untrue, at least in the brief version you gave. Let $G$ be the graph with five vertices and five edges that corresponds to the shape of capital letter A. Removing the horizontal crossing edge gives five vertices and four edges that we designate graph $G'$. While $G'$ has a Hamiltonian path (it is a path), the graph $G$ does not have a Hamiltonian cycle. – hardmath Dec 3 '16 at 0:59
  • Oh, it is my mistake that I didn't write the full reduction. Thanking for pointing that hardmath. I must state that if there's a Hamiltonian path in G' from u to v where (u,v) is the edge removed. And if G is directed graph, we must also check whether the direction of the edge (u,v) and choose the proper starting point u or v for Hamiltonian path. By the way, I think my reduction by removing one edge is not proper since it must be vertex u and vertex v must be the starting and ending vertices (or vice versa). Therefore, we should add two more vertices instead of removing edge. – richard Dec 12 '16 at 2:14
  • Thanks for responding. Please edit your Answer to reflect what you think will provide a valid reduction of one problem to the other, esp. from Hamiltonian cycle to Hamiltonian path as called for by the Question. – hardmath Dec 12 '16 at 2:29

protected by hardmath Dec 3 '16 at 0:56

Thank you for your interest in this question. Because it has attracted low-quality or spam answers that had to be removed, posting an answer now requires 10 reputation on this site (the association bonus does not count).

Would you like to answer one of these unanswered questions instead?

Not the answer you're looking for? Browse other questions tagged or ask your own question.