Literal: A boolean variable or its negation
\[x_i \text{ or } \overline{x_i}\]
Clause: A disjunction of literals
\[C_j = x_1 \vee \overline{x_2} \vee x_3\]
Conjunctive Normal Form: A propositional formula \(\Phi\) that is the conjunction of clauses
\[ \Phi = C_1 \wedge C_2 \wedge C_3 \wedge C_4 \]
\(\Sat\): Given CNF formula \(\Phi\), does it have a satisfying truth assignment?
\(\ThreeSat\): \(\Sat\) where each clause contains exactly 3 literals (and each literal corresponds to a different variable)
\[ \Phi = \left( \overline{x_1} \vee x_2 \vee x_3 \right) \wedge \left( x_1 \vee \overline{x_2} \vee x_3 \right) \wedge \left( \overline{x_1} \vee x_2 \vee x_4 \right) \]
Above is satisfiable: \(x_1 = \text{true}\), \(x_2 = \text{true}\), \(x_3 = \text{false}\), \(x_4 = \text{false}\)
Key application: Electronic Design Automation (EDA)
Scientific hypothesis: There does not exist a poly-time algorithm for \(\ThreeSat\)
P vs. NP: This hypothesis is equivalent to \(P \neq NP\) conjecture
Theorem: \(\ThreeSat \leq_P \IndependentSet\)
Pf: Given an instance \(\Phi\) of \(\ThreeSat\), we construct an instance \((G,k)\) of \(\IndependentSet\) that has an independent set of size \(k = \left|\Phi\right|\) iff \(\Phi\) is satisfiable.
Construction:
Theorem: \(\ThreeSat \leq_P \IndependentSet\)
Construction:
\[ \Phi = \left( \overline{x_1} \vee x_2 \vee x_3 \right) \wedge \left( x_1 \vee \overline{x_2} \vee x_3 \right) \wedge \left( \overline{x_1} \vee x_2 \vee x_4 \right) \]
Lemma: \(G\) contains independent set of size \(k = |\Phi|\) iff \(\Phi\) is satisfiable
Pf ⇒: Let \(S\) be independent set of size \(k\)
Pf ⇐: Given satisfying assignment, select one true literal from each triangle. This is an independent set of size \(k\). ∎
Basic reduction strategies
Transitivity: If \(X \leq_P Y\) and \(Y \leq_P Z\), then \(X \leq_P Z\)
Pf idea: Compose the two algorithms
Ex:
\[\begin{eqnarray} \ThreeSat & \leq_P & \IndependentSet \leq_P \\ & \leq_P & \VertexCover \leq_P \\ & \leq_P & \SetCover \end{eqnarray}\]
Decision problem: Does there exist a vertex cover of size \(\leq k\)?
Search problem: Find a vertex cover of size \(\leq k\).
Ex: To find a vertex cover of size \(\leq k\):
Bottom line: \(\VertexCover \equiv_P \FindVertexCover\)
Decision problem: Does there exist a vertex cover of size \(\leq k\)?
Search problem: Find a vertex cover of size \(\leq k\).
Optimization problem: Find a vertex cover of minimum size.
Ex: To find vertex cover of minimum size:
Bottom line:
\[\begin{eqnarray} \VertexCover & \equiv_P & \FindVertexCover \equiv_P \\ & \equiv_P & \OptimalVertexCover \end{eqnarray}\]