De presentatie wordt gedownload. Even geduld aub

De presentatie wordt gedownload. Even geduld aub

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

Verwante presentaties


Presentatie over: "Computationele complexiteit: NP-volledigheid Algoritmiek hoorcollege 16 oktober 2008."— Transcript van de presentatie:

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 case scenario’ – sommige instanties zijn langzaam, andere snel ‘Main memory’ – geen overhead van cache-misses, swap file transfers e.d. Geen randomizatie of approximatie – het moet altijd de juiste oplossing geven in een vastgestelde tijd. Onze scheidslijn: polynomiaal is snel, super- polynomiaal (exponentieel of erger) is langzaam

4 Een tegenwerping Kritiek: “ n is toch veel sneller dan n 1000 voor ‘normale’ inputs”? Antwoord: je hebt helemaal gelijk. Maar in de praktijk zijn er geen exponentiele algoritmen met looptijd n of polynomiale algoritmen met looptijd n Typisch exponentieel algoritme heeft looptijd 2 n en kan, met hele ingewikkelde methoden, misschien teruggebracht worden naar 1.5 n. Polynomiale algoritmen hebben zelden een looptijd hoger dan n 3. 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: (x 1  (x 2  (x 1  x 3 )  (x 3  x 2  x 1 ))) 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 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: 1.In NP zit 2.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 Bekende problemen (1): Handelsreiziger Gegeven: stel steden 1, … n. Voor elk paar steden i, j, een afstand d(i,j), getal K. Gevraagd: is er een route die in stad 1 begint, elke stad precies 1 keer bezoekt en weer in stad 1 eindigt, en totale lengte hooguit K heeft?

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

21 Bekende problemen (3): Subset Sum Gegeven: getallen a 1, …, a n, B. Gevraagd: Bestaat er een deelverzameling van de getallen a 1, …, a n, 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. 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 2 z rijen gevuld worden en dit kost exponentieel (in z) veel tijd! Als B in unaire notatie ingevoerd is ( ) 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 g 1, …, g n, en waardes w 1, …, w n. 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 Bekende problemen (5): Driekleuring 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)?

25 Bekende problemen (6): Kliek ae c d b f 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?

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? 1.Π 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 B Hamiltonian Circuit  P Handelsreiziger SubsetSum  P Knapsack Als A  P B, en B kan worden opgelost in polynomiale tijd, dan kan A ook worden opgelost in polynomiale tijd Dus: als A  P B, 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 1.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 2.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 φ = (x 1  x 2  x 3 )  (x 2  x 3  x 4 )  (x 2  x 3  x 4 ) Satisfiable met o.a. x 1 = T, x 2 = T, x 3 = F, x 4 = T C = aantal clauses, N  3C = aantal variabelen

37 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 φ = (x 1  x 2  x 3 )  (x 2  x 3  x 4 )  (x 2  x 3  x 4 ) x1x1 x2x2 -x 3 x2x2 -x 4 -x 2 x3x3 x4x4 C1C1 C2C2 C3C3

38 Kookboekrecept (3): Kliek is NP-volledig  Kies uit elke clause een ware literal (bijvoorbeeld x 1, x 2, en x 4 ). 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. x1x1 x2x2 -x 3 x2x2 -x 4 -x 2 x3x3 x4x4 C1C1 C2C2 C3C3 φ = (x 1  x 2  x 3 )  (x 2  x 3  x 4 )  (x 2  x 3  x 4 )

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-volledige problemen NP EXP

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 EXP P NP-volledige problemen

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) NP-V NP EXP co-NP co-NP-V P

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

49 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...

50 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!

51 Kennen en kunnen Maak jezelf vertrouwd met deze complexiteitsklassen en hun relaties (zie ook werkcollege-opgaven) Je moet NP-volledigheidsbewijzen kunnen volgen en (eenvoudige) bewijzen kunnen produceren. Oefen hiermee op het werkcollege! Let op het ‘kookboekrecept’, let op de goede richting!! Boek gebruikt theoretischere benadering, met formele definitie van ‘probleem’, ‘klasse’, en dergelijke in termen van Turing Machines. Dat is stof voor een verdiepend college bij Algorithms & Networks, master Applied Computer Science


Download ppt "Computationele complexiteit: NP-volledigheid Algoritmiek hoorcollege 16 oktober 2008."

Verwante presentaties


Ads door Google