Proof of NP-completeness
We give here a sketch of the proof of NP-completeness. To prove that SAT is NP-complete we must show that
- SAT is in NP, and
- all other NP problems can be reduced to it in polynomial time.
First, notice that it is easy to verify a YES answer: simply plug in a given set of variable values and see if they make the expression true. Therefore the problem is in NP.
Next, consider an arbitrary problem X that is in NP. By definition, there must be an algorithm for checking certificates for YES answers to X in polynomial time. Given such an algorithm it is possible to construct a polynomial-time algorithm that, given the size of the certificate, constructs a boolean circuit that is polynomially large in the certificate size and decides whether its input is a binary encoding of a valid certificate or not. This circuit can then be transformed by another polynomial-time algorithm into an equivalent boolean formula that is still polynomially large in the certificate size. It then holds that this formula is satisfiable iff there is a valid certificate, which means that we have reduced the original problem to SAT.
Algorithms for solving SAT
There are two classes of high-performance algorithms for solving instances of SAT in practice: modern variants of the David-Putnam-Loveland algorithm, such as zchaff, and stochastic local search algorithms,
such as WalkSAT. Particularly in hardware design and verification applications, satisfiability and other logical properties of a given propositional formula are often decided based on a representation of the formula as a binary decision diagram (BDD).
Propositional satisfiability has various generalisations, including satisfiability for quantified Boolean formulae, for first- and second-order logic, constraint satisfaction problems, 0-1 integer programming, and maximum satisfiability.
Many other decision problems, such as graph colouring problems,
planning problems, and scheduling problems
can be rather easily encoded into SAT.
Compare with: decision problem
External links