# Lecture 17

## Polynomial-time Reductions

**Definition** The language \(A\subseteq\{0,1\}^*\) is polynomial-time reducible to \(B\subseteq\{0,1\}^*\) if \(f:\{0,1\}^*\rightarrow\{0,1\}^*\) that satisfies

- there exists a Turing machine with polynomial running time that on input \(x\in\{0,1\}^*\) writes \(f(x)\) on the tape
- \(x\in A\) iff \(f(x)\in B\)

**Definition** We write \(A\leq_p B\) when \(A\) is polynomial-time reducible to \(B\).

**Prop** If \(A\leq_p B\) and \(B\in P\), then \(A\in P\) as well.

```
MA
--------------
x->|Mf->f(x)->MB|
--------------
```

E.g.

- \(Add\leq_p Sub\) (\(\{1^k01^l01^{k+l}\}\) and \(\{1^{k+l}01^k01^l\}\))
- \(L_{0^k1^k}\leq_p PAL^{even}=\{ww^R:w\in\{0,1\}^*\}\)
- \(2COL\leq_p 3COL\)

## NP-hardness & NP-completeness

**Definition** \(L\subseteq\{0,1\}^*\) is \(NP-hard\) if for every \(A\in NP\) \(A\leq_p L\)

**Definition** \(L\subseteq\{0,1\}^*\) is \(NP-complete\) if \(L\) is \(NP-hard\) and \(L\in NP\)

**Theorem** There is alanguage \(L\) that is \(NP-complete\)

**Proof** Consider \(TMSAT=\{<M,x,1^u,1^t>:\exists c\in\{0,1\}^*\) of length \(\leq u\) s.t. \(M\) accepts \(<x,c>\) in at most \(t\) steps\(\}\)

- \(TMSAT\in NP\): we can build a NTM that guesses the certificate \(c\) and simulate \(M\) on \(<x,c>\) for at most \(t\) steps
- Let \(A\) be any language in \(NP\). Let \(V\) be a polynomial-time verifier for \(A\). Define \(f(x)=<V,x,1^{p(|x|)},1^{t(|x|+p(|x|))}>\) We can compute \(f\) in polynomial time and we can easily verify that \(x\in A\) iff \(f(x)\in TMSAT\)

## Cook-Levin Theorem

\(SAT\) is \(NP-complete\)

**Definition** A Boolean formula is an expression of some boolean variables combine with \(\land, \lor, \lnot\).

e.g. \(\varphi(x_1,x_2,x_3)=(x_1\land x_2)\lor(\lnot x_3\lor x_1)\)

**Definition** A Boolean formula is satisfiable if there is an assignment of True/False values to the variables that cases the formula to evaluate to True.

**Definition** \(SAT=\{<\varphi>: \varphi\) is a satisfiable Boolean formular\(\}\)