Definition: a problem B is called NP-complete if

1) it is in NP and

2) for every other problem A in NP, A

Theorem 9.1: If decision problem B is in P and A B, then decision problem A is in P.

Theorem 9.2: (Cook's Theorem 1971) CNF-Satisfiability in NP-complete.

(Proof uses common properties of NP problems to show all of them reduce to CNF-SAT.)

Theorem 9.3: A problem C is NP-complete if both of the following are true:

1) C is in NP.

2) For some other NP-complete problem B, B C.

CNF-Satisfiability Problem

A clause is the "or" of a set of literals, e.g., .

A Boolean expression is in CNF (Conjunctive Normal Form) if it is the "and" of one or more clauses, e.g., .

The CNF-Satisfiability Decision problem is to determine for a given CNF expression whether there is some truth assignment that makes the CNF expression "TRUE."

For the CNF-SAT Boolean formula B = , the answer is "Yes" since the true assignment of x1=TRUE, x2= FALSE, x3=TRUE, x4=TRUE makes B true.

Clique Problem

A clique in an undirected graph G=(V, E) is a subset W vertices such that each vertex W has an edge to all other vertices of W in the graph G.

a maximal clique - clique with largest number of vertices