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: