1 / 51

Computationele complexiteit: NP-volledigheid

Computationele complexiteit: NP-volledigheid. Algoritmiek hoorcollege 16 oktober 2008. Vandaag: moeilijke problemen. Wanneer vinden we een probleem moeilijk?. Je moet heel slim zijn om het probleem te begrijpen Je moet heel slim zijn om een oplossing voor het probleem te vinden

zandra
Download Presentation

Computationele complexiteit: NP-volledigheid

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Computationele complexiteit:NP-volledigheid Algoritmiek hoorcollege 16 oktober 2008

  2. Vandaag: moeilijke problemen Wanneer vinden we een probleem moeilijk? Je moet heel slim zijn om het probleem te begrijpen Je moet heel slim zijn om een oplossing voor het probleem te vinden Het is onmogelijk om het probleem op te lossen met een ‘snel’ algoritme

  3. Wat is een snel algoritme? • ‘Grote O’ notatie – assymptotisch gedrag als n naar oneindig gaat‘Worst casescenario’ – sommige instanties zijn langzaam, andere snel • ‘Main memory’ – geen overhead van cache-misses, swap file transfers e.d. • Geen randomizatie of approximatie – het moet altijdde juiste oplossing geven in een vastgestelde tijd. • Onze scheidslijn: polynomiaal is snel, super-polynomiaal (exponentieel of erger) is langzaam

  4. Een tegenwerping • Kritiek: “1.000001n is toch veel sneller dan n1000 voor ‘normale’ inputs”? • Antwoord: je hebt helemaal gelijk. Maar in de praktijk zijn er geen exponentiele algoritmen met looptijd 1.000001n of polynomiale algoritmen met looptijd n1000. • Typisch exponentieel algoritme heeft looptijd 2n en kan, met hele ingewikkelde methoden, misschien teruggebracht worden naar 1.5n. Polynomiale algoritmen hebben zelden een looptijd hoger dan n3. • Dus: in de praktijk voldoet deze tweedeling heel redelijk!

  5. Voor wie nog niet overtuigd is

  6. Polynomiaal of niet, dat is de vraag • We zijn dus geinteresseerd of een probleem een polynomiaal algoritme heeft. • Zo nee, dan plan B: • Benaderingsalgoritme (ongeveer goed) • Gerandomiseerd algoritme (bijna altijd snel/goed) • Geparameteriseerd algoritme (langzaam in het algemeen, maar snel in bepaalde gevallen waarvoor de parameter klein is) • Wél een algemeen algoritme, en proberen de exponent zo klein mogelijk te houden • Maar: bestaat er geen polynomiaal algoritme, of hebben we het nog niet gevonden?

  7. Soms worden we verrast...

  8. Complexiteitstheorie • Met behulp van de complexiteitstheorie willen we problemen classificeren om hun moeilijkheid te bepalen. • Hiertoe definieren we complexiteitsklassen, en bewijzen we dat ons probleem in een bepaalde klasse zit • Hier: Informele notie van complexiteit • Formele theorie in Networks & Algorithms (Master ACS) • Twee simpele klassen: PTIME en EXPTIME • Afgekort: P en EXP. Er bestaat ook PSPACE en EXPSPACE • Een probleem Π maakt deel uit van P als er een polynomiaal algoritme voor is (lidmaatschap)

  9. Exponentiële problemen • Een probleem Π maakt deel uit van EXP als er een (hoogstens) exponentieel algoritme is wat Π oplost • P  EXP, dus lidmaatschap van EXP zegt ons nog niet zo veel • EXP-moeilijk: ieder probleem Π’ in EXP is in polynomiale tijd reduceerbaar tot (simuleerbaar door) Π • Dus: een polynomiaal algoritme voor Π = alle problemen in EXP hebben een polynomiaal algoritme • We weten dat P ≠ EXP, dus als Π EXP-moeilijk is, bestaat er geen polynomiaal algoritme voor Π

  10. So far, so good? • Probleem: Er zijn maar heel weinig problemen waarvan we kunnen bewijzen dat ze EXP-moeilijk zijn! • Typisch voorbeeld: Generalised Chess (op nxn bord): gegeven een stelling, heeft wit een winnende strategie? • Er zijn echter heel veel problemen zonder polynomiaal algoritme, waarvoor we niet kunnen bewijzen dat ze EXP-moeilijk zijn... • Wat we wél kunnen bewijzen, is dat ze NP-moeilijk zijn

  11. NP • NP = Non-deterministic polynomial time • (niet: non-polynomial!) • Een probleem Π maakt deel uit van NP als er een non-deterministisch polynomiaal algoritme voor is • Non-determinisme: je algoritme mag ‘zichzelf klonen’ op keuzepunten, en slechts één van deze klonen hoeft een oplossing te vinden! • Alternatieve maar equivalente definitie: een probleem Π maakt deel uit van NP als er een algoritme is wat een oplossing van Πverifieert in polynomiale tijd, gebruik makend van een polynomiaal certificaat

  12. Intuitieve betekenis van NP • ‘Nondeterministische’ definitie: klonen • ‘Verificatie’ definitie: plattegrond Vind de uitgang van dit doolhof

  13. Klonen

  14. Plattegrond

  15. Satisfiability Problem • Gegeven een logische formule φ, is er een instantiatie van de variabelen die φ waar maakt? • Voorbeeld: (x1  (x2  (x1 x3)  (x3 x2 x1))) • Satisfiability is in NP: • Non-deterministisch algoritme: kies voor iedere variabele T of F en ‘branch’ op verschillende instantiaties. Als één van de instantiaties een satisfiable oplossing geeft, dan is φ satisfiable • Verificatie algoritme: gegeven een instantiatie σ. Je kunt in polynomiale tijd verifieren of σ de formule waar maakt (invullen en evalueren!)

  16. Satisfiability is NP-moeilijk • Een probleem is in NP als er een non-deterministisch polynomiaal algoritme is wat Π oplost, of als er een polynomiaal verificatiealgoritme voor Π is • Triviaal: P  NP en NP  EXP • Alle problemen in NP kunnen in polynomiale tijd herleid worden tot Satisfiability, dus: een polynomiaal algoritme voor Satisfiability betekent dat P = NP • We vermoeden (zeer sterk) dat P ≠ NP maar we kunnen het tot op heden niet bewijzen • Satisfiability is NP-moeilijk, wat betekent: zeer waarschijnlijk geen polynomiaal algoritme mogelijk

  17. Rijk worden? • De vraag of P gelijk is aan NP of niet is een van de belangrijkste theoretische vragen uit de informatica! • Het Clay Mathematics Institute heeft 1 miljoen dollar uitgeloofd voor degene die gelijkheid of ongelijkheid kan bewijzen http://www.claymath.org/prizeproblems/pvsnp.htm • Waarom is bewijzen dat P ≠ NP zo lastig? Er kan bewezen worden (!) dat gangbare methoden om klassen van elkaar te scheiden in dit geval niet werken • Dus: we hebben nieuwe wiskundige inzichten nodig om deze vraag te kunnen beantwoorden!

  18. NP-volledigheid • Een probleem Π is NP-volledig als het: • In NP zit • NP-moeilijk is, d.w.z., alle problemen in NP kunnen in polynomiale tijd herleid worden tot Π • Een NP-volledig probleem behoort tot de moeilijkste problemen in NP • Een NP-volledig probleem heeft hoogstwaarschijnlijk geen polynomiaal algoritme (anders: kassa!) • De truc is: hoe bewijs je dat een probleem Π NP-volledig is?

  19. Gegeven: stel steden 1, … n. Voor elk paar steden i, j, een afstand d(i,j), getal K. Gevraagd: is er eenroute die in stad 1 begint, elke stad precies 1 keer bezoekt en weer in stad 1 eindigt, en totale lengte hooguit K heeft? 4 1 2 3 2 5 2 3 4 4 2 4 1 2 1 2 3 3 2 2 5 5 2 2 3 4 2 3 4 2 13 11 Bekende problemen (1): Handelsreiziger

  20. Gegeven: Ongerichte graaf G=(V,E). Gevraagd: Is er een cycle in G, die elke knoop in G precies een keer bezoekt? Bekende problemen (2): Hamiltonian Circuit Een graaf met een Hamiltonian circuit

  21. Bekende problemen (3): Subset Sum • Gegeven: getallen a1, …, an, B. • Gevraagd: Bestaat er een deelverzameling van de getallen a1, …, an, die som precies B heeft? Representatie: getallen in `binaire notatie’ Een O(nB) algoritme gebruikt exponentiele tijd in het aantal bits nodig om de input te noteren.

  22. Binaire notatie en unaire notatie • Stel B is zeer groot: • Input gebruikt log B bits, neem z = log B • Tabel dynamisch programma is n maal B array • Er moeten dus 2z rijen gevuld worden en dit kost exponentieel (in z) veel tijd! • Als B in unaire notatie ingevoerd is (1111...111111) dan kost het geen exponentiële tijd • We noemen een dergelijk probleem zwak NP-volledig omdat het afhangt van de binaire notatie

  23. Bekende problemen (4): Knapsack • Een inbreker kan hooguit G gewicht dragen. Hij kan voorwerpen 1, … , n meenemen, met gewichten g1, …, gn, en waardes w1, …, wn. Alle gewichten en opbrengsten zijn positieve gehele getallen. Gegeven is ook getal W. • Kan de inbreker minstens spullen van totaalwaarde W meenemen? • Wederom: representatie! Ook voor dit probleem is een dynamisch algoritme in O(nG) wat exponentieel is als de input G in binaire notatie is!

  24. Gegeven: graaf G=(V,E). Gevraagd: is er een functie f: V  {1,2,3}, zodat voor elke kant {v,w} geldt: f(v) ≠ f(w)? Bekende problemen (5): Driekleuring 1 2 2 3 3 1 2

  25. Een verzameling knopen W  V is een kliek (clique) in graaf G=(V,E) als voor alle v,w  W: {v,w}  E of v=w Kliek-probleem: Gegeven: Graaf G=(V,E), integer k  |V| Gevraagd: Heeft G een kliek met minstens k knopen? a e b c d f Bekende problemen (6): Kliek

  26. Soorten problemen • Beslissingsprobleem • Vb.: Gegeven n steden met afstand voor elk paar steden, en gegeven een getal k:is er een handelsreizigerstour met totale afstand hooguit k? • Optimalisatieprobleem • Gegeven n steden met afstand voor elk paar steden, wat is de lengte van de kortste handelsreizigerstour? • Constructieprobleem • Gegeven n steden met afstand voor elk paar steden, wat is de kortste handelsreizigerstour?

  27. Net zo moeilijk • Stelling: Als er voor de optimalisatievariant (constructievariant) van het handelsreizigersprobleem een polynomiaal algoritme bestaat, dan bestaat er ook een polynomiaal algoritme voor de beslissingsvariant van het handelsreizigersprobleem • Wat lastiger, maar ook waar: in de andere richting (werkcollege-opgave) • Complexiteitstheorie houdt zich voornamelijk bezig met beslissingsproblemen (Is er...? ja/nee)

  28. Uit de weg met die details • Complexiteitstheorie formaliseert de begrippen berekening,looptijd, probleem, instantie enzovoorts. • Hier: informeler, theoretische onderbouwing: vervolgcursus bij master ACS, in boek • Bijvoorbeeld: een instantie is formeel een string uit {0,1}* en een beslissingsprobleem is formeel de vraag of een willekeurige instantie deel uit maakt van een bepaalde subset van {0,1}* • Hier: instantie = ‘redelijke’ codering van probleem (graaf, getallen, formules e.d.), beslissingsprobleem = ‘Is er ... ? (J/N)’

  29. NP-volledigheid bewijzen • Hoe NP-volledigheid van een probleem Π te bewijzen? • Π zit in NP, d.w.z. er is een polynomiaal verificatiealgoritme voor Π (of: een non-deterministisch algoritme) • Lidmaatschap in NP is meestal (niet altijd!) niet zo moeilijk te bewijzen: geef een (vaak triviaal) algoritme wat, gegeven de juiste oplossing, in polynomiale tijd controleert dat dit oplossing inderdaad klopt • Bijvoorbeeld Satisfiability: gegeven een waardetoekenning aan alle variabelen kun je in polynomiale tijd deze waardetoekenning evalueren en controleren dat de zin waar is

  30. NP-volledigheid bewijzen (2) • Hoe NP-volledigheid van een probleem Π te bewijzen? • Π is NP-moeilijk: als we Π op kunnen lossen, dan kunnen we alle problemen in NP oplossen • Techniek (1): reductie van bekend NP-volledig probleem Σ • Recept: laat zien dat je een willekeurige instantie van Σ in polynomiale tijd kunt coderen als input voor Π • Techniek (2): restrictie • Recept: laat zien dat de set van alle instanties van bekend NP-volledig probleem Σ een deelverzameling zijn van de set van alle instanties van Π

  31. Stelling: Handelsreiziger is NP-moeilijk • Gegeven: Hamiltonian Circuit is NP-volledig • Gevraagd: NP-moeilijkheidsbewijs voor Handelsreiziger • Laat G = (V, E) een instantie zijn van HC • Construeer een Handelsreiziger-input als volgt: • Laat n het aantal knopen in V zijn • Maak een volledige graaf G’ met n knopen en (n-1)2 kanten • Geef iedere kant in G’ een waarde: • d(v,w) = 1 als (v,w) in G • d(v,w) = n+1 als (v,w) niet in G • Als er een Handelsreiziger-algoritme bestaat dat een route vindt met lengte (hoogstens) n in G’, dan heeft G een Hamiltonian Circuit. • Dus: Handelsreiziger is minstens zo moeilijk als Hamiltonian Circuit

  32. Stelling: Knapsack is NP-moeilijk • Gegeven: Subset Sum is NP-volledig • Gevraagd: NP-moeilijkheidsbewijs voor Knapsack • Bewijs: Subset Sum is een bijzonder geval van Knapsack, namelijk waarbij voor alle voorwerpen het gewicht gelijk is aan de waarde! • Formeel: de set van Subset Sum-instanties vormt een deelverzameling van de set van Knapsack-instanties • Dus: als je een algoritme voor Knapsack zou hebben, dan kan dit algoritme ook instanties van Subset Sum aan • Conclusie: Knapsack is NP-moeilijk

  33. Waarschuwing: valkuilen op de weg • Valkuil 1: reductie de verkeerde richting op “Ik kan iedere probleeminstantie van mijn probleem Π omschrijven als een Satisfiability-probleem. Satisfiability is NP-volledig, dus Π is NP-moeilijk” • Valkuil 2: restrictie de verkeerde richting op “Mijn probleem Π is een Satisfiability-probleem, waarbij alle instanties Horn-clauses zijn, d.w.z. een subset van alle mogelijke instanties. Satisfiability is NP-volledig, dus Π is NP-moeilijk”

  34. Polynomiaal reduceerbaar • Notatie: A P B: A polynomiaal reduceerbaar tot BHamiltonian Circuit PHandelsreiziger SubsetSum PKnapsack • Als A £PB, en B kan worden opgelost in polynomiale tijd, dan kan A ook worden opgelost in polynomiale tijd • Dus: als A £PB, en A is NP-volledig, dan betekent een polynomiaal algoritme voor B, dat P = NP • Met deze reducties kun je veel problemen aan elkaar koppelen zoals we hierboven zagen

  35. De kip en het ei • Satisfiability P 3-CNF-SAT P Vertex Cover P Hamiltonian Circuit P Kliek P Independent Set P .... • Stelling: bewijs NP-moeilijkheid door reductie van een ander NP-volledig probleem • Als zodanig is dit een cirkelredenering! MAAR: • Cook (1971) bewijst: ieder probleem in NP is te reduceren tot Satisfiability • Door dit generieke bewijs kunnen we Satisfiability gebruiken als ‘startprobleem’ voor reducties.

  36. Kookboekrecept: Kliek is NP-volledig • Stelling: Kliek is in NP. Bewijs: neem als certificaat een verzameling van k knopen in V die samen een kliek vormen. Controleer of er kanten zijn tussen al deze knopen, dat kan in polynomiale tijd • Stelling: Kliek is NP-moeilijk. Bewijs: reduceer 3-CNF-SAT tot Kliek • 3-CNF-SAT: formule in CNF vorm met maximaal 3 literals per clause. Neem als voorbeeld φ = (x1 x2x3)  (x2x3x4)  (x2 x3 x4) • Satisfiable met o.a. x1 = T, x2 = T, x3 = F, x4 = T • C = aantal clauses, N  3C = aantal variabelen

  37. C1 C2 C3 x1 x2 -x2 x2 -x3 x3 -x3 -x4 x4 Kookboekrecept (2): Kliek is NP-volledig • Maak een graaf G met 3C knopen, één voor elke literal • Neem een kant tussen twee knopen als ze literals in verschillende clauses voorstellen én niet elkaars negatie zijn • Stelling: G heeft een C-kliek desda φ is satisfiable φ = (x1 x2x3)  (x2x3x4)  (x2 x3 x4)

  38. Kookboekrecept (3): Kliek is NP-volledig • Kies uit elke clause een ware literal (bijvoorbeeld x1,x2, en x4). De bijbehorende knopen vormen een kliek. • Elke clause moet 1 knoop in de kliek hebben (want …) Zet een literal in de kliek op true. Dit kan (geen kant tussen literals die elkaars negatie zijn.) Zet evt. overige variabelen willekeurig. Deze waardetoekenning maakt alle clauses waar. C1 C2 C3 x1 x2 -x2 φ = (x1 x2x3) (x2x3x4) (x2 x3 x4) x2 -x3 x3 -x3 -x4 x4

  39. NP-volledig, en nu verder Als bekend is dat een probleem NP-volledig is, dan: • Weten we dat het onwaarschijnlijk is dat er een polynomiaal algoritme voor bestaat, • Het in elk geval dat het vreselijk moeilijk zal zijn om zo’n algoritme te vinden. • Want als we zo’n polynomiaal algoritme gevonden hebben, dan hebben we bewezen dat P=NP. (Kassa!) • Moeten we dus zoeken naar alternatieve aanpakken: speciale gevallen, benaderingsalgoritmen, slimme vormen van exponentiele algoritmen, etc.

  40. In een Venn-diagram • Dit is de waarschijnlijke verhouding tussen P, NP en NP-volledig (en EXP) P NP-volledigeproblemen EXP NP

  41. In een Venn-diagram (2) • Dit is een mogelijke (maar onwaarschijnlijke) verhouding tussen P, NP en NP-volledig (en EXP) P=NP EXP

  42. In een Venn-diagram (3) • Maar deze verdeling is niet mogelijk: als P≠NP, dan zijn er problemen die noch in P, noch NP-volledig zijn NP-volledigeproblemen P EXP

  43. And now for something complete different • co-NP is vergelijkbaar met NP, ‘maar dan anders’ • Een probleem is in NP, als er een polynomiaal verificatie-algoritme voor bestaat wat een polynomiaal certificaat kan verifieren op juistheid • Een probleem is in co-NP, als er een polynomiaal falsificatie-algoritme voor bestaat wat een polynomiaal tegenvoorbeeld kan controleren. • Intuitief: co-NP is NP met de JA en NEE-antwoorden omgedraaid • Sidenote: co-P = P, dus als het met JA beantwoorden van een vraag polynomiaal is, is NEE dat ook

  44. Co-NP: Contradiction en Tautology • Satisfiability: gegeven een zin, is er (minstens) een waardetoekenning aan de variabelen die de zin waar maakt? • Contradiction: gegeven een zin, is er geen enkele waardetoekenning aan de variabelen die de zin waar maakt? • Certificaat voor Satisfiability probleem: een waardetoekenning die de zin waar maakt • Tegenvoorbeeld voor Contradiction probleem: een waardetoekenning die de zin waar maakt!! • Contradiction probleem = Tautology probleem

  45. Over co-NP • Ook co-NP heeft volledige problemen, net als NP (zoals Contradiction) • Waarschijnlijk zijn co-NP-volledige problemen niet polynomiaal op te lossen (d.w.z. co-NP ≠ P) • Interesant: wat als Π NP én Π co-NP (d.w.z. Π NP  co-NP)? • We weten dat P  co-NP (bewijzen op het werkcollege), net zoals P  NP, en dus geldt dat P  NP  co-NP • Kan Π dan NP-volledig of co-NP-volledig zijn?

  46. Alweer een Venn-diagram • Dit is de waarschijnlijke verhouding tussen P, NP, co-NP, NP-volledig en co-NP-volledig (en EXP) EXP NP co-NP P NP-V co-NP-V

  47. Over NP  co-NP • Als je kunt laten zien dat Π NP  co-NP, dan is Π zeer waarschijnlijk niet NP-volledig of co-NP-volledig • Voorbeeld: PRIMES (is een gegeven getal priem?) • In co-NP: triviaal! (tegenvoorbeeld is eenvoudig controleerbaar in polynomiale tijd) • In NP, maar niet triviaal voor ieder priemgetal P bestaat er een getal x waarmee je in polynomiale tijd (gerekend in aantal bits van P) kunt bewijzen dat P priem is (Pratt certificate). • PRIMES  NP  co-NP, maar pas sinds 2002 weten we dat PRIMES  P

  48. Over NP  co-NP (2) • Integer Factorization probleem: gegeven integers N en M met 1 ≤ M ≤ N, heeft N een factor d met 1 < d < M? • Integer Factorization  NP  co-NP, maar zeer waarschijnlijk geldt niet dat Integer Factorization P en ook niet dat Integer Factorization NP/co-NP-volledig is! • Aangenomen wordt dat Integer Factorization één van de problemen is die noch NP-volledig zijn, noch in P zitten • Waar wie weet worden we weer verrast...

  49. Conclusies • Vandaag: inleiding in complexiteitstheorie • Doel: bewijzen dat een polynomiaal algoritme voor een probleem onwaarschijnlijk is en dus verloren tijd om er aan te puzzelen • Begrippen: P, NP, co-NP, NP-moeilijk, NP-volledig, EXP • co-NP wordt veel minder gebruikt, maar handig: laat zien dat een probleem zowel in NP als in co-NP zit (zowel eenvoudig verifieerbaar als falsificeerbaar is) • Zo ja, dan is het naar alle waarschijnlijkheid niet NP of co-NP-volledig. Het vergroot wel de waarschijnlijkheid dat er een polynomiaal algoritme voor is!

More Related