De symmetrische min-max heap
|
|
- Nelly Beckers
- 5 jaren geleden
- Aantal bezoeken:
Transcriptie
1 De symmetrische min-max heap Tweede programmeeropdracht Datastructuren, najaar 2006 De symmetrische min-max heap (SMM heap) is een datastructuur waarin getallen (of andere elementen met een lineaire ordening) kunnen worden opgeslagen en waar je zowel het minimum als het maximum op een efficiënte manier kunt opvragen of uithalen. De bedenkers van deze datastructuur, A. Arvind en C. Pandu Rangan, presenteerden haar in een artikel ([1]) dat als bijlage integraal is opgenomen in het leesboek Datastructuren van dit jaar. Los daarvan is in het leesboek ook een paragraaf aan de SMM heap gewijd. Hier zullen we ons beperken tot enkele hoofdzaken. De SMM heap is een volledige binaire boom, die dus eenvoudig in een array kan worden opgeslagen. De wortel van de boom is een dummy knoop; hij bevat geen element. Verder heeft de boom de volgende eigenschap: voor iedere knoop X die zowel een linker- als een rechterkind heeft, geldt: het linkerkind van X bevat het minimum van alle nakomelingen van X en het rechterkind van X bevat het maximum van alle nakomelingen van X. Het minimum van de totale heap is dus te vinden in het linkerkind van de wortel en het maximum in het rechterkind van de wortel. Een equivalente, maar meer practische karakterisatie van eigenschap (1) is: voor iedere knoop X die zowel een linkerkind Y 1 als een rechterkind Y 2 heeft, geldt: (1) de waarde in Y 1 is kleiner dan of gelijk aan de waarde in Y 2 ; als de knoop Z een kleinkind is van X, dan is de waarde in Z groter dan of gelijk aan de waarde in Y 1, en kleiner dan of gelijk aan de waarde in Y 2. (2) Wanneer een element aan de SMM heap wordt toegevoegd, wordt dat in eerste instantie ná het laatste element (het meest rechtse element op het onderste niveau) van de heap geplaatst, waarna het omhoog borrelt naar de juiste positie. Bij het verwijderen van een element (het minimum of het maximum) wordt het laatste element van de heap naar de leeggekomen plek verplaatst, waarna het omlaag borrelt naar de juiste positie. Opdracht 2a: kale implementatie Je moet de datastructuur symmetrische min-max heap uitwerken tot een klasse SMMheap in C++, in bestanden smmheap.cc en smmheap.h. Hierbij dien je de heap te representeren met behulp van een array A. Als extraatje moet je een vergelijkend onderzoek doen naar het opbouwen van een SMM heap van bovenaf en van onderop. Uitgaande van een willekeurige complete binaire boom (met een dummy knoop als wortel) kun je de SMM heap eigenschap 1
2 (2) zowel top-down als bottom-up opbouwen (vergelijk dit met het opbouwen van een gewone heap). Het lijkt aannemelijk dat de bottom-up benadering gemiddeld minder vergelijkingen van heap elementen vereist dan de top-down benadering. Met jouw implementatie van de heap en het door ons gemaakte testprogramma moet je onderzoeken of dit inderdaad het geval is. Om de datastructuur te kunnen gebruiken (en testen) moet de syntax van de klasse SMMheap overeenkomen met het volgende fragment: #typedef int HValueTp // in plaats van template class SMMheap { public: SMMheap (int D); ~SMMheap (); bool IsEmpty (); bool IsFull (); HValueTp Minimum (); HValueTp DeleteMin (); HValueTp Maximum (); HValueTp DeleteMax (); bool Insert (HValueTp NwValue); int FillTD (HValueTp *B, int N); int FillBU (HValueTp *B, int N); private: HValueTp *A; // hierin wordt de SMM heap opgeslagen int Eerste, // index van eerste element in de SMM heap Laatste; // index van laatste element in de SMM heap // (= Eerste - 1 als de SMM heap leeg is) // uw eigen velden & methodes (public, private) }; De verschillende methodes van de klasse SMMheap worden als volgt gespecificeerd: SMMheap (int D); Constructor: creëer een nieuwe SMM heap waar precies D elementen in passen, maar die nu nog leeg is. ~SMMheap (); Destructor. bool IsEmpty (); Test of de SMM heap leeg is. bool IsFull (); Test of de SMM heap vol is. HValueTp Minimum (); Retourneer het minimale element in de SMM heap, maar verander de SMM heap niet. 2
3 HValueTp DeleteMin (); Verwijder het minimale element uit de SMM heap en retourneer de waarde. HValueTp Maximum (); Retourneer het maximale element in de SMM heap, maar verander de SMM heap niet. HValueTp DeleteMax (); Verwijder het maximale element uit de SMM heap en retourneer de waarde. bool Insert (HValueTp NwValue); Voeg zo mogelijk het element NwValue toe aan de SMM heap, en retourneer true als dit lukt en false als dit niet meer lukt. int FillTD (HValueTp *B, int N); Copieer de elementen B[1] tot en met B[N] in deze volgorde naar A[Eerste] tot en met A[Eerste+N-1], en bouw daarna pas de SMM heap eigenschap op; doe dit laatste top-down; retourneer het aantal vergelijkingen van heap elementen bij het opbouwen van de SMM eigenschap; pre: de SMM heap is leeg en A is groot genoeg voor alle N elementen int FillBU (HValueTp *B, int N); Copieer de elementen B[1] tot en met B[N] in deze volgorde naar A[Eerste] tot en met A[Eerste+N-1], en bouw daarna pas de SMM heap eigenschap op; doe dit laatste bottom-up; retourneer het aantal vergelijkingen van heap elementen bij het opbouwen van de SMM eigenschap; pre: de SMM heap is leeg en A is groot genoeg voor alle N elementen Het testprogramma biedt je nu een optie die 1. de gebruiker om twee positieve getallen vraagt: N en K; 2. K keer N random getallen tussen 1 en 10 N (inclusief) genereert (dubbele zijn toegestaan) en in een array B stopt, met dit array B als parameter zowel de methode FillTD als FillBU aanroept, de benodigde aantallen vergelijkingen wegschrijft naar een bestand met naam filltdn.dat (bijvoorbeeld filltd100.dat), respectievelijk fillbun.dat (bijvoorbeeld fillbu100.dat); 3. voor beide benaderingen het gemiddelde van de K aantallen vergelijkingen berekent en naar het bijbehorende bestand schrijft. Deze optie laat je voor K = 10 en iedere N {100, 500, 1000, 5000, 10000} draaien, je zet de gevonden waardes voor het gemiddelde aantal vergelijkingen in een overzichtelijke tabel en je licht de resultaten kort toe. 3
4 N.B.: Via de webpagina van Datastructuren wordt een aantal hulpbestanden met toelichting beschikbaar gesteld, die het maken van de opdracht kunnen vergemakkelijken. Inleveren: uiterlijk vrijdag 27 oktober Lever smmheap.cc, smmheap.h en een verslagje over de vergelijking van top-down en bottom-up opbouwen (bijvoorbeeld verslag2a.txt), per in bij Sven van Haastregt met in het subject de tekst Opdracht 2a. Vermeld de na(a)m(en) en studentennummer(s) van de auteur(s). Opdracht 2b: gebruik in external quicksort Er zijn vele algoritmes om een verzameling V van getallen (of andere elementen met een lineaire ordening) te sorteren. Bij (gewoon) quicksort (zie, bijvoorbeeld, [2]) kies je willekeurig een element v, waarna je de resterende elementen opsplitst in een deelverzameling V 1 met elementen kleiner dan (of gelijk aan) v en een deelverzameling V 2 met elementen groter dan (of gelijk aan) v. De ordening van V is nu (recursief) gedefinieerd als de ordening van V 1, gevolgd door v, gevolgd door de ordening van V 2. Bij external quicksort kies je niet één element v, maar een buffer met M 1 elementen. Wanneer w een van de andere elementen is, en w is kleiner dan het minimum van de buffer, dan gaat w weer naar een verzameling V 1. Als w groter is dan het maximum van de buffer, gaat w naar een verzameling V 2. Als w echter tussen het minimum en het maximum van de buffer in zit, wordt w in de buffer opgenomen, en verdwijnt het minimum of het maximum van de buffer naar V 1, respectievelijk V 2. Voor details, inclusief een complete code, zie opnieuw [2]. Het is nu de bedoeling dat je een C++-programma schrijft, dat 1. de gebruiker om drie positieve getallen vraagt: N, K en M, met M N; 2. K keer N random getallen tussen 1 en 10 N (inclusief) genereert (dubbele zijn toegestaan), deze N getallen zowel met (gewoon) quicksort als met external quicksort met buffergrootte M sorteert, de gesorteerde rij met getallen wegschrijft naar een bestand met naam qsn.dat (bijvoorbeeld qs100.dat) (voor quicksort), respectievelijk eqsn M.dat (bijvoorbeeld eqs dat) (voor external quicksort); de getallen moeten gescheiden zijn door spaties, tabs of EOL-karakters, voor beide sorteermethodes het gewogen aantal gangen (voor definitie, zie onder) berekent; 3. voor beide sorteermethodes het gemiddelde van de K gewogen aantallen gangen berekent en als laatste getal in het bijbehorende bestand schrijft (op 5 decimalen nauwkeurig, op een nieuwe regel). 4
5 Figuur 1: Voorbeeld van een sorteerboom bij external quicksort voor N = 100 getallen met een buffer van M = 10 groot. Voor de buffer bij external quicksort moet je een symmetrische min-max heap gebruiken. Onder het gewogen aantal gangen (passes) in een sorteermethode verstaan we het gemiddelde aantal malen dat we een getal bekijken. Een voorbeeld kan duidelijk maken wat we precies bedoelen. Stel dat we N = 100 getallen met external quicksort met buffergrootte M = 10 sorteren. In eerste instantie blijken er 42 getallen links van de buffer (in V 1 dus) en 48 getallen rechts van de buffer (V 2 ) terecht te komen. Bij het verder sorteren van de 42 getallen in V 1 komen er 14 links van de buffer en 18 rechts van de buffer. Bij het verder sorteren van de 48 getallen in V 2 komen er 25 links van de buffer en 13 rechts van de buffer. Natuurlijk worden de 14, 18, 25, respectievelijk 13 getallen vervolgens ook nog (recursief) gesorteerd, wat resulteert in de sorteerboom in Fig. 1. Op niveau 1 van de sortering worden alle 100 getallen bekeken, op niveau 2, 3, 4 en 5 nog 90, 70, 30, respectievelijk 1. Gemiddeld wordt elk getal zo = N 291 = 2, 91 keer bekeken. Dit is de waarde van het gewogen aantal gangen voor deze 100 run van external quicksort. Op analoge wijze is het gewogen aantal gangen voor (gewoon) quicksort gedefinieerd. Het C++-programma laat je voor K = 10 en alle mogelijke combinaties van N {100, 500, 1000, 5000, 10000} en M {5, 10, 20} draaien en je zet de gevonden waardes voor het gemiddelde gewogen aantal gangen in een tweetal overzichtelijke tabellen: één voor (gewoon) quicksort, en één voor external quicksort. Vervolgens schrijf je een verslag rond de volgende vragen: Zijn er opvallende verschillen tussen de waardes in de ene tabel en die in de andere tabel? Zo ja, geef een verklaring voor de verschillen. Hoe eerlijk is de gebruikte methode om (gewoon) quicksort en external quicksort met elkaar te vergelijken? Beschrijf mogelijke alternatieve methodes of aanpassingen aan de gebruikte methode. Inleveren: uiterlijk vrijdag 24 november Alle bestanden die nodig zijn om het programma te kunnen draaien moeten ingeleverd worden, samen met een verslag van de vergelijking van (gewoon) quicksort en external quicksort. De object be- 5
6 standen en de executable dien je echter niet op te sturen, er wordt opnieuw gecompileerd. Ook testinstanties zijn niet nodig. Lever per in bij Sven van Haastregt met in het subject de tekst Opdracht 2b. Vermeld de na(a)m(en) en studentennummer(s) van de auteur(s). Ten slotte: In principe hoef je je programma s niet op de beast of de Linux-pc s beneden te maken. De uiteindelijke versie moet echter gecompileerd kunnen worden (en werken) met g++ op de beast of zo n Linux-pc! Werk bij voorkeur in tweetallen. Werk gestructureerd. Geef voldoende commentaar. Voorzie je werkstuk van een betrouwbare schatting van het aantal gewerkte uren. Heb je nu nog vragen over de bedoeling van de opdracht, wend je dan tot Robert Brijder (kamer 156a, (intern) telefoonnummer 7143, rbrijder@liacs.nl). Heb je vragen over je eigen programma, wend je dan tot Sven van Haastregt (svhaastr@liacs.nl). Literatuur [1] A. Arvind, C. Pandu Rangan. Symmetric Min-Max heap: A simpler data structure for double-ended priority queue, Information Processing Letters 69, blz , [2] G.H. Gonnet, R. Baeza-Yates. Handbook of Algorithms and Data Structures, In Pascal and C, Addison-Wesley, (second edition) Paragraaf 4.1.3: Quicksort; paragraaf 4.4.6: External Quicksort. 6
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 informatieImplementatie en toepassing van de trie
Implementatie en toepassing van de trie Tweede programmeeropdracht Datastructuren, najaar 2007 Een Trie is een char-aire boom, dwz. een boom waarvan knopen voor elk van de elementen van het type char (
Nadere informatieTwaalfde college algoritmiek. 13 mei Branch & Bound Heap, Heapsort & Heapify
Algoritmiek 2016/Branch & Bound Twaalfde college algoritmiek 13 mei 2016 Branch & Bound Heap, Heapsort & Heapify 1 Algoritmiek 2016/Branch & Bound TSP met Branch & Bound Mogelijke ondergrenzen voor de
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 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 informatieCombinatorische Algoritmen: Binary Decision Diagrams, Deel III
Combinatorische Algoritmen: Binary Decision Diagrams, Deel III Sjoerd van Egmond LIACS, Leiden University, The Netherlands svegmond@liacs.nl 2 juni 2010 Samenvatting Deze notitie beschrijft een nederlandse
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 informatieAlgoritmiek. 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 informatieTwaalfde college algoritmiek. 23 mei Branch & Bound, Heapsort
College 12 Twaalfde college algoritmiek 23 mei 2013 Branch & Bound, Heapsort 1 Handelsreizigersprobleem Traveling Salesman Problem (handelsreizigersprobleem) Gegeven n steden waarvan alle onderlinge afstanden
Nadere informatieProgrammeeropdracht 2 Toernooi Algoritmiek, voorjaar 2019
Programmeeropdracht 2 Toernooi Algoritmiek, voorjaar 2019 Inleiding Al meer dan twintig jaar organiseert Karlijn aan het eind van het jaar een toernooi bij de volleybalclub, het zogenaamde oliebollentoernooi.
Nadere informatieOnafhankelijke verzamelingen en Gewogen Oplossingen, door Donald E. Knuth, The Art of Computer Programming, Volume 4, Combinatorial Algorithms
Onafhankelijke verzamelingen en Gewogen Oplossingen, door Donald E. Knuth, The Art of Computer Programming, Volume 4, Combinatorial Algorithms Giso Dal (0752975) Pagina s 5 7 1 Deelverzameling Representatie
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 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 informatieDatastructuren: 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 informatie4EE11 Project Programmeren voor W. College 3, 2008 2009, Blok D Tom Verhoeff, Software Engineering & Technology, TU/e
4EE11 Project Programmeren voor W College 3, 2008 2009, Blok D Tom Verhoeff, Software Engineering & Technology, TU/e 1 Onderwerpen Grotere programma s ontwerpen/maken Datastructuren en algoritmes 2 Evolutie,
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 informatieExamen Datastructuren en Algoritmen II
Tweede bachelor Informatica Academiejaar 2006 2007, tweede zittijd Examen Datastructuren en Algoritmen II Naam :.............................................................................. 1. Verzamelingen:
Nadere informatieElfde 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 informatieUitgebreide 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 informatieDatatypes Een datatype is de sort van van een waarde van een variabele, veel gebruikte datatypes zijn: String, int, Bool, char en double.
Algemeen C# Variabele Een variabele is een willekeurige waarde die word opgeslagen. Een variabele heeft altijd een datetype ( De soort waarde die een variabele bevat). Datatypes Een datatype is de sort
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 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 informatieZevende 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 informatiepublic 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 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 informatieProgrammeeropdracht 1 Mastermind Algoritmiek, voorjaar 2019
Programmeeropdracht 1 Mastermind Algoritmiek, voorjaar 2019 Inleiding Donald en Kim spelen een spelletje Mastermind. Donald probeert de geheime code van Kim te raden. Kim wil dat zo moeilijk mogelijk maken,
Nadere informatieModelleren en Programmeren
Modelleren en Programmeren Jeroen Bransen 13 december 2013 Terugblik Fibonacci public class Fibonacci { public static void main(string[] args) { // Print het vijfde Fibonaccigetal System.out.println(fib(5));
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 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 informatieElementary Data Structures 3
Elementary Data Structures 3 Ferd van Odenhoven Fontys Hogeschool voor Techniek en Logistiek Venlo Software Engineering 29 september 2014 ODE/FHTBM Elementary Data Structures 3 29 september 2014 1/14 Meer
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 informatieAFO 142 Titel Aanwinsten Geschiedenis
AFO 142 Titel Aanwinsten Geschiedenis 142.1 Inleiding Titel Aanwinsten Geschiedenis wordt gebruikt om toevoegingen en verwijderingen van bepaalde locaties door te geven aan een centrale catalogus instantie.
Nadere informatieExamen Datastructuren en Algoritmen II
Tweede bachelor Informatica Academiejaar 2016 2017, eerste zittijd Examen Datastructuren en Algoritmen II Naam :.............................................................................. Lees de hele
Nadere informatieModelleren en Programmeren
Modelleren en Programmeren Jeroen Bransen 9 december 2015 Foreach String arrays Boomstructuren Interfaces Ingebouwde datastructuren Quiz Foreach Foreach Speciale versie van for om iets voor alle elementen
Nadere informatieInformatica: C# WPO 11
Informatica: C# WPO 11 1. Inhoud Pass by reference (ref, out), recursie, code opdelen in verschillende codebestanden 2. Oefeningen Demo 1: Swapfunctie Demo 2: TryParse(int) Demo 3: Recursion Tree Demo
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 informatieZiv-Lempel-Welch Compressie
Ziv-Lempel-Welch Compressie Datastructuren, najaar 1998, tweede programmeeropdracht Het ZLW-algoritme Het ZLW compressie algoritme codeert teksten door daarin strings van variabele lengte om te zetten
Nadere informatieTentamen Objectgeorienteerd Programmeren TI februari Afdeling ST Faculteit EWI TU Delft
I ' Tentamen Objectgeorienteerd Programmeren TI 1200 1 februari 2012 9.00-12.00 Afdeling ST Faculteit EWI TU Delft Bij dit tentamen mag je geen gebruik maken van hulpmiddelen zoals boek of slides. Dit
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 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 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 informatiePracticumopgave 3: SAT-solver
Practicumopgave 3: SAT-solver Modelleren en Programmeren 2015/2016 Deadline: donderdag 7 januari 2016, 23:59 Introductie In het vak Inleiding Logica is onder andere de propositielogica behandeld. Veel
Nadere informatieStel dat u 15 tellers nodig heeft. Dat kunt u een array van tellers als volgt declareren:
V. Arrays A. Wat zijn arrays? Een array is een verzameling van variabelen. Ze hebben allen dezelfde naam en hetzelfde type. Men kan ze van elkaar onderscheiden door een volgnummer, index genoemd. Enkele
Nadere informatieExamen Datastructuren en Algoritmen II
Tweede bachelor Informatica Academiejaar 2012 2013, tweede zittijd Examen Datastructuren en Algoritmen II Naam :.............................................................................. Lees de hele
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 informatieVakgroep CW KAHO Sint-Lieven
Vakgroep CW KAHO Sint-Lieven Objecten Programmeren voor de Sport: Een inleiding tot JAVA objecten Wetenschapsweek 20 November 2012 Tony Wauters en Tim Vermeulen tony.wauters@kahosl.be en tim.vermeulen@kahosl.be
Nadere informatieTentamen Objectgeorienteerd Programmeren IN1205 Voorbeeld
Tentamen Objectgeorienteerd Programmeren IN1205 Voorbeeld Afdeling ST Faculteit EWI TU Delft Bij dit tentamen mag u gebruik maken van: Barnes, Object-Oriented Programming with Java en de Notitie Algoritmiek
Nadere informatieExamen Programmeren 2e Bachelor Elektrotechniek en Computerwetenschappen Faculteit Ingenieurswetenschappen Academiejaar juni, 2010
Examen Programmeren 2e Bachelor Elektrotechniek en Computerwetenschappen Faculteit Ingenieurswetenschappen Academiejaar 2009-2010 16 juni, 2010 **BELANGRIJK** 1. Schrijf je naam onderaan op elk blad. 2.
Nadere informatieProgrammeren (1) Examen NAAM:
Schrijf al je antwoorden op deze vragenbladen (op de plaats die daarvoor is voorzien) en geef zowel klad als net af. Bij heel wat vragen moet je zelf Java-code schrijven. Hou dit kort en bondig. Je hoeft
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 informatieHandleiding JCreator. Inhoud. Een Workspace en een eerste project maken
Handleiding JCreator Inhoud Een Workspace en een eerste project maken Een tweede project maken De editor van JCreator Aanpassen van de basis-directory Documentatie over klassen en methoden van de JDK Bestand
Nadere informatieUitwerking 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 informatieHoofdstuk 7: Werken met arrays
Programmeren in Microsoft Visual Basic 6.0, lessenserie voor het voortgezet onderwijs HAVO/VWO David Lans, Emmauscollege, Marnix Gymnasium Rotterdam, januari 2004 Hoofdstuk 7: Werken met arrays 7.0 Leerdoel
Nadere informatieExamen Programmeren 2e Bachelor Elektrotechniek en Computerwetenschappen Faculteit Ingenieurswetenschappen Academiejaar juni 2011
Examen Programmeren 2e Bachelor Elektrotechniek en Computerwetenschappen Faculteit Ingenieurswetenschappen Academiejaar 2010-2011 21 juni 2011 **BELANGRIJK** 1. Lees eerst de volledige opgave (inclusief
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 informatieProgrammeren in C++ Efficiënte zoekfunctie in een boek
Examen Software Ontwikkeling I 2e Bachelor Informatica Faculteit Wetenschappen Academiejaar 2010-2011 21 januari, 2011 **BELANGRIJK** 1. Lees eerst de volledige opgave (inclusief de hints/opmerkingen)!
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 informatieTentamen Inleiding Programmeren (IN1608WI), duur van de toets 2 uur Technische Universiteit Delft, Faculteit EWI, Afdeling 2.
Tentamen Inleiding Programmeren (IN1608WI), duur van de toets 2 uur Technische Universiteit Delft, Faculteit EWI, Afdeling 2. Gesloten boek examen: er mag geen gebruik worden gemaakt van het studieboek.
Nadere informatieTECHNISCHE UNrVERSITElT DELFT Faculteit Elektrotechniek, Wiskunde en Informatica
TECHNISCHE UNrVERSITElT DELFT Faculteit Elektrotechniek, Wiskunde en Informatica TWl(0)9O Inleiding Programmeren Tentamen 16 maart 2017, 9:00-12:00 uur Normering: Opgave 1 t/m 3 ieder 6 punten. Score:
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 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 informatieExamen Datastructuren en Algoritmen II
Tweede bachelor Informatica Academiejaar 2009 2010, eerste zittijd Examen Datastructuren en Algoritmen II Naam :.............................................................................. Lees de hele
Nadere informatieDatastructuren 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 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 informatieDoorzoeken 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 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 informatieHet Eindfeest. Algoritmiek Opgave 6, Voorjaar
1 Achtergrond Het Eindfeest Algoritmiek Opgave 6, Voorjaar 2017 1 Om het (successvol) afsluiten van Algoritmiek te vieren, is er een groot feest georganiseerd. Jij beschikt als enige van je vrienden over
Nadere informatieAanvullende toets Gameprogrammeren (INFOB1GP) Woensdag 24 december 2014, uur
Aanvullende toets Gameprogrammeren (INFOB1GP) Woensdag 24 december 2014, 13.30-15.30 uur Naam: Studentnummer: Het tentamen bestaat uit 4 opgaven. Opgaven 1 levert 8 punten op, opgave 2 levert 12 punten
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 informatieInstructie RFM modules
Instructie RFM module Introductie RFM staat voor Registratie Flow Module. De RFM module vormt de basis voor een aantal nieuwe modules binnen equse Indicate: - Calamiteiten - Klachten - Kindermishandeling
Nadere informatie3. Structuren in de taal
3. Structuren in de taal In dit hoofdstuk behandelen we de belangrijkst econtrolestructuren die in de algoritmiek gebruikt worden. Dit zijn o.a. de opeenvolging, selectie en lussen (herhaling). Vóór we
Nadere informatieDATASTRUCTUREN. najaar leesboek. R. van Vliet. H.J. Hoogeboom. Opleiding Informatica. Universiteit Leiden
leesboek DATASTRUCTUREN dictaat najaar 2004 R. van Vliet H.J. Hoogeboom Opleiding Informatica Universiteit Leiden Fouten in de bundel kunt u melden bij R. van Vliet, rvvliet@liacs.nl. Inhoudsopgave 1 Data
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 informatieSorteren, groeperen en totaliseren
6 Sorteren, groeperen en totaliseren 6.1 Inleiding Een rapport maken begint met het selecteren van de tabellen en het plaatsen van de velden die u in uw rapport wilt afdrukken. Vervolgens sorteert, groepeert
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 informatieNumerieke benadering van vierkantwortels
HP Prime Grafische Rekenmachine Numerieke benadering van vierkantwortels Doel: De waarde van een vierkantswortel met een recursieve rij benaderen, het schrijven van een klein programma. Sleutelwoorden:
Nadere informatieHoofdstuk 5: Functies voor getallen en teksten
Programmeren in Microsoft Visual Basic 6.0, lessenserie voor het voortgezet onderwijs HAVO/VWO David Lans, Emmauscollege, Marnix Gymnasium Rotterdam, maart 2001 Hoofdstuk 5: Functies voor getallen en teksten
Nadere informatiePrincipe Maken van een Monte Carlo data-set populatie-parameters en standaarddeviaties standaarddeviatie van de bepaling statistische verdeling
Monte Carlo simulatie In MW\Pharm versie 3.30 is een Monte Carlo simulatie-module toegevoegd. Met behulp van deze Monte Carlo procedure kan onder meer de betrouwbaarheid van de berekeningen van KinPop
Nadere informatievoegtoe: eerst methode bevat gebruiken, alleen toevoegen als bevat() false is
PROEF-Tentamen Inleiding programmeren (IN1608WI), X januari 2010, 9.00-11.00, Technische Universiteit Delft, Faculteit EWI, Afdeling 2. Open boek tentamen: bij het tentamen mag alleen gebruik worden gemaakt
Nadere informatieAls een PSD selecties bevat, deelt de lijn van het programma zich op met de verschillende antwoorden op het vraagstuk.
HOOFDSTUK 3 3.1 Stapsgewijs programmeren In de vorige hoofdstukken zijn programmeertalen beschreven die imperatief zijn. is het stapsgewijs in code omschrijven wat een programma moet doen, net als een
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 informatieElfde 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[13] Rondjes draaien (loops)
[13] Rondjes draaien (loops) Met de if else uit de leerfiche [11] hebben we leren werken met één van de belangrijkste programmeerstructuren in Python. Bijna even belangrijk zijn de verschillende mogelijkheden
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 informatieTijd 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 informatieTW2020 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 informatieFunctioneel programmeren
Functioneel programmeren Practicumopgave 2: Mastermind Het doel van deze opgave is het implementeren van het spel Mastermind; zie http://nl.wikipedia.org/wiki/mastermind voor een uitleg. Het spel is klein
Nadere informatieVisual Basic.NET. Visual Basic.NET. M. den Besten 0.3 VB. NET
Visual Basic.NET M. den Besten 0.3 VB. NET Inhoud Voorwoord Deel 1 Visual Basic.NET 1.1 Inleiding...13 1.2 De programmeertaal Visual Basic.NET...14 1.3 Microsoft Visual Basic 2010 Express Edition...15
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 informatieProject 2: LOTTO simulatie Programmeren I
Project 2: LOTTO simulatie Programmeren I K. van Assche - H. Gruyaert 1 Inleiding Schrijf een java programma dat het spel van de nationale loterij, de Lotto simuleert. De communicatie met de gebruiker
Nadere informatieHOOFDSTUK 3. Imperatief programmeren. 3.1 Stapsgewijs programmeren. 3.2 If Then Else. Module 4 Programmeren
HOOFDSTUK 3 3.1 Stapsgewijs programmeren De programmeertalen die tot nu toe genoemd zijn, zijn imperatieve of procedurele programmeertalen. is het stapsgewijs in code omschrijven wat een programma moet
Nadere informatieUitgebreide uitwerking tentamen Algoritmiek Dinsdag 2 juni 2009, uur
Uitgebreide uitwerking tentamen Algoritmiek Dinsdag 2 juni 2009, 10.00 13.00 uur Opgave 1. a. Een toestand wordt bepaald door: het aantal lucifers op tafel, het aantal lucifers in het bezit van Romeo,
Nadere informatieDatastructuren en algoritmen voor CKI
Datastructuren en algoritmen voor CKI Jeroen Bransen 1 9 oktober 2015 1 met dank aan Hans Bodlaender en Gerard Tel Zoekbomen Binaire boom Bestaat uit knopen Beginknoop is de wortel (root) Elke knoop heeft
Nadere informatieTentamen Object Georiënteerd Programmeren TI1200 30 januari 2013, 9.00-12.00 Afdeling SCT, Faculteit EWI, TU Delft
Tentamen Object Georiënteerd Programmeren TI1200 30 januari 2013, 9.00-12.00 Afdeling SCT, Faculteit EWI, TU Delft Bij dit tentamen mag je geen gebruik maken van hulpmiddelen zoals boek of slides. Dit
Nadere informatieExamen Datastructuren en Algoritmen II
Tweede bachelor Informatica Academiejaar 2012 2013, eerste zittijd Examen Datastructuren en Algoritmen II Naam :.............................................................................. Lees de hele
Nadere informatieSubrapporten. 5.1 Inleiding
5 Subrapporten 5.1 Inleiding Een subrapport is een rapport in een rapport. Een subrapport maak je dan ook net zoals je een gewoon rapport maakt. Een subrapport heeft bijna alle eigenschappen die een normaal
Nadere informatie2 Invoeren project. 2.1 Procedure. 2.2 Instellingen
2 Invoeren project In dit hoofdstuk komen de werkwijzen en technieken aan de orde hoe een project ingevoerd kan worden. Mogelijkheden zijn: Vanaf detailniveau, bijvoorbeeld door subprojecten te laten vervaardigen
Nadere informatie