De presentatie wordt gedownload. Even geduld aub

De presentatie wordt gedownload. Even geduld aub

TU Delft Groep Parallelle en Gedistribueerde Systemen Fundamentele Informatica IN3120 Cees Witteveen Parallelle en Gedistribueerde Systemen Faculteit EWI.

Verwante presentaties


Presentatie over: "TU Delft Groep Parallelle en Gedistribueerde Systemen Fundamentele Informatica IN3120 Cees Witteveen Parallelle en Gedistribueerde Systemen Faculteit EWI."— Transcript van de presentatie:

1 TU Delft Groep Parallelle en Gedistribueerde Systemen Fundamentele Informatica IN3120 Cees Witteveen Parallelle en Gedistribueerde Systemen Faculteit EWI College 1

2 TU Delft Groep Parallelle en Gedistribueerde Systemen Relatie in3110 en in3120 Alle problemen Berekenbare problemen Doenlijke problemen in3110 in3120

3 TU Delft Groep Parallelle en Gedistribueerde Systemen Literatuur en studiemateriaal Literatuur M. Sipser, Introduction to the Theory of Computation Part III: Hfst aanvullende informatie zie blackboard course IN3100 voor college overzichten; tentamens en uitwerkingen voorbeelden practicum twee opgaven: correctheidsbewijs van een gegeven reductie ontwerpen van een reductie + correctheidsbewijs

4 TU Delft Groep Parallelle en Gedistribueerde Systemen Practicum en tentamen practicum twee opgaven: correctheidsbewijs van een gegeven reductie ontwerpen van een reductie + correctheidsbewijs opgaven groepsindeling zoals voor deel 1 afronden voor einde kwartaal 3 opgave 2 wordt verstrekt na voltooiing opgave 1 correctie: assistenten Michel (dinsdagochtend) en Leon (woensdagmiddag) tentamen meerkeuzevragen (±10 ) + open vragen (1 tot 2)

5 TU Delft Groep Parallelle en Gedistribueerde Systemen Overzicht wat kosten algoritmen - tijdcomplexiteit - asymptotische complexiteit: grote O en kleine o complexiteit van algoritmen en machinemodellen - twee algoritmen voor herkennen van talen - machinemodellen en complexiteit - tijdcomplexiteitsklassen complexiteit van problemen - doenlijke en ondoenlijke problemen - de klasse van polynomiale problemen P - P versus NP

6 TU Delft Groep Parallelle en Gedistribueerde Systemen wat kost een algoritme? Neem de volgende TM die de taal L = { a m b n : 0 ≤ m ≤ n } accepteert: algoritme voor M 1 voor input x in {a, b}*: 1.scan input tape en verwerp als er een a rechts van een b wordt gevonden; 2.zolang als er zowel a’s als b’s op de tape staan 3.scan de tape en verwijder een a en een b 4.accepteer als alle a’s verwijderd zijn; anders verwerp. Vraag: hoeveel tijd kost dit algoritme ?

7 TU Delft Groep Parallelle en Gedistribueerde Systemen Tijd complexiteit van algoritme Exacte bepaling is vaak lastig, onnodig en (te) machine-afhankelijk. Daarom gebruiken we een asymptotische analyse: grote O-notatie en kleine o-notatie tijdcomplexiteit van een algoritme A is een functie f : N  N waarbij f(n) het grootste aantal stappen (instructies) is dat A nodig heeft voor een input ter grootte van n. worst case tijdcomplexiteit

8 TU Delft Groep Parallelle en Gedistribueerde Systemen Tijd complexiteit van algoritme Grote O-notatie Voorbeelden f(n) = 2n 2 +9n+100 ===> f(n) = O(n 2 ) f(n) = a log k n===>f(n) = O(log 2 n) f(n) = 2 an+k ===> f(n) = 2 O(n) Laat f : N  R + en g : N  R +. Dan geldt f(n) = O(g(n)) als er integers c en n 0 bestaan waarvoor geldt  n ≥ n 0 [ f(n) ≤ c x g(n) ] kies c = 9, n 0 = 5 c = a/log 2 k, n 0 = 1 c = a+1, n 0 = k

9 TU Delft Groep Parallelle en Gedistribueerde Systemen Tijdcomplexiteit van algoritmen Polynomiale algoritmen Een algoritme A met tijdcomplexiteit f(n) heet polynomiaal (begrensd) als geldt f(n) = O(n c ) voor een constante c > 0. Exponentiële algoritmen Een algoritme A met tijdcomplexiteit f(n) heet exponentieel begrensd als geldt f(n) = O(2 n^c ) voor een constante c > 0.

10 TU Delft Groep Parallelle en Gedistribueerde Systemen Tijdcomplexiteit van algoritmen Laat f : N  R + en g : N  R +. Dan geldt f(n) = o( g(n) ) als lim n  f(n) / g(n) = 0 Kleine o-notatie Voorbeelden f(n) = 2n 2 +9n+100 ===> f(n) = o(n 3 ) f(n) = c log k n===>f(n) = o(n) f(n) = n  n===> f(n) = o(n 2 )

11 TU Delft Groep Parallelle en Gedistribueerde Systemen Toepassing: analyse TM M 1 Neem de volgende TM die de taal L = { a m b n : 0 ≤ m ≤ n } accepteert: algoritme voor M 1 voor input x in {a, b}*: 1.scan input tape en reject als er een a rechts van een b wordt gevonden; 2.zolang als er zowel a’s als b’s op de tape staan 3.scan de tape en verwijder een a en een b 4.accept als alle a’s verwijderd zijn; anders reject. Vraag: hoeveel tijd kost dit algoritme ? Neem |x| = n O(n) O(n) x O(n) =O(n 2 ) O(n) O(n) + O(n 2 ) + O(n) = O(n 2 )

12 TU Delft Groep Parallelle en Gedistribueerde Systemen Een beter algoritme voor L Neem de volgende TM die de taal L = { a m b n : 0 ≤ m ≤ n } accepteert: algoritme voor M 2 voor input x in {a, b}*: 1.scan input tape en verwerp als er een a rechts van een b wordt gevonden; 2.bepaal aantal a’s en schrijf binair aan eind van tape; 3.sluit binaire rijtje af met #; 4.bepaal aantal b’s en schrijf binair aan eind van tape; 5.Vergelijk de verkregen bitrijtjes voor de a’s en de b’s; 4.accepteer als het bitrijtje van de b’s minstens zo groot is als die van de a’s; anders verwerp.

13 TU Delft Groep Parallelle en Gedistribueerde Systemen Een beter algoritme voor L Neem de volgende TM die de taal L = { a m b n : 0 ≤ m ≤ n } accepteert: algoritme voor M 2 voor input x in {a, b}*: 1.scan input tape en verwerp als er een a rechts van een b wordt gevonden; 2.bepaal aantal a’s en schrijf binair aan eind van tape 3.sluit binaire rijtje af met # 4.bepaal aantal b’s en schrijf binair aan eind van tape 5.Vergelijk de verkregen bitrijtjes voor de a’s en de b’s 4.accepteer als het bitrijtje van de b’s minstens zo groot is als die van de a’s; anders verwerp. O(n) O(n log n) O(log n) O(1) Totaal O(n log n)

14 TU Delft Groep Parallelle en Gedistribueerde Systemen Complexiteit en machine model Single en multi-tape Turingmachines Voor elke multi-tape Turingmachine die een probleem oplost in t(n)- tijd, bestaat er een single-tape Tm die hetzelfde probleem oplost in O(t 2 (n))-tijd Deterministische en niet-deterministische machines Voor elke niet-deterministische Turingmachine die een probleem oplost in t(n)-tijd, bestaat er een single-tape Tm die hetzelfde probleem oplost in 2 O(t (n)) -tijd Conclusie Tussen deterministische Tm’s bestaan polynomiale verschillen, tussen deterministische en niet-deterministische modellen bestaan exponentiële verschillen in tijdcomplexiteit.

15 TU Delft Groep Parallelle en Gedistribueerde Systemen Complexiteit en machine model Equivalentie stelling Alle redelijke deterministische berekeningsmodellen zijn polynomiaal equivalent (vb: RAM, Registermachines, Turingmachines)

16 TU Delft Groep Parallelle en Gedistribueerde Systemen Tijdcomplexiteits klassen Complexiteits klasse TIME(t(n)) als t : N  N functie is dan is TIME( t(n) ) = { L : L wordt beslist door een deterministische Tm in O(t(n))-tijd } = de verzameling van alle talen beslist door O(t(n))-DTm’s Voorbeeld: we hebben gezien dat de taal L = {a m b n : 1 ≤ m ≤ n } tot TIME(n 2 ) behoort. [ maar ook tot TIME(n log n)]

17 TU Delft Groep Parallelle en Gedistribueerde Systemen Tijdcomplexiteits klassen Complexiteits klasse P P = ∪ k TIME( n k ) = { L : L wordt beslist door een Tm in polynomiale tijd } = de verzameling van alle talen beslist in polynomiale tijd Nb: P is onafhankelijk van het precieze deterministische machine model, dwz P is een robuuste complexiteitsklasse)

18 TU Delft Groep Parallelle en Gedistribueerde Systemen Tijdcomplexiteits klassen Complexiteits klasse NP NP = ∪ k NTIME( n k ) = { L : L wordt beslist door een niet- deterministische Tm in polynomiale tijd } = de verzameling van alle talen beslist door NTM’s in polynomiale tijd

19 TU Delft Groep Parallelle en Gedistribueerde Systemen Complexiteit programma’s T(n) = O(2 n ) dit is tijd als functie van n programma 1 procedure fibo1(n) begin if n < 2 then return 1 else return fibo(n-1)+fibo(n-2) end O(2 2^n )T(0) = 2; T(1) = 2; T(n) = 1 + T(n-1) + T(n-2) +1 voor n > 1 bepaal eerst T(n) |n| = log n  f(|n|) = O(2 2^|n| ) 1 als n = 0, 1 fib(n-1) + fib(n-2) elders 1 als n = 0, 1 fib(n-1) + fib(n-2) elders fibonacci functie: fib(n) = T(n) = O(2 n ) gevraagd wordt functie van |n|

20 TU Delft Groep Parallelle en Gedistribueerde Systemen Complexiteit programma’s programma 2 procedure fibo2(n) begin a:= 1; b:=1; k:=1; while k < n do z:= a; a:= b; b:= z+b; k:= k+1; return b; end programma 3 procedure fibo3(n) begin 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 f(n) = O(2 n )f(n) = O(n) 1 als n = 0, 1 fib(n-1) + fib(n-2) elders fib(n) = T(n) = O(n) T(n) = O( log n) wat is nu de complexiteit van het probleem bereken het n-de fibonaccigetal?

21 TU Delft Groep Parallelle en Gedistribueerde Systemen Complexiteit van probleem Nb: complexiteit probleem doet uitspraak over complexiteit van alle algoritmen voor het probleem Complexiteit beslissings probleem Probl worst-case complexiteit van het beste algoritme voor oplossing van Probl : f Probl (n) = min { f A (n) : A is een algoritme voor Probl }

22 TU Delft Groep Parallelle en Gedistribueerde Systemen (On)Doenlijke problemen Doenlijke problemen Een probleem is doenlijk als het in polynomiale tijd op te lossen is (polynomiaal in de grootte van de invoer). P =  k Time(n k ): 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

23 TU Delft Groep Parallelle en Gedistribueerde Systemen Tijdcomplexiteits functies tijd complexiteit huidig systeem 10x sneller systeem 1000 x sneller systeem O(n)n1n1 10 n n 1 O(n 2 )n2n n n 2 O(n 3 )n3n n 3 10 n 3 O(2 n )n4n4 n n O(n!)n5n5 < n 5 +1 (voor n >10) < n 5 +1 (voor n >1000) omvang grootste instantie oplosbaar in t tijdseenheden

24 TU Delft Groep Parallelle en Gedistribueerde Systemen Doenlijk (P) vss ondoenlijk 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 wel 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.

25 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 belangrijke problemen satisfiability van boolese formules padproblemen in grafen (TSP, Hamiltoons pad) cover problemen: set en vertex cover. rooster en schedulings problemen. etc.

26 TU Delft Groep Parallelle en Gedistribueerde Systemen Wat doen we hierna? doenlijk vss ondoenlijk: P versus NP - de klasse NP - NP-complete problemen, voorbij NP praktische aspecten van NP-problemen - pseudopolynomiale algoritmen - heuristieken bijzondere onderwerpen - quantum computing - zero-knowledge proof systems

27 TU Delft Groep Parallelle en Gedistribueerde Systemen Tot volgende week


Download ppt "TU Delft Groep Parallelle en Gedistribueerde Systemen Fundamentele Informatica IN3120 Cees Witteveen Parallelle en Gedistribueerde Systemen Faculteit EWI."

Verwante presentaties


Ads door Google