NP-volledigheid Algoritmiek Polynomiale algoritmen of moeilijke problemen? • Algoritme A is polynomiaal, als er een constante c bestaat, zodat het algoritme bij inputs van formaat n O(nc) tijd gebruikt. • Sommige problemen hebben een polynomiaal algoritme dat het oplost; voor andere is zo’n algoritme niet bekend. – NP-volledigheid: theorie die indicatie geeft dat bepaalde problemen geen polynomiaal algoritme hebben. 2 Algoritmiek Exponentiele problemen • Er zijn problemen waarvoor bewezen kan worden dat elk algoritme voor die problemen exponentiele tijd gebruikt, bijv.: – Generalized Chess; Generalized Go (gegeneraliseerd naar borden van willekeurig formaat) • Gegeven een positie in spel, heeft de aan zet zijnde speler een winnende strategie – … • Maar … voor veel problemen hebben we niet zo’n bewijs… 3 Algoritmiek Het Handelsreizigersprobleem 4 • Gegeven: stel steden 1, … 1 n. Voor elk paar steden i, 3 2 j, een afstand d(i,j), getal 2 K. 3 2 • Gevraagd: is er een route die in stad 1 begint, elke 4 1 stad precies 1 keer bezoekt 3 2 en weer in stad 1 eindigt, 2 en totale lengte hooguit K 3 2 heeft? 13 4 Algoritmiek 2 5 4 2 5 4 4 3 2 2 3 2 4 1 2 5 11 Hamiltonian circuit • Gegeven: Ongerichte graaf G=(N,A). • Gevraagd: Is er een cycle in G, die elke knoop in G precies een keer bezoekt? Een graaf met een Hamiltonian circuit 5 Algoritmiek Subsetsum • Gegeven getallen w1, …, wn, W. • Bestaat er een deelverzameling van de getallen w1, …, wn, die som precies W heeft? Representatie: getallen in `binaire notatie’ Een O(nW) algoritme gebruikt exponentiele tijd in het aantal bits nodig om de input te noteren. 6 Algoritmiek Knapsack • Een inbreker kan hooguit W gewicht dragen. Hij kan voorwerpen 1, … , n meenemen, met gewichten w1, …, wn, en waardes v1, …, vn. Alle gewichten en opbrengsten positieve gehele getallen. Gegeven ook getal K. • Kan de inbreker minstens spullen van totaalwaarde K meenemen? 7 Algoritmiek Satisfiability • Gegeven: logische expressie over Boolse variabelen. • Gevraagd: kan aan de variabelen waardes true en false toegekend worden zodat de expressie waar wordt? 8 • (x1 or not x2) and (x2 or not x1 or x3) and (not x3) • Wordt waar als we bijv. nemen: – x1 = true; – x2 = true; – x3 = false Algoritmiek 3-kleuring • Gegeven: graaf G=(N,A). • Gevraagd: is er een functie N {1,2,3}, zodat voor elke kant {v,w} geldt: – f(v) f(w). 1 2 2 3 3 1 9 Algoritmiek 2 ??? • Voor elk van deze problemen: – Is er geen algoritme bekend dat het probleem oplost en (worst case) polynomiale tijd gebruikt. – Is er geen bewijs dat het probleem niet in polynomiale tijd op te lossen is. • Er zijn nog veel meer problemen die zich net zo gedragen, uit allerlei toepassingen. 10 Algoritmiek Versies van 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? 11 Algoritmiek Minstens 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. 12 Algoritmiek Over beslissingsproblemen • Theorie van NP-volledigheid gaat met name over beslissingsproblemen. – Als we weten dat een beslissingsprobleem `moeilijk’ is, dan is de bijbehorende optimaliseringsvariant dat ook. • Beslissingsprobleem kan je zien als verzameling: – Verzameling van instanties die ja als antwoord geven. 13 Algoritmiek P • Definitie: Een beslissings-probleem behoort tot de klasse P als er een (deterministisch) algoritme is dat het probleem oplost, en dat polynomiale tijd gebruikt. • Deze problemen horen tot de klasse P: – 2-Kleuring: gegeven een graaf, is er een kleuring van de knopen met 2 kleuren zodat grenzende knopen verschillend zijn. – Kwadraat: gegeven een getal n, is n een kwadraat van een natuurlijk getal? – Priemgetal: gegeven n, is n een priemgetal? – Minimum Spanning Tree 14 Algoritmiek Bewijssysteem • Veel problemen zijn van de vorm – Gegeven: …. – Gevraagd: bestaat er een …., zodat …. • Bewijssysteem voor probleem R is verzameling F van paren <x,q>, q Q, voor een verzameling Q van bewijzen of certificaten, zodat – x R er bestaat een q met <x,q> F 15 Algoritmiek Voorbeelden van bewijssystemen • Samengesteld getal: (Niet-Priemgetal) – Neem Q de verzameling getallen, en doe <x,q> F q is een deler van x • Hamiltonian Circuit: – Neem Q de verzameling permutaties van knopen, en doe <G,p> F p vormt een Hamiltonian circuit in G. 16 Algoritmiek Soduku bewijssysteem: ( , ) 17 Algoritmiek Definitie NP • NP is de klasse van de beslissingsproblemen R waarvoor een bewijssysteem F bestaat, en een polynoom p(n), en een algoritme A, zodat – Voor alle mogelijke inputs x: er geldt: • x R $ q: <x,q> F, en als x formaat n heeft, dan heeft q formaat hooguit p(n). – A controleert of voor gegeven x, q, <x,q> F. – A gebruikt polynomiale tijd 18 Algoritmiek Stellinkjes • Stelling. De problemen Knapsack, Subsetsum, 3-kleuring, Satisfiability, Handelsreiziger, Hamiltonian circuit behoren allen tot de klasse NP. • Stelling. P NP NP komt van niet-deterministisch polynomiaal: gebaseerd op Turing machine model met `niet-deterministische berekeningen’. 19 Algoritmiek Polynomiaal certificaat • Eis: grootte certificaat moet begrensd zijn door polynoom in de inputgrootte • Voorbeeld waar dit niet hoeft te gelden: Rush Hour (Schuifpuzzel; Rush Hour zit waarschijnlijk niet in NP). – Er zijn puzzels die exponentieel veel zetten hebben in een oplossing 20 Algoritmiek Interessant wetenschappelijk probleem • Niet bekend: zijn P en NP aan elkaar gelijk? • Veel wetenschappers denken van niet. Veel onderzoek is gedaan naar deze vraag! • http://www.claymath.org/prizeproblems/pvsnp.htm : verdien een miljoen dollar door dit probleem op te lossen. ? NP P 21 Algoritmiek Allerlei gevolgen • Als P=NP: – Allerlei moeilijke problemen kunnen dan wel in polynomiale tijd worden opgelost – Cryptografie wordt lastig • Als P NP – We weten dan voor veel problemen dat ze niet in polynomiale tijd kunnen worden opgelost 22 Algoritmiek Transformaties 1 • Stelling: Als er een polynomiaal algoritme voor het Handelsreizigersprobleem bestaat, dan bestaat er een polynomiaal algoritme voor Hamiltonian circuit. 23 Stel we hebben algoritme X voor Handelsreiziger. Neem input G=(N,A) voor Hamiltonian circuit. Maak input voor Hand.reiz.probl.: N verzameling steden d(v,w) = 1 als {v,w} in A d(v,w) = |N|+1 als {v,w} niet in A. Pas algoritme X op deze input toe. G heeft Hamiltonian circuit, desd als X een tour met lengte hooguit |N| toelaat. Algoritmiek Transformaties 2 Stelling: Als er een polynomiaal algoritme voor het Knapsack probleem bestaat, dan bestaat er een polynomiaal algoritme voor Subsetsum. 24 • In feite is Subsetsum een speciaal geval, als voor elk voorwerp zijn gewicht gelijk is aan zijn waarde. Algoritmiek 3-SATISFIABILITY (ook: 3-SAT of SAT-3CNF) • 3-SATISFIABILITY: Conjunctive – Eis dat de zin van de vorm is Normal – C1 en C2 en … en Cn Form • (clauses) met elke Ci van de vorm – (zi1 of zi2 of zi3) • met elke zij van de vorm: – Variable xa of negatie van variable: not(xa) • Vb: (x1 of x3 of not(x2)) en (not(x2) of x3 of not(x1)) 25 Algoritmiek Transformaties 3 Stelling: Als er een polynomiaal algoritme voor het 3-SATISFIABILITY probleem bestaat, dan bestaat er een polynomiaal algoritme voor het 3kleuringsprobleem. g is O(|N|+|A|) lang 26 • Stel we hebben algoritme voor 3-SATISFIABILITY. • Gegeven graaf G=(N,A). • Neem variabelen xv,i, voor elke knoop v in N, i=1,2,3. • Je kan een logische zin gin 3CNF maken, die waargemaakt kan worden, d.e.s.d. als G 3kleurbaar is. (Op bord.) • Pas algoritme voor Satisfiability op gtoe. Algoritmiek Transformaties • Elk van de bewijzen had een zelfde soort vorm: reductie: – Neem input x van probleem R • We weten dat R moeilijk is – Vertaal input x naar een input y = f(x) van probleem Q • We willen bewijzen dat Q moeilijk is • Vertaling zodanig dat: – Gebruikt polynomiale tijd – Antwoorden (ja/nee) hetzelfde 27 Algoritmiek Definitie • Laat Q en R twee (beslissings)problemen zijn. Q is polynomiaal reduceerbaar tot R, als er een algoritme A is, dat – Inputs voor Q afbeeldt op inputs voor R – Polynomiale tijd gebruikt – Voor alle x: x in Q f(x) in R • Notatie: Q R P 28 Algoritmiek Over polynomiale Turing reducties • Als Q P R, en R kan worden opgelost in polynomiale tijd, dan kan Q ook worden opgelost in polynomiale tijd. • Dus ook: als Q P R, en er bestaat geen polynomiaal algoritme voor Q, dan bestaat er ook geen polynomiaal algoritme voor R. • We zagen al: – Ham. Circuit P Handelsreizigersprobleem – SubsetSum P Knapsack – 3-kleuring P Sat-3CNF 29 Algoritmiek Nog zo’n reductie Stelling 3-Satisfiability TP 3-Kleuring Bewijs: Zij gegeven zin in 3CNF vorm, met variabelen x1 , …,xr. We maken nu een graaf: 1. Vertaal dat variabelen true of false kunnen zijn: 30 Algoritmiek true false C x1 not x1 We noemen de kleuren: C, true, false x2 not x2 … Vervolg reductie • Voor elke clause voegen we stuk graaf met 6 knopen en wat kanten toe. • De graaf is precies 3kleurbaar, desd als aan de variabelen true en false kan worden toegekend zodat de zin waar wordt. C true = een van de literals uit de clause 31 Algoritmiek F F Als alle drie clauses false, dan is het fragment niet kleurbaar C F t true 32 Algoritmiek C F Satisfiability en 3-SAT zijn `even moeilijk’ • 3-Satisfiability P 3-Kleuring • 3-Kleuring P 3-Satisfiability • Dus: er is een polynomiaal algoritme voor 3kleuring, desd als er een polynomiaal algoritme is voor 3-Satisfiability. 33 Algoritmiek NP-volledigheid • Een probleem A is NP-volledig, als – A behoort tot de klasse NP – Voor elk probleem B in NP geldt: B P A • `Moeilijkste’ problemen in NP. Stelling: Als A NP-volledig, en er is een polynomiaal algoritme voor A, dan is er een polynomiaal algoritme voor elk probleem in NP. 34 Algoritmiek Stelling van Cook (1971) • (3)-Satisfiability is NP-volledig. Hoe bewijs je nog meer problemen NP-volledig? Stelling Stel A is NP-volledig. Stel beslissingsprobleem B zit in NP, en A TP B. Dan is B ook NP-volledig. Geeft manier om voor meer problemen te bewijzen dat ze NP-volledig zijn 35 Algoritmiek Meer NP-volledige problemen Stelling: 3-Kleuring is NP-volledig. Bewijs: 3-Kleuring NP. 3-SAT is NPvolledig. 3-SAT P 3-Kleuring. Stelling: Hamiltonian circuit, Handelsreiziger, Knapsack, Subsetsum, Satisfiability (en duizenden andere problemen uit allerlei toepassingen) zijn allemaal NP-volledig. Bewijs: steeds met behulp van reducties met problemen die al eerder bewezen waren NPvolledig te zijn. 36 Algoritmiek Gevolgen • Als P = NP: – Dan zijn alle problemen in NP, dus ook alle NP-volledige problemen op te lossen in polynomiale tijd. Maar … veel wetenschappers denken dat dit niet zo is. • Als P NP: – Dan is geen enkel NP-volledig probleem op te lossen in polynomiale tijd. 37 Algoritmiek Venn-diagram als P NP … P NP-volledige problemen NP 38 Algoritmiek Gevolgen 2 • 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 P=NP. (Kassa!) – Moeten we dus zoeken naar alternatieve aanpakken: • Speciale gevallen, benaderingsalgoritmen, slimme vormen van exponentiele algoritmen, etc. 39 Algoritmiek Hoe maak je een NPvolledigheidsbewijs? Stel, we willen bewijzen: probleem Q is NP-volledig • Stap 1: toon aan: probleem Q in NP. (Vaak makkelijk, zelfs trivaal) • Stap 2: – Neem een NP-volledig probleem R – Geef een algoritme A dat een input voor R vertaalt naar een input voor Q • Algoritme moet polynomiale tijd gebruiken – Bewijs: R(x) d.e.s.d. als Q(A(x)) • Veel gemaakte fout: verkeerde kant op… 40 Algoritmiek Subsetsum • Gegeven getallen a1, …, an, B. • 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. 41 Algoritmiek Voorbeeld bewijs Stelling. SubsetSum is NP-volledig • Bewijs. – SubsetSum is in NP (want …) – Bewijs met reductie vanuit 3-Satisfiability – Neem een Boolse expressie in conjunctive normaalvorm, met 3 literals per clause • Stel met m clauses en n variabelen 42 Algoritmiek Notatie • We gaan getallen decimaal noteren • Voor elke variabele en voor elke clause hebben we een digit • Voor elke variabele nemen we twee getallen: eentje voor true, en eentje voor false: – 0 op een digit, behalve: • 1 voor de digit van de variabele • 1 als de literal de clause waarmaak • Voor elke clause 2 dezelfde getallen, met 0 op alle digits behalve die van de clause • Doelgetal: B = 333….333111…111 (clauses; variabelen) 43 Algoritmiek Voorbeeld • (x1 or not(x2) or x4) and (not(x1) or x3 or x4) and (x2 or not(x3) or not(x4) • Variabele-getallen: 1001000 (x1); 0101000 (not(x1)); 0010100; 1000100; 01000010; 0010010; 1100001; 0010001; • Clause-getallen: 1000000; 1000000; 0100000; 010000; 0010000; 0010000 • Doelgetal: B = 3331111 44 Algoritmiek Correcte transformatie (schets bewijs) • De formule kan waargemaakt worden, dan en slechts dan als een deelverzameling van de getallen bestaat met som B • => Kies alle getallen die corresponderen met hoe je de variabele kiest; maak de som kloppend met clause-getallen • <= Geen enkele keuze geeft ooit een “carry”. Je moet dus van elk paar voor een variabele er precies 1 kiezen. Zet de variabelen op die manier waar/onwaar. Nu moet elke clause vervuld zijn: de digit is 3, en hooguit 2 ervan kunnen van clause-getallen komen, dus eentje van een variabele getal -> die maakt de clause waar. 45 Algoritmiek Knapsack • Een inbreker kan hooguit W gewicht dragen. Hij kan voorwerpen 1, … , n meenemen, met gewichten w1, …, wn, en waardes v1, …, vn. Alle gewichten en opbrengsten positieve gehele getallen. Gegeven ook getal K. • Kan de inbreker minstens spullen van totaalwaarde K meenemen? 46 Algoritmiek Knapsack • Stelling. Knapsack is NP-volledig • Nu we SubsetSum hebben is dit relatief makkelijk… 47 Algoritmiek Bewijs • Knapsack in NP, want we kunnen in polynomiale tijd voor een verzameling het totaalgewicht en de totale waarde uitrekenen en vergelijken met W en K • Reductie vanuit SubsetSum: als we a1, …, an, B hebben, nemen we: – Voorwerpen met waarde ai en gewicht ai – W=K=B 48 Algoritmiek Nog een voorbeeld: Dominating Set • Gegeven: Graaf G=(V,E), integer K • Gevraagd: Is er een deelverzameling W van V, zodat voor elke v in V: v in W of v heeft een buur in W en |W| <=K? • Modelleert facility location problemen 49 Algoritmiek NP-volledigheid van Dominating Set • Stelling: Dominating Set is NP-volledig. • Bewijs: 1. Dominating Set behoort tot NP: een certificaat is een deelverzameling van de knopen; we kunnen in polynomiale tijd controleren of het formaat hooguit K is en het een dominerende verzameling is. 2. Met reductie vanuit 3-Satisfiability 50 Algoritmiek Reductie • Stel we hebben een instantie van 3-Satisfiability • We kunnen een instantie van Dominating Set als volgt maken: x1 Not x1 C 51 C Algoritmiek C …etc Achtergronden • Discussie: sterk en zwak NP-volledig • Cook bewees 3-Satisfiability NP-volledig. Het bewijs gebruikt Turing machines. • Zelfde resultaat, gelijkertijd, verkregen door Levin. • Veel onderzoek gedaan naar P=NP vraag, maar nog geen oplossing. – O.a.: Millenium probleem Clay Math. Inst. – Veel wetenschappelijke artikelen, boeken, … 52 Algoritmiek