Skip to content
Related Articles

Related Articles

Save Article
Improve Article
Save Article
Like Article

Cook–Levin theorem or Cook’s theorem

  • Last Updated : 18 Jun, 2021

In computational complexity theory, the Cook–Levin theorem, also known as Cook’s theorem, states that the Boolean satisfiability problem is NP-complete. That is, it is in NP, and any problem in NP can be reduced in polynomial time by a deterministic Turing machine to the Boolean satisfiability problem.

Stephen Arthur Cook and L.A. Levin in 1973 independently proved that the satisfiability problem(SAT) is NP-complete. Stephen Cook, in 1971, published an important paper titled ‘The complexity of Theorem Proving Procedures’, in which he outlined the way of obtaining the proof of an NP-complete problem by reducing it to SAT. He proved Circuit-SAT and 3CNF-SAT problems are as hard as SAT. Similarly, Leonid Levin independently worked on this problem in the then Soviet Union. The proof that SAT is NP-complete was obtained due to the efforts of these two scientists. Later, Karp reduced 21 optimization problems, such as Hamiltonian tour, vertex cover, and clique, to the SAT and proved that those problems are NP-complete.

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.  To complete your preparation from learning a language to DS Algo and many more,  please refer Complete Interview Preparation Course.

In case you wish to attend live classes with experts, please refer DSA Live Classes for Working Professionals and Competitive Programming Live for Students.

Hence, an SAT is a significant problem and can be stated as follows:

Given a boolean expression F having n variables x1,x2,….,xn, and Boolean operators, is it possible to have an assignment for variables true or false such that binary expression F is true?

This problem is also known as the formula – SAT. An SAT(formula-SAT or simply SAT) takes a Boolean expression F and checks whether the given expression(or formula) is satisfiable. A Boolean expression is said to be satisfactory for some valid assignments of variables if the evaluation comes to be true. Prior to discussing the details of SAT, let us now discuss some important terminologies of a Boolean expression.

  • Boolean variable: A variable, say x, that can have only two values, true or false, is called a boolean variable
  • Literal: A literal can be a logical variable, say x, or the negation of it, that is x or ; x is called a positive literal, and is called the negative literal
  • Clause: A sequence of variables(x1,x2,….,xn) that can be separated by a logical OR operator is called a clause. For example, (x1 V x2 V x3) is a clause of three literals.
  • Expressions: One can combine all the preceding clauses using a Boolean operator to form an expression.
  • CNF form: An expression is in CNF form(conjunctive normal form) if the set of clauses are separated by an AND (^), operator, while the literals are connected by an OR (v) operator. The following is an example of an expression in the CNF form:
    • f = (x1 V x̄2 V x3) ∧ (x1 V x̄3 V x2)
  • 3 – CNF: An expression is said to be in 3-CNF if it is in the conjunctive normal form, and every clause has exact three literals.

Thus, an SAT is one of the toughest problems, as there is no known algorithm other than the brute force approach. A brute force algorithm would be an exponential-time algorithm, as 2n possible assignments need to be tried to check whether the given Boolean expression is true or not. Stephen Cook and Leonid Levin proved that the SAT is NP-complete.

Cook demonstrated the reduction of other hard problems to SATs. Karp provided proof of 21 important problems, Such as Hamiltonian tour, vertex cover, and clique, by reducing it to SAT using Karp reduction.

 Let us briefly introduce the three types of SATs. They are as follows:

  1. Circuit- SAT: A circuit-SAT can be stated as follows: given a Boolean circuit, which is a collection of gates such as AND, OR, and NOT, and n inputs, is there any input assignments of Boolean variables so that the output of the given circuit is true? Again, the difficulty with these problems is that for n inputs to the circuit. 2n possible outputs should be checked. Therefore, this brute force algorithm is an exponential algorithm and hence this is a hard problem.
  2. CNF-SAT: This problem is a restricted problem of SAT, where the expression should be in a conjunctive normal form. An expression is said to be in a conjunction form if all the clauses are connected by the Boolean AND operator. Like in case of a SAT, this is about assigning truth values to n variables such that the output of the expression is true.
  3. 3-CNF-SAT(3-SAT): This problem is another variant where the additional restriction is that the expression is in a conjunctive normal form and that every clause should contain exactly three literals. This problem is also about assigning n assignments of truth values to n variables of the Boolean expression such that the output of the expression is true. In simple words, given an expression in 3-CNF, a 3-SAT problem is to check whether the given expression is satisfiable.

These problems can be used to prove the NP-completeness of some important problems.

My Personal Notes arrow_drop_up
Recommended Articles
Page :