Files
NoteNextra-origin/pages/CSE347/Exam_reviews/CSE347_E2.md
2024-11-20 13:28:03 -06:00

1.6 KiB

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