Opgaven Stacks, Lijsten, Queues Datastructuren, Werkgroep, 2 juni 2017.
|
|
- Paula de Meyer
- 6 jaren geleden
- Aantal bezoeken:
Transcriptie
1 Opgaven Stacks, Lijsten, Queues Datastructuren, Werkgroep, 2 juni 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. 1. De MinStack: Een MinStack kent, net als de gewone Stack, een Push(x) en Pop operatie. Daarnaast is er een operatie MinKey die de kleinste waarde in de MinStack oplevert (maar niet verwijdert). Geef een implementatie van MinStack die deze drie genoemde operaties in O(1) tijd uitvoert. Oplossing: Je kunt zowel de statische als de dynamische implementatie gemakkelijk uitbreiden. Voor de dynamische: Maak Nodes met daarin de gebruikelijke Key en Prev, en daarnaast een veld Mini, voorstellende de kleinste waarde onder deze en oudere keys. Bij het Pushen moet je de waarde van Mini invullen als min(key, Prev.Mini). De MinKey query geeft antwoord top.mini. 2. Twee Stacks: Boek Cormen, Vraag Oplossing: Zet de ene stack vooraan in de array en de andere achteraan. Zeg de stacks heten L en R en je weet al dat er samen nooit meer dan n dingen op staan. Maak een Array A van n lang en initialiseer Ltop=0; Rtop=n-1;. De Push(x) voor L is A[Ltop++]=x; en de Pop voor L is return [A--Ltop];. De Push(x) voor R is A[Rtop--]=x;. 3. De SomQueue: Een SomQueue kent, net als de gewone Queue, een Enq(x) en Deq operatie. Daarnaast is er een operatie SumKey die de som van alle aanwezige waarden in de MinQueue oplevert. Geef een implementatie van MinQueue die deze drie genoemde operaties in O(1) tijd uitvoert. Oplossing: Je kunt, bij elke implementatie van een Queue, de som van de keys gemakkelijk apart bijhouden. De MinQueue bestaat dus uit een Queue Q en een int total. De Enq(x) is dan Q.Enq(x); total+=x;.
2 4. Queue met Twee Stacks: Boek Cormen, Vraag Oplossing: Gebruik Stack A als binnenkomende stack en B als uitgaande stack. Alle elementen in A zijn nieuwer dan alle elementen in B, in A staan de nieuwste elementen bovenin en in B staan de oudste elementen bovenin. Een enq(x) wordt een push(x) op A, een deq wordt een pop van B. Alleen als je wilt dequeuen en B is leeg, stapel je eerst alle elementen van A over naar B (hierbij wordt de volgorde natuurlijk omgekeerd, de nieuwere elementen komen nu onderop). De tijd is O(1) als er niet overgestapeld wordt. Zo nu en dan heb je een dure dequeue, namelijk als er wel wordt omgestapeld. Omdat elk element hoogstens 1 keer wordt omgestapeld, nadat het is ge-enqueued, kost het omstapelen gemiddeld O(1) over alle enqueues. 5. De MinQueue: Een MinQueue kent, net als de gewone Queue, een Enq(x) en Deq operatie. Daarnaast is er een operatie MinKey die de kleinste waarde in de MinQueue oplevert (maar niet verwijdert). Geef een implementatie van MinQueue die deze drie genoemde operaties in O(1) tijd uitvoert. Oplossing: Gebruik de implementatie van Queue s met twee Stacks, en ga uit van het bestaan van een MinStack. De MQ.MinKey wordt berekend als min(sin.minkey, Sout.MinKey). 6. De PeepQueue: De PeepQueue kent, net als de gewone Queue, operaties Enqueue(x) en Dequeue, maar daarnaast (in analogie met de Top van een Stack) een methode Peep die de voorste waarde in de Queue oplevert, maar niet verwijdert. Laat zien hoe je een gegeven Queue kunt uitbreiden naar een peepqueue, waarbij alle operaties O(1) tijd blijven. Oplossing: Truukje is hier, om het voorste element in de PeepQueue apart te houden van de Queue. Dus je peepqueue bestaat uit elementen in een Queue, plus een extra element front. Enqueue gaat gewoon achterin de Queue; Peep is return front zonder iets te veranderen, Dequeue is front opleveren en vervangen door een Dequeue uit de Queue. Gevallen waar de PeepQueue 0 of 1 element bevat even apart afhandelen. Om aan een Stack de Top operatie toe te voegen, kun je een element Poppen, bekijken en terugpushen, maar zo kan het voor een Queue niet (in constante tijd). 7. Duur van Hanoi: Hoeveel zetten zijn nodig in de Torens van Hanoi met n schijven? Oplossing: De reeks bestaat uit twee subreeksen vvoor n 1 schijven, plus een zet. Dit geeft een recursie H(n) = 2H(n 1) + 1, met randvoorwaarde H(1) = 1 (of H(0) = 0). De oplossing is H(n) = 2 n 1. Er is een legende dat monnikken bezig zijn een stapel van 64 te verplaatsen, en dat de wereld vergaat als ze klaar zijn. Gelukkig dus maar dat de lengte van de reeks exponentieel is!
3 8. Hanoi met handicap: In de originele Hanoi puzzle kun je een schijf willekeurig verplaatsen. Veronderstel nu, dat de drie pinnen A, B en C op een rij staan, dus met B in het midden, en dat een verplaatsing rechtstreeks van A naar C hierdoor niet mogelijk is. (a) Bedenk hoe je een stapel van n schijven kunt verplaatsen van A naar C. (b) Hoeveel stappen zijn nodig? (c) Bewijs, dat je tijdens dit proces, elke legale configuratie van schijven tegenkomt. Oplossing: (a) Kijk weer naar de grootste van de n schijven. Er moet een stap X zijn waarin die van A naar B gaat, en een stap Y waarin die van B naar C gaat. Op het moment van stap X moeten alle kleinere schijven op C staan, en op het moment van stap T moeten al die kleinere schijven op A staan. De reeks HH(A, C, n) bestaat dus uit HH(A, C, n 1), een verschuiving AB, HH(C, A, n 1), een verschuiving BC, en HH(A, C, n 1). (b) Voor de lengte van deze reeks geldt L(n) = 2 + 3L(n 1). Door een klein aantal waarden uit te schrijven, kun je op het idee komen dat de oplossing wel eens L(n) = 3 n 1 zou kunnen zijn. Met inductie kun je dat ook bewijzen. (c) Omdat je 3 n 1 stappen doet, zie je 3 n achtereenvolgende configuraties. Als hier een dubbele in zou zitten, dan was een kortere reeks mogelijk, en hoewel ik dat niet helemaal bewezen heb, heb ik toch het idee dat de geschetste oplossing optimaal is. We krijgen dus 3 n verschillende configuraties te zien. Omdat per pin de schijven altijd van groot naar klein liggen, wordt elke configuratie volledig bepaald door waar elke schijf ligt. Elk van de n schijven kan op 3 posities liggen, dus er bestaan 3 n mogelijke configuraties.
4 9. Stack met Twee Queues: Boek Cormen, Vraag Oplossing: Een Stack maken uit twee Queues kan volgens mij niet beter dan in lineaire tijd worst case. Als je iets in een queue hebt gestopt, komt dat er pas na lineair veel operaties weer uit, terwijl je het bij een stack in de volgende pop weer nodig hebt. Die ene pop zal dus lineair veel dequeues moeten doen. Je kunt misschien enkele elementen buiten de queues bewaren om een pop dirct na een push snel te kunnen beantwoorden. Maar het lijkt me tegen de geest van de opdracht om meer dan een constant aantal keys, zeg d, apart te houden. Als je dan d keer pusht gaat toch een van je recente keys een queue in, en kun je er niet snel weer bij. Maar geamortiseerd kan het wel beter namelijk in gemiddeld O( n) tijd per stack operatie. Gebruik een OnderQueue voor het oudste deel van je elementen (de oudste vooraan) en een BovenQueue voor het nieuwst toegevoegde gedeelte (de allernieuwste achteraan en de bijna nieuwe vooraan). Voor een Push(x) voeg je x toe in de BovenQueue met Boven.Enqueue(x). Voor een Pop moet je de hele BovenQueue ronddraaien, dus alles dequeuen en weer enqueuen behalve de laatste want die lever je op. De tijd voor een Pop is dus lineair in de omvang van de BovenQueue. Als de BovenQueue leeg is of te groot wordt, is het tijd voor een uitwisseling met de Onder- Queue. Bij een te grote BovenQueue draai je ze allemaal rond, waarbij een aantal van de voorkant weer achteraan erin worden gestopt, maar de latere (dus oudere) aan de Onder- Queue worden toegevoegd. De BovenQueue is nu kleiner geworden in tijd evenredig met zijn oude omvang. Als de BovenQueue leeg is gaan we de hele OnderQueue doordraaien, waarbij we het eerste gedeelte (dat het oudst is) weer terugzetten en het laatste gedeelte (dat de nieuwere keys bevat) zetten we in de BovenQueue. Hierdoor wordt de BovenQueue weer aangevuld, maar dit is wel de duurste operatie want alle keys komen langs dus dit is Θ(n) tijd. De kunst is nu heel simpel om de omvang van de BovenQueue te bepalen op ongeveer Θ( n) keys, en ook met een zo grote bandbreedte, dus bv 1 tot 3 maal n. De operaties die alleen de BovenQueue doordraaien kosten nu sowieso maar Θ( n) tijd. Het dure doordraaien van de OnderQueue komt maar eens per Ω( n) operaties voor dus komt op O( n) gemiddeld. Ik vind dit wel een leuke opgave, maar qua moeilijkheid is hij waarschijnlijk meer iets voor het vak Algoritmiek. Zou het ook met drie queues kunnen in O(n 1/3 ) of met vier in O( n)?
5 10. A2B Recursief: Renske heeft een veel simpeler idee om A2B op te lossen. Immers, je kunt vanuit a, b bereiken, als b = a, of b is te bereiken vanuit a+1 (na een Inc) of 2a (na een Dub). Dus: Mogelijk(A,B) = (A==B) OF Mogelijk (A+1,B) OF Mogelijk(2A,B). En voor het minimale aantal stappen geldt: Stap(A,B) = IF (A==B) 0 ELSE Min(Stap(A+1,B), Stap(2A,B)). (a) Implementeer Renske s idee met een recursief algoritme. (b) Voor welke invoeren werkt het sneller en voor welke trager? (c) Helpt het om de clausules andersom in je programma op te nemen? Oplossing: 11. De MinStack: Een MinStack kent naast de standaard Stack-operaties, een operatie MinKey die de kleinste waarde in de MinStack oplevert (maar niet verwijdert). (a) Wat zijn de standaard operaties om data toe te voegen aan en te verwijderen van een gewone Stack en in hoeveel tijd worden ze uitgevoerd? (b) Geef een implementatie (drie methoden) van MinStack die deze operaties en de MinKey in O(1) tijd uitvoert. Oplossing: (a) Toevoegen doe je met Push(x) en verwijderen met Pop(). (b) Je kunt zowel de statische als de dynamische implementatie gemakkelijk uitbreiden. Voor de statische neem je twee arrays, k en m, waarbij k[i] de i de key bevat en m[i] het minimum van de eerste i+1 keys. Voor de dynamische: Maak Nodes met daarin de gebruikelijke Key en Prev, en daarnaast een veld Mink, voorstellende de kleinste waarde onder deze en oudere keys. Bij het Pushen moet je de waarde van Mink invullen als min(key, Prev.Mink). De Push(x) is dan top = new Node(x, Min(x, top.mink), top). De Pop doet r = top.key; top = top.next; return r;. De MinKey query geeft antwoord top.mink. Tot 3pt, eentje voor (a) en 2 voor (b). Codes: M = Implementatie die alleen de bestaande uitbreidt. S = Alleen de Standaardoperaties (Push en Pop) werken, 1pt. 12. A2B met Kwadraat: Download het PILletje A2BFS. (a) Extra stap: Stel dat je ook in een stap mag kwadrateren. Breid het programma uit om een kortste reeks uit te rekenen. Het mooist is als deze extra mogelijkheid aan en uit te schakelen is (net als de Mineen). (b) Beprijsde A2B: Neem aan dat de verschillende stappen een verschillende prijs hebben. Bv I of M kost 1, D kost 2 en K kost 3. Of nog mooier: maak een commando c i m d k dat de vier kosten inleest. Pas je programma aan om de goedkoopste A-B reeks te vinden. (c) Queue geheugengebruik: Breidt het programma uit om bij te houden hoeveel states er maximaal tegelijk in de Queue zitten. Oplossing: (a) Even wat programmeerwerk om te kijken of je het echt een beetje snapt. (b) Voor een gewogen variant van het probleem heb je Dijkstra nodig! (c) Vergelijk deze maximale Queue-lengte bij BFS eens met de maximale Stack-hoogte bij Hanoi (of QuickSort) en schrik!
6 13. QuickSort Non-Recursief: Gebruik een Stack om een niet-recursieve implementatie van QuickSort te maken. Oplossing: 14. Torens van Hanoi: Download en bekijk de PIL StackHanoi. (a) Voor de reeks met n schijven, wat is de maximale hoogte die de Stack bereikt? (b) Hoeveel Pops vinden er plaats? (c) Breid het programma zo uit, dat na elke stap ook wordt afgedrukt, hoeveel schijven er daarna op elke pin liggen. Oplossing: Je kunt hier natuurlijk vreselijk hard over gaan nadenken, maar je kunt ook je programma met een paar assignments uitbreiden om die maxhoogte bij te houden. Dan zie je al snel dat de maxhoogte 2n 1 is en het aantal items exponentieel. Het geheugengebruik is dus significant kleiner dan het totale aantal dingen dat in de Stack wordt opgeslagen. 15. BFS en Caveman: Download het PILletje A2BFS. De enige plaats waar de structuur van het probleem wordt gebruikt is de berekening van de List<int> Suc met opvolgers (successors) van getal u. Bekijk het puzzeltje Icecube Caveman in GooglePlay of AppStore. Je kunt een positie van Caveman coderen in een integer, en uitrekenen welke andere posities (integers) je vanuit een positie u kunt bereiken. Dwz. door drie regels in A2BFS te vervangen door andere (en waarschijnlijk iets meer) regels, krijg je een Icecube Caveman solver. Succes! Oplossing: Gebruik een paar bits (bv 8 voor breedte/hoogte tot 256) voor de x en y positie, en twee bits voor de orientatie van Caveman. De hogere levels van Icecube kennen ook toverschotsen. Zolang dat er niet al te veel zijn, kun je hun stand meecoderen met een paar bits in de toestandsinteger. Het bouwen van deze solver is een praktikumopdracht van Algoritmiek geweest. 16. BFS en RushHour: Download het PILletje A2BFS. De enige plaats waar de structuur van het probleem wordt gebruikt is de berekening van de List<int> Suc met opvolgers (successors) van getal u. Bekijk het puzzeltje Rush Hour in GooglePlay of AppStore. Je kunt een bordstand coderen in een rijtje integers, en uitrekenen welke andere posities (rijtjes) je vanuit een positie u kunt bereiken. Dwz. door een handvol regels in A2BFS te vervangen door andere (en waarschijnlijk iets meer) regels, krijg je een Rush Hour solver. Succes! Oplossing: Het bouwen van deze solver is een praktikumopdracht van Concurrency geweest.
Opgaven Abstracte Datastructuren Datastructuren, Werkgroep, 31 mei 2017.
Opgaven Abstracte Datastructuren Datastructuren, Werkgroep, 31 mei 2017. Gebruik deze opgaven, naast die uit het boek, om de stof te oefenen op het werkcollege. Cijfer: Op een toets krijg je meestal zes
Nadere informatieTweede 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 informatieLineaire data structuren. Doorlopen van een lijst
Lineaire data structuren array: vast aantal data items die aaneensluitend gestockeerd zijn de elementen zijn bereikbaar via een index lijst: een aantal individuele elementen die met elkaar gelinkt zijn
Nadere informatieRecursion. 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 informatieTweede 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 informatieStacks 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 informatieTweede deeltoets Algoritmiek 14 april 2015, , Educ-Γ.
Tweede deeltoets Algoritmiek 14 april 2015, 17.00 19.00, Educ-Γ. Motiveer je antwoorden kort. Stel geen vragen over de toets, maar vermeld bij twijfel hoe je de vraag interpreteert. Maak vraag 1 en 2 op
Nadere informatieAchtste college algoritmiek. 8 april Dynamisch Programmeren
Achtste college algoritmiek 8 april 2016 Dynamisch Programmeren 1 Werkcollege-opgave Dutch Flag Problem Gegeven een array gevuld met R, W, en B. Reorganiseer dit array zo dat van links naar rechts eerst
Nadere informatieDerde college algoritmiek. 23 februari Complexiteit Toestand-actie-ruimte
Algoritmiek 2018/Complexiteit Derde college algoritmiek 2 februari 2018 Complexiteit Toestand-actie-ruimte 1 Algoritmiek 2018/Complexiteit Tijdcomplexiteit Complexiteit (= tijdcomplexiteit) van een algoritme:
Nadere informatieOpgaven 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 informatieDerde 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 informatieDivide & 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 informatierecursie 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 informatieProgrammeermethoden. 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 informatieStacks and queues. Introductie 45. Leerkern 45. Terugkoppeling 49. Uitwerking van de opgaven 49
Stacks and queues Introductie 45 Leerkern 45 6.1 Stacks 45 6.2 Queues 47 6.3 Double-ended queues 48 Terugkoppeling 49 Uitwerking van de opgaven 49 Bijlage: Diagrammen belangrijkste interfaces en klassen
Nadere informatieDerde 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 informatieTweede 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 informatieVierde 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 informatieMinimum 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 informatieExamen Datastructuren en Algoritmen II
Tweede bachelor Informatica Academiejaar 2016 2017, eerste zittijd Examen Datastructuren en Algoritmen II Naam :.............................................................................. Lees de hele
Nadere informatieUitwerking 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 informatieProgrammeermethoden 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 informatieZevende 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 informatieVierde 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 informatieZevende college algoritmiek. 23/24 maart Verdeel en Heers
Zevende college algoritmiek 23/24 maart 2017 Verdeel en Heers 1 Algoritmiek 2017/Backtracking Tweede Programmeeropdracht 0 1 2 3 0 1 2 3 4 1 2 3 4 5 2 Algoritmiek 2017/Backtracking Tweede Programmeeropdracht
Nadere informatieEerste 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 informatieZevende college Algoritmiek. 6 april Verdeel en Heers
Zevende college Algoritmiek 6 april 2018 Verdeel en Heers 1 Algoritmiek 2018/Backtracking Programmeeropdracht 2 Puzzel 2: D O N A L D G E R A L D + R O B E R T Elke letter stelt een cijfer voor (0,1,...,9)
Nadere informatie7 Omzetten van Recursieve naar Iteratieve Algoritmen
7 Omzetten van Recursieve naar Iteratieve Algoritmen Het lijkt mogelijk om elke oplossings-algoritme, die vaak in eerste instantie recursief geformuleerd werd, om te zetten in een iteratieve algoritme
Nadere informatieCombinatoriek groep 1 & 2: Recursie
Combinatoriek groep 1 & : Recursie Trainingsweek juni 008 Inleiding Bij een recursieve definitie van een rij wordt elke volgende term berekend uit de vorige. Een voorbeeld van zo n recursieve definitie
Nadere informatieTiende 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 informatieOpgaven Registers Concurrency, 29 nov 2018, Werkgroep.
Opgaven Registers Concurrency, 29 nov 2018, Werkgroep. Gebruik deze opgaven om de stof te oefenen op het werkcollege. Cijfer: Op een toets krijg je meestal zes tot acht opgaven. 1. Safe Integer: Van een
Nadere informatieVierde college complexiteit. 16 februari Beslissingsbomen en selectie
Complexiteit 2016/04 College 4 Vierde college complexiteit 16 februari 2016 Beslissingsbomen en selectie 1 Complexiteit 2016/04 Zoeken: samengevat Ongeordend lineair zoeken: Θ(n) sleutelvergelijkingen
Nadere informatieTiende 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 informatieAlgoritmiek. 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 informatieVierde 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 informatie10 Meer over functies
10 Meer over functies In hoofdstuk 5 hebben we functies uitgebreid bestudeerd. In dit hoofdstuk bekijken we drie andere aspecten van functies: recursieve functies dat wil zeggen, functies die zichzelf
Nadere informatieDatastructuren: 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 informatieDatastructuren 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 informatieVierde 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 informatieExamen Datastructuren en Algoritmen II
Tweede bachelor Informatica Academiejaar 2009 2010, eerste zittijd Examen Datastructuren en Algoritmen II Naam :.............................................................................. Lees de hele
Nadere informatieProgrammeermethoden. 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 informatieALGORITMIEK: antwoorden werkcollege 5
1 ALGORITMIEK: antwoorden werkcollege 5 opgave 1. a. Brute force algoritme, direct afgeleid uit de observatie: loop v.l.n.r. door de tekst; als je een A tegenkomt op plek i (0 i < n 1), loop dan van daaruit
Nadere informatieALGORITMIEK: antwoorden werkcollege 5
ALGORITMIEK: antwoorden werkcollege 5 opgave 1. a. Brute force algoritme, direct afgeleid uit de observatie: loop v.l.n.r. door de tekst; als je een A tegenkomt op plek i (0 i < n 1), loop dan van daaruit
Nadere informatieExamen Datastructuren en Algoritmen II
Tweede bachelor Informatica Academiejaar 2012 2013, tweede zittijd Examen Datastructuren en Algoritmen II Naam :.............................................................................. Lees de hele
Nadere informatieVijfde college algoritmiek. 2/3 maart Exhaustive search
Vijfde college algoritmiek 2/3 maart 2017 Exhaustive search 1 Voor- en nadelen Brute force: Voordelen: - algemeen toepasbaar - eenvoudig - levert voor een aantal belangrijke problemen (zoeken, patroonherkenning)
Nadere informatieExamen Datastructuren en Algoritmen II
Tweede bachelor Informatica Academiejaar 2012 2013, eerste zittijd Examen Datastructuren en Algoritmen II Naam :.............................................................................. Lees de hele
Nadere informatieAmorized Analysis en Union-Find Algoritmiek
Amorized Analysis en Union-Find Vandaag Amortized analysis Technieken voor tijdsanalyse van algoritmen Union-find datastructuur Datastructuur voor operaties op disjuncte verzamelingen Verschillende oplossingen
Nadere informatieDatastructuren. 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 informatieDatastructuren 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 informatieProgrammeermethoden 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 informatieElfde 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 informatieTiende 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 informatieRecursie: 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 informatieDatastructuren 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 informatieDatastructuren en algoritmen voor CKI
Datastructuren en algoritmen voor CKI Jeroen Bransen 1 30 september 2015 1 met dank aan Hans Bodlaender en Gerard Tel Dynamische verzamelingen Stack implementaties Array met maximale grootte Linked List
Nadere informatieDerde college algoritmiek. 18 februari Toestand-actie-ruimte
Derde college algoritmiek 18 februari 2016 Toestand-actie-ruimte 1 BZboom: zoeken Na het bomenpracticum 60 20 80 10 40 70 100 1 15 30 75 5 25 35 2 BZboom: verwijderen 60 20 80 10 40 70 100 1 15 30 75 5
Nadere informatieGreedy algoritmes. Algoritmiek
Greedy algoritmes Algoritmiek Algoritmische technieken Trucs, methoden, paradigma s voor het ontwerpen van algoritmen Dynamisch Programmeren Divide & Conquer Greedy 2 Greedy algoritme Bouwt de oplossing
Nadere informatieEerste deeltoets Algoritmiek 4 maart 2015, , Educ-β.
Eerste deeltoets Algoritmiek 4 maart 2015, 8.30 10.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 informatieUitwerking 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 informatieMinimum 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 informatie1 Recurrente betrekkingen
WIS1 1 1 Recurrente betrekkingen 1.1 De torens van Hanoi De torens van Hanoi Edouard Lucas, 1884: Gegeven 3 pinnen en 64 schijven van verschillende grootte. Startsituatie: 64 op linkerpin, geordend naar
Nadere informatieOpgaven Eigenschappen van Getallen Security, 2018, Werkgroep.
Opgaven Eigenschappen van Getallen Security, 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 informatieKortste 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 informatieAchtste college algoritmiek. 12 april Verdeel en Heers. Dynamisch Programmeren
Achtste college algoritmiek 12 april 2019 Verdeel en Heers Dynamisch Programmeren 1 Uit college 7: Partitie Partitie Partitie(A[l r]) :: // partitioneert een (sub)array, met A[l] als spil (pivot) p :=
Nadere informatieExamen Datastructuren en Algoritmen II
Tweede bachelor Informatica Academiejaar 2014 2015, eerste zittijd Examen Datastructuren en Algoritmen II Naam :.............................................................................. Lees de hele
Nadere informatieALGORITMIEK: antwoorden werkcollege 5
ALGORITMIEK: antwoorden werkcollege 5 opgave 1. a. Brute force algoritme, direct afgeleid uit de observatie: loop v.l.n.r. door de tekst; als je een A tegenkomt op plek i (0 i < n 1), loop dan van daaruit
Nadere informatieTiende 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 informatieInleiding 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 informatieDivide & 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 informatieDerde college algoritmiek. 16/17 februari Toestand-actie-ruimte
Derde college algoritmiek 16/17 februari 2017 Toestand-actie-ruimte 1 Toestand-actie-ruimte Probleem Toestand-actie-ruimte Een toestand-actie-ruimte (toestand-actie-diagram, state transition diagram, toestandsruimte,
Nadere informatieOpgaven Recursie: Analyse en Master Theorem Datastructuren, 6 juni 2018, Werkgroep.
Opgaven Recursie: Analyse en Master Theorem Datastructuren, 6 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
Nadere informatieTweede 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 informatieOpgaven Fibonacci-getallen Datastructuren, 23 juni 2017, Werkgroep.
Opgaven Fibonacci-getallen Datastructuren, 3 juni 017, 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 informatieTweede 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 informatieOpgaven 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 informatieDe Leidsche Flesch Studievereniging voor Natuurkunde, Sterrenkunde, Wiskunde en Informatica sinds DLF Pointerworkshop
DLF Pointerworkshop Opgaven 2 maart 2016 XKCD # 371 In dit document staan een aantal oude tentamenopgaven om te oefenen voor het hertentamen PR Bij de selectie is rekening gehouden met de opgaven die het
Nadere informatieVijfde 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 informatieNegende college algoritmiek. 15 april Dynamisch Programmeren
Negende college algoritmiek 15 april 2016 Dynamisch Programmeren 1 algemeen Uit college 8: DP: - nuttig bij problemen met overlappende deelproblemen - druk een oplossing van het probleem uit in oplossingen
Nadere informatieArrays in LOGO. In LOGO heeft de eerste item van de array standaard index 1.
Arrays in LOGO Een array Is één variabele die verschille items bevat. Iedere item heeft een waarde. De items staan in een bepaalde volgorde. Het is dus een rij van waarden. De positie van iedere item in
Nadere informatieOpgaven 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 informatieDivide & 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 Volgend college: Greedy Vandaag: Divide
Nadere informatieProgrammeren A. Genetisch Programma voor het Partitie Probleem. begeleiding:
Programmeren A Genetisch Programma voor het Partitie Probleem begeleiding: Inleiding Het Partitie Probleem luidt als volgt: Gegeven een verzameling van n positieve integers, vindt twee disjuncte deelverzamelingen
Nadere informatieInleiding 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 informatieDiscrete 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 informatieUitgebreide 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 informatieExamen Datastructuren en Algoritmen II
Tweede bachelor Informatica Academiejaar 2005 2006, eerste zittijd Examen Datastructuren en Algoritmen II Naam :.............................................................................. 1. Splaybomen
Nadere informatieEerste 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 informatieOpgaven Zoekbomen Datastructuren, 20 juni 2018, Werkgroep.
Opgaven Zoekbomen Datastructuren, 20 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 informatieZevende 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 informatieTweede Huiswerk Security 26 of 28 oktober, 11.00, Nabespreken op Werkcollege.
Tweede Huiswerk Security 26 of 28 oktober, 11.00, Nabespreken op Werkcollege. Kijk het huiswerk van je collega s na en schrijf de namen van de nakijkers linksboven en het totaalcijfer rechts onder de namen
Nadere informatieCombinatoriek groep 1
Combinatoriek groep 1 Recursie Trainingsdag 3, 2 april 2009 Getallenrijen We kunnen een rij getallen a 0, a 1, a 2,... op twee manieren definiëren: direct of recursief. Een directe formule geeft a n in
Nadere informatieDerde college algoritmiek. 23 februari Toestand-actie-ruimte
College 3 Derde college algoritmiek 23 februari 2012 Toestand-actie-ruimte 1 BZboom: verwijderen 60 20 80 10 40 70 100 1 15 30 75 5 25 35 100 verwijderen = 60 20 80 10 40 70 1 15 30 75 5 25 35 verwijderen
Nadere informatieOpgaven 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 informatieCombinatoriek groep 1
Combinatoriek groep 1 Recursie Trainingsweek, juni 009 Stappenplan homogene lineaire recurrente betrekkingen Even herhalen: het stappenplan om een recurrente betrekking van orde op te lossen: Stap 1. Bepaal
Nadere informatieCombinatoriek 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 informatieUitwerking tentamen Algoritmiek 9 juni :00 17:00
Uitwerking tentamen Algoritmiek 9 juni 2015 14:00 17:00 1. Clobber a. Toestanden: m x n bord met in elk hokje een O, een X of een -. Hierbij is het aantal O gelijk aan het aantal X of er is hooguit één
Nadere informatieDatastructuren Uitwerking jan
Datastructuren Uitwerking jan 16 1 1a) Een ADT wordt gekenmerkt door de opgeslagen gegevens en de beschikbare operaties. De Priority Queue bevat en verzameling elementen waarbij elk element en eigen waarde
Nadere informatieTwaalfde 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 informatieVierde college algoritmiek. 1 maart Toestand-actie-ruimte Brute Force
Algoritmiek 2019/Toestand-actie-ruimte Vierde college algoritmiek 1 maart 2019 Toestand-actie-ruimte Brute Force 1 Algoritmiek 2019/Toestand-actie-ruimte Torens van Hanoi Voorbeeld 3: Torens van Hanoi
Nadere informatieTweede 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