GraphUtilities`
GraphUtilities`

FindHamiltonianCycle

As of Version 10, all the functionality of the GraphUtilities package is built into the Wolfram System. >>

FindHamiltonianCycle[g]

attempts to find a Hamiltonian cycle.

Details and Options

  • FindHamiltonianCycle functionality is now available in the built-in Wolfram Language function FindHamiltonianCycle.
  • To use FindHamiltonianCycle, you first need to load the Graph Utilities Package using Needs["GraphUtilities`"].
  • FindHamiltonianCycle[g] returns an empty list if no Hamiltonian cycle is found.
  • FindHamiltonianCycle considers the input graph as undirected.
  • FindHamiltonianCycle uses heuristic algorithms to find a Hamiltonian cycle; therefore, there is no guarantee that a Hamiltonian cycle will be found even if one exists.

Examples

open allclose all

Basic Examples  (2)

This defines a small graph and finds a Hamiltonian cycle of the graph:

This function has been superseded by FindHamiltonianCycle in the Wolfram System:

Options  (2)

MaxIterations  (1)

This limits the maximum number of iterations to try to find a Hamiltonian cycle:

RandomSeed  (1)

This specifies a random seed different from the default to try to find a Hamiltonian cycle:

Applications  (1)

This finds all possible Hamiltonian cycles in the graph consisting of bordering countries in South America:

This shows the first of these two cycles; the second is just a reversal of the first:

Properties & Relations  (1)

FindHamiltonianCycle uses heuristic algorithms. Unlike HamiltonianCycles, it is not guaranteed to find a Hamiltonian cycle even when one exists. But for large graphs, FindHamiltonianCycle can sometimes be faster at finding one cycle.

This defines a graph of 500 vertices, and uses these two functions to find a Hamiltonian cycle:

Possible Issues  (1)

FindHamiltonianCycle uses heuristic algorithms, which are not guaranteed to find a Hamiltonian cycle even when one exists: