Fundamentele Informatica In3 005 Deel 2 College 1 Cees Witteveen Parallelle en Gedistribueerde Systemen Faculteit Informatie Technologie en Systemen Overzicht Inleiding - Relatie Deel 1 en Deel 2 - Doenlijke en Ondoenlijke problemen - P versus NP - Inhoud Deel 2 Intro Complexiteitsthorie - Complexiteit van programma s en problemen - Beslissingsproblemen - Karp reducties Relatie Deel 1 en Deel 2 (On)Doenlijke problemen Deel 1 Alle problemen Berekenbare problemen Doenlijke problemen Een probleem is doenlijk als het in polynomiale tijd op te lossen is (polynomiaal in de grootte van de invoer); Doenlijke problemen Deel 2 P : klasse van polynomiaal oplosbare problemen Ondoenlijke problemen Een probleem is ondoenlijk als er geen polynomiaal algoritme voor het probleem bestaat. waarom onderscheid: kijk naar volgende tabel
Tijdcomplexiteits functies Doenlijk (P) vss ondoenlijk tijd complexiteit O(n) O(n 2 ) O(n 3 ) O(2 n ) O(n!) omvang grootste instantie oplosbaar in t tijdseenheden n 1 n 2 n 3 n 4 n 5 huidig systeem 10x sneller systeem 10 n 1 3.16 n 2 2.15 n 3 n 4 + 3.32 < n 5 +1 1000 x sneller systeem 1000 n 1 31.6 n 2 10 n 3 n 4 + 9.97 < n 5 +1 voor ondoenlijke problemen is (constante) technologische speed-up van beperkt belang: Stel probleem heeft tijdcomplexiteit 2 n en speed up is c. Als een instantie ter grootte van m in een bepaalde hoeveelheid tijd kan worden opgelost, dan kan na de speed-up in dezelfde tijd een instantie ter grootte van < m + 2 log c opgelost worden. voor doenlijke problemen is speed-up van belang: Stel probleem heeft tijdcomplexiteit n k en speed up is c. Als een instantie ter grootte van m in een bepaalde hoeveelheid tijd kan worden opgelost, dan kan na de speed up in dezelfde tijd een instantie ter grootte van c 1/k.m opgelost worden. Voorbeelden (on)doenlijke problemen P en NP problemen in P sorteren, lineair programmeren, kortste pad bepaling vermoedelijk ondoenlijke problemen langste pad bepaling, prop. vervulbaarheid ondoenlijke problemen bepalen van alle diagnoses in digitale circuits. Eigenschap P-probleem oplossing in polynomiale tijd te construeren. oplossing in polynomiale tijd te verifiëren. Eigenschap NP-probleem (vermoedelijk ondoenlijk) niet bekend of oplossing in polynomiale tijd is te construeren. oplossing in polynomiale tijd te verifiëren. NP = niet-deterministisch polynomiale (tijd)
Vb NP-probleem instantie van freq. toewijzing Frequentietoewijzing Gegeven: - een k-tal verschillende frequenties f 1,, f k, - een n-tal locaties l 1,l 2,, l n van mobiele telefoons, met gegeven onderlinge afstanden d ij > 0; - 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 ). D = 4 frequenties k = 6 n =16 instantie van freq. toewijzing Centraal probleem: : P = NP? D geen polynomiale constructie: best bekende algoritme kost O(k n )-tijd oplossing te verifieren in O(n 2 )-tijd frequenties k P = NP? Voor NP problemen zijn tot nu toe alleen exponentiële algoritmen bekend; we weten niet of geldt dat P = NP of P NP. Belang: NP bevat groot aantal belangrijke problemen satisfiability van boolese formules padproblemen in grafen (TSP, Hamiltoons pad) cover problemen: set en vertex cover. rooster en schedulings problemen.
Inhoud colleges Deel 2 Literatuur en studiemateriaal inleiding complexiteitstheorie - reducties, complexiteitsklassen 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 Literatuur B.M. Moret, The Theory of Computation Hfst 6 + 7 + 8 + 9 aanvullende informatie zie blackboard course IN3005 voor Practicum college overzichten; tentamens en uitwerkingen; voorbeelden twee opgaven: correctheidsbewijs van een gegeven reductie ontwerpen van een reductie + correctheidsbewijs Practicum en tentamen Overzicht practicum twee opgaven: opgaven correctheidsbewijs van een gegeven reductie ontwerpen van een reductie + correctheidsbewijs groepsindeling zoals voor deel 1 afronden voor einde kwartaal 3 opgave 2 wordt verstrekt na voltooiing opgave 1 correctie: assistenten Roman van der Krogt en Maja van der Werf (dinsdag 13.00-16.30 uur) tentamen meerkeuzevragen (±10 ) + open vragen (1 tot 2) Inleiding - Relatie Deel 1 en Deel 2 - Doenlijke en Ondoenlijke problemen - P versus NP - Inhoud Deel 2 Intro Complexiteitsthorie - Complexiteit van programma s en problemen - Beslissingsproblemen - Karp reducties
Complexiteit programma s Complexiteit programma s fibonacci functie fib(n) = 1 als n = 0, 1 fib(n-1) + fib(n-2) elders fib(n) = 1 als n = 0, 1 fib(n-1) + fib(n-2) elders programma 1 O(2 n ) procedure fibo1(n) begin if n < 2 then return 1 else return fibo(n-1)+fibo(n-2) end tijd complexiteit T(0) = 2; T(1) = 2; T(n) = 1 + T(n-1) + T(n-2) +1 voor n > 1 T(n) = O(2 n ) programma 2 procedure fibo2(n) begin O(n) programma 3 procedure fibo3(n) begin O(log n) a:= 1; b:=1; k:=1; while k < n do z:= a; a:= b; b:= z+b; k:= k+1; return b; if n < 2 then return 1 else M := mat([1,1],[1,0]); Z:= matpower(m,n-1); return Z(1,1)+Z(1,2); end end Complexiteit algoritmen versus problemen Complexiteit van probleem tijdcomplexiteit algoritme: aantal elementaire rekenstappen als functie van grootte van de input tijdcomplexiteit probleem tijdcomplexiteit algoritme voor probleem: vb fibonacci probleem: gegeven n 0, bepaal fib(n) tijdcomplexiteit algoritmen fibo1 : O(22^(log n) fibo2 : O(2 log n) ) fibo3 : O(log n) tijdcomplexiteit fibonacci probleem O(m) Nb: size input: m = O( log n) Complexiteit probleem maximale hoeveelheid tijd of ruimte die het beste algoritme voor oplossing van het probleem in het slechtste geval nodig heeft. Nb: complexiteit probleem doet uitspraak over complexiteit van alle algoritmen voor het probleem
Complexiteitstheorie Beslissingsproblemen (1) klassificatie van problemen naar maximale hoeveelheid tijd/ruimte die het beste algoritme voor oplossing van het probleem in het slechtste geval nodig heeft. beperking (voorlopig) tot beslissings problemen Definitie A is een beslissingsprobleem als alle instanties van A met ja ( yes ) of nee ( no ) beantwoord kunnen worden. Voorbeelden Satisfiability: Gegeven een propositionele formule F, is F vervulbaar? Clique: Gegeven een graaf G = (V, E) en een integer K > 0, heeft G een clique ter grootte van K? Beslissingsproblemen (2) Beslissingsproblemen: : vb Notatie D A verzameling van van alle alle instanties van van A I A instanties van van A Yes A No A alle alle yes-instanties alle alle no-instanties van van A van van A Vertex Cover (VC) - instantie: een graaf G = (V,E) en K Œ Z + - vraag: heeft G een vertex cover V Õ V ter grootte van K of minder, m.a.w. bestaat er een subset V ter grootte van hoogstens K zodat iedere kant e = {x,y} uit E tenminste een knoop uit V bevat? 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?
Beslissingsproblemen: reducties Eisen aan reductie Stel A en B beslissingsproblemen. A is niet essentieel moeilijker dan B ( A B ): er bestaat een efficiënte manier om A op te lossen met behulp van een algoritme voor B. idee reductie A naar B: fase 1: gebruik een polynomiaal algoritme om A instanties te transformeren naar B instanties; fase 2: gebruik een algoritme voor B om het antwoord te berekenen. reductie van A naar B moet efficient zijn (polynomiale tijd). reductie moet betrouwbaar zijn: dwz: als R transformatie is van A naar B dan moet gelden: als I A Œ Y A dan R(I A ) Œ Y B en als I A Œ N A dan R(I A ) Œ N B voor alle I A Œ D A : I A Œ Y A R(I A ) Œ Y B Karp-reducties reducties m Karp-reductie reductie: : vb A m B: voor alle I A Œ D A : I A Œ Y A R(I A ) Œ Y B R(Y A ) Y A N B A R Y B algoritme voor B yes B N B no R(N A ) algoritme voor A 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
Zo werkt de reductie Zo werkt de reductie G G vertex cover size 5 in G ( K ) clique size 3 in G ( V - K ) 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. Tot volgende week