Generic SBDD Using Computational Group Theory
We introduce a novel approach for symmetry breaking by dominance detection (SBDD). The essence of SBDD is to perform ‘dominance checks’ at each node in a search tree to ensure that no symmetrically equivalent node has been visited before. While a highly effective technique for dealing with symmetry in constraint programs, SBDD forces a major overhead on the programmer, of writing a dominance checker for each new problem to be solved. Our novelty here is an entirely generic dominance checker. This in itself is new, as are the algorithms to implement it. It can be used for any symmetry group arising in a constraint program. A constraint programmer using our system merely has to define a small number (typically 2–6) of generating symmetries, and our system detects and breaks all resulting symmetries. Our dominance checker also performs some propagation, again generically, so that values are removed from variables if setting them would lead to a successful dominance check. We have implemented this generic SBDD and report results on its use. Our implementation easily handles problems involving 1036 symmetries, with only four permutations needed to direct the dominance checks during search.
Unable to display preview. Download preview PDF.