* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
Download Lecture 24
Computational electromagnetics wikipedia , lookup
Perturbation theory wikipedia , lookup
Lateral computing wikipedia , lookup
Granular computing wikipedia , lookup
Post-quantum cryptography wikipedia , lookup
Pattern recognition wikipedia , lookup
Genetic algorithm wikipedia , lookup
Rental harmony wikipedia , lookup
Drift plus penalty wikipedia , lookup
Expectation–maximization algorithm wikipedia , lookup
Factorization of polynomials over finite fields wikipedia , lookup
Mathematical optimization wikipedia , lookup
Dynamic programming wikipedia , lookup
Numerical continuation wikipedia , lookup
Inverse problem wikipedia , lookup
Multiple-criteria decision analysis wikipedia , lookup
Simulated annealing wikipedia , lookup
Travelling salesman problem wikipedia , lookup
Secretary problem wikipedia , lookup
Knapsack problem wikipedia , lookup
CSE 326: Data Structures: Graphs Lecture 24: Friday, March 7th, 2003 1 Today • Finish NP complete problems • Course evaluation forms 2 NP-Complete Problems Recall: • A Hamiltonean path = a paths that goes through each node exactly once • How to find one ? Try out all paths. • Exponential time, and nobody knows better • Why don’t we prove that there is no better algorithm ? • Because we don’t know how to prove it 3 P and NP Recall: • A problem is in P (or PTIME) if we can solve it in time O(nk), for some k > 0 • A problem is in NP if we can check a candidate solution in P • Hamiltonean cycle (HC) is in NP • In fact, P NP • But what about NP ⊈ P or NP P ? Nobody knows. 4 Another NP Problem • SAT: Given a formula in Boolean logic, e.g. a b a c b c determine if there is an assignment of values to the variables that makes the formula true (=1). • Why is it in NP? 5 SAT is NP-Complete • Cook (1971) showed the following: Theorem Suppose that we can solve the SAT problem in polynomial time. Then there is a way to solve ANY NP problem in polynomial time !!! • • • • Including Hamiltonean Cycle (HC) In some sense, SAT is the hardest problem in NP We say that “SAT is NP-Hard” A problem that is NP-Hard and in NP is called NPcomplete 6 SAT is NP-Complete • Proof of Cook’s theorem: • Suppose we can solve SAT in time O(m7), where m is the size of the formula • Let some other problem in NP: we can check a candidate solution in, say, time O(n5), where n is the size of the problem’s input 7 SAT is NP-Complete: Proof • To solve that other problem, do the following • We have a program A that checks some candidate solution in time O(n5) • Construct a HUGE boolean formula that represents the execution of A: its variables are the candidate solution (which we don’t know) plus all memory bits • Then check if this formula is satisfiable (i.e. there exists some candidate solution) 8 SAT is NP-Complete: Proof Program counter Input Candidate Memory solution (unknown) (at most n5 memory words (why ?)) Time = 0 Boolean expression size = n5 n5 Time = 1 Boolean expression size = n5 n5 Time = n5 Answer (0 or 1) HUGE boolean formula of size O(n5 n5 n5) 9 check satisfiability in time O((n5 n5 n5)7) The Graph of NP-Completeness • What is special about SAT ? • Nothing ! There are hundreds of NP-complete problems: • • • • Directed Hamiltonean Path (DHP) Vertex Cover Clique etc, etc, ... 10 Directed Hamiltonean Path is NP-Complete Theorem Directed Hamiltonean Path (DHP) is NP Complete • Proof: by reducing SAT to DHP: Lemma If we can solve DHP in polynomial time, then we can solve SAT in polynomial time • Then use transitivity to argue than we can solve any NP problem in polynomial time • I’ll show you how to prove the lemma... 11 Directed Hamiltonean Path is NP-Complete • Suppose you are given a boolean formula in conjunctive normal form: a b a c b c • Construct a directed graph G s.t. it admits a Hamiltonean cycle iff the formula is satisfiable 12 a b a c b c c1 c2 c3 Step 1: construct this subgraph c1 c2 c3 13 a b a c b c c1 c2 c3 Step 2: now replicate it once for each boolean variable a c1 c2 c3 c1 c2 c3 c1 c2 c3 b c 14 a b a c b c c1 c2 c3 Step 3: now add a new node for each clause c1, c2, ... c1 a c1 c2 c3 c2 c3 b c1 c2 c3 c1 c2 c3 c 15 a b a c b c c1 c2 c3 Step 4: now connect the variable graphs to the clause nodes in clever way E.g. for c2: Right-left fora c1 a c1 c2 c3 c2 c3 b c1 c2 c3 Left-right for c c c1 c2 c3 16 a b a c b c c1 c2 c3 Step 5: finally, the formula is satisfiable iff there exists a Hamiltonean path ! E.g a=1, b=0, c=1 c1 (true because a of a) c1 c2 c3 c2 (true because of c) b c3 c1 c2 c3 (true because of c) c c1 c2 c3 17 a b a c b c c1 c2 c3 E.g a=1, b=0, c=1 a c1 (true because of a) c1 c2 c3 b c1 c2 c3 c c1 c2 c3 c2 (true because of c) c3 (true because of c) 18 A Great Book You Should Own! • Computers and Intractability: A Guide to the Theory of NP-Completeness, by Michael S. Garey and David S. Johnson 19 Your Chance to Win a Turing Award: P = NP? • Nobody knows whether NP P – Proving or disproving this will bring you instant fame! • It is generally believed that P NP, i.e. there are problems in NP that are not in P – But no one has been able to show even one such problem! – Practically all of modern complexity theory is premised on the assumption that P NP • A very large number of useful problems are in NP Alan Turing (1912-1954) 20 P, NP, and Exponential Time Problems • All currently known algorithms for NP-complete problems run in exponential worst case time – Finding a polynomial time algorithm for any NPC problem would mean: • Diagram depicts relationship between P, NP, and EXPTIME (class of problems that provably require exponential time to solve) EXPTIME NPC NP P It is believed that P NP EXPTIME 21 Coping with NP-Completeness 1. Settle for algorithms that are fast on average: Worst case still takes exponential time, but doesn’t occur very often. But some NP-Complete problems are also average-time NP-Complete! 2. Settle for fast algorithms that give near-optimal solutions: But finding even approximate solutions to some NPComplete problems is NP-Complete! 3. Just get the exponent as low as possible! Much work on exponential algorithms for Boolean satisfiability: in practice can often solve problems with 1,000+ variables But even 2n/100 will eventual hit the exponential curve! 22