Datastructuren en Algoritmen

Maat: px
Weergave met pagina beginnen:

Download "Datastructuren en Algoritmen"

Transcriptie

1 Datastructuren en Algoritmen Tentamen Vrijdag 6 november Toelichting Bij dit tentamen mag je gebruik maken van een spiekbriefje van maximaal 2 kantjes. Verder mogen er geen hulpmiddelen gebruikt worden. Probeer de antwoorden zo precies mogelijk te geven, wanneer gevraagd wordt naar een aantal hoeft dit niet altijd per se een getal te zijn. Wiskundige operaties zoals bijvoorbeeld of log mogen in het antwoord blijven staan, maar probeer deze wel zoveel mogelijk te simplificeren. Het tentamen bestaat uit 6 vragen met in totaal 15 deelvragen. Tussen haakjes is aangegeven hoe zwaar elke deelvraag meeweegt voor het cijfer, er zijn in totaal 100 punten te verdienen. 1. Mirrored insertion sort Insertion sort (Figure 1) is een vergelijkingsgebaseerd sorteeralgoritme waarbij de elementen één voor één in de gesorteerde prefix van de lijst worden ingevoegd. Om te bewijzen dat het algoritme correct sorteert, kun je de loop-invariant gebruiken dat na i iteraties de eerste i elementen in oplopende volgorde staan. In deze opgave kijken we naar mirrored insertion sort, waarbij we de elementen van rechts naar links behandelen, en één voor één op de juiste plek invoegen in de gesorteerde suffix. We spiegelen het algoritme dus door niet aan de linkerkant van de lijst een gesorteerde sublijst op te bouwen, maar juist aan de rechterkant. Hiermee sorteren we nog wel steeds in oplopende volgorde. (10) (a) Geef, in pseudocode, een implementatie van mirrored insertion sort. insertion-sort(a) 1 for j = 2 to A.length 2 key = A[j] 3 / Voeg A[j] aan de gesorteerde rij A[1.. j 1] toe 4 i = j 1 5 while i > 0 and A[i] > key 6 A[i + 1] = A[i] 7 i = i 1 8 A[i + 1] = key Figure 1: Insertion sort zoals in het college behandeld. 1

2 mirrored-insertion-sort(a) 1 for j = A.length 1 downto 1 2 key = A[j] 3 i = j while i A.length and A[i] < key 5 A[i 1] = A[i] 6 i = i A[i 1] = key (5) (b) Bewijs met behulp van een loop invariant de correctheid van het algoritme. Schrijf in elk geval de invariant op, een bewijs voor de initialization en maintenance stappen, en de conclusie. (beknopt, maximaal 15 zinnen) Loop invariant: aan het begin van iteratie j is de subarray A[j + 1..A.length] gesorteerd Initialization: j begint bij A. length 1, dus de subarray A[A. length A. length] = A[A. length..a. length] bestaat uit één element en is dus altijd gesorteerd. Maintenance: de index i gaat van j + 1 tot aan A.length, wat precies het gesorteerde deel van de lijst is. Elk element wordt 1 positie naar links geschoven wanneer het element kleiner is dan de waarde op positie j. Na de loop is i de positie van het eerste element dat groter is, en het element van positie j wordt dan dus op i 1 ingevoegd, waardoor de subarray A[j + 1..A.length] weer gesorteerd is. Termination: de loop termineert gegarandeerd na het vastgelegde aantal iteraties. Dat is bij j = 0, waardoor de loop invariant geeft dat A[ A.length] = A[1..A. length] gesorteerd is. De conclusie is dus dat het algoritme werkt zoals verwacht. (5) (c) Geef de asymptotische looptijd van dit algoritme en vergelijk dit met de looptijd van de normale variant van insertion sort. In het slechtste geval doet de binnenste for-loop n j stappen, dus in totaal doet het algoritme dan n j=1 n j = n2 n j=1 j = n2 (n (n 1))/2 = n 2 (n 2 n)/2 = n 2 n 2 /2 + n/2 = n 2 /2 + n/2 = O(n 2 ). Dit is hetzelfde als de normale variant van insertion sort. In het beste geval (een gesorteerde lijst) wordt de binnenste for-loop nooit uitgevoerd, en doet het algoritme dus O(n) stappen, net als de normale variant van insertion sort. Het is dus incorrect om te stellen dat het algoritme Θ(n 2 ) is. 2. Eén-tegen-100 Eén-tegen-100 is een spelshow op televisie waarbij een kandidaat het opneemt tegen 100 tegenspelers. Bij elke vraag moeten zowel de kandidaat als de tegenspelers die nog in het spel zitten een meerkeuzevraag beantwoorden. Als de kandidaat deze fout heeft ligt hij direct uit het spel. Als de kandidaat deze goed heeft, speelt hij alle tegenspelers die het fout hadden weg. Pagina 2 van 6

3 Wanneer de kandidaat alle tegenspelers heeft weggespeeld wint hij het totaal opgebouwde geldbedrag. Bij elke vraag zijn alle tegenspelers die nog in het spel zitten gezamenlijk e waard. Wanneer er nog n spelers in het spel zitten is elke speler dus e50 000/n waard, en voor elke tegenspeler die er bij die vraag uit gaat krijgt de kandidaat dat bedrag erbij. Het totaal gewonnen bedrag hangt dus af van hoeveel spelers er bij elke vraag uit gaan. Als bijvoorbeeld bij de eerste vraag 37 tegenspelers eruit gaan en bij vraag 2 de overige 63, dan wint de kandidaat dus / /63 = e (4) (a) Neem aan dat de kandidaat alle vraag goed heeft, en dus sowieso een geldbedrag wint. Dit bedrag hangt dan af van wanneer de tegenspelers eruit gaan. Wat is het slechtste geval voor de kandidaat (dus: wanneer wint hij het minst)? Wanneer hij alle spelers er in 1 ronde uit speelt wint hij /100 = e (8) (b) En wat is het beste geval (dus: wanneer wint hij het meest)? Hij wint het meest als hij elke ronde er precies 1 speler uitspeelt. Na i rondes zitten er dan nog 100 i tegenspelers in, en wint hij dus in totaal: 99 i= i = i= i 100 = i=1 1 i = H ln 100 e De speler wint dan dus ruim 2 ton (en als je het precies uitrekent en elke ronde afrondt zoals in het echte spel gebeurt kom je op e uit). (8) (c) Stel dat elke tegenspeler elke vraag met kans 1/3 fout heeft, en dat de kandidaat alle vragen goed heeft. Wat is het verwachte aantal rondes wat er gespeeld wordt voordat alle tegenspelers uit het spel zijn? We verwachten dat bij elke vraag 1/3 van de overgebleven tegenspelers de vraag fout heeft en afvalt. Er blijft bij elke ronde dus 2/3 van de tegenspelers over, dus na n rondes verwachten we dat er nog 100 ( 2 3 )n tegenspelers over zijn. De vraag is dus wat is de kleinste n waarvoor 100 ( 2 3 )n < 1. Beide kanten delen door 100 geeft 2 n 3 < Het logaritme nemen geeft n = log 2/ We verwachten dus ongeveer 11 rondes te spelen. 3. Som-product Gegeven is de volgende pseudocode: Pagina 3 van 6

4 som-product(a, p, r) 1 if p == r 2 return A[p] 3 q = (p + r)/2 4 v 1 = som-product(a, p, q) 5 v 2 = som-product(a, q + 1, r) 6 if v 1 < v 2 7 return v 1 v 2 8 else 9 return v 1 + v 2 (10) (a) Stel een recurrente betrekking op voor de looptijd van dit algoritme. Je mag gebruiken dat n = r p + 1. T (n) = { O(1) als n = 1 2T (n/2) + O(1) als n > 1 (10) (b) Los deze recurrente betrekking op met de Master theorem en geef daarmee de looptijd van dit algoritme. Uit de recurrente betrekking halen we dat a = 2, b = 2, en f(n) = 1. Dit geeft log b a = log 2 2 = 1, dus we hebben geval 1 met ɛ = 1, want f(n) = 1 = n 0 = n log b a 1. De master theorem geeft dan de looptijd Θ(n log b a ) = Θ(n 1 ) = Θ(n). 4. Hashtabel Bij deze opgave bekijken we een hashtabel van grootte m met daarin n elementen. Om botsingen te voorkomen maken we gebruik van ketens (chaining). Je mag aannemen dat de hashfunctie die gebruikt wordt perfect is. (5) (a) Hoeveel tijd kost het om alle elementen uit de hashtabel op te sommen (volgorde maakt niet uit)? Geef je antwoord in Θ notatie. Θ(n + m), want elk vakje in de hashtabel moet worden bekeken (m stappen) en elk element wat in de hashtabel moet worden bekeken (n stappen). Een andere oplossing is om te kijken naar het verwacht aantal stappen per vakje, dat is Θ(1 + α), en dat doen we voor elk vakje: Θ(m (1 + α)) = Θ(m + m α) = Θ(m + n) (want α = n/m). Meta opmerking: Enkele studenten hebben bij het woord opsommen gedacht aan sommeren. Opsommen betekent echter het één voor één opnoemen (of uitprinten) van de elementen, en heeft dus niks te maken met het berekenen van de som. Dat maakt overigens voor de looptijd niet uit, want je moet hoe dan ook elk element eenmaal bekijken. (5) (b) Is het slim om hiervoor een hashtabel te gebruiken als je een verzameling elementen hebt die je wilt opsommen? Zo ja, leg uit waarom. Zo nee, geef een voorbeeld van een datastructuur waarmee dat beter kan. Pagina 4 van 6

5 Nee, want als we bijvoorbeeld een hele grote hashtabel hebben (m = 1000) met maar 1 element erin (n = 1), dan moeten we nu in het slechtste geval alle m vakjes bekijken om het element te kunnen opsommen. Vrijwel elke andere dynamische verzameling ondersteunt het opsommen van n elementen in Θ(n), zoals bijvoorbeeld een stack, queue, linked list, of zelfs een zoekboom (zie vraag 5). 5. Zoekbomen Deze vraag gaat over gebalanceerde zoekbomen. Hierbij kun je bijvoorbeeld denken aan rood-zwart-bomen of ALV bomen; welke precies maakt voor deze vraag niet uit. (5) (a) Alle elementen uit een gebalanceerde zoekboom van grootte n kunnen op oplopende volgorde worden opgesomd door door eerst tree-minimum aan te roepen en vervolgens n 1 keer tree-successor. Hoeveel tijd kost dit? Kies een van de volgende antwoorden. A. Θ(n 2 ) B. Θ(n) C. Θ(n log n) D. Θ(n n) Θ(n) (5) (b) Leg je antwoord voor (a) kort uit. Bij het aflopen van de zoekboom op deze volgorde bezoeken we eerst het kleinste elementen ( helemaal links ), en gaan dan op volgorde steeds naar grotere elementen. Voor elke subboom (dus: voor elk van de n elementen) komen we eenmaal de subboom in, bezoeken dan eerst de volledige linker subboom, sommen we het huidige element op, bezoeken dan de volledige rechter subboom, en zijn dan klaar. Er wordt dus een constant aantal stappen per knoop gedaan, dus in totaal is dit algoritme Θ(n). Merk op dat tree-successor in het slechtste geval O(log n) stappen doet, maar dat dat slechtste geval niet alle n de keren kan voorkomen, dus een looptijd van Θ(n log n) is incorrect. 6. Spelgrafen De verschillende spelsituaties van veel bordspellen (bijvoorbeeld: vier-op-een-rij, boter-kaasen-eieren, ganzebord, dammen, schaken) kunnen worden gepresenteerd in een graaf. Elke knoop stelt dan een bepaalde stand op het bord voor (bijvoorbeeld de plekken waar de damstukken staan), en elke kant stelt een zet voor die een van de spelers doet, waarmee het bord dus in een andere stand komt. (5) (a) Zou je voor het representeren van de meeste spellen (zoals de genoemde voorbeelden) een gerichte of juist ongerichte graaf gebruiken? Leg uit waarom. Pagina 5 van 6

6 Gerichte graaf, want zetten zijn lang niet altijd omkeerbaar. (5) (b) Of de graaf cyclisch kan zijn hangt af van het type spel. Geef een voorbeeld van een spel waarbij de graaf cyclisch kan zijn en een voorbeeld van een spel waarbij de graaf geen cycles bevat. Cyclisch: mens-erger-je-niet, ganzebord (als je dood gaat begin je opnieuw), dammen (wanneer beide spelers een dam hebben kunnen zeheen en weer tussen dezelfde stand), schaken, etc. Niet-cyclisch: vier-op-een-rij, boter-kaas-en-eieren, etc. (10) (c) Twee bekende representaties voor grafen zijn de matrixrepresentatie en de lijst-vanburen-representatie. Een derde mogelijkheid is de zogenaamde impliciete representatie, waarbij de buren van elke knoop worden uitgerekend op het moment dat die nodig zijn. In het geval van spelgrafen werkt dit goed, doordat voor elke stand op het bord snel uitgerekend kan worden welke geldige zetten er zijn (en in welke stand die uitkomen). Bij het doen van een berekening over de graaf, bijvoorbeeld een breadth first search waarbij de knopen een voor een zwart gekleurd worden, levert dit echter een extra moeilijkheid op in de implementatie. Leg uit wat het probleem is en hoe dit opgelost kan worden. Het probleem is dat er geen expliciete representatie van een knoop is, en we kunnen dus ook niet zomaar een knoop zwart kleuren (want: waar slaan we op dat de knoop zwart is?). We moeten dus een andere manier hebben om te bepalen of een bepaalde stand al geweest is ( zwart gekleurd is ), dit kan bijvoorbeeld door de zwarte knopen in een hashset op te slaan (en een goede hashfunctie te verzinnen voor onze stand-op-het-bord-representatie). Pagina 6 van 6

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

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

Datastructuren en algoritmen voor CKI

Datastructuren en algoritmen voor CKI Datastructuren en algoritmen voor CKI Jeroen Bransen 1 2 september 2015 1 met dank aan Hans Bodlaender en Gerard Tel Organisatie Website Vakwebsite: http://www.cs.uu.nl/docs/vakken/ki2v12009/ Bevat 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

Vijfde college complexiteit. 21 februari Selectie Toernooimethode Adversary argument

Vijfde college complexiteit. 21 februari Selectie Toernooimethode Adversary argument Complexiteit 2017/05 College 5 Vijfde college complexiteit 21 februari 2017 Selectie Toernooimethode Adversary argument 1 Complexiteit 2017/05 Opgave 28 Gegeven twee oplopend gesorteerde even lange rijen

Nadere informatie

Datastructuren en algoritmen voor CKI

Datastructuren en algoritmen voor CKI Datastructuren en algoritmen voor CKI Jeroen Bransen 1 2 oktober 2015 1 met dank aan Hans Bodlaender en Gerard Tel Priority queue Priority queue ADT insert(q, x): voeg element x toe aan de queue maximum(q):

Nadere informatie

Opgaven Hash Tabellen Datastructuren, 15 juni 2018, Werkgroep.

Opgaven Hash Tabellen Datastructuren, 15 juni 2018, Werkgroep. Opgaven Hash Tabellen Datastructuren, 15 juni 2018, 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 acht

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

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

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

Vierde college complexiteit. 14 februari Beslissingsbomen

Vierde college complexiteit. 14 februari Beslissingsbomen College 4 Vierde college complexiteit 14 februari 2017 Restant zoeken Beslissingsbomen 1 Binair zoeken Links := 1; Rechts := n; while Links Rechts do Midden := Links + Rechts 2 ; if X = A[Midden] then

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

Zevende college algoritmiek. 24 maart Verdeel en Heers

Zevende college algoritmiek. 24 maart Verdeel en Heers Zevende college algoritmiek 24 maart 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

Tweede Toets Datastructuren 28 juni 2017, , Educ-β.

Tweede Toets Datastructuren 28 juni 2017, , Educ-β. Tweede Toets Datastructuren 28 juni 2017, 13.30 15.30, Educ-β. Motiveer je antwoorden kort! Stel geen vragen over deze toets; als je een vraag niet duidelijk vindt, schrijf dan op hoe je de vraag interpreteert

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

Zevende college complexiteit. 17 maart Ondergrens sorteren, Quicksort

Zevende college complexiteit. 17 maart Ondergrens sorteren, Quicksort College 7 Zevende college complexiteit 17 maart 2008 Ondergrens sorteren, Quicksort 1 Sorteren We bekijken sorteeralgoritmen gebaseerd op het doen van vergelijkingen van de vorm A[i] < A[j]. Aannames:

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

Datastructuren en algoritmen voor CKI

Datastructuren en algoritmen voor CKI Datastructuren en algoritmen voor CKI Jeroen Bransen 1 14 oktober 2015 1 met dank aan Hans Bodlaender en Gerard Tel Willekeurig gebouwde zoekbomen Willekeurig gebouwde zoekbomen Hoogte van zoekboom met

Nadere informatie

Kortste Paden. Algoritmiek

Kortste Paden. Algoritmiek Kortste Paden Toepassingen Kevin Bacon getal Six degrees of separation Heeft een netwerk de small-world eigenschap? TomTom / Google Maps 2 Kortste paden Gerichte graaf G=(N,A), en een lengte L(v,w) voor

Nadere informatie

Doorzoeken van grafen. Algoritmiek

Doorzoeken van grafen. Algoritmiek Doorzoeken van grafen Algoritmiek Vandaag Methoden om door grafen te wandelen Depth First Search Breadth First Search Gerichte Acyclische Grafen en topologische sorteringen 2 Doolhof start eind 3 Depth

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

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

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

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

Zesde college complexiteit. 19 maart Mergesort, Ondergrens sorteren Quicksort, Shellsort

Zesde college complexiteit. 19 maart Mergesort, Ondergrens sorteren Quicksort, Shellsort College 6 Zesde college complexiteit 19 maart 2019 Mergesort, Ondergrens sorteren Quicksort, Shellsort 1 Vorige keer Voor sorteeralgoritmen gebaseerd op arrayvergelijkingen, waarbij per arrayvergelijking

Nadere informatie

Oefententamen in2505-i Algoritmiek

Oefententamen in2505-i Algoritmiek TECHNISCHE UNIVERSITEIT DELFT Faculteit Elektrotechniek, Wiskunde en Informatica Oefententamen in2505-i Algoritmiek Maart 2007 Het gebruik van boek of aantekeningen tijdens dit tentamen is niet toegestaan.

Nadere informatie

Uitwerking tentamen Algoritmiek 9 juli :00 13:00

Uitwerking tentamen Algoritmiek 9 juli :00 13:00 Uitwerking tentamen Algoritmiek 9 juli 0 0:00 :00. (N,M)-game a. Toestanden: Een geheel getal g, waarvoor geldt g N én wie er aan de beurt is (Tristan of Isolde) b. c. Acties: Het noemen van een geheel

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

Eerste Toets Datastructuren 11 juli 2018, , Educ-α.

Eerste Toets Datastructuren 11 juli 2018, , Educ-α. Eerste Toets Datastructuren 11 juli 2018, 13.30 15.30, Educ-α. Motiveer je antwoorden kort! Stel geen vragen over deze toets; als je een vraag niet duidelijk vindt, schrijf dan op hoe je de vraag interpreteert

Nadere informatie

Opgaven Kunstmatige Intelligentie 1 maart 2017

Opgaven Kunstmatige Intelligentie 1 maart 2017 Opgaven Kunstmatige Intelligentie 1 maart 2017 Opgave 1. a. Denkt een schaakprogramma? b. Denkt een (Nederlands-Engels) vertaalprogramma? c. Denkt een C ++ -compiler? d. Denkt Watson, the IBM-computer

Nadere informatie

Algoritmen, Datastructuren en Complexiteit ( en ) Uitwerkingen

Algoritmen, Datastructuren en Complexiteit ( en ) Uitwerkingen Universiteit Twente 2009-2010/2 Afdeling Informatica, Faculteit EWI Tentamen dinsdag 19 januari 2010, 8.45-12.15 Algoritmen, Datastructuren en Complexiteit (214020 en 214025) Uitwerkingen Bij dit tentamen

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

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

Tweede Toets Datastructuren 27 juni 2018, , Olympos Hal 2.

Tweede Toets Datastructuren 27 juni 2018, , Olympos Hal 2. Tweede Toets Datastructuren 27 juni 2018, 13.30 15.30, Olympos Hal 2. 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

Tweede Toets Datastructuren 26 juni 2019, , Educ-β.

Tweede Toets Datastructuren 26 juni 2019, , Educ-β. Tweede Toets Datastructuren 26 juni 2019, 17.00 19.00, Educ-β. Motiveer je antwoorden kort! Stel geen vragen over deze toets; als je een vraag niet duidelijk vindt, schrijf dan op hoe je de vraag interpreteert

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

Datastructuren: stapels, rijen en binaire bomen

Datastructuren: stapels, rijen en binaire bomen Programmeermethoden Datastructuren: stapels, rijen en binaire bomen week 12: 23 27 november 2015 www.liacs.leidenuniv.nl/ kosterswa/pm/ 1 Inleiding In de informatica worden Abstracte DataTypen (ADT s)

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

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 [email protected] 3 maart 2008 GRAFEN & BOMEN Paragrafen 6.1-6.4 Discrete Structuren

Nadere informatie

Uitwerking tentamen Algoritmiek 10 juni :00 13:00

Uitwerking tentamen Algoritmiek 10 juni :00 13:00 Uitwerking tentamen Algoritmiek 10 juni 2014 10:00 13:00 1. Dominono s a. Toestanden: n x n bord met in elk hokje een O, een X of een -. Hierbij is het aantal X gelijk aan het aantal O of hooguit één hoger.

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

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. 2 februari Introductie

Algoritmiek. 2 februari Introductie College 1 Algoritmiek 2 februari 2017 Introductie 1 Introductie -1- docent: Rudy van Vliet [email protected] assistent werkcollege: Bart van Strien [email protected] website: http://www.liacs.leidenuniv.nl/~vlietrvan1/algoritmiek/

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 [email protected] 23 februari 2009 GRAFEN & BOMEN Paragrafen 6.1-6.4 Discrete Structuren Week 3 en 4:

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

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

Examen Datastructuren en Algoritmen II

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

Nadere informatie

Datastructuren: stapels, rijen en binaire bomen

Datastructuren: stapels, rijen en binaire bomen Programmeermethoden : stapels, rijen en binaire bomen Walter Kosters week 12: 26 30 november 2018 www.liacs.leidenuniv.nl/ kosterswa/pm/ 1 en Vierde programmeeropgave Othello programmeren we als volgt:

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

Vierde college algoritmiek. 2 maart Toestand-actie-ruimte Exhaustive Search

Vierde college algoritmiek. 2 maart Toestand-actie-ruimte Exhaustive Search Algoritmiek 2018/Toestand-actie-ruimte Vierde college algoritmiek 2 maart 2018 Toestand-actie-ruimte Exhaustive Search 1 Algoritmiek 2018/Toestand-actie-ruimte Kannen Voorbeeld 4: Kannenprobleem We hebben

Nadere informatie

Opgaven Zoekbomen Datastructuren, 15 juni 2016, Werkgroep.

Opgaven Zoekbomen Datastructuren, 15 juni 2016, Werkgroep. Opgaven Zoekbomen Datastructuren, 15 juni 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 zes tot acht opgaven.

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 [email protected] 22 februari 2009 INDUCTIE & RECURSIE Paragrafen 4.3-4.6 Discrete Structuren Week 3:

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

Eerste Toets Datastructuren 25 mei 2018, , Educ-Γ.

Eerste Toets Datastructuren 25 mei 2018, , Educ-Γ. Eerste Toets Datastructuren 25 mei 2018, 11.00 13.00, Educ-Γ. Motiveer je antwoorden kort! Stel geen vragen over deze toets; als je een vraag niet duidelijk vindt, schrijf dan op hoe je de vraag interpreteert

Nadere informatie

Opgaven QuickSort 3 mei 2019, Werkgroep, Datastructuren.

Opgaven QuickSort 3 mei 2019, Werkgroep, Datastructuren. Opgaven QuickSort 3 mei 2019, Werkgroep, Datastructuren. Als je klaar bent, maak dan de opgaven van vorige keer af. Cijfer: Op een toets krijg je meestal zes tot acht opgaven. 1. Doe QuickSort: Voer QuickSort

Nadere informatie

Tree traversal. Bomen zijn overal. Ferd van Odenhoven. 15 november 2011

Tree traversal. Bomen zijn overal. Ferd van Odenhoven. 15 november 2011 15 november 2011 Tree traversal Ferd van Odenhoven Fontys Hogeschool voor Techniek en Logistiek Venlo Software Engineering 15 november 2011 ODE/FHTBM Tree traversal 15 november 2011 1/22 1 ODE/FHTBM Tree

Nadere informatie

Divide & Conquer: Verdeel en Heers. Algoritmiek

Divide & Conquer: Verdeel en Heers. Algoritmiek Divide & Conquer: Verdeel en Heers Algoritmiek Algoritmische technieken Trucs; methoden; paradigma s voor het ontwerp van algoritmen Gezien: Dynamisch Programmeren Hierna: Greedy Vandaag: Divide & Conquer

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

Tentamen Kunstmatige Intelligentie (INFOB2KI)

Tentamen Kunstmatige Intelligentie (INFOB2KI) Tentamen Kunstmatige Intelligentie (INFOB2KI) 12 december 2014 8:30-10:30 Vooraf Mobiele telefoons en dergelijke dienen uitgeschakeld te zijn. Het eerste deel van het tentamen bestaat uit 8 multiple-choice

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

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

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

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

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

Examen Datastructuren en Algoritmen II

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

Nadere informatie

Stacks and queues. Hoofdstuk 6

Stacks and queues. Hoofdstuk 6 Hoofdstuk 6 Stacks and queues I N T R O D U C T I E In dit hoofdstuk worden drie datastructuren stack, queue en deque behandeld. Om deze datastructuren te implementeren, worden onder andere arrays en linked

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

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

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

Datastructuren; (Zoek)bomen

Datastructuren; (Zoek)bomen Datastructuren; (Zoek)bomen Bomen, zoekbomen, gebalanceerde zoekbomen José Lagerberg FNWI, UvA José Lagerberg (FNWI, UvA) Datastructuren; (Zoek)bomen 1 / 50 Bomen Traversal van bomen Datastructuur van

Nadere informatie

Elke groep van 3 leerlingen heeft een 9 setje speelkaarten nodig: 2 t/m 10, bijvoorbeeld alle schoppen, of alle harten kaarten.

Elke groep van 3 leerlingen heeft een 9 setje speelkaarten nodig: 2 t/m 10, bijvoorbeeld alle schoppen, of alle harten kaarten. Versie 16 januari 2017 Sorteren unplugged Sorteren gebeurt heel veel. De namen van alle leerlingen in de klas staan vaak op alfabetische volgorde. De wedstrijden van een volleybal team staan op volgorde

Nadere informatie

Opgaven Heaps Datastructuren, 8 juni 2018, Werkgroep.

Opgaven Heaps Datastructuren, 8 juni 2018, Werkgroep. Opgaven Heaps Datastructuren, 8 juni 2018, 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 acht opgaven.

Nadere informatie