T U Delft Parallel and Distributed Systems group PGS Fundamentele Informatica In3120 College 3 Cees Witteveen
T U Delft Parallel and Distributed Systems group PGS Test We noemen een probleem B een NP-hard probleem (onder ) als A B voor een NP-volledig probleem A. Als B een gegeven NP-hard probleem is dan geldt: a.als B C voor een probleem C, dan is C ook NP-hard. b.als B C voor een NP-probleem C, dan is C NP-volledig. c.als C B, dan is C in NP. d.als C B en het is bekend dat B P, dan is C in P. a. b. c. d.
T U Delft Parallel and Distributed Systems group PGS Overzicht NP-Complete problemen en reducties - Satisfiability NPC - Hoe NPC-eigenschap te bewijzen? Voorbeelden van lastige reducties - 3-SAT ≤ Vertex Cover, 3-SAT ≤ SubSetSum - SubSetSum ≤ PARTITION Bewijzen met restrictie - Partition ≤ MultiProcessorScheduling - Vertex Cover ≤ Hitting Set Een nieuwe klasse: co-NP - definitie - relatie met P en NP
T U Delft Parallel and Distributed Systems group PGS Hoe A NPC te bewijzen? 1. Bewijs A NP 2. Bewijs A NP-hard kies een geschikt bekend NPC probleem B; construeer een polynomiale reductie B A; laat zien dat deze reductie correct is. ( B A voor een B NPC ) Toon aan dat A polynomiaal verifieerbaar is.
T U Delft Parallel and Distributed Systems group PGS Een NPC probleem: SAT SATISFIABILITY (SAT) Instantie: Een eindige verzameling U van propositie atomen en een eindige verzameling C van clauses over U. Vraag: Is C vervulbaar, dwz. bestaat er een waarheidstoekenning U {0,1} zodat iedere clause C j in C waarmaakt ? clause: een disjunctie van literals literal: prop. atoom A of negatie ¬A
T U Delft Parallel and Distributed Systems group PGS SAT NPC Bewijsschets [ voor volledig bewijs zie Sipser pp ] SAT NP: gok waarheidstoekenning : U {0,1} voor instantie (U,C) en verifieer correctheid in O(|U| x |C|)-tijd. SAT is NP-hard: codeer willekeurige NTM M + input x als SAT-instantie die vervulbaar is desda M accepteert x in polynomiale tijd. SATISFIABILITY is NP-compleet Stephen A. Cook (1971) / Leonid Levin (1973)
T U Delft Parallel and Distributed Systems group PGS Een Speciaal SAT-problemen 3-SAT: als SAT, alle clauses C j C hebben exact 3 literals. Stelling: 3-SAT NPC (zie Sipser pag ) Voorbeeld instantie 3-SAT U = { u, x, y, z } C = { { u, x, ¬z }, {¬u, ¬y, z}, {¬x, y, ¬z}, {¬u, ¬y. ¬ z } } : u 1, x 0, y 0, z 1 maakt (U,C) waar
T U Delft Parallel and Distributed Systems group PGS Overzicht NP-Complete problemen en reducties - Satisfiability NPC - Hoe NPC-eigenschap te bewijzen? Voorbeelden van lastige reducties - 3-SAT ≤ Vertex Cover, 3-SAT ≤ SubSetSum - SubSetSum ≤ PARTITION Bewijzen met restrictie - Partition ≤ MultiProcessorScheduling - Vertex Cover ≤ Hitting Set Een nieuwe klasse: co-NP - definitie - relatie met P en NP
T U Delft Parallel and Distributed Systems group PGS Van logica naar grafen Vertex Cover (VC) - Instantie: een ongerichte graaf G = (V, E) en een K Z + - Vraag: is er een subset V’ V met - |V’| K en - { v,w } E [ v V’ w V’ ] - Nb: het duale Edge Cover probleem: gegeven een graaf G = (V, E) en een integer K, is er een subset E’ E met hoogstens K edges zodanig dat alle knopen in V gecovered zijn, m.a.w. ∪ E’ = V, is een P-probleem.
T U Delft Parallel and Distributed Systems group PGS Voorbeeld Vertex Cover
T U Delft Parallel and Distributed Systems group PGS VC in NP: bewijs polynomiale verifieerbaarheid - kies een subset V’ V en verifieer vervolgens (1) |V’ | K en (2) { v,w } E : {v,w } V’ - verificatie kost in totaal O( |V| + log K + |V| x |E|) O( |input| 2 ) - tijd.
T U Delft Parallel and Distributed Systems group PGS 3-SAT VC : constructie U = {x,y,z} ( |U| = n ) C = { { x, y, z }, { x, y, z} } ( |C| = m ) 3-SAT-instantie (U,C) VC - instantie (G = (V,E), K) xy z xx yy zz 1. Maak, voor iedere u U, twee knopen u en u en één kant {u, u}.
T U Delft Parallel and Distributed Systems group PGS 3-SAT VC : constructie U = {x,y,z} ( |U| = n ) C = { { x, y, z }, { x, y, z} } ( |C| = m ) 3-SAT-instantie (U,C) VC - instantie (G = (V,E), K) xy z xx yy zz 2. Maak voor iedere clause c j = {x j1, x j2, x j3 } uit C drie knopen en verbind deze knopen onderling. c1c1 c2c2 x1x1 y1y1 z1z1 ¬x 2 y2y2 ¬z 2
T U Delft Parallel and Distributed Systems group PGS 3-SAT VC : constructie U = {x,y,z} ( |U| = n ) C = { { x, y, z }, { x, y, z} } ( |C| = m ) 3-SAT-instantie (U,C) VC - instantie (G = (V,E), K) xy z xx yy zz 3. Verbind clause knopen u i (¬u i ) met overeenkomstige propositie knopen u (¬u) door kanten { u i, u } resp. {¬u i, ¬u }toe te voegen. c1c1 c2c2 x1x1 y1y1 z1z1 ¬x 2 y2y2 ¬z 2
T U Delft Parallel and Distributed Systems group PGS 3-SAT VC : constructie U = {x,y,z} ( |U| = n ) C = { { x, y, z }, { x, y, z} } ( |C| = m ) 3-SAT-instantie (U,C) VC - instantie (G = (V,E), K) xy z xx yy zz 4.Stel vervolgens K = 2m + n c1c1 c2c2 x1x1 y1y1 z1z1 ¬x 2 y2y2 ¬z 2 K = 7
T U Delft Parallel and Distributed Systems group PGS 3-SAT VC : correctheid (schets) U = {x,y,z} ( |U| = n ) C = { { x, y, z }, { x, y, z} } ( |C| = m ) 3-SAT-instantie (U,C) VC - instantie (G = (V,E), K) xy z xx yy zz OPMERKING: Om de “propositiekanten” {u, ¬u} te coveren zijn minstens n knopen nodig; om de “clausekanten” {v i, w i } te coveren zijn minstens 2m knopen nodig (minstens 2 per clause c i ). Iedere vertex cover moet derhalve minstens K = 2m + n knopen bevatten. c1c1 c2c2 x1x1 y1y1 z1z1 ¬x 2 y2y2 ¬z 2 K = 7
T U Delft Parallel and Distributed Systems group PGS 3-SAT VC : correctheid (schets) U = {x,y,z} (|U| = n) C = { { x, y, z }, { x, y, z} } (|C| = m) 3-SAT-instantie (U,C) VC - instantie (G = (V,E), K) xy z xx yy zz c1c1 c2c2 x1x1 y1y1 z1z1 ¬x 2 y2y2 ¬z 2 K = 7 x 1 y 0 z 0 Stel (U,C) yes-instantie van 3-SAT. Laat waarheidstoekenning zijn die C waarmaakt. Markeer nu allereerst alle n “waargemaakte” propositieknopen en neem ze op in de verzameling V’.
T U Delft Parallel and Distributed Systems group PGS 3-SAT VC : correctheid (schets) U = {x,y,z} (aantal: n) C = { { x, y, z }, { x, y, z} } (aantal: m) 3-SAT-instantie (U,C) VC - instantie (G = (V,E), K) xy z xx yy zz Kanten {u, ¬u} zijn nu gecovered en voor iedere c j is minstens één verbindingskant {u ji,u} (of {¬u ji,¬u}) tussen clause en propositie knopen gecovered. Neem per clause c j 2 knopen op in V’ zodat alle overige kanten ook gecovered zijn: V’ is VC met 2m + n knopen c1c1 c2c2 x1x1 y1y1 z1z1 ¬x 2 y2y2 ¬z 2 K = 7 x 1 y 0 z 0
T U Delft Parallel and Distributed Systems group PGS 3-SAT VC : correctheid (schets) U = {x,y,z} (|U| = n) C = { { x, y, z }, { x, y, z} } (|C| = m) 3-SAT-instantie (U,C) VC - instantie (G = (V,E), K) xy z xx yy zz c1c1 c2c2 x1x1 y1y1 z1z1 ¬x 2 y2y2 ¬z 2 K = 7 x 0 y 1 z 0 Stel f(I) = (G = (V,E), K) is een yes-instantie van VC. Per clause c j moeten dan precies 2 knopen in de vc van G gekozen zijn en voor ieder paar propositieknopen precies 1 knoop uit {u,¬u }. Beschouw een prop. knoop die voorkomt in de vc als een ware literal.
T U Delft Parallel and Distributed Systems group PGS 3-SAT VC : correctheid (schets) U = {x,y,z} (|U| = n) C = { { x, y, z }, { x, y, z} } (|C| = m) 3-SAT-instantie (U,C) VC - instantie (G = (V,E), K) xy z xx yy zz Vorm uit de propositieknopen die in de cover voorkomen een waar- heidstoekenning . Stel vervult c j niet. Dan wordt geen van de kan- ten {u, u j } of {¬u, ¬u j } gecovered door prop knopen. Maar met 2 kno- pen per clause is dan ≥ 1 kant in c i niet gecovered: contradictie! c1c1 c2c2 x1x1 y1y1 z1z1 ¬x 2 y2y2 ¬z 2 K = 7 x 0 y 1 z 0
T U Delft Parallel and Distributed Systems group PGS 3-SAT VC : correctheid (schets) U = {x,y,z} (|U| = n) C = { { x, y, z }, { x, y, z} } (|C| = m) 3-SAT-instantie (U,C) VC - instantie (G = (V,E), K) xy z xx yy zz De aanname dat C niet vervult kan dus niet waar zijn. Derhalve moet wel alle clauses c j vervullen. Dus de oorspronkelijke instantie (U,C) is een yes-instantie. Uit en concluderen we nu dat de reductie correct is. c1c1 c2c2 x1x1 y1y1 z1z1 ¬x 2 y2y2 ¬z 2 K = 7 x 0 y 1 z 0
T U Delft Parallel and Distributed Systems group PGS VC : Correctheid en polynomialiteit reductie c. Polynomialiteit van reductie: V : kost O(|U|) + O(|C|) = O( |I| ) -tijd; E : kost O(|U|) + O(|C|) + O(|U|x|C|) O((|U| + |C|) 2 ) = O( |I| 2 )-tijd K : kost O(|U| + |C|) = O( |I| ) -tijd Totaal : O ( |I| 2 )-tijd I : input
T U Delft Parallel and Distributed Systems group PGS CLIQUE is NPC Naam: CLIQUE InstantieGraaf G = (V, E), positieve integer K Vraag:heeft G een clique ter grootte van K, dwz is er een subset V’ van V met |V| = K zodat voor alle u ≠ v in V’ geldt {u,v} V’ CLIQUE in NP: gok subset V’ en verifieer in O(|E|x|V| 2 ) clique eigenschap CLIQUE in NP-hard: VC ≤ CLIQUE : als I = ( G =(V, E), K) vc-instantie is, neem dan f(I) = (G c = (V, E c ), |V|-K) als clique-instantie. Dan geldt: G c heeft clique ter grootte van |V| - K desda G heeft vc ter grootte van K. Heel aardig om zelf te bewijzen
T U Delft Parallel and Distributed Systems group PGS Van logica naar pakproblemen Naam: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(|input|)-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 = = 11133
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 gok een subset A 1 van A; verifieer dat a A_1 g(a) = a A-A_1 g(a) PARTITION NP
T U Delft Parallel and Distributed Systems group PGS SubSum ≤ PARTITION: Neem SubSum I = ( S = {s 1,s 2, …, s n }, t ) instantie met T = s_i S s i. Maak instantie f(I) = (A, g) van PARTITION waarbij A = { a 1, a 2,…,a n, a n+1, a n+2 }, g(a i ) = s i voor i = 1, …, n, g(a n+1 ) = 2T+1, g(a n+2 ) = T+ 2t+1 Van SubSum naar Partition PARTITION NP-hard t T SubSum t a n+1 2T+1 T- t a n+2 T+2t+1 Partition
T U Delft Parallel and Distributed Systems group PGS SubSum ≤ PARTITION: Neem SubSum I = ( S = {s 1,s 2, …, s n }, t ) instantie met T = s_i S s i. Maak instantie f(I) = (A, g) van PARTITION waarbij A = { a 1, a 2,…,a n, a n+1, a n+2 }, g(a i ) = s i voor i = 1, …, n, g(a n+1 ) = 2T+1, g(a n+2 ) = T+ 2t+1 Van SubSum naar Partition PARTITION NP-hard t T SubSum t a n+1 2T+1 T- t a n+2 T+2t+1 Partition Correctheidsbewijs reductie ⇒ Stel I = ({s 1, s 2,...s n }, t) is een yes-instantie van SubSum. Dan bestaat er een subset S’ van S zodanig dat s ∈ S’ s = t. Maar dan heeft de instantie f(I) = (A,g) ook een oplossing: Laat A’ = { a i : s i ∈ S’} ∪ {a n+1 }. Dan geldt g(A’) = 2T +t+1. Omdat g(A) = T + 2T+1+T+2t+1= 4T+2t+2, geldt nu g(A-A’) = g(A). Dus f(I) is een yes-instantie. ⇐ Stel f(I) = (A, g) is een yes-instantie van PARTITION. Dan bestaat er een subset A’ van A met g(A’) = 2T+t+1 (omdat g(A) = 4T+2t+2). Dit betekent dat a n+1 en a n+2 niet beide in A’ of A-A’ kunnen voorkomen omdat zij tezamen een gewicht 2T+1+T+2t+1 = 3T+2t+2 > 2T+t+1 hebben. Dan is er een partitie waarin alleen a n+1 voorkomt, stel dit is A’. Maar dan geldt dat de overige items in A’ een gewicht 2T+t+1 - (2T+1) = t vertegenwoordigen, en dit moeten items zijn met gewichten die afkomstig zijn uit S. Dus heeft de instantie I = (S, t) een oplossing S’ = {s i : a i ∈ A’ -{a n+1 }. Derhalve is I een yes-instantie.
T U Delft Parallel and Distributed Systems group PGS Van verdeling naar scheduling 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) MPS is een NP-probleem. (Ga na door schedule te verifieren) MPS is een NP-hard probleem: Immers voor |P| = 2 en d = ( j J t i ) / 2 creeren we een deelprobleem van MPS dat identiek is aan PARTITION. Omdat PARTITION in NPC geldt nu ook MPS in NP-hard. (Waarom: zie volgende slide)
T U Delft Parallel and Distributed Systems group PGS Algemene techniek: Bewijs met restrictie Stelling als een NP-probleem B een deelprobleem A heeft dat NP-compleet is, dan is B een NP-compleet probleem. ( A wordt een restrictie van B genoemd ) A B A i(x) = x : inbedding; iedere inbedding is een poly-time reductie i
T U Delft Parallel and Distributed Systems group PGS Restrictie: nieuw voorbeeld Radio Netwerk Planning Gegeven: - een geografisch gebied G; - een aantal potentiële locaties S van Base Tranceiver Stations (BTS) in G en per locatie s S het dekkingsgebied D s van s; - een positieve integer K. Vraag: Is het mogelijk met hoogstens K BTS-locaties uit S het gehele gebied G te overdekken ?
T U Delft Parallel and Distributed Systems group PGS BTS plaatsing: voorbeeld A C D Locaties S = { A,B,C,D} met bijbehorende dekkingsgebieden D s. G is de vereniging van alle dekkingsgebieden Stel K = 3 Nb: een punt x is overdekt als het deel uitmaakt van A, B, C of D B
T U Delft Parallel and Distributed Systems group PGS BTS plaatsing: modellering A B C D A A,D A,B A,B,C A,B,C,D A,C D C B,C B,D B,C,D Plaatsen S = { A,B,C,D} Deelgebieden met overdekking: {A}, {C}, {D}, {A,B}, {A,C}, {A,D}, {B,C}, {B,D}, {A,B,C}, {B,C,D}, {A,B,C,D}, S is er een deelverzameling van S ter grootte van 3 die een element van iedere overdekking bevat.
T U Delft Parallel and Distributed Systems group PGS BTS plaatsing: modellering A D D A C Plaatsen S = { A,B,C,D} Deelgebieden met overdekking: {A}, {C}, {D}, {A,B}, {A,C}, {A,D}, {B,C}, {B,D}, {A,B,C}, {B,C,D}, {A,B,C,D}, S is er een deelverzameling van S ter grootte van 3 die een element van iedere overdekking O bevat. A D C Ja, kies S’ = {A, C, D} equivalent: O [ O S’ ≠ ]
T U Delft Parallel and Distributed Systems group PGS algemene formulering BTS - Naam: HITTING SET (HS) - Gegeven: verzameling S; verzameling C van deelverzamelingen C i S van S, positieve integer K. - Vraag: Heeft S een hitting set ter grootte van K? dwz: is er een S’ S met |S’| K, zodat voor iedere C i C geldt: S’ C i ?
T U Delft Parallel and Distributed Systems group PGS HS NPC: bewijs met restrictie HS NP: Gok een S’ S en verifieer in polynomiale tijd dat S’ voldoet. => O(|S| + log K+ |S| x |C|) O( |I| 2 ) HS NP-hard: Neem het deelprobleem HS’ als de verzameling van die HS-instanties waarbij iedere C i S een verzameling C i = {x,y} is die precies 2 elementen uit S bevat. Dit deelprobleem is identiek aan het NP-complete VERTEX COVER probleem. Derhalve is HS (met bewijs via restrictie) een NP-hard probleem.
T U Delft Parallel and Distributed Systems group PGS Overzicht NP-Complete problemen en reducties - Satisfiability NPC - Hoe NPC-eigenschap te bewijzen? Voorbeelden van lastige reducties - 3-SAT ≤ Vertex Cover, 3-SAT ≤ SubSetSum - SubSetSum ≤ PARTITION Bewijzen met restrictie - Partition ≤ MultiProcessorScheduling - Vertex Cover ≤ Hitting Set Een nieuwe klasse: co-NP - definitie - relatie met P en NP
T U Delft Parallel and Distributed Systems group PGS Nieuwe problemen UNSAT: gegeven een SAT-instantie (U,C), is C onvervulbaar? LOGICAL CONSEQUENCE: gegeven een SAT-instantie (U,C) en een clause c, is c een logisch gevolg van C ? Nb Voor deze problemen geldt: no-instanties zijn efficient verifieerbaar
T U Delft Parallel and Distributed Systems group PGS Een nieuwe klasse: Co-NP Een probleem A is in co-NP als no-instanties in polynomiale tijd verifieerbaar zijn, i.e. A co-NP als er een NTM M bestaat die alle no- instanties van A in polynomiale tijd oplost. De klasse co-NP bestaat uit alle problemen B die het complement zijn van een probleem A in NP : co-NP = { B : A NP [ B = A c ] } Definitie Gevolg
T U Delft Parallel and Distributed Systems group PGS Co-NP : eigenschappen 1. als A B, dan A c B c A B YY N N NN Y Y c 2. als A NPC dan A c co-NPC 3. als NPC co-NP dan NP = co-NP Stel A NPC. Dan A c co-NP. Laat X (willekeurig) co-NP. Dan X c NP. Dus X c A en derhalve (X c ) c = X A c dus A c co-NPC Stel A NPC. Dan A c co-NP. Laat X (willekeurig) co-NP. Dan X c NP. Dus X c A en derhalve (X c ) c = X A c dus A c co-NPC Stel A NPC co-NP. a. NP co-NP: Neem X NP. Dan X A derhalve X co-NP. b. co-NP NP: Neem X co-NP. Dan X c NP. Dus X c A en X A c, A c NP. Dan X NP.
T U Delft Parallel and Distributed Systems group PGS Relatie P, NP en Co-NP Co-NPC NPC NPCo-NP P (co-NP NP) P
T U Delft Parallel and Distributed Systems group PGS Relatie met boek Sipser SAT in NPC wordt behandeld op blz ; het bewijs kan doorgelezen worden. Bestudeer het bewijs van 3-SAT in NPC ( ) 7.5 (blz ) kan aan de hand van de slides bestudeerd worden. Het NPC bewijs van HAMPAD wordt dringend aangeraden maar is niet verplicht. Opgaven maar ook 7.23 worden als oefenopgaven aanbevolen
T U Delft Parallel and Distributed Systems group PGS Oefen 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 1/2 x |V| knopen. Laat zien dat DUBBELSAT en HALVE-CLIQUE NP-complete problemen zijn.
T U Delft Parallel and Distributed Systems group PGS Toegift: One way functions Het is niet zo gemakkelijk om concrete problemen in de klasse (NP co-NP) - P te vinden. Een wat abstracter voor beeld komt uit de cryptografie. Hier zijn we in het bijzonder geinteresseerd in publiek bekende functies f die gebruikt kunnen worden om bitrijtjes efficient te versleutelen zonder dat het mogelijk is diezelfde functie te gebruiken om het versleutelde bitrijtje eenvoudig te decoderen. We gebruiken hiervoor zgn lengte- bewarende one-way functies: Een lengte bewarende one-way (bit)functie f : {0,1} n {0,1} n is een functie waarvoor geldt: - f(x) is berekenbaar in polynomiale tijd - f -1 (x) is niet berekenbaar in polynomiale tijd We laten nu zien dat L = {(x,y) : f -1 (x) < y } een taal is in (NP co-NP) - P
T U Delft Parallel and Distributed Systems group PGS Toegift: One way functions Gegeven is een functie f : {0,1} n {0,1} n zodat - f(x) berekenbaar is in polynomiale tijd - f -1 (x) niet berekenbaar is in polynomiale tijd Laat zien dat L = {(x,y) : f -1 (x) < y } een taal is in (NP co-NP) - P Bewijs: Omdat f polynomiaal berekenbaar is, is er een polynoom p zodat voor input x, het berekenen van f(x) p(x)-tijd kost. L niet in P: stel L in P, dan zouden we een polynomiaal algoritme hebben om (x,y) te beslissen. Neem nu een x en bereken met binair zoeken in O(log |x| x p(|x|) tijd twee waarden z en 2z zodat (x,z) ∉ L en (x,2z) ∈ L. Opnieuw in O(log |x| x p(|x|) ) tijd is dan met binair zoeken de waarde y te bepalen waarvoor f -1 (x) = y. Maar dit betekent dat f -1 in polynomiale tijd berekenbaar is; contradictie. L is een NP- taal: Neem een paar (x, y). Gok een z < y zodanig dat f(z) = x. Dan geldt f -1 (x) < y. L is een co-NP taal: Neem een paar (x,y). Gok een z ≥ y zodanig dat f(z) = x. Dan geldt f -1 (x) ≥ y, dus (x,y) niet in L