# Chapter 7: Time Complexity

## For Your Enjoyment

## Chapter 7.4, NP-Completeness

### Preliminaries

- Definition. A function f: Σ
^{*} → Σ^{*}
is a **polynomial time computable function** if some polynomial time
Turing Machine M exists that halts with just f(w) on its tape, when
started on input w.
- Definition. Language A is
**polynomial time mapping reducible**
or simply **polynomial time reducible** to language B, written
A ≤_{P} B, if a polynomial time computable function
f: Σ^{*} → Σ^{*} exists where
for every w, w ∈ A ⇔ f(w) ∈ B. The function f
is called the **polynomial time reduction** of A to B.
- Theorem. If A ≤
_{P} B and B ∈ P, then A ∈ P.

### NP-Complete Problems

- Definition. A language B is
**NP-Complete** if (1) B is in NP and
(2) every A in NP is polynomial time reducible to B.
- Theorem. If B is in NPC and B ∈ P, then P = NP.
- Theorem. If B is in NPC and B ≤
_{P} C for C in NP,
then C is in NPC.

### Satisfiability Problem

- SAT = {<Φ> | Φ is a satisfiable Boolean formula.}
- SAT was the first problem proved to be in NPC by Stephen Cook and
Leonid Levin in 1971.
- Theorem. SAT ∈ P iff P = NP.

### 3SAT Problem

- 3SAT = {<Φ> | Φ is a satisfiable 3cnf formula}.
Every clause is a 3cnf (conjunctive normal form) has exactly 3 literals.
- 3SAT is an NPC problem.
- How do you show that 3SAT is in NP?
- How do you show that there is a polynomial time reduction from
SAT to 3SAT?

### Active Learning

- Convert ¬(a ∨ b) to 3SAT.
- Convert ¬(a ∨ b) ∨ ((¬ d ∨ e) ∧ f) to 3SAT.

### Useful Boolean Identities

- ¬(P ∨ Q) ≡ ¬P ∧ ¬Q
- ¬(P ∧ Q) ≡ ¬P ∨ ¬Q
- P ∨ (Q ∧ R) ≡ (P ∨ Q) ∧ (P ∨ R).
- P ∧ (Q ∨ R) ≡ (P ∧ Q) ∨ (P ∧ R).

### Test Your Comprehension