The Longest-Path Strategy
Dirac’s theorem gives a sufficient condition for a graph to have a Hamiltonian cycle, meaning a cycle that visits every vertex exactly once before returning to its start. The key idea in its proof is to choose a longest path. Its endpoints cannot have neighbors outside the path, since such a neighbor would extend it. The minimum-degree hypothesis therefore puts many neighbors of both endpoints among the path’s vertices. A counting argument forces those neighbors into a useful arrangement, producing a cycle through the entire path.
Throughout, graphs are finite, simple and undirected. The order of \(G\) is \(n=|V(G)|\), and its minimum degree is \(\delta(G)\). A path is a sequence of distinct vertices in which consecutive vertices are adjacent. A longest path is one with as many vertices as possible; it need not be unique.
Proof. If \(v_1\) had a neighbor \(x\) outside \(V(P)\), then \(x,v_1,v_2,\ldots,v_k\) would be a path with \(k+1\) vertices, contradicting the choice of \(P\). If \(v_k\) had a neighbor \(y\) outside \(V(P)\), then \(v_1,\ldots,v_k,y\) would likewise be a path with \(k+1\) vertices. Thus neither endpoint has a neighbor outside \(V(P)\). \(\square\)
The lemma converts degree information into information about positions on one path. The proof will use the \(k-1\) gaps between consecutive vertices of \(P\). If both endpoints have sufficiently many neighbors on the path, some gap must have the two particular endpoint-neighbor incidences needed to close the path into a cycle.
Dirac’s Theorem
Proof. First, \(G\) is connected. Suppose instead that it has at least two connected components. Each component has at least \(\delta(G)+1\) vertices: any vertex in that component has at least \(\delta(G)\) neighbors, all in the same component. Consequently, two components would together contain at least \(2(\delta(G)+1)\ge n+2\) vertices, which is impossible in a graph of order \(n\). Thus \(G\) is connected.
Choose a longest path \(P=v_1v_2\cdots v_k\). Since \(\delta(G)\ge n/2\ge 3/2\), the integer \(\delta(G)\) is at least \(2\), so \(P\) has at least three vertices. By the lemma, all neighbors of its endpoints lie on \(P\).
Index the \(k-1\) gaps along the path by \(1,2,\ldots,k-1\), where gap \(i\) is between \(v_i\) and \(v_{i+1}\). Define two sets of gap indices:
Every neighbor of \(v_1\) is one of \(v_2,\ldots,v_k\), so each such neighbor corresponds to exactly one index in \(A\). Similarly, every neighbor of \(v_k\) is one of \(v_1,\ldots,v_{k-1}\), corresponding to exactly one index in \(B\). Hence \(|A|=\deg(v_1)\) and \(|B|=\deg(v_k)\), and therefore
There are only \(k-1\) possible gap indices. If \(A\) and \(B\) were disjoint, their total size would be at most \(k-1\). The displayed strict inequality rules this out, so there is an index \(i\in A\cap B\). For this index, \(v_1v_{i+1}\) and \(v_iv_k\) are edges. Following the path from \(v_1\) to \(v_i\), taking the edge \(v_iv_k\), then following the path backwards from \(v_k\) to \(v_{i+1}\), and finally taking the edge \(v_{i+1}v_1\), gives a cycle:
If \(i=k-1\), the reverse segment from \(v_{k-1}\) down to \(v_{i+1}\) is empty; the closing edge is then \(v_kv_1\). In every case, each of \(v_1,\ldots,v_k\) appears exactly once before returning to \(v_1\). Thus the cycle contains all vertices of \(P\).
It remains to show that \(P\) contains every vertex of \(G\). If it did not, connectedness would give an edge \(xy\) with \(x\in V(P)\) and \(y\notin V(P)\). The cycle just constructed visits every vertex of \(P\). Starting at \(y\), taking the edge to \(x\), and then following the cycle from \(x\) in one direction while stopping just before returning to \(x\) produces a path containing \(y\) and all \(k\) vertices of \(P\). This path has \(k+1\) vertices, contradicting the maximal length of \(P\). Therefore \(P\) contains all \(n\) vertices, and the cycle is Hamiltonian. \(\square\)
Worked Examples: Finding the Shared Gap
Worked Example: A Six-Cycle at the Degree Threshold
Let \(G\) have vertex set \(\{1,2,3,4,5,6\}\) and edge set \(\{12,23,34,45,56,61\}\). Every vertex has degree \(2\), so \(\delta(G)=2=6/2\). Take the path \(P=1,2,3,4,5,6\), which has all six vertices and is therefore a longest path.
For its first endpoint, vertex \(1\) is adjacent on the path to \(2\) and \(6\). These give gap indices \(1\) and \(5\), so \(A=\{1,5\}\). For its last endpoint, vertex \(6\) is adjacent to \(1\) and \(5\), giving \(B=\{1,5\}\). The intersection is nonempty; for instance, choose \(i=5\). The construction follows \(1,2,3,4,5\), takes the edge \(56\), and closes with \(61\), giving the cycle \(1,2,3,4,5,6,1\).
Check: The cycle uses all six distinct vertices before returning to \(1\). Independently, the edge set lists exactly the six consecutive edges of that cycle, and each vertex is incident with exactly two of them. Thus the degree calculation and the constructed cycle agree.
Worked Example: The Construction in a Complete Graph
Let \(G\) have vertex set \(\{1,2,3,4\}\) and edge set \(\{12,13,14,23,24,34\}\), the complete graph \(K_4\). Each of the four vertices is adjacent to the other three, so \(\delta(G)=3\), while \(n/2=4/2=2\). Take the path \(P=1,2,3,4\), which is longest because it already contains all four vertices.
The neighbors of \(v_1=1\) among \(2,3,4\) yield \(A=\{1,2,3\}\): the corresponding edges are \(12,13,14\). The neighbors of \(v_k=4\) among \(1,2,3\) yield \(B=\{1,2,3\}\): the corresponding edges are \(14,24,34\). Choose the shared index \(i=2\). The resulting cycle is \(1,2,4,3,1\); its edges are \(12,24,43,31\), all of which belong to the specified edge set.
Check: The cycle has four distinct vertices before returning to its start, so it is spanning. The graph’s edge set has six edges, as can also be counted from its four vertices of degree \(3\): the sum of degrees is \(4\cdot3=12\), and each edge contributes \(2\), giving \(12/2=6\) edges.
Worked Example: Alternating Vertices in a Complete Bipartite Graph
Let \(G\) have vertex set \(\{1,2,3,4,5,6\}\), with parts \(\{1,2,3\}\) and \(\{4,5,6\}\), and edge set \(\{14,15,16,24,25,26,34,35,36\}\). Every vertex is adjacent to all three vertices in the other part, so \(\delta(G)=3=6/2\). Use the path \(P=1,4,2,5,3,6\). It contains all six vertices and hence is longest.
Along this path, the neighbors \(4,5,6\) of its first endpoint \(1\) occur in positions \(2,4,6\). Thus \(A=\{1,3,5\}\), since a neighbor in position \(j\) corresponds to gap \(j-1\). The last endpoint \(6\) is adjacent to \(1,2,3\), which occur in positions \(1,3,5\), so \(B=\{1,3,5\}\). Choose \(i=3\). The construction gives \(1,4,2,6,3,5,1\). Its edges are \(14,42,26,63,35,51\), and each is in the stated edge set.
Check: The constructed cycle visits all six vertices once before returning to \(1\). The edge list has nine edges, and its six vertices each have degree \(3\); the degree sum \(6\cdot3=18\) counts every edge twice and confirms \(18/2=9\).
Why the Counting Step Matters
The decisive inequality is not merely that the endpoint degrees are large. It is that the number of indices contributed by the two endpoints is strictly larger than the number of available gaps. Here the number of gaps is \(k-1\), while the hypotheses give \(|A|+|B|\ge n\ge k\). If the sets had no common index, their combined size could not exceed \(k-1\). A shared index supplies both edges needed to close the path while preserving all its vertices.
Common mistake: using a non-strict counting bound. It is not enough, in general, to know that two subsets of a set of size \(r\) have sizes whose sum is at least \(r\). For example, in the universe \(\{1,2\}\), the disjoint sets \(\{1\}\) and \(\{2\}\) have sizes summing to \(2\). The proof needs a sum strictly greater than the universe size. In Dirac’s argument, the relevant comparison is \(|A|+|B|\ge k>k-1\), not merely \(|A|+|B|\ge k-1\).
A second point is that the cycle initially obtained is only known to contain the longest path. The connectedness argument is what rules out vertices outside it: an outside vertex linked to the cycle would let us break the cycle at that link and form a longer path. Both parts of the proof are needed to conclude that the cycle is spanning.
Check Your Understanding
Use the definitions and the proof’s two stages to answer these questions.
- In the proof, why must every neighbor of \(v_1\) correspond to a different index in \(A\)?
- Why does \(|A|+|B|>k-1\) guarantee a shared gap index?
- For \(P=v_1v_2v_3v_4v_5\), write the cycle construction when a shared index is \(i=2\).
- Where is the assumption that \(G\) is connected used after the cycle through the path has been found?
- Which step would fail if the minimum-degree condition were weakened so that the endpoint degree sum could be only \(k-1\)?