Constraint satisfaction and optimisation problems occur frequently in industry and are
usually computationally expensive to solve. Constraint programming is a technique for
solving these difficult problems using specialised algorithms and search heuristics. The
presence of symmetries in constraint problems provides an opportunity to reduce the
computational effort required to solve these problems. To exploit symmetries, a problem
must first be analysed to determine what symmetries are present and then the search
algorithm must be modified to use the known symmetries.
In this thesis we provide contributions to both the research areas of automatically
detecting symmetries and of exploiting them to improve search performance. The auto-
matic detection of symmetries in constraint problems has been studied for some time, but
existing methods can handle realistically-sized problems only by sacrificing the number
and kinds of symmetry they can find. We contribute to this area in two parts. First, we
present a method of automatically detecting the symmetries of a constraint problem that
is capable of finding many small problems in a practical amount of time, and prove its
correctness. Second, we use this method as the foundation of a framework for finding the
symmetries in entire classes of problems. Symmetry detection on classes of problems has
been little studied; our approach greatly improves the practicality of automatic symmetry
detection as the symmetries found apply to many problem instances, small and large.
The exploitation of symmetries for improving search has been the subject of research
for many years, but there is yet to be a method that is easy to use and that gives good
performance under different search heuristics. We present a method of symmetry break-
ing, Lightweight Dynamic Symmetry Breaking (LDSB), that seeks to fill this void. We
describe how LDSB focuses on common symmetries to maximise performance, and show
experimentally that it performs consistently and is competitive with other dynamic sym-
metry breaking methods. Finally, we show how LDSB can be extended to much more
general search techniques.
When considered together, these contributions form the components of an automatic
system for detecting the symmetries of a problem class, and exploiting those symmetries
when solving different instances of that class.