Using the Breakout Algorithm to Identify Hard and Unsolvable Subproblems
Local search algorithms have been very successful for solving constraint satisfaction problems (CSP). However, a major weakness has been that local search is unable to detect unsolvability and is thus not suitable for highly constrained or overconstrained problems. In this paper, we present a scheme where a local search algorithm, the breakout algorithm, is used to identify hard or unsolvable subproblems. This is used in two ways. The first to generate a fail-first variable order for a systematic backtrack search that proves unsolvability or solves the problem efficiently. The combination of the two methods is a complete algorithm. On randomly generated coloring problems, the method performs extremely well, in particular, for tightly and overconstrained CSPs. The second way of using the breakout algorithm is as a filter for identifying possibly unsolvable subproblems. We present an efficient algorithm that guarantees to find the smallest unsolvable subproblem by systematic search. The presented scheme is of great practical use as ideal failure analysis tool, which also supports the repair of a problem.