NP-Complete

advertisement
CSC 413/513: Intro to
Algorithms
NP Completeness
Problems and Instances
● Problem: Sort(A)
● Problem instance: Sort([4,2,7,1,6,9])
● Input encoding
■ Bin(4) concat Bin(2) concat Bin(7) …
■ Size: n lg x
○ n: size of A
○ lg x: max. number of bits required to represent A[i], for
any i
○ We say size = ϴ(n), or simply n
NP-Completeness
● Some problems are intractable:
as the input size increases, we are unable to
solve them in reasonable time
● What constitutes reasonable time? Standard
working definition: polynomial time
■ On an input of size n the worst-case running time
is O(nk) for some constant k
■ Polynomial time: O(n2), O(n3), O(1), O(n lg n)
■ Not in polynomial time: O(2n), O(nn), O(n!)
Polynomial-Time Problems
● Are some problems solvable in polynomial
time?
■ Of course: every algorithm we’ve studied provides
polynomial-time solution to some problem
○ Except DP algorithm to 0-1 knapsack
■ We define P to be the class of problems solvable in
polynomial time
○ That is, all instances of such problems are polynomially
solvable (e.g., sorting)
■ These are the “easy” problems
Polynomial-Time Problems
● Are all problems solvable in polynomial time?
■ No: Turing’s “Halting Problem” is not solvable by any
computer, no matter how much time is given
○ But we often detect infinite loops in a program by
inspection, and hence “solve” the halting problem
○ However, there are instances that are not solvable, even by
our brains
■ Such problems are clearly intractable, not in P
■ Similarly, there are problems that can be solved, but
we haven’t found algorithms that will take any
instance of the problem and solve it in polynomial
time
NP-Complete Problems
● The NP-Complete problems are an interesting
class of problems whose status is unknown
■ No polynomial-time algorithm has been
discovered for an NP-Complete problem, for all
instances of it
■ No suprapolynomial lower bound has been proved
for some instance of any NP-Complete problem,
either
● We call this the P = NP question
■ The biggest open problem in CS
An NP-Complete Problem:
Hamiltonian Cycles
● An example of an NP-Complete problem:
■ A hamiltonian cycle of an undirected graph is a
simple cycle that contains every vertex
■ The hamiltonian-cycle problem: given a graph G,
does it have a hamiltonian cycle?
Describe a naïve algorithm
for solving the hamiltoniancycle problem. Running
time?
P and NP
● As mentioned, P is set of problems that can be
solved in polynomial time
● NP (nondeterministic polynomial time) is the
set of problems that can be solved in
polynomial time by a nondeterministic
computer
■ What the hell is that?
Nondeterminism
● Think of a non-deterministic computer as a computer
that magically “guesses” a solution, and then has to
verify that it is correct
■ If a solution exists, n.d. computer always guesses it
■ One way to imagine it: a parallel computer that can freely
spawn an infinite number of processes
○ Have one processor work on each possible solution
○ All processors attempt to verify that their solution works, in parallel
○ If a processor finds it has a working solution
■ So: NP = problems verifiable in polynomial time
■ Note: P  NP (think of verifying the output of sorting)
P and NP
● Summary so far:
■ P = problems that can be solved in polynomial time
■ NP = problems for which a solution can be verified in
polynomial time
■ P  NP
■ Unknown whether P = NP (most suspect not)
● Hamiltonian-cycle problem is in NP:
■ Don’t know how to solve in polynomial time
■ But, easy to verify solution in polynomial time (How?)
Intuition behind NP-Complete
problems
● Many problems exhibit structure that is
exploited
■ E.g., recursive structure in sorting, optimal
substructure in problems solved by DP, greedy etc.
● But, some problems seem to have no
exploitable structure
Does not
have optimal
substructure
■ E.g., longest simple path in a graph
○ Contrast with shortest paths in graphs, which has the
optimal substructure
■ Typically, these are the NP-Complete problems
What about 0-1 Knapsack?
● Has optimal substructure
■ But input contains a number (W), and the optimal
substructure depends on the magnitude of this
number, not its size
■ Algorithm turns out to be exponential in the size of
W (although polynomial in the magnitude of W)
■ Its DP Algorithm is called pseudo-polynomial
● 0-1 knapsack is called weakly NP-complete
NP-Complete Problems
● We will see that NP-Complete problems are
the “hardest” problems in NP:
■ If any one NP-Complete problem can be solved in
polynomial time…
○ …then every NP-Complete problem can be solved in
polynomial time…
○ …and in fact every problem in NP can be solved in
polynomial time (which would show P = NP)
■ Thus: solve hamiltonian-cycle in O(n100) time,
you’ve proved that P = NP. Retire rich & famous.
A Simplification
● Henceforth, we will only talk about decision
problems, with boolean answers
■ Most problems of interest can be posed as decision
problems
■ E.g., SHORTEST_PATH(G,u,v)
■ Its decision problem is PATH(G,u,v,k): is there a path
between u and v involving no more than k edges?
■ Can solve SHORTEST_PATH by calling PATH
repeatedly with decreasing k, until the answer is “No”
● So, “solve” ≡ “decide”
How to Verify?
● How do you verify the answer to a decision problem
(in polynomial time)?
● Need a certificate
■ E.g., certificate for PATH(G,u,v,k) would be the path:
<u,v1,v2,…,v>
● How do you verify the certificate?
■ Check length ≤ k
■ Check first vertex is u, last vertex is v
■ Check all path-edges actually exist
● How much time?
Why only Decision Problems?
● So that problems can be considered as
languages
■ Then, “algorithm” ≡ Turing machine
■ Consider the binary encoding of a problem instance (i.e., the
input)
■ Collect all input binary strings for which the answer/output is
“Yes”
■ This set is a language
○ A machine that decides the language also solves the
problem
● So, “decision problem” ≡ “language”
Reduction
● The crux of NP-Completeness is reducibility
■ Informally, a problem P can be reduced to another
problem Q if any instance of P can be “easily
rephrased” as an instance of Q, the solution to which
provides a solution to the instance of P
○ What do you suppose “easily” means?
○ This rephrasing is called transformation
■ Intuitively: If P reduces to Q, P is “no harder to
solve” than Q
Polynomial time
Polynomial Reduction
• Polynomial reduction can be used for polynomial time solution
• If A polynomially reduces to B, and we know a polynomial
algorithm to B, then we can solve A in polynomial time as well.
Reducibility
● An example:
■ A: Given a set of Booleans, is at least one TRUE?
■ B: Given a set of integers, is their sum > 0?
■ Transformation: Given (x1, x2, …, xn) construct (y1,
y2, …, yn) where yi = 1 if xi = TRUE, yi = 0 if xi =
FALSE
● Another example:
■ Solving linear equations is reducible to solving
quadratic equations
○ How can we easily use a quadratic-equation solver to
solve linear equations?
NP-Hard and NP-Complete
● If P is polynomial-time reducible to Q, we
denote this P p Q
● Definition of NP-Hard and NP-Complete:
■ If all problems R  NP are reducible to P, then P
is NP-Hard
■ We say P is NP-Complete if P is NP-Hard
and P  NP
● If P p Q and P is NP-Complete, Q is also
NP- Complete
Why Prove NP-Completeness?
● Though nobody has proven that P != NP, if
you prove a problem NP-Complete, most
people accept that it is probably intractable
● Therefore it can be important to prove that a
problem is NP-Complete
■ Don’t need to come up with an efficient algorithm
■ Can instead work on approximation algorithms
Proving NP-Completeness
● What steps do we have to take to prove a
problem P is NP-Complete?
■ Pick a known NP-Complete problem Q
■ Reduce Q to P
○ Describe a transformation that maps an arbitrary
instance of Q to some instance of P, s.t. “yes” for P =
“yes” for Q
○ Prove the transformation works
○ Prove the transformation takes polynomial time
■ Oh yeah, prove P  NP (What if you can’t?)
Coming Up
● Given one NP-Complete problem, we can prove
many interesting problems NP-Complete
■ Graph coloring (recall the wrestler-rivalry HW
problem)
■ Hamiltonian cycle
■ Hamiltonian path
■ Knapsack problem
■ Traveling salesman
■ Job scheduling with penalties
■ Many, many more
Download