Fundamentele Informatica IN3120

Slides:



Advertisements
Verwante presentaties
Algoritmen en Datastructuren (ALDAT)
Advertisements

Hogeschool HZ Zeeland 19 augustus 2003augustus 2003 Data Structuren & Algoritmen Week 1.
Algoritmische problemen Onbeslisbaar / niet-berekenbaar Geen algoritme mogelijk Tegel- of domino-problemen Woordcorrespondentie-probleem Syntactisch equivalentie.
T U Delft Parallel and Distributed Systems group PGS Fundamentele Informatica IN3 005 Deel 2 College 5 Cees Witteveen
Hoofdstuk 8: Recursie.
Datastructuren Analyse van Algoritmen en O
Datastructuren Analyse van Algoritmen en O
T U Delft Parallel and Distributed Systems group PGS Fundamentele Informatica IN3005 deel 2 College 2 Cees Witteveen
Computationele complexiteit: NP-volledigheid
1 Tentamen 21 januari 2008 uitleg Algemene kennisvragen a)“Wat verstaan we onder de complexiteit van een algoritme?” –Cruciaal: wat gebeurt er met.
Jan Talmon Medische Informatica Universiteit Maastricht
Fibonacci & Friends Met dank aan Gerard Tel.
NP-volledigheid Algoritmiek © Hans Bodlaender, Oktober 2002.
1 Datastructuren Sorteren: alleen of niet alleen vergelijkingen (II) College 6.
vwo A Samenvatting Hoofdstuk 14
Parallelle Algoritmen String matching. 1 Beter algoritme patroonanalyse Bottleneck in eenvoudig algoritme: WITNESS(j) (j = kandidaat in eerste i-blok)
IJspakketten Annette Ficker Tim Oosterwijk
T U Delft Parallel and Distributed Systems group PGS Fundamentele Informatica in345 Deel 2 College 5 Cees Witteveen.
TU Delft Groep Parallelle en Gedistribueerde Systemen Voorbeeld uitwerking reductie bewijs in3120 Cees Witteveen.
T U Delft Parallel and Distributed Systems group PGS Fundamentele Informatica in3005 Deel 2 College 6 Cees Witteveen
T U Delft Parallel and Distributed Systems group PGS Fundamentele Informatica in345 Deel 2 Oplossing Langste Pad Probleem Cees Witteveen
T U Delft Parallel and Distributed Systems group PGS Fundamentele Informatica IN 3005 Deel 2 Laatste College ! Cees Witteveen
TU Delft Groep Parallelle en Gedistribueerde Systemen Fundamentele Informatica In3 005 Deel 2 College 1 Cees Witteveen Parallelle en Gedistribueerde Systemen.
T U Delft Parallel and Distributed Systems group PGS Fundamentele Informatica In3120 College 5 Cees Witteveen
T U Delft Parallel and Distributed Systems group PGS Fundamentele Informatica IN 3120 College 7 Cees Witteveen
T U Delft Parallel and Distributed Systems group PGS Fundamentele Informatica In3 005 Deel 2 College 4 Cees Witteveen
T U Delft Parallel and Distributed Systems group PGS Fundamentele Informatica in3005 Deel 2 College 6 Cees Witteveen
T U Delft Parallel and Distributed Systems group PGS Fundamentele Informatica In3005 Deel 2 College 3 Cees Witteveen
Hoofdstuk 16 De steekproefuitkomsten generaliseren naar de populatie en hypothesen over percentages en gemiddelden toetsen.
1 Complexiteit Bij motion planning is er sprake van drie typen van complexiteit –Complexiteit van de obstakels (aantal, aantal hoekpunten, algebraische.
Optuigen van datastructuren
1 Datastructuren Heapsort (2e deel) College 5. 2 Vandaag  Heaps en Heapsort  (eind)  Nog sneller sorteren:  Ondergrenzen  Linair sorteren.
WIS21.
Datastructuren Sorteren, zoeken en tijdsanalyse
T U Delft Groep Parallelle en Gedistribueerde Systemen PGS College in345 Deel 2 Cees Witteveen Parallelle en Gedistribueerde Systemen Faculteit Informatie.
T U Delft Parallel and Distributed Systems group PGS Fundamentele Informatica in345 Deel 2 Laatste College ! Cees Witteveen.
T U Delft Parallel and Distributed Systems group PGS Fundamentele Informatica in345 Deel 2 College 3 Cees Witteveen.
T U Delft Parallel and Distributed Systems group PGS Fundamentele Informatica in345 Deel 2 College 2 Cees Witteveen.
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 Fundamentele Informatica In3120 College 4 Cees Witteveen
TU Delft Groep Parallelle en Gedistribueerde Systemen Fundamentele Informatica IN3120 Cees Witteveen Parallelle en Gedistribueerde Systemen Faculteit EWI,
havo B Samenvatting Hoofdstuk 1
Algoritme Inhoud: Definitie algoritme Recursieve algoritmes Opgaven
Inhoud college Lijnbalancering Comsoal Random Sequence Generation
T U Delft Parallel and Distributed Systems group PGS Fundamentele Informatica in345 Deel 2 College 4 Cees Witteveen
T U Delft Parallel and Distributed Systems group PGS Fundamentele Informatica in345 Deel 2 College 6 Cees Witteveen.
MBR AtT1 College 7 : covering theorie (Deel 2) model MAB-diagnose: College 6: Covering theorie College 7: Algoritme voor covering theorie werkelijk.
1 PI1 week 9 Complexiteit Sorteren Zoeken. 2 Complexiteit van algoritmen Hoeveel werk kost het uitvoeren van een algoritme (efficiëntie)? –tel het aantal.
Recursie…. De Mandelbrot Fractal De werking… De verzameling natuurlijke getallen… 0 ∞-∞
Halveringstijd Havo 5 deel 3 Hoofdstuk 10 Opgave 33,34,37.
De O-notatie Algemene lijn: Broncode analyseren Herhalingsfrequentie bepalen O-notatie afleiden.
Hoorcollege 1: efficiëntie en complexiteitsontwikkeling.
Hoorcollege 1: efficiëntie en complexiteitsontwikkeling.
De O-notatie Algemene lijn: Broncode analyseren Herhalingsfrequentie bepalen O-notatie afleiden.
Minimum Opspannende Bomen Algoritmiek. 2 Inhoud Het minimum opspannende bomen probleem Een principe om een minimum opspannende boom te laten groeien Twee.
Heuristieken en benaderingsalgoritmen Algoritmiek.
Divide & Conquer: Verdeel en Heers vervolg Algoritmiek.
Gerandomiseerde algoritmes
Berekening van de Orde Van een Algoritme
NP-volledigheid Algoritmiek.
Havo 4 Lesbrief Vervoer.
All-Pairs Shortest paths
Minimum Opspannende Bomen
Benaderingsalgoritmen
Recursie in de wiskunde
Hoofdstuk 16 De steekproefuitkomsten generaliseren naar de populatie en hypothesen over percentages en gemiddelden toetsen.
2. Tweedegraadsfuncties en vergelijking cirkel
3 vmbo-KGT Samenvatting Hoofdstuk 10
Software Development fundamentals
Python – For loop + strings
Transcript van de presentatie:

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

Berekenbare problemen Relatie in3110 en in3120 in3110 Alle problemen Berekenbare problemen Doenlijke problemen in3120

Literatuur en studiemateriaal M. Sipser, Introduction to the Theory of Computation Part III: Hfst 7 + 8 + 9 + 10 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

Practicum en tentamen practicum opgaven tentamen 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)

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

Vraag: hoeveel tijd kost dit algoritme ? wat kost een algoritme? Neem de volgende TM die de taal L = { am bn : 0 ≤ m ≤ n } accepteert: algoritme voor M1 voor input x in {a, b}*: scan input tape en verwerp als er een a rechts van een b wordt gevonden; zolang als er zowel a’s als b’s op de tape staan scan de tape en verwijder een a en een b accepteer als alle a’s verwijderd zijn; anders verwerp. Vraag: hoeveel tijd kost dit algoritme ?

Tijd complexiteit van algoritme 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 Exacte bepaling is vaak lastig, onnodig en (te) machine-afhankelijk. Daarom gebruiken we een asymptotische analyse: grote O-notatie en kleine o-notatie

Tijd complexiteit van algoritme Grote O-notatie Laat f : N  R+ en g : N  R+ . Dan geldt f(n) = O(g(n)) als er integers c en n0 bestaan waarvoor geldt n ≥ n0 [ f(n) ≤ c x g(n) ] Voorbeelden f(n) = 2n2+9n+100 ===> f(n) = O(n2) f(n) = a logk n ===> f(n) = O(log2 n) f(n) = 2an+k ===> f(n) = 2O(n) kies c = 9, n0 = 5 c = a/log2k, n0 = 1 c = a+1, n0 = k

Tijdcomplexiteit van algoritmen Polynomiale algoritmen Een algoritme A met tijdcomplexiteit f(n) heet polynomiaal (begrensd) als geldt f(n) = O(nc) voor een constante c > 0. Exponentiële algoritmen Een algoritme A met tijdcomplexiteit f(n) heet exponentieel begrensd als geldt f(n) = O(2n^c) voor een constante c > 0.

Tijdcomplexiteit van algoritmen Kleine o-notatie Laat f : N  R+ en g : N  R+ . Dan geldt f(n) = o( g(n) ) als limn f(n) / g(n) = 0 Voorbeelden f(n) = 2n2+9n+100 ===> f(n) = o(n3) f(n) = c logk n ===> f(n) = o(n) f(n) = n n ===> f(n) = o(n2)

Toepassing: analyse TM M1 Neem de volgende TM die de taal L = { am bn : 0 ≤ m ≤ n } accepteert: algoritme voor M1 voor input x in {a, b}*: scan input tape en reject als er een a rechts van een b wordt gevonden; zolang als er zowel a’s als b’s op de tape staan scan de tape en verwijder een a en een b accept als alle a’s verwijderd zijn; anders reject. Neem |x| = n O(n) O(n) x O(n) =O(n2) O(n) Vraag: hoeveel tijd kost dit algoritme ? O(n) + O(n2) + O(n) = O(n2)

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

Een beter algoritme voor L Neem de volgende TM die de taal L = { am bn : 0 ≤ m ≤ n } accepteert: algoritme voor M2 Totaal O(n log n) voor input x in {a, b}*: scan input tape en verwerp als er een a rechts van een b wordt gevonden; bepaal aantal a’s en schrijf binair aan eind van tape sluit binaire rijtje af met # bepaal aantal b’s en schrijf binair aan eind van tape Vergelijk de verkregen bitrijtjes voor de a’s en de b’s 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(1) O(n log n) O(log n) O(1)

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(t2(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 2O(t (n))-tijd Conclusie Tussen deterministische Tm’s bestaan polynomiale verschillen, tussen deterministische en niet-deterministische modellen bestaan exponentiële verschillen in tijdcomplexiteit.

Complexiteit en machine model Equivalentie stelling Alle redelijke deterministische berekeningsmodellen zijn polynomiaal equivalent (vb: RAM, Registermachines, Turingmachines)

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 = {am bn : 1 ≤ m ≤ n } tot TIME(n2) behoort. [ maar ook tot TIME(n log n)]

Tijdcomplexiteits klassen Complexiteits klasse P P = ∪k TIME( nk ) = { 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)

Tijdcomplexiteits klassen Complexiteits klasse NP NP = ∪k NTIME( nk ) = { L : L wordt beslist door een niet- deterministische Tm in polynomiale tijd } = de verzameling van alle talen beslist door NTM’s in polynomiale tijd

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

Complexiteit programma’s 1 als n = 0, 1 fib(n-1) + fib(n-2) elders wat is nu de complexiteit van het probleem bereken het n-de fibonaccigetal? fib(n) = 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(2n) f(n) = O(n) T(n) = O(n) T(n) = O( log n)

Complexiteit van probleem Complexiteit beslissings probleem Probl worst-case complexiteit van het beste algoritme voor oplossing van Probl : fProbl(n) = min { fA(n) : A is een algoritme voor Probl } Nb: complexiteit probleem doet uitspraak over complexiteit van alle algoritmen voor het probleem

(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 = kTime(nk): 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 huidig systeem 10x sneller systeem 1000 x sneller systeem O(n) n1 10 n1 1000 n1 O(n2) n2 3.16 n2 31.6 n2 O(n3) n3 2.15 n3 10 n3 O(2n) n4 n4 + 3.32 n4 + 9.97 O(n!) n5 < n5+1 (voor n >10) (voor n >1000) omvang grootste instantie oplosbaar in t tijdseenheden

Doenlijk (P) vss ondoenlijk voor ondoenlijke problemen is (constante) technologische speed-up van beperkt belang: Stel probleem heeft tijdcomplexiteit 2n 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 + 2log c opgelost worden. voor doenlijke problemen is speed-up wel van belang: Stel probleem heeft tijdcomplexiteit nk 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 c1/k.m opgelost worden.

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.

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

Tot volgende week