De presentatie wordt gedownload. Even geduld aub

De presentatie wordt gedownload. Even geduld aub

T U Delft Parallel and Distributed Systems group PGS Fundamentele Informatica In3 005 Deel 2 College 4 Cees Witteveen

Verwante presentaties


Presentatie over: "T U Delft Parallel and Distributed Systems group PGS Fundamentele Informatica In3 005 Deel 2 College 4 Cees Witteveen"— Transcript van de presentatie:

1 T U Delft Parallel and Distributed Systems group PGS Fundamentele Informatica In3 005 Deel 2 College 4 Cees Witteveen

2 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

3 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

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

5 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

6 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)

7 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

8 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

9 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

10 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 }

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

12 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

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

14 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

15 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

16 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

17 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

18 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

19 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

20 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

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

22 T U Delft Parallel and Distributed Systems group PGS Vb :subsetsum Stel S = { 2, 5, 7, 1, 9 } en t = i \ w

23 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)

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

25 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

26 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)

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

28 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

29 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 )

30 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

31 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

32 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

33 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

34 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

35 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?

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

37 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

38 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

39 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

40 T U Delft Parallel and Distributed Systems group PGS NP-easy P, NP, Co-NP en NP-easy Co-NPC NPC NPCo-NP P

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

42 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 )

43 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

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

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

46 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


Download ppt "T U Delft Parallel and Distributed Systems group PGS Fundamentele Informatica In3 005 Deel 2 College 4 Cees Witteveen"

Verwante presentaties


Ads door Google