T U Delft Parallel and Distributed Systems group PGS Fundamentele Informatica In3 005 Deel 2 College 4 Cees Witteveen
T U Delft Parallel and Distributed Systems group PGS Overzicht college 4 Bespreking opgaven - dubbel sat en half clique NPC bewijstechnieken (vervolg) - local replacement en component design Nuttige NPC problemen - Partition, Multi-Processor Scheduling - Prolog programma’s voor NPC problemen Is P toch gelijk aan NP? - pseudo-polynomiale algoritmen
T U Delft Parallel and Distributed Systems group PGS Overzicht college 4 Uitwerking opgaven - dubbel sat en half clique NPC bewijstechnieken (vervolg) - local replacement en component design Nuttige NPC problemen - Partition, Multi-Processor Scheduling - Prolog programma’s voor NPC problemen Is P toch gelijk aan NP? - pseudo-polynomiale algoritmen
T U Delft Parallel and Distributed Systems group PGS Opgaven Het DUBBELSAT probleem is het probleem gegeven een SAT-instantie (U,C) te bepalen of er tenminste twee waarheidstoekenningen zijn die C waarmaken. HALVE-CLIQUE is het probleem om na te gaan of een gegeven graaf G = (V, E) een clique heeft met minstens 0.5 x |V| knopen. Laat zien dat DUBBELSAT en HALVE-CLIQUE NPC problemen zijn.
T U Delft Parallel and Distributed Systems group PGS uitwerking DUBBELSAT C’ = C { {u n+1, u n+1 } } U = { u 1, u 2,..., u n } C = { c 1, c 2,..., c m } SAT instantie (U,C) vervulbaar : U {0,1} die C waarmaakt : {u n+1 0} en {u n+1 1} maken C’ waar (U’, C’) is dubbel vervulbaar. (U,C) yes-instantie SAT (U’, C’) yes-instantie DSAT D(ubbel)SAT instantie U’ = U { u n+1 } u n+1 U
T U Delft Parallel and Distributed Systems group PGS Uitwerking HALF CLIQUE Clique instantie Half Clique instantie |V 1 |=2n-2K (= 4) G heeft clique ter grootte van K G’ heeft clique ter grootte van K+ ( 2n - 2K) = 2n - K G’ heeft clique ter grootte van 0.5 x |V’| G heeft clique ter grootte van K G’ heeft clique ter grootte van K+ ( 2n - 2K) = 2n - K G’ heeft clique ter grootte van 0.5 x |V’| |V’| = 4n - 2K G’ | V| = n ( = 3) K ( = 1) G InIn |V 2 | = n (= 3)
T U Delft Parallel and Distributed Systems group PGS Overzicht college 4 Bespreking opgaven - dubbel sat en half clique NPC bewijstechnieken (vervolg) - local replacement en component design Nuttige NPC problemen - Partition, Multi-Processor Scheduling - Prolog programma’s voor NPC problemen Is P toch gelijk aan NP? - pseudo-polynomiale algoritmen
T U Delft Parallel and Distributed Systems group PGS IAIA Local replacement soms is het mogelijk een totale reductie A B samen te stellen uit onafhankelijke deel reducties; componenten van instanties van A worden hierbij op onafhankelijke wijze afgebeeld op componenten van B. IBIB R1 R2 R3
T U Delft Parallel and Distributed Systems group PGS Local Replacement: vb SAT 3-SAT: Laat (U,C) een SAT-instantie zijn en C = C 1 C 2 C 3 C >3 ( C i : aantal literals per clause is i ) de reductie R levert een instantie R(U,C) = (U’, C’) 3-SAT op met local replacement: R(U,C) = (R 0 (U), R 1 (C 1 ) R 2 (C 2 ) R 3 (C 3 ) R 4 (C >3 ) ) afzonderlijke reducties
T U Delft Parallel and Distributed Systems group PGS Van SAT naar 3-SAT R 1 (C 1 ) : voor iedere c = { x } C 1 bevat R 1 (C 1 ) de clauses { x, z c1, z c2 }, { x, z c1, z c2 }, {x, z c1, z c2 }, {x, z c1, z c2 } R 2 (C 2 ): voor iedere c = { u,v } C 2 bevat R 2 (C 2 ) de clauses {u, v, z c1 }, {u, v, z c1 } R 3 (C 3 ) = C 3 R 4 (C >3 ): voor iedere c = { x 1, x 2, x 3,..., x k } C >3 bevat R 4 (C >3 ) de clauses {x 1, x 2, z c1 }, { z c1, x 3, z c2 }, { z c2, x 4, z c3 },..., { z c(k-4), x k-2, z c(k-3) }, { z c(k-3), x k-1, x k }
T U Delft Parallel and Distributed Systems group PGS Van SAT naar 3-SAT R 0 (U) = U’ = U { z c1, z c2 | c C 1 } { z c1 | c C 2 } { z c1, z c2,...,z c(k-3) | c C >3, |c| = k} Merk op: |U’| = |U| + 2. |C 1 | + |C 2 | + c C>3 (|c| - 3) |C’| = 4 |C 1 | + 2 |C 2 | + |C 3 | + c C>3 (|c| - 2) de transformatie is derhalve polynomiaal Ga zelf correctheid na!
T U Delft Parallel and Distributed Systems group PGS Component design voor constructie R van A naar B: ontleed A-instanties in componenten die kunnen worden samengesteld om B-instanties te verkrijgen. component design = local replacement + interactie component reducties
T U Delft Parallel and Distributed Systems group PGS Component design: vb Subset Sum (SubSum) Gegeven: een multi-set S = {s 1,..., s k } van integers en een integer t. Vraag: Is er een subset S’ van S waarvoor geldt s S’ s = t. SubSum NP: Kies een S’ uit S en ga na in O( s S’ log s + log t) O(|I|)-tijd of s S’ s = t.
T U Delft Parallel and Distributed Systems group PGS S t 3-SAT Subsum (vb) U = {x, y, z }, C = { { x, y, z }, { x, y, z } } constructie reductie: 123c1c2 x = x = y = 1001 y = 1010 z100100= 100 z200111= 111 c = 10 c = 10 c = 1 c = 1 t1 1133= 11133
T U Delft Parallel and Distributed Systems group PGS Overzicht college 4 Bespreking opgaven - dubbel sat en half clique NPC bewijstechnieken (vervolg) - local replacement en component design Nuttige NPC problemen - Partition, Multi-Processor Scheduling - Prolog programma’s voor NPC problemen Is P toch gelijk aan NP? - pseudo-polynomiale algoritmen
T U Delft Parallel and Distributed Systems group PGS Van SubSum naar Partition Instantie: verzameling A, functie g: A Z +, Vraag: is er een partitie A 1 A 2 van A zodat a A1 g(a) = a A2 g(a) Partition PARTITION in NP: gok A1 en verifieer dat a A1 g(a) = a A-A1 g(a) PARTITION is NP-hard: SubSum ≤ PARTITION Neem instantie I = ( S = {s 1,s 2, …, s n }, t ) van Subsum met T = si S s i. Maak instantie R(I) = (A, g) van PARTITION waarbij A = { a 1, a 2,…,a n, a n+1, a n+2 } en g(a i ) = s i voor i = 1, …, n, g(a n+1 ) = 2T+1 en g(a n+2 ) = T+ 2t+1 PARTITION NPC
T U Delft Parallel and Distributed Systems group PGS Van Partition naar MPS Instantie : verzameling P processoren, verzameling J van jobs, voor iedere j J een tijdsduur t j Z +, en een deadline d Z +. Vraag: is er een toekenning van jobs aan processoren zodat alle jobs voor de deadline d kunnen worden uitgevoerd? Multiprocessor scheduling (MPS) Met restrictie een voudig te bewijzen dat MPS een NPC probleem is. Bedenk dat voor |P| = 2 en d = ( j J t i ) / 2 MPS -instanties identiek zijn aan PARTITION-instanties
T U Delft Parallel and Distributed Systems group PGS Prolog voor NPC is_CLIQUE(V,E,K) :- subset(V1,V), size(V1,K), clique(V1,E). clique(V1,E):- not(unconnected_pair(V1,E)). unconnected_pair(V1,E) :- member(V,V1),member(W,V1), not(V = W), not(member([V,W],E)), not( member([W,V],E)). G = (V,E) heeft clique ter grootte van K :- er bestaat een subset V1 van V ter grootte van K die de clique eigenschap heeft V1 is een clique in E als er geen enkel paar van knopen bestaat dat niet verbonden is V1 bevat een paar van knopen dat niet verbonden is als er knopen V W te vinden zijn in V1 waarvoor geldt dat noch [V,W] noch [W,V] een edge in E is. meer programma’s via web site
T U Delft Parallel and Distributed Systems group PGS Overzicht college 4 Bespreking opgaven - dubbel sat en half clique NPC bewijstechnieken (vervolg) - local replacement en component design Nuttige NPC problemen - Partition, Multi-Processor Scheduling - Prolog programma’s voor NPC problemen Is P toch gelijk aan NP? - pseudo-polynomiale algoritmen - Sterk NP-volledige problemen
T U Delft Parallel and Distributed Systems group PGS Een polynomiaal algoritme voor SubSet Sum ? Subset Sum: (SubSum) Gegeven: een multi-set S = { s 1,..., s k } van integers en een integer t. Vraag: Is er een subset S’ van S waarvoor geldt s S’ s = t ? Aangetoond: SubSum NPC Aan te tonen: Is er misschien toch een P- algoritme voor SubSum ? aanname: s i t
T U Delft Parallel and Distributed Systems group PGS SubSetSum : een algoritme Instantie (S, t) van SubSum met S = {s 1,..., s n } en integer t Laat f( i, w ) = 1 alss er is een S’ {s 1,..., s i } met s S’ s = w Eigenschappen van f: f( 0, w ) = 1 alss w = 0 ( immers s s = 0 ) f( i+1, w ) = 1 alss f( i, w ) = 1 of f( i, w - s i+1 ) = 1 f( n, t ) = 1 alss (S, t ) is yes-instantie van SubSum geeft iteratieve berekening f !
T U Delft Parallel and Distributed Systems group PGS Vb :subsetsum Stel S = { 2, 5, 7, 1, 9 } en t = i \ w
T U Delft Parallel and Distributed Systems group PGS (1) Iteratieve berekening f(n,w) iter-SubSetSum input: S = {s 1,..., s n }, n = |S|, t output: “yes” als (S,t) yes-instantie, “no” anders begin for k = 0 to t if k = 0 then f(0,k) = 1 else f(0,k) = 0 for i = 1 to n for k = 0 to t if { f(i-1,k) = 1 or f( i-1,k - s i ) =1 } then f(i,k) =1 if f(n,t) = 1 then return “yes” else return “no” end totaal: ( |S| t log s min ), O( |S| t log t} (t x log s min ) ( n x t x log s min ) O(t) O( n x t x log t) O(t x log t) O(1) (t)
T U Delft Parallel and Distributed Systems group PGS Geldt nu SubsetSum in P? Bedenk dat (|S| x t x log s min ) niet polynomiaal is in |I| = O (|S| x log t )! Neem bv. instanties met |S| = (log t) en log s min = (log t). Dan geldt: |I| = O(log 2 t) en runtime algoritme : (t x log 2 t) Deze runtime is niet polynomiaal in |I|: Stel wel dan moet gelden: t x log 2 t |I| k = (log 2 t) k (1) voor een constante k. Uit (1) volgt echter k ≥ ( log t +log 3 t ) / log 3 t, en derhalve is k niet naar boven toe begrensd door een constante. Dwz: looptijd algoritme is voor deze instanties niet polynomiaal in de lengte |I| van de instanties I !
T U Delft Parallel and Distributed Systems group PGS SubSetSum in P ? (c’td) Voor SubSetSum geldt ook: instanties met “kleine” getallen zijn efficient oplosbaar. Neem bv instatnties I = (S, t) met s i ≤ t ≤ n k met |S| = n. Voor deze instanties geldt: - input grootte : | I | = n x log t = n x k log n - runtime algoritme: O(|S| x t x log t) = O( n x n k x k log n) = O( n k+1 x k log n) = O( | I | k+1 ) runtime polynomiaal in |I|) Vraag: wat is “klein” ? => grootste getal polynomiaal in lengte instantie
T U Delft Parallel and Distributed Systems group PGS Getalproblemen Notatie I A :instantie van probleem A |I A | :grootte van instantie I A max(I A ):grootte van grootste getal voorkomend in I A (Moret: max(I A ) is grootte van unaire codering van I A ) A is een getalprobleem: er is geen enkele polynoom p zodat voor alle instanties I A geldt: max(I A ) p(|I A |). A heeft een pseudo-polynomiaal algoritme: er is een algoritme X A voor A met tijdcomplexiteit O( p( |I A |, max(I A ) ) ) voor een polynoom p. cf SubSetSum: runtime algoritme O(|S| x t x log t)
T U Delft Parallel and Distributed Systems group PGS Getalproblemen (ii) Nb: sommige getalproblemen hebben pseudopolynomiale algoritmen, andere niet: Voorbeeld 1 het algoritme voor SubSetSum is pseudo-polynomiaal: max(I A ) = t, |I A | = (|S| x log t) looptijd algoritme: O( |S| x t x log t ) O( |I A | x max(I A ) ) Voorbeeld 2 Clique is een getalprobleem ! Clique heeft echter geen pseudopolynomiaal algoritme, tenzij P = NP !
T U Delft Parallel and Distributed Systems group PGS Sterk-NPC problemen Notatie A p : het subprobleem van A bestaande uit instanties I A met max(I A ) p( |I A | ). A is sterk NP-volledig (S-NPC): - A NP en - er bestaat een polynoom p met A p NPC Gevolg: sterk NP-volledige problemen hebben een pseudo-polynomiaal algoritme alss P = NP
T U Delft Parallel and Distributed Systems group PGS S-NPC: voorbeelden TSP is een sterk NP-volledig probleem: Neem transformatie R van HAMC naar TSP: voor alle instanties in R(I), I HAMC geldt: max(R(I)) 2. CLIQUE en VC zijn sterk NP-volledige getalproblemen! (ga na) SAT is een sterk NP-volledig probleem ( SAT = SAT p voor ieder polynoom p )
T U Delft Parallel and Distributed Systems group PGS Overzicht college 4 Bespreking opgaven - dubbel sat en half clique NPC bewijstechnieken (vervolg) - local replacement en component design Nuttige NPC problemen - Partition, Multi-Processor Scheduling - Prolog programma’s voor NPC problemen Is P toch gelijk aan NP? - pseudo-polynomiale algoritmen
T U Delft Parallel and Distributed Systems group PGS O Zoeken en optimaliseren Zoekproblemen: gegeven een verzameling O van objecten, vind een (willekeurig) object x met eigenschap E(x) (een oplossing) E x
T U Delft Parallel and Distributed Systems group PGS O Zoeken en optimaliseren Optimaliseringsproblemen: gegeven een kostenfunctie c, zoek in O naar object x met eigenschap E(x) waarvoor c(x) minimaal of maximaal is. E x
T U Delft Parallel and Distributed Systems group PGS O Zoeken, optimaliseren, opsommen en tellen Opsommingsproblemen: zoek in O naar alle objecten x met eigenschap E(x). E
T U Delft Parallel and Distributed Systems group PGS O Zoeken, optimaliseren, opsommen en tellen telproblemen: zoek in O naar het aantal objecten x met eigenschap E(x). E 7
T U Delft Parallel and Distributed Systems group PGS Zoek- en optimaliserings problemen: complexiteit Als C een complexiteitsklasse is, dan is FC de klasse van alle functies berekenbaar met de tijd/ruimte begrenzing geassocieerd met C. Vb: - FP klasse van alle functies berekenbaar in polynomiale tijd. - FNP klasse van alle functies berekenbaar in niet-deterministische polynomiale tijd. probleem: hoe beslissings- en zoekproblemen aan elkaar te relateren?
T U Delft Parallel and Distributed Systems group PGS Zoeken en beslissen (vb) Stel A : algoritme voor FSAT. input: SAT-instantie (U,C) output: : U - {0,1} die C waarmaakt of anders nil Met A kan beslissingsprobleem SAT opgelost worden: begin ans := A( U, C ); % roep A aan voor instantie (U,C) if ans = nil then return “no” else return “yes” ; end Conclusie: Als A P dan SAT P; m.a.w. SAT is niet essentieel moeilijker dan FSAT. Dit is geen Karp-reductie !
T U Delft Parallel and Distributed Systems group PGS Turing reducties polynomiale turing reducties Een probleem A is polynomiaal turing reduceerbaar tot een probleem B (A T B) als er een algoritme X A voor A bestaat dat - een (hypothetisch) algoritme X B voor B als subroutine gebruikt en - een polynomiaal algoritme voor A zou zijn als alle X B -aanroepen O(1)-tijd zouden kosten. Vb: A = SAT, B = FSAT begin : = X B ( ); : = X B ( );... end algoritme X A algoritme X B voor B als subroutine aanroep
T U Delft Parallel and Distributed Systems group PGS Turingreducties (ii) voor beslissingsproblemen: - als A B dan ook A T B : many-one reducties (Karp-reducties) zijn te beschouwen als eenmalige aanroepen van een B-algoritme - voor iedere A: A T A c Stel A B met Karp reductie R. algoritme X A : begin I B := R(I A ); return X B (I B ); end dus A T B X A is polynomiaal als X B O(1)-tijd kost een probleem A is NP-hard (onder T ) als voor iedere B NP, B T A NP-easy als A T B voor een B NP NP-equivalent als A NP-hard NP-easy een probleem A is NP-hard (onder T ) als voor iedere B NP, B T A NP-easy als A T B voor een B NP NP-equivalent als A NP-hard NP-easy Definities
T U Delft Parallel and Distributed Systems group PGS NP-easy en (co)-NP NP-easy is gesloten onder T : als A NP-easy en B T A dan B NP-easy Laat A NP. omdat A T A, geldt A NP-easy NP NP-easy omdat A c T A, geldt A c NP-easy co-NP NP-easy
T U Delft Parallel and Distributed Systems group PGS NP-easy P, NP, Co-NP en NP-easy Co-NPC NPC NPCo-NP P
T U Delft Parallel and Distributed Systems group PGS Relatie beslissings-en zoekproblemen beslissingsvariant A: Gegeven x 1,... x n, is er een y waarvoor E(y) geldt ? zoekvariant FA: Gegeven x 1,... x n, geef een y waarvoor E(y) geldt. er geldt altijd: A T FA (gebruik eerst algoritme voor FA om antwoord te bepalen; als er een y gevonden wordt, geef “ja” als antwoord anders “nee” ( zie vb SAT ) dwz. als A NPC dan FA NP-Hard !
T U Delft Parallel and Distributed Systems group PGS Zelfreduceerbaarheid Voor alle NPC-problemen A geldt tevens: FA T A (zelfreduceerbare problemen) vb: FSAT T SAT. FSAT is in polynomiale tijd oplosbaar als we een orakel voor SAT-problemen kunnen raadplegen. Voor alle FNPC problemen A geldt derhalve: A is NP-equivalent (onder T )
T U Delft Parallel and Distributed Systems group PGS FSAT T SAT: constructie Notatie (x 1,x 2, ,x n ) propositie formule in CNF met variabelen x i i,b (x i+1,x i+2, , x n ) = i ( 1, , b, x i+1,x i+2, , x n ) de formule waarbij voor x 1, , x i-1 de waarheidswaarden 1, , zijn gekozen en voor x i de waarheidswaarde b begin ans := X SAT ( (x 1,x 2, ,x n ) ); // X SAT is het algoritme voor SAT if ans = “no” then return nil // is niet vervulbaar else for i : =1 to n do if X SAT ( i,1 (x i+1,x i+2, , x n )) = “yes” then i := 1 else i := 0 return ( 1, , n ) end FSAT T SAT
T U Delft Parallel and Distributed Systems group PGS Tentamenvragen (i) Geef aan welke van onderstaande uitspraken juist zijn: a.ieder NP-probleem kan in exponentiële tijd opgelost worden. b.als P NP kunnen sommige NP-problemen in polynomiale tijd opgelost worden, maar niet alle NP-problemen. c.ook als P = NP, zijn niet alle NP problemen ook NP-volledige problemen. d.co-NP en P hebben een niet-lege doorsnede.
T U Delft Parallel and Distributed Systems group PGS Oefenvraag (ii) Een bedrijf beschikt over een k-tal machines M 1, M 2,..., M k waarop n > 0 taken t 1, t 2,...,t n precies eenmaal moeten worden uitgevoerd. Van iedere taak t i is de duur d(t i ), gemeten in seconden, bekend. Iedere machine kan maar één taak tegelijk verwerken. Na afloop van een taak kan een machine onmiddellijk aan een volgende taak beginnen. Gegeven een deadline d (in gehele seconden) wordt nu gevraagd of de n taken zo verdeeld kunnen worden over de k machines, dat alle taken gerekend vanaf tijdstip 0 vóór het passeren van de deadline d afgerond kunnen worden. Dit is een a.NPC probleem: PARTITION is een restrictie van dit probleem; kies maar k = 2 en d = ∑ d(ti) /2. b.NPC probleem: KNAPSACK is een restrictie : kies maar k = 1. c.restrictie van PARTITION en daarom een NPC probleem. d. een restrictie van het 2-SAT probleem en derhalve een P-probleem.
T U Delft Parallel and Distributed Systems group PGS Tot slot: wat tot nu toe behandeld is Complexiteitstheorie : grondslagen [ cf. Moret hfst. 6 t/m 6.3.1] NPC en compleetheidsbewijzen [ cf. Moret hfst. 7 t/m 7.1] Zie ook voor een overzicht van de tentamenstof deel B