CMU 15-112: Fundamentals of Programming and Computer Science
Class Notes: NP Completeness
- Define P = PTIME = Polynomial Time = Fast!
- Define EXP = EXPTIME = Exponential Time = Slow!
- Define intractable = solveable in theory but too slow in practice
- Define subsetSum = given a list L, find a sublist M of values in L where sum(M) == 0.
- Show (by example) that subsetSum is in EXP = just try all 2**N sublists of L.
- Question: is subsetSum in P? Answer: nobody knows.
- Define NP = Non-Deterministic Polynomial Time = able to confirm answer in PTIME
- Show that subsetSum is in NP: easy to confirm if M is a sublist of L and sum(M) == 0.
- Define SAT (Boolean Satisfiability) = Given a circuit with N gates, is there some assignment of True/False values to its inputs that makes it output True? (Basically, in 112-speak, it's an ROC for boolean circuits).
- Show that SAT is in NP = Easy to just evaluate the circuit using given inputs.
- Discuss P-Time reductions between SAT and subsetSum = You can convert either problem into the other one quickly, so if you have a PTIME solution to one of them, you then have a PTIME solution for the other.
- So: subsetSum is in P if-and-only-if SAT is in P.
- So: subsetSum and SAT are NP-Complete
- Define NP-Complete: Problems in NP that have the additional property that if any one of them happens to be in P (fast!), then they all are in P!
- Show other problems that are NP-Complete See https://en.wikipedia.org/wiki/NP-completeness#NP-complete_problems
- Again: either all of these are in P or none of these are in P
- So the million-dollar question is if P =?= NP See here.
- Discuss economic significance of these problems (vast!)
- Discuss the Millenium Prize ($1M and fame and glory!) See here.
- Summarize: Does P = NP? We hope so, but who knows?