55 lines
1.6 KiB
Markdown
55 lines
1.6 KiB
Markdown
# Exam 2 Review
|
|
|
|
## Reductions
|
|
|
|
We say that a problem $A$ reduces to a problem $B$ if there is a **polynomial time** reduction function $f$ such that for all $x$, $x \in A \iff f(x) \in B$.
|
|
|
|
To prove a reduction, we need to show that the reduction function $f$:
|
|
|
|
1. runs in polynomial time
|
|
2. $x \in A \iff f(x) \in B$.
|
|
|
|
### Useful results from reductions
|
|
|
|
1. $B$ is at least as hard as $A$ if $A \leq B$.
|
|
2. If we can solve $B$ in polynomial time, then we can solve $A$ in polynomial time.
|
|
3. If we want to solve problem $A$, and we already know an efficient algorithm for $B$, then we can use the reduction $A \leq B$ to solve $A$ efficiently.
|
|
4. If we want to show that $B$ is NP-hard, we can do this by showing that $A \leq B$ for some known NP-hard problem $A$.
|
|
|
|
$P$ is the class of problems that can be solved in polynomial time. $NP$ is the class of problems that can be verified in polynomial time.
|
|
|
|
We know that $P \subseteq NP$.
|
|
|
|
### NP-complete problems
|
|
|
|
A problem is NP-complete if it is in $NP$ and it is also NP-hard.
|
|
|
|
#### NP
|
|
|
|
A problem is in $NP$ if
|
|
|
|
1. there is a polynomial size certificate for the problem, and
|
|
2. there is a polynomial time verifier for the problem that takes the certificate and checks whether it is a valid solution.
|
|
|
|
#### NP-hard
|
|
|
|
A problem is NP-hard if every instance of $NP$ hard problem can be reduced to it in polynomial time.
|
|
|
|
List of known NP-hard problems:
|
|
|
|
1. 3-SAT (or SAT)
|
|
2. Independent Set
|
|
3. Vertex Cover
|
|
4. 3-coloring
|
|
5. Hamiltonian Cycle
|
|
6. Hamiltonian Path
|
|
|
|
## Approximation Algorithms
|
|
|
|
## Randomized Algorithms
|
|
|
|
## Online Algorithms
|
|
|
|
|
|
|