[ library(gfd) | Reference Manual | Alphabetic Index ]
# <ConsistencyModule:> circuit_offset(+Succ,+Offset)

Constrains elements (offset by Offset) in Succ to form a Hamiltonian circuit.
*Succ*
- A collection of different (domain) variables or integers
*Offset*
- Offset for Succ (An integer)

## Description

Succ is a collection of N elements presenting a digraph of N nodes, where
the value of the i'th element of Succ - Offset represents the successor to
node i. The constraint enforces Succ to form a Hamiltonian circuit,
a path through every node in the graph, visiting each node once and
forming a circuit.

Note that the Gecode implementation of this constraint has index (node id)
starting from 0, rather than 1. The value of Offset is incremented by 1
when the constraint is posted to Gecode. A version of this constraint with
native Gecode indexing, i.e. without adjusting Offset, is available
as circuit_offset_g/2.

ConsistencyModule is the optional module specification to give the
consistency level for the propagation for this constraint:
gfd_gac for generalised arc consistency (domain consistency),
and gfd_vc for value consistency.

This constraint is implemented by Gecode's circuit() constraint, using an
offset of Offset + 1.

## See Also

circuit_offset_g / 2