Progra-MEER - Algoritmiek Leuven 21 februari 2018

Maat: px
Weergave met pagina beginnen:

Download "Progra-MEER - Algoritmiek Leuven 21 februari 2018"

Transcriptie

1 Progra-MEER - Leuven 21 februari 2018 Bart Demoen KU Leuven Veerle Fack UGent Frank Neven/Wim Lamotte UHasselt schooljaar

2 Vandaag... 2/35 huiswerk en rondvraag eem opwarmertje een oefening in specificatie en implementatie efficiëntie en complexiteit: sit back and relax minimale opspannende bomen en het algoritme van Prim uitleiding

3 Een opwarmertje... 3/35 zie werkblad

4 Een graaf modelleert de afhankelijkheden 4/35 we zoeken een topologische orde er zijn meerdere oplossingen

5 Algoritme voor topologisch sorteren 5/35 herhaal tot er geen knopen meer zijn kies een knoop zonder inkomende bogen output die knoop verwijder die knoop (en zijn uitgaande bogen) uit de graaf pas op: is er altijd nog een knoop zonder inkomende bogen?

6 Algoritme voor topologisch sorteren 5/35 herhaal tot er geen knopen meer zijn kies een knoop zonder inkomende bogen output die knoop verwijder die knoop (en zijn uitgaande bogen) uit de graaf pas op: is er altijd nog een knoop zonder inkomende bogen?

7 Hoe graaf getekend? 6/35 digraph g { rankdir=lr; size="8,5"; ka -> opd ; snw -> stw ; mav -> bins; stw -> opd ; ink -> mav; bav -> opd ; stw -> mav ; bins -> opd; ink -> snw ; saj -> snaj; snaj -> mav; snaj -> staj; sa -> ka; staj -> stw; ink -> sa; mav -> bav; ink -> saj; } webgraphviz.com

8 Opdracht: specifieer... 7/35 wanneer een rij (*) gesorteerd is in het nederlands en stel geen dubbels en laat je fantasie de vrije loop (*) lijst, array...

9 Een lijst is gesorteerd indien 8/35 voor elk element geldt: alle voorgangers zijn kleiner en alle opvolgers zijn groter voor elk element geldt: alle voorgangers zijn kleiner voor elk element geldt: alle opvolgers zijn groter de linkse helft is gesorteerd en de rechtse helft ook, en het meest rechtse element van de linkse helft is kleiner dan het meest linkse element van de rechtse helft voor elk element geldt: als het een opvolger heeft, dan is die groter wie heeft een andere? welke is de juiste? of de beste?... waarvoor kan je je specificatie gebruiken voor een implementatie?

10 voor elk element geldt: alle voorgangers zijn kleiner en alle opvolgers zijn groter 9/35 def gesorteerd1(l): for element in range(len(l)): for voorganger in range(0,element): if l[voorganger] > l[element]: return(false) for opvolger in range(element+1,len(l)): if l[opvolger] < l[element]: return(false) return(true)

11 de linkse helft is gesorteerd en de rechtse helft ook, en het meest rechtse element van de linkse helft is kleiner dan het meest linkse element van de rechtse helft 10/35 basisgeval vergeten? def gesorteerd2(l): if len(l) < 2: return(true) midden = len(l)//2 linksehelft = l[0:midden] if not(gesorteerd2(linksehelft)): return(false) rechtsehelft = l[midden:] if not(gesorteerd2(rechtsehelft)): return(false) return(l[midden-1] < l[midden])

12 voor elk element geldt: als het een opvolger heeft, dan is die groter 11/35 def gesorteerd3(l): for element in range(len(l)-1): volgende = element + 1 if l[element] > l[volgende]: return(false) return(true)

13 Wat hebben we geleerd? 12/35 een correcte specificatie leidt tot een correcte implementatie de implementaties lijken niet even efficiënt hoe meet je efficiëntie?

14 Hoe lang duurt optellen? 13/35 0 x 0 x x 0 x x x x x x x x x x x x + x x x + x x x + x x x... x x x x x x 0 x x x x + x x x x x x x x gegeven twee getallen (?) hoeveel elementaire operaties heb je nodig? altijd, of soms? duurt het langer een optelling te maken dan een optelling na te kijken?

15 Hoe geef je een getal aan een algoritme/implementatie? 14/35 eigenlijk geef je een representatie string: zevenentwintig decimaal: 27 of binair: 11011b of hexadecimaal: 1B x of romeins: XXVII of een uitleg: het atoomnummer van kobalt of unair: afhankelijk van de representatie heb je een ander algoritme nodig afhankelijk van de representatie kan het moeilijker of gemakkelijker zijn

16 Hoe geef je een getal aan een algoritme/implementatie? 14/35 eigenlijk geef je een representatie string: zevenentwintig decimaal: 27 of binair: 11011b of hexadecimaal: 1B x of romeins: XXVII of een uitleg: het atoomnummer van kobalt of unair: afhankelijk van de representatie heb je een ander algoritme nodig afhankelijk van de representatie kan het moeilijker of gemakkelijker zijn

17 Elementaire operaties... 15/35 optellen van 3 getallen kleiner dan 10 voor getallen tot 9: 1 operatie nodig voor getallen tot 99: 2 operaties nodig voor getallen tot 999: 3 operaties nodig voor getallen tot 9999: 4 operaties nodig in het algemeen N operaties als het getal N lang is - in binair, decimaal... het getal is dan tot bijna 2 N of 10 N... groot onderscheid tussen grootte getal en grootte voorstelling belangrijke fineprint: aantal stappen van het algoritme uitdrukken in functie van de grootte van de invoer, of de grootte van wat de invoer voorstelt (en bij welke representatie) één stap is één elementaire operatie = één kloktik

18 Elementaire operaties... 15/35 optellen van 3 getallen kleiner dan 10 voor getallen tot 9: 1 operatie nodig voor getallen tot 99: 2 operaties nodig voor getallen tot 999: 3 operaties nodig voor getallen tot 9999: 4 operaties nodig in het algemeen N operaties als het getal N lang is - in binair, decimaal... het getal is dan tot bijna 2 N of 10 N... groot onderscheid tussen grootte getal en grootte voorstelling belangrijke fineprint: aantal stappen van het algoritme uitdrukken in functie van de grootte van de invoer, of de grootte van wat de invoer voorstelt (en bij welke representatie) één stap is één elementaire operatie = één kloktik

19 Elementaire operaties... 15/35 optellen van 3 getallen kleiner dan 10 voor getallen tot 9: 1 operatie nodig voor getallen tot 99: 2 operaties nodig voor getallen tot 999: 3 operaties nodig voor getallen tot 9999: 4 operaties nodig in het algemeen N operaties als het getal N lang is - in binair, decimaal... het getal is dan tot bijna 2 N of 10 N... groot onderscheid tussen grootte getal en grootte voorstelling belangrijke fineprint: aantal stappen van het algoritme uitdrukken in functie van de grootte van de invoer, of de grootte van wat de invoer voorstelt (en bij welke representatie) één stap is één elementaire operatie = één kloktik

20 De complexiteit van de enkelvoudige lus 16/35 for i in range(0,n): x keer <iets elementairs> n keer de body van de lus dus: n x keer iets elementairs notatie: O(n) constante factor doet er niet toe... lineair in n

21 De complexiteit van de dubbele lus 17/35 for i in range(0,n): for j in range(0,n): x keer <iets elementairs> herschrijf naar for i in range(0,n-1): for j in range(0,n-1): x keer <iets elementairs> + i = n for j in range(0,n-1): x keer <iets elementairs> + for i in range(0,n): j = n x keer <iets elementairs>

22 De complexiteit van de dubbele lus 17/35 for i in range(0,n): for j in range(0,n): x keer <iets elementairs> herschrijf naar for i in range(0,n-1): for j in range(0,n-1): x keer <iets elementairs> + i = n for j in range(0,n-1): x keer <iets elementairs> + for i in range(0,n): j = n x keer <iets elementairs>

23 De complexiteit van de dubbele lus 18/35 for i in range(0,n): for j in range(0,n): x keer <iets elementairs> = for i in range(0,n-1): for j in range(0,n-1): x keer <iets elementairs> + i = n for j in range(0,n-1): x keer <iets elementairs> + for i in range(0,n): j = n x keer <iets elementairs> aantal(n) = aantal(n 1) + 2 n 1 zoals verwacht O(n 2 )

24 De complexiteit van de dubbele lus 18/35 for i in range(0,n): for j in range(0,n): x keer <iets elementairs> = for i in range(0,n-1): for j in range(0,n-1): x keer <iets elementairs> + i = n for j in range(0,n-1): x keer <iets elementairs> + for i in range(0,n): j = n x keer <iets elementairs> aantal(n) = aantal(n 1) + 2 n 1 zoals verwacht O(n 2 )

25 De complexiteit van lussen 19/35 heel dikwijls een vergelijking van de vorm aantal(n) = aantal(n 1) + O(N k ) oplossing is dan aantal(n) = O(N k+1 ) maar...

26 Binair zoeken 20/35 zoeken in een gesorteerde lijst def binzoek(x,l): if len(l) == 0: return(false) mid = len(l) // 2 if l[mid] == x: return(true) if l[mid] > x: return(binzoek(x,l[0:mid])) else: return(binzoek(x,l[(mid+1):])) aantal(n) = aantal( N 2 ) + c oplossing... aantal(n) = O(log(N))

27 Binair zoeken 20/35 zoeken in een gesorteerde lijst def binzoek(x,l): if len(l) == 0: return(false) mid = len(l) // 2 if l[mid] == x: return(true) if l[mid] > x: return(binzoek(x,l[0:mid])) else: return(binzoek(x,l[(mid+1):])) aantal(n) = aantal( N 2 ) + c oplossing... aantal(n) = O(log(N))

28 Merge-sort 21/35 in pseudo-python... mergesort(l): l1 = mergesort(eerstehelft(l)) l2 = mergesort(tweedehelft(l)) return(merge(l1,l2)) merge(l1,l2): if l1 == []: return(l2) if l2 == []: return(l1) if l1[0] < l2[0]: return [l1[0]] + merge(l1[1:],l2) else: return [l2[0]] + merge(l1,l2[1:]) aantal(n) = 2 aantal( N 2 ) + c N oplossing is aantal(n) = O(N log(n))

29 De kracht van 2 22/35 verdeel en heers complexiteit van O(N k ) naar O(N k 1 log(n)) een belangrijk en essentieel verschil N N 2 N log(n) verhouding

30 Is alles hoogstens kwadratisch of polynomiaal? 23/35 de theorie zegt: nee ( k:) veel problemen kunnen in O(n k ), maar niet in O(n k 1 ) veel problemen kunnen in O(2 n ), maar niet in O(n k ) ( k) problemen met een polynomiaal algoritme noemen we doenbaar (tractable) de andere ondoenbaar (intractable) waar ligt de scheidingslijn? theorie suggereert: tussen berekenen en nakijken

31 Is alles hoogstens kwadratisch of polynomiaal? 23/35 de theorie zegt: nee ( k:) veel problemen kunnen in O(n k ), maar niet in O(n k 1 ) veel problemen kunnen in O(2 n ), maar niet in O(n k ) ( k) problemen met een polynomiaal algoritme noemen we doenbaar (tractable) de andere ondoenbaar (intractable) waar ligt de scheidingslijn? theorie suggereert: tussen berekenen en nakijken

32 Berekenen of nakijken, wat is moeilijker? 24/35 onze intuïtie wordt gesteund door de ervaring... een deler van N berekenen is moeilijker dan nakijken of een gegeven getal een deler is van N een bewijs maken is moeilijker dan een bewijs nakijken nakijken dat een rij gesorteerd is, is gemakkelijker dan een rij te sorteren een pad van A naar Z berekenen is moeilijker dan nakijken of een gegeven pad van A naar Z loopt een fuga componeren is moeilijker dan nakijken of een gegeven muziekstuk een fuga is een hattrick maken is moeilijker dan na te kijken of een hattrick gemaakt werd... heb je zelf voorbeelden?

33 P en NP 25/35 ruwweg: P zijn de problemen waarvoor een polynoom berekenalgoritme bestaat NP zijn de problemen waarvoor een polynoom nakijkalgoritme bestaat P NP de hamvraag: P? = NP

34 De moeilijkste problemen in NP: NP-compleet 26/35 kleuren van grafen Hamiltoniaanse kring (pad) kliek knapzak het feestprobleem langste weg tussen twee knopen (contrast met Dijkstra) minimale Steiner boom (contrast met MOB) Sudoku(N) meest bekende en eerste (Cook 1971, Levin 1973): SAT heeft een propositionele formule zoals (p q r) & (s t p) &... een toekenning die de formule waar maakt?

35 De moeilijkste problemen in NP: NP-compleet 26/35 kleuren van grafen Hamiltoniaanse kring (pad) kliek knapzak het feestprobleem langste weg tussen twee knopen (contrast met Dijkstra) minimale Steiner boom (contrast met MOB) Sudoku(N) meest bekende en eerste (Cook 1971, Levin 1973): SAT heeft een propositionele formule zoals (p q r) & (s t p) &... een toekenning die de formule waar maakt?

36 NP-complete problemen 27/35 gemakkelijk om na te kijken of iets een oplossing is is dit een 3-kleuring voor deze graaf? moeilijk om ervoor een oplossing te berekenen bestaat een 3-kleuring voor deze graaf? gemakkelijk betekent: polynomiaal (we kennen het algo) moeilijk betekent: er zijn enkel exponentiële algoritmen bekend, geen polynomiale los P? = NP op en win US$ :-)

37 NP-complete problemen 27/35 gemakkelijk om na te kijken of iets een oplossing is is dit een 3-kleuring voor deze graaf? moeilijk om ervoor een oplossing te berekenen bestaat een 3-kleuring voor deze graaf? gemakkelijk betekent: polynomiaal (we kennen het algo) moeilijk betekent: er zijn enkel exponentiële algoritmen bekend, geen polynomiale los P? = NP op en win US$ :-)

38 NP-complete problemen 27/35 gemakkelijk om na te kijken of iets een oplossing is is dit een 3-kleuring voor deze graaf? moeilijk om ervoor een oplossing te berekenen bestaat een 3-kleuring voor deze graaf? gemakkelijk betekent: polynomiaal (we kennen het algo) moeilijk betekent: er zijn enkel exponentiële algoritmen bekend, geen polynomiale los P? = NP op en win US$ :-)

39 Uitwiskeling... 28/35 Kürt Maes

40 Structuur van eindigheidsbewijs 29/35 iets wordt steeds groter en kan niet boven een bepaalde waarde uitstijgen iets wordt steeds kleiner en kan niet onder een bepaalde waarde dalen iets is dikwijls een variabele in het programma of algoritme kan ook een afgeleide grootheid zijn - bv. de som van de graden van de knopen o je bewijst daarmee dat een herhalingsopdracht slechts een eindig aantal keer uitgevoerd wordt o als je exact weet hoeveel keer (of de O()), dan kan je de O() van het programma afleiden

41 De Collatz-functie... eindigt die? 30/35 def collatz(n): while n!= 1: if even(n): n = n//2 # n wordt kleiner :-) else: n = 3*n+1 # n wordt groter :-( return("gedaan") of de recursieve versie

42 De Collatz-functie... eindigt die? 31/35 def collatz(n): if n == 1: return( gedaan ) if even(n): n = n//2 # n wordt kleiner :-) else: n = 3*n+1 # n wordt groter :-( return(collatz(n)) Pal Erdös mathematics is not yet ready for such problems en ik voeg eraan toe: informatica is nog niet toe aan dit soort problemen :-)

43 De Collatz-functie... eindigt die? 31/35 def collatz(n): if n == 1: return( gedaan ) if even(n): n = n//2 # n wordt kleiner :-) else: n = 3*n+1 # n wordt groter :-( return(collatz(n)) Pal Erdös mathematics is not yet ready for such problems en ik voeg eraan toe: informatica is nog niet toe aan dit soort problemen :-)

44 De Collatz-functie... eindigt die? 31/35 def collatz(n): if n == 1: return( gedaan ) if even(n): n = n//2 # n wordt kleiner :-) else: n = 3*n+1 # n wordt groter :-( return(collatz(n)) Pal Erdös mathematics is not yet ready for such problems en ik voeg eraan toe: informatica is nog niet toe aan dit soort problemen :-)

45 Correctheidsbewijs voor herhalingsopdracht 32/35 een bepaalde uitspraak U is waar bij het binnenkomen van de herhalingsopdracht als U waar is bij het begin van de body, dan ook op het einde nadat de herhalingsopdracht stopt, is U waar en ook de stopconditie U wordt een programma-invariant genoemd

46 Klein voorbeeld van een correctheidsbewijs 33/35 vermenigvuldigen door herhaald optellen lees(x); lees(y) n,m = x,y res = 0 x*y == res + n*m while m > 0: x*y == res + n*m [== res+n + n*(m-1)] res += n m-- x*y == res + n*m x*y == res + n*m & m == 0 # dus x*y = res print(res)

47 Correctheidsbewijs voor een functie f die g oproept 34/35 def f():... x = g()... return(...) bewijs (of onderstel) dat g correct is maak een invariant voor g gebruik die in het bewijs van correctheid voor f

48 Correctheidsbewijs voor een recursieve functie 35/35 def f(n): if N == 17: return(...) x = f(n-1)... return(...) # basisgeval de functie is correct voor input == het basisgeval stel dat de functie correct is voor alle gevallen strikt kleiner dan N, bewijs dan dat de functie correct is voor N vaak verschillende bewijstechnieken nodig

Progra-MEER - Algoritmiek Leuven 20 maart 2018

Progra-MEER - Algoritmiek Leuven 20 maart 2018 Progra-MEER - Leuven 20 maart 2018 Bart Demoen KU Leuven Veerle Fack UGent Frank Neven/Wim Lamotte UHasselt schooljaar 2017-2018 Vandaag... 2/33 waar staan we i.v.m. 24 april? werkblad met twee thema s

Nadere informatie

Uitwerking tentamen Analyse van Algoritmen, 29 januari

Uitwerking tentamen Analyse van Algoritmen, 29 januari Uitwerking tentamen Analyse van Algoritmen, 29 januari 2007. (a) De buitenste for-lus kent N = 5 iteraties. Na iedere iteratie ziet de rij getallen er als volgt uit: i rij na i e iteratie 2 5 4 6 2 2 4

Nadere informatie

(On)Doenlijke problemen

(On)Doenlijke problemen 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

Nadere informatie

Uitgebreide uitwerking Tentamen Complexiteit, juni 2016

Uitgebreide uitwerking Tentamen Complexiteit, juni 2016 Uitgebreide uitwerking Tentamen Complexiteit, juni 016 Opgave 1. (3+10++7+6) a. De hoogte van de beslissingsboom (lengte van het langste pad) stelt het aantal arrayvergelijkingen in de worst case voor.

Nadere informatie

1 Complexiteit. of benadering en snel

1 Complexiteit. of benadering en snel 1 Complexiteit Het college van vandaag gaat over complexiteit van algoritmes. In het boek hoort hier hoofdstuk 8.1-8.5 bij. Bij complexiteitstheorie is de belangrijkste kernvraag: Hoe goed is een algoritme?

Nadere informatie

Uitgebreide uitwerking Tentamen Complexiteit, juni 2017

Uitgebreide uitwerking Tentamen Complexiteit, juni 2017 Uitgebreide uitwerking Tentamen Complexiteit, juni 017 Opgave 1. a. Een pad van de wortel naar een blad stelt de serie achtereenvolgende arrayvergelijkingen voor die het algoritme doet op zekere invoer.

Nadere informatie

Minimum Opspannende Bomen. Algoritmiek

Minimum Opspannende Bomen. Algoritmiek Minimum Opspannende Bomen Inhoud Het minimum opspannende bomen probleem Een principe om een minimum opspannende boom te laten groeien Twee greedy algoritmen + tijd en datastructuren: Het algoritme van

Nadere informatie

Inleiding Programmeren 2

Inleiding Programmeren 2 Inleiding Programmeren 2 Gertjan van Noord November 28, 2016 Stof week 3 nogmaals Zelle hoofdstuk 8 en recursie Brookshear hoofdstuk 5: Algoritmes Datastructuren: tuples Een geheel andere manier om te

Nadere informatie

Inleiding Programmeren 2

Inleiding Programmeren 2 Inleiding Programmeren 2 Gertjan van Noord November 26, 2018 Stof week 3 nogmaals Zelle hoofdstuk 8 en recursie Brookshear hoofdstuk 5: Algoritmes Datastructuren: tuples Een geheel andere manier om te

Nadere informatie

Discrete Structuren. Piter Dykstra Sietse Achterop Opleidingsinstituut Informatica en Cognitie

Discrete Structuren. Piter Dykstra Sietse Achterop Opleidingsinstituut Informatica en Cognitie Discrete Structuren Piter Dykstra Sietse Achterop Opleidingsinstituut Informatica en Cognitie www.math.rug.nl/~piter piter@math.rug.nl 3 maart 2008 GRAFEN & BOMEN Paragrafen 6.1-6.4 Discrete Structuren

Nadere informatie

TW2020 Optimalisering

TW2020 Optimalisering TW2020 Optimalisering Hoorcollege 11 Leo van Iersel Technische Universiteit Delft 25 november 2015 Leo van Iersel (TUD) TW2020 Optimalisering 25 november 2015 1 / 28 Vandaag Vraag Voor welke problemen

Nadere informatie

Programmeermethoden. Recursie. week 11: november kosterswa/pm/

Programmeermethoden. Recursie. week 11: november kosterswa/pm/ Programmeermethoden Recursie week 11: 21 25 november 2016 www.liacs.leidenuniv.nl/ kosterswa/pm/ 1 Pointers Derde programmeeropgave 1 Het spel Gomoku programmeren we als volgt: week 1: pointerpracticum,

Nadere informatie

Derde college complexiteit. 7 februari Zoeken

Derde college complexiteit. 7 februari Zoeken College 3 Derde college complexiteit 7 februari 2017 Recurrente Betrekkingen Zoeken 1 Recurrente betrekkingen -1- Rij van Fibonacci: 0,1,1,2,3,5,8,13,21,... Vanaf het derde element: som van de voorgaande

Nadere informatie

Discrete Structuren. Piter Dykstra Opleidingsinstituut Informatica en Cognitie

Discrete Structuren. Piter Dykstra Opleidingsinstituut Informatica en Cognitie Discrete Structuren Piter Dykstra Opleidingsinstituut Informatica en Cognitie www.math.rug.nl/~piter piter@math.rug.nl 23 februari 2009 GRAFEN & BOMEN Paragrafen 6.1-6.4 Discrete Structuren Week 3 en 4:

Nadere informatie

Elfde college complexiteit. 23 april NP-volledigheid III

Elfde college complexiteit. 23 april NP-volledigheid III college 11 Elfde college complexiteit 23 april 2019 NP-volledigheid III 1 TSP Als voorbeeld bekijken we het Travelling Salesman/person Problem, ofwel het Handelsreizigersprobleem TSP. Hiervoor geldt: TSP

Nadere informatie

Modeluitwerking Tentamen Computationele Intelligentie Universiteit Leiden Informatica Vrijdag 11 Januari 2013

Modeluitwerking Tentamen Computationele Intelligentie Universiteit Leiden Informatica Vrijdag 11 Januari 2013 Modeluitwerking Tentamen Computationele Intelligentie Universiteit Leiden Informatica Vrijdag Januari 20 Opgave. Python Gegeven is de volgende (slechte) Python code:. def t(x): 2. def p(y):. return x*y

Nadere informatie

Examen Datastructuren en Algoritmen II

Examen Datastructuren en Algoritmen II Tweede bachelor Informatica Academiejaar 2012 2013, tweede zittijd Examen Datastructuren en Algoritmen II Naam :.............................................................................. Lees de hele

Nadere informatie

Uitgebreide uitwerking Tentamen Complexiteit, mei 2007

Uitgebreide uitwerking Tentamen Complexiteit, mei 2007 Uitgebreide uitwerking Tentamen Complexiteit, mei 007 Opgave. a. Een beslissingsboom beschrijft de werking van het betreffende algoritme (gebaseerd op arrayvergelijkingen) op elke mogelijke invoer. In

Nadere informatie

Elfde college algoritmiek. 18 mei Algoritme van Dijkstra, Heap, Heapify & Heapsort

Elfde college algoritmiek. 18 mei Algoritme van Dijkstra, Heap, Heapify & Heapsort Algoritmiek 018/Algoritme van Dijkstra Elfde college algoritmiek 18 mei 018 Algoritme van Dijkstra, Heap, Heapify & Heapsort 1 Algoritmiek 018/Algoritme van Dijkstra Uit college 10: Voorb. -1- A B C D

Nadere informatie

Divide & Conquer: Verdeel en Heers vervolg. Algoritmiek

Divide & Conquer: Verdeel en Heers vervolg. Algoritmiek Divide & Conquer: Verdeel en Heers vervolg Algoritmiek Algoritmische technieken Vorige keer: Divide and conquer techniek Aantal toepassingen van de techniek Analyse met Master theorem en substitutie Vandaag:

Nadere informatie

Achtste college complexiteit. 2 april Polynoomevaluatie Matrixvermenigvuldiging Euler- en Hamiltonkringen

Achtste college complexiteit. 2 april Polynoomevaluatie Matrixvermenigvuldiging Euler- en Hamiltonkringen College 8 Achtste college complexiteit 2 april 2019 Polynoomevaluatie Matrixvermenigvuldiging Euler- en Hamiltonkringen 1 Polynoomevaluatie Zij p(x) = a n x n + a n 1 x n 1 +... + a 1 x + a 0 een polynoom

Nadere informatie

NP-volledigheid. Algoritmiek

NP-volledigheid. Algoritmiek NP-volledigheid Polynomiale algoritmen of moeilijke problemen? Algoritme A is polynomiaal, als er een constante c bestaat, zodat het algoritme bij inputs van formaat n O(n c ) tijd gebruikt. Sommige problemen

Nadere informatie

Examen Datastructuren en Algoritmen II

Examen Datastructuren en Algoritmen II Tweede bachelor Informatica Academiejaar 2016 2017, eerste zittijd Examen Datastructuren en Algoritmen II Naam :.............................................................................. Lees de hele

Nadere informatie

Vierde college algoritmiek. 23/24 februari Complexiteit en Brute Force

Vierde college algoritmiek. 23/24 februari Complexiteit en Brute Force Algoritmiek 2017/Complexiteit Vierde college algoritmiek 23/24 februari 2017 Complexiteit en Brute Force 1 Algoritmiek 2017/Complexiteit Tijdcomplexiteit Complexiteit (= tijdcomplexiteit) van een algoritme:

Nadere informatie

Programmeermethoden. Recursie. Walter Kosters. week 11: november kosterswa/pm/

Programmeermethoden. Recursie. Walter Kosters. week 11: november kosterswa/pm/ Programmeermethoden Recursie Walter Kosters week 11: 20 24 november 2017 www.liacs.leidenuniv.nl/ kosterswa/pm/ 1 Vierde programmeeropgave 1 De Grote getallen programmeren we als volgt: week 1: pointerpracticum,

Nadere informatie

TW2020 Optimalisering

TW2020 Optimalisering TW2020 Optimalisering Hoorcollege 7 Leo van Iersel Technische Universiteit Delft 26 oktober 2016 Leo van Iersel (TUD) TW2020 Optimalisering 26 oktober 2016 1 / 28 Deze week: analyseren van algoritmes Hoe

Nadere informatie

Benaderingsalgoritmen

Benaderingsalgoritmen Benaderingsalgoritmen Eerste hulp bij NP-moeilijkheid 1 Herhaling NP-volledigheid (1) NP: er is een polynomiaal certificaat voor jainstanties dat in polynomiale tijd te controleren is Een probleem A is

Nadere informatie

Tiende college algoritmiek. 13/21 april Gretige Algoritmen Algoritme van Dijkstra

Tiende college algoritmiek. 13/21 april Gretige Algoritmen Algoritme van Dijkstra Algoritmiek 017/Gretige Algoritmen Tiende college algoritmiek 13/1 april 017 Gretige Algoritmen Algoritme van Dijkstra 1 Algoritmiek 017/Gretige Algoritmen Muntenprobleem Gegeven onbeperkt veel munten

Nadere informatie

Tweede college algoritmiek. 12 februari Grafen en bomen

Tweede college algoritmiek. 12 februari Grafen en bomen College 2 Tweede college algoritmiek 12 februari 2016 Grafen en bomen 1 Grafen (herhaling) Een graaf G wordt gedefinieerd als een paar (V,E), waarbij V een eindige verzameling is van knopen (vertices)

Nadere informatie

V = {a, b, c, d, e} Computernetwerken: de knopen zijn machines in het netwerk, de kanten zijn communicatiekanalen.

V = {a, b, c, d, e} Computernetwerken: de knopen zijn machines in het netwerk, de kanten zijn communicatiekanalen. WIS14 1 14 Grafen 14.1 Grafen Gerichte grafen Voor een verzameling V is een binaire relatie op V een verzameling geordende paren van elementen van V. Voorbeeld: een binaire relatie op N is de relatie KleinerDan,

Nadere informatie

Hoofdstuk 8: Algoritmen en Complexiteit

Hoofdstuk 8: Algoritmen en Complexiteit Hoofdstuk 8: Algoritmen en Complexiteit Vandaag: Hoe meten we de performance van algoritmen? Waar ligt de grens tussen een goed en een slecht algoritme? 22 oktober 2014 1 Vandaag: Hoe meten we de performance

Nadere informatie

Datastructuren en algoritmen voor CKI

Datastructuren en algoritmen voor CKI Datastructuren en algoritmen voor CKI Jeroen Bransen 1 11 september 2015 1 met dank aan Hans Bodlaender en Gerard Tel Heaps en heapsort Heap 1 2 3 4 5 6 7 8 9 10 16 14 10 8 7 9 3 2 4 1 16 14 10 8 7 9 3

Nadere informatie

public boolean equaldates() post: returns true iff there if the list contains at least two BirthDay objects with the same daynumber

public boolean equaldates() post: returns true iff there if the list contains at least two BirthDay objects with the same daynumber Tentamen TI1310 Datastructuren en Algoritmen, 15 april 2011, 9.00-12.00 TU Delft, Faculteit EWI, Basiseenheid Software Engineering Bij het tentamen mag alleen de boeken van Goodrich en Tamassia worden

Nadere informatie

TW2020 Optimalisering

TW2020 Optimalisering TW2020 Optimalisering Hoorcollege 7 Leo van Iersel Technische Universiteit Delft 21 oktober 2015 Leo van Iersel (TUD) TW2020 Optimalisering 21 oktober 2015 1 / 20 Deze week: algoritmes en complexiteit

Nadere informatie

Gegevens invullen in HOOFDLETTERS en LEESBAAR, aub. Belgische Olympiades in de Informatica (duur : maximum 1u15 )

Gegevens invullen in HOOFDLETTERS en LEESBAAR, aub. Belgische Olympiades in de Informatica (duur : maximum 1u15 ) OI 2010 Finale 12 Mei 2010 Gegevens invullen in HOOFDLETTERS en LEESBAAR, aub VOORNAAM :....................................................... NAAM :..............................................................

Nadere informatie

Tentamen IN3105. Complexiteitstheorie. 16 april 2012, uur

Tentamen IN3105. Complexiteitstheorie. 16 april 2012, uur Faculteit Elektrotechniek, Wiskunde en Informatica Ti Delft Tentamen IN3105 Complexiteitstheorie 16 april 2012, 9.00-12.00 uur Dit tentamen bestaat uit 10 meerkeuzevragen, 5 korte (open) vragen en 2 open

Nadere informatie

Gerichte Grafen Boolese Algebra s &. Logische Netwerken

Gerichte Grafen Boolese Algebra s &. Logische Netwerken Discrete Structuren Piter Dykstra Opleidingsinstituut Informatica en Cognitie www.math.rug.nl/~piter piter@math.rug.nl 10 maart 2009 Gerichte Grafen Boolese Algebra s &. Logische Netwerken. Paragrafen

Nadere informatie

Uitgebreide uitwerking Tentamen Complexiteit, juni 2018

Uitgebreide uitwerking Tentamen Complexiteit, juni 2018 Uitgebreide uitwerking Tentamen Complexiteit, juni 018 Opgave 1. a. Een pad van de wortel naar een blad stelt de serie achtereenvolgende arrayvergelijkingen voor die het algoritme doet op zekere invoer.

Nadere informatie

12 september 2012 Complexiteit. Analyse van algoritmen (doelen) Empirische analyse : Voorbeeld Gevolgen

12 september 2012 Complexiteit. Analyse van algoritmen (doelen) Empirische analyse : Voorbeeld Gevolgen Complexiteit van Algoritmen Ferd van Odenhoven Fontys Hogeschool voor Techniek en Logistiek Venlo Software Engineering 12 september 2012 ODE/FHTBM Complexiteit van Algoritmen 12 september 2012 1/41 Efficientie-analyse

Nadere informatie

Programmeermethoden NA. Week 6: Lijsten

Programmeermethoden NA. Week 6: Lijsten Programmeermethoden NA Week 6: Lijsten Kristian Rietveld http://liacs.leidenuniv.nl/~rietveldkfd/courses/prna2016/ Getal opbouwen Stel je leest losse karakters (waaronder cijfers) en je moet daar een getal

Nadere informatie

Algoritmen aan het werk

Algoritmen aan het werk Algoritmen aan het werk (Dag van de wiskunde 24/11/2018) Veerle Fack Universiteit Gent De bevers en de brug Vier bevers willen in het donker een brug oversteken. Ze kunnen de brug slechts alleen of met

Nadere informatie

Tentamen Discrete Wiskunde 1 10 april 2012, 14:00 17:00 uur

Tentamen Discrete Wiskunde 1 10 april 2012, 14:00 17:00 uur Tentamen Discrete Wiskunde 0 april 0, :00 7:00 uur Schrijf je naam op ieder blad dat je inlevert. Onderbouw je antwoorden, met een goede argumentatie zijn ook punten te verdienen. Veel succes! Opgave.

Nadere informatie

NP-Volledigheid. Wil zo snel mogelijke algoritmes om problemen op te lossen. De looptijd is polynomiaal: O n k - dat is heel erg mooi

NP-Volledigheid. Wil zo snel mogelijke algoritmes om problemen op te lossen. De looptijd is polynomiaal: O n k - dat is heel erg mooi NP-Volledigheid Wil zo snel mogelijke algoritmes om problemen op te lossen Gezien: selectie [O(n)], DFS [O(n + m)], MaxFlow [O nm n + m ], MST [O(n + m)], etc De looptijd is polynomiaal: O n k - dat is

Nadere informatie

Datastructuren Uitwerking jan

Datastructuren Uitwerking jan Datastructuren Uitwerking jan 2015 1 1a. Een abstracte datastructuur is een beschrijving van een datastructuur, met de specificatie van wat er opgeslagen wordt (de data en hun structuur) en welke operaties

Nadere informatie

REEKS II. Zaterdag 6 november 2010, 11u

REEKS II. Zaterdag 6 november 2010, 11u TEST INFORMATICA 1STE BACHELOR IN DE INGENIEURSWETENSCHAPPEN - ACADEMIEJAAR 2010-2011 REEKS II Zaterdag 6 november 2010, 11u NAAM :... VRAAG 1: AFSTAND [5 PUNTEN] In deze oefening gaan we opzoek naar identieke

Nadere informatie

Examen Datastructuren en Algoritmen II

Examen Datastructuren en Algoritmen II Tweede bachelor Informatica Academiejaar 2012 2013, eerste zittijd Examen Datastructuren en Algoritmen II Naam :.............................................................................. Lees de hele

Nadere informatie

REEKS I. Zaterdag 6 november 2010, 9u

REEKS I. Zaterdag 6 november 2010, 9u TEST INFORMATICA 1STE BACHELOR IN DE INGENIEURSWETENSCHAPPEN - ACADEMIEJAAR 2010-2011 REEKS I Zaterdag 6 november 2010, 9u NAAM :... VRAAG 1: MINSTENS [5 PUNTEN] Schrijf een methode minstens(), met twee

Nadere informatie

Datastructuren en Algoritmen

Datastructuren en Algoritmen Datastructuren en Algoritmen Tentamen Vrijdag 6 november 2015 13.30-16.30 Toelichting Bij dit tentamen mag je gebruik maken van een spiekbriefje van maximaal 2 kantjes. Verder mogen er geen hulpmiddelen

Nadere informatie

Credit cards, computationele complexiteit en consistentie uitspraken

Credit cards, computationele complexiteit en consistentie uitspraken Credit cards, computationele complexiteit en consistentie uitspraken Joost J. Joosten 14 december 2005 Praag en bier Sinds enkele maanden werk ik als post-doc aan de Czech Academy of Sciences in Praag.

Nadere informatie

2 Recurrente betrekkingen

2 Recurrente betrekkingen WIS2 1 2 Recurrente betrekkingen 2.1 Fibonacci De getallen van Fibonacci Fibonacci (= Leonardo van Pisa), 1202: Bereken het aantal paren konijnen na één jaar, als 1. er na 1 maand 1 paar pasgeboren konijnen

Nadere informatie

Helden van de wiskunde: L.E.J. Brouwer Brouwers visie vanuit een logica-informatica perspectief

Helden van de wiskunde: L.E.J. Brouwer Brouwers visie vanuit een logica-informatica perspectief Helden van de wiskunde: L.E.J. Brouwer Brouwers visie vanuit een logica-informatica perspectief Herman Geuvers Radboud Universiteit Nijmegen Technische Universiteit Eindhoven 1 Helden van de wiskunde:

Nadere informatie

TW2020 Optimalisering

TW2020 Optimalisering TW2020 Optimalisering Hoorcollege 8 Leo van Iersel Technische Universiteit Delft 2 november 2016 Leo van Iersel (TUD) TW2020 Optimalisering 2 november 2016 1 / 28 Minimum Opspannende Boom (Minimum Spanning

Nadere informatie

Programmeermethoden NA

Programmeermethoden NA Programmeermethoden NA Week 6: Lijsten Kristian Rietveld http://liacs.leidenuniv.nl/~rietveldkfd/courses/prna/ Bij ons leer je de wereld kennen 1 Getal opbouwen Stel je leest losse karakters (waaronder

Nadere informatie

Examen Datastructuren en Algoritmen II

Examen Datastructuren en Algoritmen II Tweede bachelor Informatica Academiejaar 2014 2015, eerste zittijd Examen Datastructuren en Algoritmen II Naam :.............................................................................. Lees de hele

Nadere informatie

Recursion. Introductie 37. Leerkern 37. Terugkoppeling 40. Uitwerking van de opgaven 40

Recursion. Introductie 37. Leerkern 37. Terugkoppeling 40. Uitwerking van de opgaven 40 Recursion Introductie 37 Leerkern 37 5.1 Foundations of recursion 37 5.2 Recursive analysis 37 5.3 Applications of recursion 38 Terugkoppeling 40 Uitwerking van de opgaven 40 Hoofdstuk 5 Recursion I N

Nadere informatie

Tiende college algoritmiek. 2 mei Gretige algoritmen, Dijkstra

Tiende college algoritmiek. 2 mei Gretige algoritmen, Dijkstra College 10 Tiende college algoritmiek mei 013 Gretige algoritmen, Dijkstra 1 Muntenprobleem Gegeven onbeperkt veel munten van d 1,d,...d m eurocent, en een te betalen bedrag van n (n 0) eurocent. Alle

Nadere informatie

Vierde college complexiteit. 26 februari Beslissingsbomen en selectie Toernooimethode Adversary argument

Vierde college complexiteit. 26 februari Beslissingsbomen en selectie Toernooimethode Adversary argument Complexiteit 2019/04 College 4 Vierde college complexiteit 26 februari 2019 Beslissingsbomen en selectie Toernooimethode Adversary argument 1 Complexiteit 2019/04 Zoeken: samengevat Ongeordend lineair

Nadere informatie

Oefeningen voor de oefeningenles. Oefening 1

Oefeningen voor de oefeningenles. Oefening 1 Oefeningen voor de oefeningenles Oefening 1 Gegeven een arbitraire binaire zoekboom T met n toppen en een (andere of gelijke) binaire zoekboom T die ook n sleutels bevat. Beschrijf een algoritme dat in

Nadere informatie

Tiende college algoritmiek. 26 april Gretige algoritmen

Tiende college algoritmiek. 26 april Gretige algoritmen Algoritmiek 01/10 College 10 Tiende college algoritmiek april 01 Gretige algoritmen 1 Algoritmiek 01/10 Muntenprobleem Gegeven onbeperkt veel munten van d 1,d,...d m eurocent, en een te betalen bedrag

Nadere informatie

TW2020 Optimalisering

TW2020 Optimalisering TW2020 Optimalisering Hoorcollege 8 Leo van Iersel Technische Universiteit Delft 28 oktober 2015 Leo van Iersel (TUD) TW2020 Optimalisering 28 oktober 2015 1 / 25 Definitie Een boom is een samenhangende

Nadere informatie

Stelling. SAT is NP-compleet.

Stelling. SAT is NP-compleet. Het bewijs van de stelling van Cook Levin zoals gegeven in het boek van Sipser gebruikt niet-deterministische turing machines. Het is inderdaad mogelijk de klasse NP op een alternatieve wijze te definiëren

Nadere informatie

Constanten. Variabelen. Expressies. Variabelen. Constanten. Voorbeeld : varid.py. een symbolische naam voor een object.

Constanten. Variabelen. Expressies. Variabelen. Constanten. Voorbeeld : varid.py. een symbolische naam voor een object. een symbolische naam voor een object. Variabelen Constanten Variabelen Expressies naam : geeft de plaats in het geheugen aan waarde : de inhoud van het object identifier : een rij van letters en/of cijfers

Nadere informatie

Opgaven Analyse van Algoritmen 10 mei 2019, Datastructuren, Werkgroep.

Opgaven Analyse van Algoritmen 10 mei 2019, Datastructuren, Werkgroep. Opgaven Analyse van Algoritmen 10 mei 019, Datastructuren, Werkgroep. Gebruik deze opgaven, naast die uit het boek, om de stof te oefenen op het werkcollege. Cijfer: Op een toets krijg je meestal zes tot

Nadere informatie

8. Complexiteit van algoritmen:

8. Complexiteit van algoritmen: 8. Complexiteit van algoritmen: Voorbeeld: Een gevaarlijk spel 1 Spelboom voor het wespenspel 2 8.1 Complexiteit 4 8.2 NP-problemen 6 8.3 De oplossing 7 8.4 Een vuistregel 8 In dit hoofdstuk wordt het

Nadere informatie

Datastructuren. Analyse van algoritmen. José Lagerberg. FNWI, UvA. José Lagerberg (FNWI, UvA) Datastructuren 1 / 46

Datastructuren. Analyse van algoritmen. José Lagerberg. FNWI, UvA. José Lagerberg (FNWI, UvA) Datastructuren 1 / 46 Datastructuren Analyse van algoritmen José Lagerberg FNWI, UvA José Lagerberg (FNWI, UvA) Datastructuren 1 / 46 Datastructuren en Algoritmen Datastructuren, 6 ECTS eerstejaars Bachelor INF Datastructuren,

Nadere informatie

Algoritmiek. 15 februari Grafen en bomen

Algoritmiek. 15 februari Grafen en bomen Algoritmiek 15 februari 2019 Grafen en bomen 1 Grafen (herhaling) Een graaf G wordt gedefinieerd als een paar (V,E), waarbij V een eindige verzameling is van knopen (vertices) en E een verzameling van

Nadere informatie

start -> id (k (f c s) (g s c)) -> k (f c s) (g s c) -> f c s -> s c

start -> id (k (f c s) (g s c)) -> k (f c s) (g s c) -> f c s -> s c Een Minimaal Formalisme om te Programmeren We hebben gezien dat Turing machines beschouwd kunnen worden als universele computers. D.w.z. dat iedere berekening met natuurlijke getallen die met een computer

Nadere informatie

Ontwerp van Algoritmen: opgaven weken 3 en 4

Ontwerp van Algoritmen: opgaven weken 3 en 4 0 Ontwerp van Algoritmen: opgaven weken 3 en 4 Voor alle volgende opgaven over programmaatjes geldt de spelregel: formuleer altijd eerst alle bewijsverplichtingen. selectie 45. (tail distribution)(prima

Nadere informatie

Examen Datastructuren en Algoritmen II

Examen Datastructuren en Algoritmen II Tweede bachelor Informatica Academiejaar 2010 2011, tweede zittijd Examen Datastructuren en Algoritmen II Naam :.............................................................................. Lees de hele

Nadere informatie

Tiende college algoritmiek. 4 mei Gretige Algoritmen Algoritme van Dijkstra

Tiende college algoritmiek. 4 mei Gretige Algoritmen Algoritme van Dijkstra Tiende college algoritmiek mei 018 Gretige Algoritmen Algoritme van Dijkstra 1 Muntenprobleem Gegeven onbeperkt veel munten van d 1,d,...d m eurocent, en een te betalen bedrag van n (n 0) eurocent. Alle

Nadere informatie

Minimum Spanning Tree

Minimum Spanning Tree Minimum Spanning Tree Wat is MST? Minimum spanning tree De meest efficiënte manier vinden om een verbonden netwerk op te bouwen Wat is een tree/boom? Graaf G: een verzameling knopen (vertices): V een verzameling

Nadere informatie

Elfde college algoritmiek. 10 mei Algoritme van Dijkstra, Gretige Algoritmen

Elfde college algoritmiek. 10 mei Algoritme van Dijkstra, Gretige Algoritmen lgoritmiek 019/lgoritme van ijkstra lfde college algoritmiek 10 mei 019 lgoritme van ijkstra, Gretige lgoritmen 1 lgoritmiek 019/ynamisch programmeren Programmeeropdracht 3 Lange Reis 0 10 10 1 1 100 0

Nadere informatie

Tijd is geen goede maatstaf, want is afhankelijk van computer waarop algoritme wordt gedraaid.

Tijd is geen goede maatstaf, want is afhankelijk van computer waarop algoritme wordt gedraaid. Complexiteit of efficiëntie van algoritmen Hoe meet je deze? Tijd is geen goede maatstaf, want is afhankelijk van computer waarop algoritme wordt gedraaid. Een betere maatstaf is het aantal berekeningsstappen

Nadere informatie

Je gaat leren programmeren en een spel bouwen met de programmeertaal Python. Websites zoals YouTube en Instagram zijn gebouwd met Python.

Je gaat leren programmeren en een spel bouwen met de programmeertaal Python. Websites zoals YouTube en Instagram zijn gebouwd met Python. 1 Je gaat leren programmeren en een spel bouwen met de programmeertaal Python. Websites zoals YouTube en Instagram zijn gebouwd met Python. Voordat je leert programmeren, moet je jouw pc zo instellen dat

Nadere informatie

Twaalfde college complexiteit. 11 mei 2012. Overzicht, MST

Twaalfde college complexiteit. 11 mei 2012. Overzicht, MST College 12 Twaalfde college complexiteit 11 mei 2012 Overzicht, MST 1 Agenda voor vandaag Minimum Opspannende Boom (minimum spanning tree) als voorbeeld van greedy algoritmen Overzicht: wat voor technieken

Nadere informatie

Eerste Toets Datastructuren 22 mei 2019, , Educ-β en Megaron.

Eerste Toets Datastructuren 22 mei 2019, , Educ-β en Megaron. Eerste Toets Datastructuren 22 mei 209, 3.30 5.30, Educ-β en Megaron. Motiveer je antwoorden kort! Stel geen vragen over deze toets; als je een vraag niet duidelijk vindt, schrijf dan op hoe je de vraag

Nadere informatie

Recursie: definitie. De som van de kwadraten van de getallen tussen m en n kan als volgt gedefinieerd worden:

Recursie: definitie. De som van de kwadraten van de getallen tussen m en n kan als volgt gedefinieerd worden: Recursie: definitie Een object wordt recursief genoemd wanneer het partieel bestaat uit of partieel gedefinieerd is in termen van zichzelf. Recursie wordt gebruikt bij wiskundige definities, bijvoorbeeld:

Nadere informatie

Opgaven Binair Zoeken en Invarianten Datastructuren, 4 mei 2016, Werkgroep.

Opgaven Binair Zoeken en Invarianten Datastructuren, 4 mei 2016, Werkgroep. Opgaven Binair Zoeken en Invarianten Datastructuren, 4 mei 2016, Werkgroep. Gebruik deze opgaven, naast die uit het boek, om de stof te oefenen op het werkcollege. Cijfer: Op een toets krijg je meestal

Nadere informatie

Tiende college algoritmiek. 14 april Gretige algoritmen

Tiende college algoritmiek. 14 april Gretige algoritmen College 10 Tiende college algoritmiek 1 april 011 Gretige algoritmen 1 Greedy algorithms Greed = hebzucht Voor oplossen van optimalisatieproblemen Oplossing wordt stap voor stap opgebouwd In elke stap

Nadere informatie

Tweede Toets Datastructuren 29 juni 2016, , Educ-Γ.

Tweede Toets Datastructuren 29 juni 2016, , Educ-Γ. Tweede Toets Datastructuren 29 juni 2016, 13.30 15.30, Educ-Γ. Motiveer je antwoorden kort! Zet je mobiel uit. Stel geen vragen over deze toets; als je een vraag niet duidelijk vindt, schrijf dan op hoe

Nadere informatie

recursie Hoofdstuk 5 Studeeraanwijzingen De studielast van deze leereenheid bedraagt circa 6 uur. Terminologie

recursie Hoofdstuk 5 Studeeraanwijzingen De studielast van deze leereenheid bedraagt circa 6 uur. Terminologie Hoofdstuk 5 Recursion I N T R O D U C T I E Veel methoden die we op een datastructuur aan kunnen roepen, zullen op een recursieve wijze geïmplementeerd worden. Recursie is een techniek waarbij een vraagstuk

Nadere informatie

Discrete Wiskunde, College 12. Han Hoogeveen, Utrecht University

Discrete Wiskunde, College 12. Han Hoogeveen, Utrecht University Discrete Wiskunde, College 12 Han Hoogeveen, Utrecht University Dynamische programmering Het basisidee is dat je het probleem stap voor stap oplost Het probleem moet voldoen aan het optimaliteitsprincipe

Nadere informatie

Examen Datastructuren en Algoritmen II

Examen Datastructuren en Algoritmen II Tweede bachelor Informatica Academiejaar 2006 2007, tweede zittijd Examen Datastructuren en Algoritmen II Naam :.............................................................................. 1. Verzamelingen:

Nadere informatie

MMI. The Digital World 4. Peter van Kranenburg

MMI. The Digital World 4. Peter van Kranenburg MMI The Digital World 4 Peter van Kranenburg Intro Vandaag: Terugblik vorige week Leren programmeren Algoritmes Terugblik Hogere-orde programmeertalen maken het schrijven van code eenvoudiger. Je hoeft

Nadere informatie

De volgende opgave gaat over de B-bomen van het college, waar sleutels zowel in de bladeren als ook in de interne knopen opgeslagen worden.

De volgende opgave gaat over de B-bomen van het college, waar sleutels zowel in de bladeren als ook in de interne knopen opgeslagen worden. . a) Een Fibonacci boom (niet te verwarren met een Fibonacci queue) van hoogte h is een AVL-boom van hoogte h met zo weinig mogelijk knopen. i. Geefvoorh =,,,,eenfibonacciboomvanhoogteh(eenboombestaande

Nadere informatie

Examen Datastructuren en Algoritmen II

Examen Datastructuren en Algoritmen II Tweede bachelor Informatica Academiejaar 2008 2009, tweede zittijd Examen Datastructuren en Algoritmen II Naam :.............................................................................. Lees elke

Nadere informatie

TEST INFORMATICA 1STE BACHELOR IN DE INGENIEURSWETENSCHAPPEN - ACADEMIEJAAR

TEST INFORMATICA 1STE BACHELOR IN DE INGENIEURSWETENSCHAPPEN - ACADEMIEJAAR TEST INFORMATICA 1STE BACHELOR IN DE INGENIEURSWETENSCHAPPEN - ACADEMIEJAAR 2011-2012 Zaterdag 5 november 2011, 9u30 NAAM :... VRAAG 1: EVEN VEEL [5 PUNTEN] Schrijf een methode evenveel(), met twee argumenten,

Nadere informatie

Controle structuren. Keuze. Herhaling. Het if statement. even1.c : testen of getal even of oneven is. statement1 statement2

Controle structuren. Keuze. Herhaling. Het if statement. even1.c : testen of getal even of oneven is. statement1 statement2 Controle structuren De algemene vorm: 1 bloks door middel van indentatie Keuze Herhaling if expressie :...... In de volgende vorm is het else gedeelte weggelaten: if expressie :... Het if keuze- of conditioneel

Nadere informatie

Zevende college complexiteit. 7 maart Mergesort, Ondergrens sorteren (Quicksort)

Zevende college complexiteit. 7 maart Mergesort, Ondergrens sorteren (Quicksort) College 7 Zevende college complexiteit 7 maart 2017 Mergesort, Ondergrens sorteren (Quicksort) 1 Inversies Definitie: een inversie van de permutatie A[1],A[2],...,A[n] is een paar (A[i],A[j]) waarvoor

Nadere informatie

Discrete Structuren. Piter Dykstra Opleidingsinstituut Informatica en Cognitie

Discrete Structuren. Piter Dykstra Opleidingsinstituut Informatica en Cognitie Discrete Structuren Piter Dykstra Opleidingsinstituut Informatica en Cognitie www.math.rug.nl/~piter piter@math.rug.nl 22 februari 2009 INDUCTIE & RECURSIE Paragrafen 4.3-4.6 Discrete Structuren Week 3:

Nadere informatie

Derde college algoritmiek. 22 februari Complexiteit Toestand-actie-ruimte

Derde college algoritmiek. 22 februari Complexiteit Toestand-actie-ruimte Algoritmiek 2019/Complexiteit Derde college algoritmiek 22 februari 2019 Complexiteit Toestand-actie-ruimte 1 Algoritmiek 2019/Complexiteit Opgave 1 bomenpracticum Niet de bedoeling: globale (member-)variabele

Nadere informatie

Zevende college algoritmiek. 1 april Verdeel en Heers

Zevende college algoritmiek. 1 april Verdeel en Heers Zevende college algoritmiek 1 april 2016 Verdeel en Heers 1 Verdeel en heers 1 Divide and Conquer 1. Verdeel een instantie van het probleem in twee (of meer) kleinere instanties 2. Los de kleinere instanties

Nadere informatie

Algoritmen, Datastructuren en Complexiteit ( ) Uitwerkingen

Algoritmen, Datastructuren en Complexiteit ( ) Uitwerkingen Universiteit Twente Kwartiel 010/ Afdeling Informatica 1 e huiswerkserie 6 december 010 Algoritmen, Datastructuren en Complexiteit 1914000 Uitwerkingen De deadline voor het inleveren van deze huiswerkserie

Nadere informatie

Programmeermethoden NA. Week 3: Controlestructuren

Programmeermethoden NA. Week 3: Controlestructuren Programmeermethoden NA Week 3: Controlestructuren Kristian Rietveld http://liacs.leidenuniv.nl/~rietveldkfd/courses/prna/ Bij ons leer je de wereld kennen 1 Inleveren opdracht 1 Lever digitaal sxxxxxxx-syyyyyyy-opdr1.py

Nadere informatie

Combinatoriek groep 2

Combinatoriek groep 2 Combinatoriek groep 2 Recursie Trainingsdag 3, 2 april 2009 Homogene lineaire recurrente betrekkingen We kunnen een rij getallen a 0, a 1, a 2,... op twee manieren definiëren: direct of recursief. Een

Nadere informatie

Grafen. Indien de uitgraad van ieder punt 1 is, dan bevat de graaf een cykel. Indien de ingraad van ieder punt 1 is, dan bevat de graaf een cykel.

Grafen. Indien de uitgraad van ieder punt 1 is, dan bevat de graaf een cykel. Indien de ingraad van ieder punt 1 is, dan bevat de graaf een cykel. Grafen Grafen Een graaf bestaat uit een verzameling punten (ook wel knopen, of in het engels vertices genoemd) en een verzameling kanten (edges) of pijlen (arcs), waarbij de kanten en pijlen tussen twee

Nadere informatie

Tweede college complexiteit. 12 februari Wiskundige achtergrond

Tweede college complexiteit. 12 februari Wiskundige achtergrond College 2 Tweede college complexiteit 12 februari 2019 Wiskundige achtergrond 1 Agenda vanmiddag Floor, Ceiling Rekenregels logaritmen Tellen Formele definitie O, Ω, Θ met voorbeelden Stellingen over faculteiten

Nadere informatie

Tentamen combinatorische optimalisatie Tijd:

Tentamen combinatorische optimalisatie Tijd: Tentamen combinatorische optimalisatie 26-05-2014. Tijd: 9.00-11.30 Tentamen is met gesloten boek. Beschrijf bij elke opgave steeds het belangrijkste idee. Notatie en exacte formulering is van minder belang.

Nadere informatie

Algoritmiek. 2 februari Introductie

Algoritmiek. 2 februari Introductie College 1 Algoritmiek 2 februari 2017 Introductie 1 Introductie -1- docent: Rudy van Vliet rvvliet@liacs.nl assistent werkcollege: Bart van Strien bartbes@gmail.com website: http://www.liacs.leidenuniv.nl/~vlietrvan1/algoritmiek/

Nadere informatie