NOTE

A Hamiltonian cycle (or Hamilton cycle) in a graph is a simple cycle that visits every vertex exactly once and returns to the start.

Theorem: Dirac (1952)

NOTE

Every Graph with and minimal degree has a Hamiltonian cycle

Proof Structure:

  1. The graph is connected
  2. Induction:
    • For : -cycle (with vertices) There exists a long path
    • There is long path There exists long path or -cycle

Proof:

  1. Choose any
    • If then are connected
    • Otherwise, (by Siebformel) There is a path between
  • is the neighbors of vertex
  • because
    • The graph is connected
  1. Induction part:
    1. straightforward from the conclusion that is connected. We can always find a node that is connected to the cycle
    2. Assume there is a path
  2. Case: or
  • There is a node that is not yet in the path, so we can add node to the path
  1. Case: and
  • Define
  • There exists such that

Application: Rotary Encoder

There are light emitters and light detectors. We want to arrange the holes on the plate in a certain way such that they encode directions. For , we want to have 00, 01, 10, 11. However, we also want the codes of any two neighboring directions to differ in only one bit, because the light detectors are much more precise than the positions of the holes.

We can model this problem as finding a Hamiltonian cycle on a dimensional hypercube.

Solving this problem is straightforward. Suppose we have a Hamiltonian cycle on dimensional hypercube. We first break it into a Hamiltonian path, then duplicate the hypercube along the -th dimension and finally connect the two paths together to form a new cycle.

How it looks like:

How to decide if a graph has a Hamiltonian cycle (effizient)

  • Brute Force:
  • DP: , actually ~ time and ~ memory

Consider a super computer with FLOPs ( EFLOPs)

  • Using brute force we can solve graph with ~25 nodes
  • Using DP we can solve graph with ~84 node