TU Delft Groep Parallelle en Gedistribueerde Systemen Fundamentele Informatica IN3120 Cees Witteveen Parallelle en Gedistribueerde Systemen Faculteit EWI, TU Delft College 2
TU Delft Groep Parallelle en Gedistribueerde Systemen Test Ga na welke van onderstaande juist zijn: a. 3 n = O(2 n ). b.c n = 2 O(n) voor elke constante c > 0. c.als p(n) een polynoom is dan geldt p(n) = n O(1) d.n! = O(2 n ). a. b. c. d.
TU Delft Groep Parallelle en Gedistribueerde Systemen Antwoorden a. 3 n = O(2 n ) is onjuist: Stel maar eens dat er een n 0 en c is zodat voor alle n>n 0, 3 n ≤ c.2 n. Maar nu geldt voor alle n > c / (log 1.5) dat3 n > c.2 n. Daarmee is aangetoond dat zulke constanten n 0 en c niet kunnen bestaan b. c n = 2 O(n) voor elke constante c > 0 is juist: c n = 2 log c x n = 2 O(n) c.als p(n) een polynoom is dan geldt p(n) = n O(1) is juist: Stel p(n) = a n n k +a n-1 n k-1 + … + a 0. Dan geldt ≤(a n +…+a 0 )n k voor n≥1. Voor n 0 = a n +…+a 0 geldt nu (a n +…+a 0 )n k ≤ n k+1 voor alle n ≥ n 0. Derhalve geldt p(n) = n O(1) d.n! = O(2 n ) is onjuist. Stel maar eens dat er een n 0 en c is zodat voor alle n>n 0, n! ≤ c.2 n. Neem nu n>max{n 0, 2 2 c}. Dan geldt: n! > 2 n-2 x 2 2 c =c2 n ; contradictie
TU Delft Groep Parallelle en Gedistribueerde Systemen Doenlijke problemen en P alle problemen (talen) die in polynomiale tijd ( n O(1) ) kunnen worden beslist heten doenlijke problemen. complexiteitsklasse: P = k ≥ 0 Time(n k ) alle deterministische berekeningsmodellen zijn polynomiaal equivalent Stelling polynomiale algoritmen zijn onafhankelijk van het gebruikte (deterministische) berekeningsmodel. Gevolg
TU Delft Groep Parallelle en Gedistribueerde Systemen Voorbeeld: PATH in P Naam: PATH Instantie:Gerichte graaf G = (V, E), knopen s, t in V; Vraag:bestaat er een (gericht) pad van s naar t in G. s t PATH = { | G is gerichte graaf met pad van s naar t } Sipser Alternatieve formulering Vergelijk met een taal L over Σ
TU Delft Groep Parallelle en Gedistribueerde Systemen input : G =(V,E), s,t V begin new := true fringe := {s}; while new new : = false for every e = (x,y) in E if x fringe y fringe then fringe:= fringe {y} new := true if t fringe then accept else reject end O(|V| 2 |E|) O(1) O(|V|) tijdcomplexiteit: O(|V| 2 |E|) = O(| input | 3 ) | input | = |V|+|E| + 2 PATH in P O(|E||V|)
TU Delft Groep Parallelle en Gedistribueerde Systemen voorbij P : NP Eigenschappen P-probleem oplossing is in polynomiale tijd te construeren. oplossing is in polynomiale tijd te verifiëren. Eigenschappen NP-probleem niet bekend of oplossing in polynomiale tijd is te construeren. oplossing is wel in polynomiale tijd te verifiëren. Niet-deterministisch Polynomiale (tijd) USD te verdienen:
TU Delft Groep Parallelle en Gedistribueerde Systemen P en NP voor alle problemen in P bestaat een polynomiaal algoritme voor de constructie van de oplossing sommige belangrijke (beslissings)problemen hebben de eigenschap dat - het niet bekend is of een polynomiale constructie voor de oplossing mogelijk is, - er wel een polynomiale verificatie procedure voor de oplossing bestaat. deze problemen worden NP-problemen genoemd
TU Delft Groep Parallelle en Gedistribueerde Systemen Voorbeeld van een NP probleem instantie: G = (V,E) vraag: is er een simpel pad in G dat alle knopen uit V bevat? HAMP = { G : er is een hamiltoons pad voor G } Sipser notatie Opmerking: als G HAMP dan wordt G een yes-instantie van HAMP genoemd. als G HAMP dan wordt G een no-instantie van HAMP genoemd. Hamiltoons Pad (HAMP)
TU Delft Groep Parallelle en Gedistribueerde Systemen Verificatie: gegeven een rij (v i 1,..., v i k ) van knopen 1. komt iedere knoop in V exact éénmaal voor in (v i 1,..., v i k ) ? 2. is {v i j,v i j+1 } voor alle i = 1,..., k-1 een kant in E? Verificatie: gegeven een rij (v i 1,..., v i k ) van knopen 1. komt iedere knoop in V exact éénmaal voor in (v i 1,..., v i k ) ? 2. is {v i j,v i j+1 } voor alle i = 1,..., k-1 een kant in E? Voorbeeld Hamiltoons pad HAMP instantie G = ( V, E ) hamiltoons pad O(|V| 2 ) O(|V||E|) O(|input| 3 ) Er zijn geen polynomiale algoritmen voor HAMP bekend als een rijtje van n knopen als certificaat gegeven wordt kan wel in polynomiale tijd gecheckt worden of G een hamiltoons pad heeft: HAMPAD is wel polynomiaal verifieerbaar v1v1 v3v3 v4v4 v5v5 v6v6 Certificaat: (v 1,v 3,v 5,v 6,v 4,v 2 ) v2v2
TU Delft Groep Parallelle en Gedistribueerde Systemen Alternatieve definitie NP Een verifier voor een taal L is een algoritme V waarvoor geldt: - L = { x | V accepteert ( x, c ) voor een rijtje c } - c is het certificaat of bewijs voor lidmaatschap van L Een verifier V heet polynomiaal als V een algoritme is dat polynomiaal is in |x|. In dit geval wordt de taal L polynomiaal verifieerbaar genoemd. NP is de klasse van alle polynomiaal verifieerbare talen of beslissingsprobleem
TU Delft Groep Parallelle en Gedistribueerde Systemen Equivalente Definities NP NP : klasse van alle polynomiaal verifieerbare talen NP : klasse van alle talen die geaccepteerd worden door een polynomiale NTM Gegeven polynomiale verifier V, construeer NTM M als volgt: voor input x met |x| = n kies nondeterministisch een certificaat c van lengte ≤ n k. Simuleer V op invoer (x,c); accepteer als V accepteert, anders verwerp. Gegeven polynomiale NTM M, construeer V als volgt: voor input x met |x| = n, simuleer Tm M op x en noteer de opeenvolgende(niet)-deterministische keuzes die M maakt in certificaat c; accepteer als M uiteindelijk accepteert, anders verwerp.
TU Delft Groep Parallelle en Gedistribueerde Systemen Centraal probleem: P = NP? P = NP ? Voor NP problemen zijn tot nu toe alleen exponentiële algoritmen bekend; we weten niet of P = NP of P ≠ NP. Belang: NP bevat groot aantal interessante problemen satisfiability van boolese formules padproblemen in grafen (TSP, Hamiltoons pad) cover problemen: set en vertex cover. rooster en schedulings problemen. etc.
TU Delft Groep Parallelle en Gedistribueerde Systemen Reducties (i) HAMC instantie G = (V, E) hamiltoons circuit Stel we hebben de beschikking over een van de beste algoritmen ter wereld voor HAMP. Kunnen we zonder essentieel efficiëntie verlies dit algoritme ook gebruiken voor andere NP- problemen zoals HAMC? HAMC = {G: G heeft een simpel circuit dat alle knopen bevat } Reducties als hergebruik van algoritmen
TU Delft Groep Parallelle en Gedistribueerde Systemen Reductie: idee Eisen aan f: 1. x * : x HAMC f(x) HAMP 2. f berekenbaar in poly-tijd Eisen aan f: 1. x * : x HAMC f(x) HAMP 2. f berekenbaar in poly-tijd HAMC ** HAMP ’*’* algoritme HAMP noyes f f(*)f(*)
TU Delft Groep Parallelle en Gedistribueerde Systemen Reductie (ii) HAMC instantie G = (V, E) v1v1 v0v0 a b hamiltoons circuit hamiltoons pad HAMP instantie G = (V, E) HAMC is niet essentieel moeilijker dan HAMP
TU Delft Groep Parallelle en Gedistribueerde Systemen Reductie: constructie uitgewerkt input: G = (V, E) begin V’ : = {a, b, v 0 } V % a, b, v 0 V E’ := E { {v 0,v} : {v 1,v} E } { {v 0,a}, {v 1,b} } return f(G) = (V’, E’) end Constructie reductie f van HAMC naar HAMP 1.G HAMC f(G) HAMP 2.f(G) HAMP G HAMC 3. f is polynomiaal berekenbaar Correctheid van reductie (kun je na afloop zelf)
TU Delft Groep Parallelle en Gedistribueerde Systemen Polynomiale-tijd reducties Een polynomiale-tijd reductie van probleem A naar probleem B is een polynomiaal berekenbare functie f waarvoor geldt : x * x A f(x) B Definitie Als f een poly-tijd reductie is van A naar B dan geldt als B P dan A P notatie: A ≤ B Stelling Bewijs: laat p en q polynomen zijn waarvoor geldt: ALG B is een O(p(n)) algoritme voor B en f is berekenbaar in O(q(n)). Gegeven een x met |x| = n, bepaal nu ALG B ( f(x)). Berekening kost O(q(n) + p(n+q(n)))-tijd. Omdat polynomen gesloten zijn onder optelling en functiecompositie geldt: ALG B ( f(x)) is een polynomiaal algoritme voor A.
TU Delft Groep Parallelle en Gedistribueerde Systemen Eigenschappen polynomiale reducties A A (reflexiviteit) A B en B C impliceert A C (transitiviteit) A C B A NP P B A B NP en A B impliceert A NP (geslotenheid onder )
TU Delft Groep Parallelle en Gedistribueerde Systemen NP-hard en NP-compleet B is NP-hard (onder voor iedere A in NP geldt A B B is NP-compleet onder 1. B is NP-hard onder 2. B NP NP-hard NP-compleet
TU Delft Groep Parallelle en Gedistribueerde Systemen Structuur van NP NPC P P NPC = { A NP | X NP [X A] } moeilijker
TU Delft Groep Parallelle en Gedistribueerde Systemen Eigenschappen NPC Als A NPC, B NP en A B dan B NPC. Als A NPC P dan P = NP. A NPC B P NP (def.) NP P : Neem X NP. Dan X ≤ A. Derhalve (P gesloten) X P.
TU Delft Groep Parallelle en Gedistribueerde Systemen Waarom NPC belangrijk? Als we een polynomiaal algoritme voor een NPC-probleem A kunnen vinden ( A P) dan geldt P = NP. Als we voor een NPC-probleem A kunnen aantonen dat A P, dan geldt P NP.
TU Delft Groep Parallelle en Gedistribueerde Systemen Hoe A NPC te bewijzen? Bewijs eerst dat A NP: Toon aan dat voor iedere x A een polynomiale verificatie procedure bestaat. Toon aan dat B A voor een bekend NPC probleem B. Kies een geschikt bekend NPC probleem B; construeer een polynomiale reductie B A en laat zien dat deze correct is.
TU Delft Groep Parallelle en Gedistribueerde Systemen Meer NP problemen: vb Traveling Sales Person (TSP) - instantie: een verzameling S van n steden, een intercity afstanden matrix D nxn met d ij Z + en een integer B Z + - vraag: bestaat er een tour langs alle steden met totale afstand B ? TSP = { (S, D, B) : S heeft tour met kosten ≤ B }
TU Delft Groep Parallelle en Gedistribueerde Systemen Voorbeeld:TSP is NP-compleet Aanname: HAMC is NP-compleet Te bewijzen: TSP is NP-compleet
TU Delft Groep Parallelle en Gedistribueerde Systemen reductie idee HAMC instantie G = ( V, E ) TSP instantie ( V, D, |V| ) hamiltoons circuit tour met kosten |V|
TU Delft Groep Parallelle en Gedistribueerde Systemen HAMC TSP input: G = (V,E) output: yes alss G in HAMC begin S := V ; D := [ d ij ] |V| x |V| where d ij = 1 if { v i, v j } E and d ij = 2 else; B := |V|; return TSP(S,D,B) ; end Algoritme voor TSP probleem
TU Delft Groep Parallelle en Gedistribueerde Systemen HAMC TSP (uitwerking) 1. Constructie reductie Laat I = ( G = (V,E)) een willekeurige instantie van HAMC zijn. Construeer de volgende instantie R(I) = (S, D, B) van TSP: 1. S := V ; 2. D := [ d ij ] |V| x |V| met d ij = 1 als { v i, v j } E en d ij = 2 anders; 3. B := |V|; 2. Correctheid reductie a. Stel I = ( G = (V,E)) is een yes-instantie van HAMC. Dan is er een circuit (v i1, v i2, v i3,…, v in, v i1 ) dat alle knopen uit V bevat met j=1,…,n-1: (v ij, v ij+1 ) E en (v in, v i1 ) E. Maar dan geldt onmiddellijk dat d vij,vi(j+1) = 1 en d vin,vi1 = 1 en derhalve is (v i1, v i2, v i3,…, v in, v i1 ) een tour in R(I) met kosten ≤ B. Derhalve is R(I) een yes-instantie van TSP.
TU Delft Groep Parallelle en Gedistribueerde Systemen HAMC TSP (uitwerking) b. Stel R(I) is een yes-instantie. Te bewijzen dat I een yes- instantie is. (Ga zelf na) 3. Polynomialiteit Bedenk dat I = |V| +|E|. S is te construeren in O(|V|) tijd. D is te construeren in O(|V| 2 x |E|)-tijd. Bepaling van B kost O(|V|)-tijd. Totaal: O(|V| 2 x|E|) ≤ O(|I| 3 )-tijd
TU Delft Groep Parallelle en Gedistribueerde Systemen Vb NP-probleem Naam: FREQUENTIETOEWIJZING (FREQ) Instantie: - een k-tal verschillende frequenties f 1, …, f k Z + / {1} - een n-tal locaties l 1, l 2, …, l n Z + / {1} van mobiele telefoons, met gegeven onderlinge afstanden d(l i, l j ) Z + ; - een kritieke afstand D > 0. Vraag: - is er een toekenning T van frequenties aan locaties zodanig dat voor ieder tweetal locaties l i en l j met d ij ≤ D geldt: T(l i ) ≠ T(l j ) ?
TU Delft Groep Parallelle en Gedistribueerde Systemen instantie van freq. toewijzing D ≤ 4 frequenties n =16 k = 6
TU Delft Groep Parallelle en Gedistribueerde Systemen instantie van freq. toewijzing D frequenties oplossing te verifieren in O(n 2 )-tijd k geen polynomiale constructie: best bekende algoritme kost O(k n )-tijd
TU Delft Groep Parallelle en Gedistribueerde Systemen FREQ: polynomiale verificatie gebruik als certificaat c een toewijzing T(l 1 ), T(l 2 ),..., T(l k ) controleer in polynomiale tijd of T oplossing is: begin oplossing := true for i = 1 to n for j =1 to n if i ≠ j then if d(l i, l j ) ≤ D and T(l i ) = T(l i ) then oplossing := false return oplossing end O( i j max{log d(l i,l j ),log D} + i j max{log f i, log f j } ) O( i j log d(l i,l j ) + n 2 log D + 2n i =1..k log f i ) = O( |input| 3 ) | input | = i =1..k log f i + i =1..n log l i + i j log d(l i,l j ) + log D O(max{log d(l i,l j ),log D}+max{log f i, log f j } )
TU Delft Groep Parallelle en Gedistribueerde Systemen Wat doen we hierna? doenlijk vss ondoenlijk: P versus NP - NP-complete problemen, voorbij NP praktische aspecten van NP-problemen - pseudopolynomiale algoritmen - heuristieken bijzondere onderwerpen - quantum computing - zero-knowledge proof systems
TU Delft Groep Parallelle en Gedistribueerde Systemen poly-tijd reductie: vb reductie van VERTEX COVER (VC) naar CLIQUE: input: G = ( V, E ), K Z + ; output: yes alss VC ter grootte van K bestaat begin Laat G’ = ( V’, E’ ) met V’ = V en E’ = { { v,w } | v ≠ w V, {v,w} E }; K’ = | V | - K return CLIQUE(G’, K’) end Nb: CLIQUE is het algoritme voor het clique probleem; CLIQUE(G’, K’) = yes alss G’ een clique ter grootte van K’ bevat anders no
TU Delft Groep Parallelle en Gedistribueerde Systemen G G’ Zo werkt de reductie
TU Delft Groep Parallelle en Gedistribueerde Systemen vertex cover size 5 in G ( K ) clique size 3 in G’ ( |V| - K ) Zo werkt de reductie
TU Delft Groep Parallelle en Gedistribueerde Systemen Hoe correctheid te bewijzen ga na dat transformatie polynomiaal is ga na dat yes-instanties van VC worden getransformeerd naar yes-instanties van CLIQUE ga na dat een getransformeerde yes-instantie van CLIQUE altijd afkomstig is van een oorspronkelijke yes-instantie van VC.