Polytime Simplification

There are many "preprocessing" techniques that run in low-order polytime and can be used to simplify a problem before it is given to a search engine. The most common of these is "unit resolution", in which the effects of simple facts are propagated and used to subsume clauses. For example, with the set of clauses
x 
not x or y
y or z
we know x and propagating x to the second clause we obtain that y is true, which we then find that it subsumes the last clause. In this case the theory is solved by the preprocessing alone.

A more advanced technique is to test for "failed literals". If setting x to true and propagating results in a contradiction then we know that x must be false in any model. Hence we can just add "not x" to the theory, and then propagate the results of this. Such techniques are called "probing" in the operations research literature.

CIRL

Many stages of a preprocessing can be speculative. For example, with the failed literal test if setting a value does not result in a contradiction then we not have achieved any simplification. In such cases the preprocessing might well take so long that it is not worthwhile in terms of overall solution time. We work on heuristics that will select the tests that are most likely to lead to some useful result: for example, heuristics for selecting probes that are most likely to give useful information.

Pointers

Parent areas:
Knowledge Compilation

Related areas:
Lifted WSAT
Back to the CIRL Overview Page.