Implementing a test for tractability
The question of determining which sets of constraints give rise to NP-complete problems, and which give rise to tractable problems, is an important open problem in the theory of constraint satisfaction. It has been shown in previous papers that certain sufficient conditions for tractability and NP-completeness can be identified using algebraic properties of relations, and that these conditions can be tested by solving a particular form of constraint satisfaction problem (the so-called indicator problem). This paper describes a program which can solve the relevant indicator problems for arbitrary sets of constraints over small domains, and for some sets of constraints over larger domains. The main innovation in the program is its ability to deal with the many symmetries present in the problem; it also has the ability to preserve symmetries in cases where this speeds up the solution. Using this program, we have systematically investigated the complexity of all individual binary relations over a domain of size four or less, and of all individual ternary relations over a domain of size three or less. This automated analysis includes the derivation of more than 450 000 new NP-completeness results, and precisely identifies the small set of individual relations which cannot be classified as either tractable or NP-complete using the algebraic conditions presented in previous papers.
symmetry complexity polymorphism polyanna constraint language