Oefeningen voor de oefeningenles. Oefening 1



Vergelijkbare documenten
Examen Datastructuren en Algoritmen II

Examen Datastructuren en Algoritmen II

Examen Datastructuren en Algoritmen II

Examen Datastructuren en Algoritmen II

Examen Datastructuren en Algoritmen II

Examen Datastructuren en Algoritmen II

Examen Datastructuren en Algoritmen II

Examen Datastructuren en Algoritmen II

Examen Datastructuren en Algoritmen II

Examen Datastructuren en Algoritmen II

Examen Datastructuren en Algoritmen II

Examen Algoritmen en Datastructuren III

Twaalfde college complexiteit. 11 mei Overzicht, MST

Uitwerking tentamen Algoritmiek 9 juni :00 17:00

TW2020 Optimalisering

Uitwerking tentamen Algoritmiek 10 juni :00 13:00

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

Tiende college algoritmiek. 14 april Gretige algoritmen

Discrete Structuren. Piter Dykstra Sietse Achterop Opleidingsinstituut Informatica en Cognitie

Discrete Wiskunde, College 12. Han Hoogeveen, Utrecht University

Examen Algoritmen en Datastructuren III

Discrete Structuren. Piter Dykstra Opleidingsinstituut Informatica en Cognitie

8. Complexiteit van algoritmen:

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

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

Uitwerking tentamen Analyse van Algoritmen, 29 januari

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

Tiende college algoritmiek. 26 april Gretige algoritmen

Uitwerking tentamen Algoritmiek 9 juli :00 13:00

FLIPIT 5. (a i,j + a j,i )d i d j = d j + 0 = e d. i<j

TW2020 Optimalisering

l e x e voor alle e E

TW2020 Optimalisering

Datastructuren Uitwerking jan

Minimum Opspannende Bomen. Algoritmiek

Tiende college algoritmiek. 2 mei Gretige algoritmen, Dijkstra

9. Strategieën en oplossingsmethoden

Elke gelijkenis met bestaande gebeurtenissen en/of personen berust op louter toeval.

Examen Algoritmen en Datastructuren III

Modeluitwerking Tentamen Computationele Intelligentie Universiteit Leiden Informatica Vrijdag 11 Januari 2013

Tweede college complexiteit. 12 februari Wiskundige achtergrond

The knight s tour. Het paard in schaken beweegt als volgt: Steeds 1 vakje in een richting en 2 in een andere richting, of omgekeerd.

Datastructuren en Algoritmen

Informatica. 2 e graad 2 e jaar. De Mol W.

Combinatoriek groep 1 & 2: Recursie

2WO12: Optimalisering in Netwerken

Vijfde college complexiteit. 21 februari Selectie Toernooimethode Adversary argument

Uitwerking vierde serie inleveropgaven

Hoofdstuk 13: Integer Lineair Programmeren

Netwerkdiagram voor een project. AOA: Activities On Arrows - activiteiten op de pijlen.

8/2/2006 Examen Optimalisatietechnieken (6sp) 1

Heuristieken en benaderingsalgoritmen. Algoritmiek

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

Zoekproblemen met tegenstanders. Zoekalgoritmen ( ) College 9: Zoeken met een tegenstander (I) Een zoekprobleem met een tegenstander

Tiende college algoritmiek. 4 mei Gretige Algoritmen Algoritme van Dijkstra

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

Een voorbeeld. Computationele Intelligentie Zoeken met een tegenstander. Een voorbeeld vervolg. Een zoekprobleem met een tegenstander

Uitgebreide uitwerking Tentamen Complexiteit, juni 2017

3. Structuren in de taal

D-dag 2014 Vrijeschool Zutphen VO. D -DAG 13 februari 2014: 1+ 1 = 2. (en hoe nu verder?) 1 = 2en hoe nu verder?

Lege polygonen in een graaf.

Tweede college algoritmiek. 12 februari Grafen en bomen

Branch-and-Bound en Cutting Planes

Tentamen Discrete Wiskunde

2 Recurrente betrekkingen

Uitwerkingen Sum of Us

2WO12: Optimalisering in Netwerken

Elfde college algoritmiek. 16 mei Dijkstra, Gretige algoritmen en Branch & Bound

TW2020 Optimalisering

Examen Discrete Wiskunde donderdag 12 april, 2018

Netwerkdiagram voor een project. AON: Activities On Nodes - activiteiten op knooppunten

Datum. Vraag het bedrag in BEF. Reken om naar EURO. Toon het bedrag in EURO. --- Vraag het bedrag in BEF Reken om naar EURO---

Computationele Intelligentie

WISKUNDE B -DAG = 2. maar en hoe nu verder? 29 november 2002

(iii) Enkel deze bundel afgeven; geen bladen toevoegen, deze worden toch niet gelezen!

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

Workshop voorbereiden Authentieke instructiemodel

Begrenzing van het aantal iteraties in het max-flow algoritme

Bewijs door inductie

Universiteit Utrecht Betafaculteit. Examen Discrete Wiskunde II op donderdag 6 juli 2017, uur.

Overzicht. Inleiding. Toepassingen. Verwante problemen. Modellering. Exacte oplosmethode: B&B. Insertie heuristieken. Local Search

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

Algoritmiek. 15 februari Grafen en bomen

Computationele Intelligentie

Transport-, Routing- en Schedulingproblemen. Wi4062TU / Wi487TU / a86g. Uitwerkingen

Elfde college algoritmiek. 21 april Dijkstra en Branch & Bound

Set 1 Inleveropgaven Kansrekening (2WS20)

Stelling. SAT is NP-compleet.

Benaderingsalgoritmen

Amorized Analysis en Union-Find Algoritmiek

Een combinatorische oplossing voor vraag 10 van de LIMO 2010

Getallenleer Inleiding op codeertheorie. Cursus voor de vrije ruimte

Tiende college algoritmiek. 14 april Dynamisch Programmeren, Gretige Algoritmen, Kortste Pad met BFS

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

Vierde college complexiteit. 16 februari Beslissingsbomen en selectie

Zevende college Algoritmiek. 6 april Verdeel en Heers

Zevende college algoritmiek. 23/24 maart Verdeel en Heers

Vierde college complexiteit. 14 februari Beslissingsbomen

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

Uitgebreide uitwerking tentamen Algoritmiek Dinsdag 2 juni 2009, uur

Transcriptie:

Oefeningen voor de oefeningenles Oefening 1 Gegeven een arbitraire binaire zoekboom T met n toppen en een (andere of gelijke) binaire zoekboom T die ook n sleutels bevat. Beschrijf een algoritme dat in lineaire tijd (dus tijd O(n)) de boom T zo verandert (door veranderen van de kinderen), dat T isomorf is met T (maar nog altijd een zoekboom met dezelfde sleutels als vroeger is). Definiëer eerst wat isomorf precies betekent. cursus Discrete Wiskunde. Denk aan de Beschrijf het algoritme. Tip: bepaal eerst paren (x, y) met x T, y T van toppen die gelijke posities in de verschillende bomen moeten hebben. Maar er zijn ook andere mogelijkheden om zo n algoritme te ontwerpen... Toon aan, dat het algoritme juist is dus dat de boom die gebouwd wordt echt isomorf met T is.

Oefening 2 Verwijder sleutel 6 uit deze AVL-boom: 8 5 13 2 7 11 16 1 4 6 10 12 15 18 0 3 9 14 17 19 20

Oefening 3 In DA1 hebben jullie de hersteloperaties voor AVL bomen geformuleerd door middel van enkelvoudige rotaties en dubbele rotaties. In de les hebben jullie gezien dat je deelbomen kan vervangen door andere deelbomen met dezelfde sleutels. Herschrijf de regels voor het herstellen van AVL-bomen door de deelboomvervangmethode te gebruiken.

Oefening 4 Stel dat voor grote h het minimum aantal toppen t(h) van een boom met hoogte h voldoet aan t(h) 4 h+2 /8. Toon aan dat de boom logaritmische diepte heeft (dus h is O(log t) met t het aantal toppen) en bepaal de constanten.

Oefeningen voor de oefeningenles Oefening 5 Als je een element uit een splayboom verwijdert, wordt de ordening ook verstoord. Sleutels worden in de richting van de bladeren geschoven die misschien vrij vaak opgezocht worden. Om sleutels die dicht bij de wortel zitten daar te houden, lijkt het verstandig b.v. als je een blad verwijdert de boom helemaal niet te veranderen. Toon aan dat als je op deze manier sleutels verwijdert er reeksen van bewerkingen bestaan zodat n bewerkingen op een initiëel lege splayboom gemiddeld O(n) stappen per bewerking vragen (de hele reeks dus O(n 2 )).

Oefening 6 1. Geef een algoritme voor het bepalen van de sleutel in een gegeven binaire zoekboom die het dichtst bij een gegeven sleutelwaarde x ligt (dus x zelf als de sleutel erin zit). Als de zoekboom een AVL-boom is, kan je dan garanderen dat je de sleutel in tijd O(logn) kan vinden? Toon aan dat jouw antwoord juist is. 2. Geef een algoritme voor het bepalen van alle sleutels in een gegeven binaire zoekboom die hoogstens d (met d > 0) van een gegeven sleutelwaarde x verschillen. Als de zoekboom een AVL-boom is, kan je dan garanderen dat je de sleutels in tijd O(logn) kan vinden? Toon aan dat jouw antwoord juist is.

Oefening 7 Voeg de sleutels 10,20,30,25,40,5,2 in deze volgorde toe aan een 2-3 boom.

Oefening 8 Stel dat een algoritme A gegeven is. De functie f(n) geeft de grootste tijd die het algoritme vraagt als hij op een input van n bytes wordt toegepast. Je wil tonen, dat f(n) niet Θ(n 2 ) is. Wat moet je precies tonen? De bedoeling is niet, het echt te tonen (dat is ook niet mogelijk, omdat je noch f() noch A kent), maar gewoon van de definitie van Θ(n 2 ) te vertrekken en dan met de middelen die jullie in de logica les hebben geleerd uit te vissen wat je moet tonen. Geef de formule die het resultaat van deze berekeningen is en geef ook uitleg!

Oefeningen voor de oefeningenles Oefening 8 Deze oefening maakte deel uit van het examen van het vorige jaar. Als jullie dus helemaal alleen proberen deze oefening op te lossen krijgen jullie al een gevoel ervoor hoe het examen gaat zijn, hoeveel tijd jullie van zo n oefening nodig hebben, etc. a.) Wat is in het slechtste geval de diepte van een 2-3-boom met n sleutels en wat is de diepte in het beste geval? Wat zijn de beste en slechtste gevallen? (Geen bewijs vereist.) b.) Hoeveel vergelijkingen van sleutels zijn er in het beste geval nodig om een nieuwe sleutel aan een 2-3-boom met n sleutels toe te voegen? Wat is het beste geval? (Geen bewijs vereist.) c.) Schrijf voor elk van de drie bomen of hij een 2-3-boom is en in het geval van niet waarom niet. (1) 34 41 (2) 45 10 15 38 50 17 90 2 5 11 16 35 37 40 42 102 2 23 (3) 48 32 50 55 7 39 49 52 53 d.) Voeg de sleutel 24 toe aan de volgende 2-3-boom. Toon voldoende tussenstappen om te zien wat er gebeurt, maar voor de tussenstappen moet je niet elke keer de hele boom tekenen. 60 15 30 77 90 2 11 20 29 33 50 75 80 109

Oefening 9 In het boek is er jammer genoeg een tikfout: Er wordt geeist dat voor de sleutels in de linkerdeelboom geldt dat ze kleiner dan de eerste sleutel zijn en de sleutels in de middenste deelboom groter dan of gelijk aan de kleinste sleutel en kleiner dan de tweede sleutel zijn. De sleutels in de rechterdeelboom moeten groter dan of gelijk aan de tweede sleutel zijn. De andere voorwaarden zijn dezelfden. Als wij alleen maar sleutels willen opslaan die verschillend zijn, is er geen verschil met de definitie uit de les. Maar is de definitie in het boek ook goed als je verschillende kopieën van dezelfde sleutel wil opslaan? Wat zou er veranderen? Zou deze definitie problemen veroorzaken? Zouden de bewerkingen die in de les werden getoond nog mogelijk zijn? Indien niet: Waar loopt er iets fout? Anders: Zouden ze nog even efficiënt zijn? Als je in de definitie nooit alleen maar kleiner of groter eist, maar altijd kleiner dan of gelijk aan of groter dan of gelijk aan zou je dan ook verschillende kopieën van dezelfde sleutel kunnen opslaan? Werken de in de les gezien bewerkingen nog?

Oefening 10 Voeg de sleutels 10,5,2,20,1,7 in deze volgorde toe aan een roodzwart-boom. Toon voldoende tussenstappen om te zien wat er gebeurt.

Oefening 11 In de les hebben wij een lemma gezien dat een benedengrens geeft voor het aantal toppen in een rood-zwart-boom als er b zwarte toppen op een pad van de wortel naar een blad zitten. Kan je ook een benedengrens voor het aantal toppen bewijzen als er r rode toppen op een pad van de wortel naar een blad in een rood-zwart-boom zitten? Kan je een bovengrens voor het aantal toppen bewijzen als er r rode toppen op een pad van de wortel naar een blad naar een blad in een rood-zwart-boom zitten?

Oefeningen voor de oefeningenles Oefening 12 De bedoeling van deze eerste oefening is om te zien dat de technieken die wij geleerd hebben wel intuïtief zijn. Het gaat over een onderwerp dat jullie al kennen en waar jullie ook de complexiteit reeds van kennen. Door het toepassen van de nieuwe methoden op een bekend geval zien jullie hopelijk gemakkelijker wat het idee achter deze technieken is. Gegeven zijn twee enkelvoudige gelinkte gesorteerde lijsten met elk n objecten. Dus: je kent de twee eerste objecten en elk object bevat een referentie naar zijn opvolger. De tweede lijst moet gemerged worden in de eerste lijst zodat er op het einde een enkele gesorteerde lijst is. Dat gebeurt door een plaats-operatie: eerst word de plaats in de eerste lijst gezocht, waar het eerste element van de tweede lijst geplaatst moet worden en dan wordt het daar geplaatst. Als je de plaats voor het i-de element hebt gevonden, vertrek je van daar en zoek je de plaats voor het (i+1)-de element. Toon aan dat het plaatsen van één element in het slechtste geval O(n) stappen kan vragen (wat tot een complexiteit van O(n 2 ) aanleiding zou geven). Is er een vast getal k zodat er als je twee lijsten mergt ten hoogste k plaats-operaties kunnen zijn die tijd Θ(n) vragen? indien ja: bepaal k anders: toon aan dat k niet bestaat Toon d.m.v. de aggregaatmethode aan dat de geamortiseerde complexiteit van alle n invoegbewerkingen gemiddeld O(1) per bewerking is. Toon d.m.v. de potentiaalmethode aan dat de geamortiseerde complexiteit van alle n invoegbewerkingen samen O(n) is.

Oefening 13 Een bekende manier om met een array te werken is dat je elke keer dat je meer elementen wil toevoegen dan in de array passen dubbel zo veel ruimte voor de array alloceert en de oude array kopiëert. Stel nu, dat je zo weinig mogelijk geheugen wil gebruiken en dus niet altijd zoveel extra geheugen wil alloceren. Je begint met 1000 elementen en hebt de mogelijkheid ofwel elke keer en array met 500 elementen meer te alloceren ofwel elke keer een array met 20% meer ruimte dan de vorige. Wat is beter? Bereken de geamortiseerde tijd voor een reeks van m bewerkingen op een initiëel lege array. Je kan zelf kiezen welke methode je wil toepassen.

Oefening 14 Als je in een zoekboom een sleutel zoekt, moet je kijken of de sleutel in een top gelijk, kleiner of groter is aan de sleutel die je zoekt. Daarvoor heb je 2 vergelijkingen nodig (natuurlijk niet noodzakelijk 2 vergelijkingen van de sleutels...). Wij kijken nu alleen naar het toevoegen en zoeken. Stel nu dat je per top maar één vergelijking wil doen en elke sleutel maar één keer in de boom mag zitten. Dan kan je alle sleutels in bladeren plaatsen en de toppen met twee kinderen helpen je gewoon het juiste blad te vinden. Sleutels die gelijk zijn aan de waarde van een binnentop plaatsen wij altijd in zijn grotertak. Je voegt een top op dezelfde manier toe als gewoonlijk. Maar als je het als een kind van een blad hebt toegevoegd (en dus de ouder achteraf geen blad meer is) creëer je als de nieuwe sleutel kleiner is dan de ouder twee kinderen van de ouder en plaats je een kopie van de ouder in het groterkind en de nieuwe sleutel in het kleinerkind. Als de nieuwe sleutel groter is, creëer je één nieuw kind van de ouder waar je de nieuwe sleutel plaatst en dan nog twee kinderen van deze nieuwe top, waar je één keer een kopie van de sleutel in de ouder en één keer een kopie van de nieuwe sleutel plaatst (natuurlijk in de juiste volgorde). Op deze manier kan je een sleutel in een blad altijd vinden door in het grotertak te zoeken als hij gelijk is aan de sleutel in een binnentop. Toon aan dat als n het aantal sleutels in de bladeren is dezelfde sleutel O(n) keer in de boom kan zitten ook als hij maar één keer in een blad zit. Toon aan dat het gemiddelde aantal keren dat een sleutel in de boom zit O(1) is. Gebruik één keer de aggregaat en één keer de accounting methode. Bespaart deze nieuwe datastructuur altijd vergelijkingen? Hier gaat het niet over het tellen van stappen maar elementen, maar toch kunnen de methoden gemakkelijk toegepast worden.

Inderdaad kan je het tweede deel van de oefening op een andere manier gemakkelijker oplossen, maar de bedoeling is vooral de methoden uit de les te oefenen en dat natuurlijk niet op voorbeelden die te moeilijk zijn...

Oefeningen voor de oefeningenles Oefening 13 werd de vorige keer niet opgelost. opgelost worden. Zij moet eerst Oefening 15 Bouw een leftist heap L 1 door de elementen 19, 13, 8, 11, 1, 6, 7 (in deze volgorde) toe te voegen aan een initieel lege heap. Bouw vervolgens een tweede leftist heap L 2 door de elementen 5, 22, 8, 4, 14, 17, 16, 9, 11, 18, 12 (in deze volgorde) toe te voegen aan een initieel lege heap. Merge vervolgens L 1 en L 2 en verwijder tenslotte de wortel.

Oefening 16 In de les hebben wij gezien dat een reeks van n toevoegbewerkingen op een initieel lege binomiale heap geamortiseerd tijd O(n) vraagt. Geldt dat ook voor leftist heaps? Indien niet: Geef een goede bovengrens voor het aantal stappen (b.v. O(n log n) of O(n 2 )). Omdat de stappen verschillend zijn voor leftist heaps en binomiale heaps tellen wij nu gewoon het aantal vergelijkingen van sleutels. Kan je dan voor elk n een reeks r 1 van n sleutels aangeven zo dat als die in deze volgorde aan een initieel lege heap worden toegevoegd een leftist heap minder vergelijkingen vraagt dan een binomiale heap en een dergelijke reeks r 2 van sleutels waarvoor een binomiale heap minder vergelijkingen vraagt?

Oefening 17 Bouw een skew heap L 1 door de elementen 19, 13, 8, 11, 1, 6, 7 (in deze volgorde) toe te voegen aan een initieel lege heap. Bouw vervolgens een tweede skew heap L 2 door de elementen 5, 22, 8, 4, 14, 17, 16, 9, 11, 18, 12 (in deze volgorde) toe te voegen aan een initieel lege heap. Merge vervolgens L 1 en L 2 en verwijder tenslotte de wortel. Het zijn dezelfde sleutels die je voor de leftist heap hebt gebruikt.

Oefening 18 Bestaat er voor elke leftist heap H een reeks van alleen toevoegbewerkingen die toegepast op een initieel lege heap als resultaat H opleveren? Hier gaat het alleen maar om de structuur van H. Exacter zou zijn:... die als resultaat een heap opleveren die isomorf is met H.

Oefeningen voor de oefeningenles Oefening 19 In de volgende figuur zijn de kosten van de bogen die met punten zijn getekend altijd 5. De kosten van de dikke lijnen zijn 1 als er niet expliciet iets anders staat. a 3 b c 2 2 d v e 2 g w 3 f De vraag is of er een rondreis met kost ten hoogste 12 bestaat. Bepaal de oplossingenboom. Start één keer met v en één keer met w. Welke bounding criteria pas je toe?

Oefening 20 Kleuren van grafen Een consistente kleuring van de toppen van een graaf is een toekenning van een kleur aan elke top zodanig dat twee toppen die door een boog verbonden zijn, een verschillende kleur hebben. Geef een backtracking algoritme dat voor een graaf met toppen 1,..., n controleert of een gegeven graaf met twee kleuren kan gekleurd worden. Let op de volgorde waarop je de toppen kleurt. Wat is de complexiteit in het slechtste geval als je de toppen in volgorde 1,..., n kleurt en wat is de complexiteit voor de volgorde die jij hebt gekozen? Doe hetzelfde nog eens voor drie kleuren.

Oefening 21 Dit is een vraag uit een examen DA2. Ik stel voor dat iedereen alleen probeert deze oefening op te lossen om een indruk te krijgen hoe goed hij deze oefening in het examen opgelost zou hebben. Als het niet zou lukken: Niet aan jezelf twijfelen het was wel één van de moeilijkere oefeningen er gaan ook gemakkelijke oefeningen zelfs drilloefeneingen zijn. Een probleem vertalen: Een vertegenwoordiger moet n steden bezoeken en zoekt de snelste manier om dat te doen en terug te komen. Voor elk paar a, b van steden is de tijd bekend die nodig is om van a naar b te rijden zonder door één van de andere steden te gaan. Als het belangrijk is dat hij elke stad precies één keer bezoekt (bijvoorbeeld als hij echt slechte produkten verkoopt... ) dan is dit probleem equivalent met het handelsreizigersprobleem. Maar normaal is dat voor hem niet belangrijk hij zoekt gewoon de kortste rondreis waarin elke stad tenminste één keer wordt bezocht. Vertaal dit probleem naar het normale TSP. Schets een polynomiaal algoritme dat als resultaat een input voor het normale TSP heeft, zodat als wij de lengte van een kortste Hamiltoniaanse cykel in dit TSP kennen, wij ook de lengte van een kortste rondreis voor de vertegenwoordiger kennen. Toon aan dat jouw algoritme aan de eisen voldoet.

Oefening 22 In het schaakspel kan een paard (of knight) op rij r en kolom k bewegen naar rij 1 r b en kolom 1 k b (met b b de grootte van het schaakbord), op voorwaarde dat ofwel ofwel r r = 2 en k k = 1 r r = 1 en k k = 2. Een knight s tour is een sequentie van zetten die elke plaats op het schaakbord precies eenmaal aandoet vooraleer terug te keren naar het startpunt. De volgende figuur geeft een knight s tour voor een 8 8 schaakbord. Een knight s tour op een 8 8 schaakbord 1. Geef een backtracking algoritme dat een knight s tour bepaalt. 2. Werk een deel van de oplossingenboom voor een 4 4 schaakbord voor jouw algorime uit. Kies een deel dat voldoende groot is om te tonen hoe jouw algoritme werkt.

3. Bewijs dat een knight s tour voor een 4 4 schaakbord niet bestaat. Helpt dit bewijs het probleem beter te verstaan en een beter algoritme te ontwikkelen? Misschien een volgorde waarop je de volgende zet kiest of een bounding criterium? Zijn er toppen in jouw uitgewerkte deelboom waar je zou hebben kunnen snoeien? 4. Vertaal dit probleem naar een TSP probleem. Dus: Voor een gegeven getal b definieer eerst een complete graaf G en gewichten op de bogen van G. Bepaal dan een getal x zodat voor G een rondreis bestaat met kost ten hoogste x als en slechts als er een knights tour voor een b b schaakbord bestaat. Het berekenen van G en x moet een computer in tijd O(b 4 ) kunnen doen. 5. Bewijs dat, als b oneven is, een knight s tour voor een b b schaakbord niet bestaat. 6. Bepaal een knight s tour voor een 6 6 schaakbord.

Oefeningen voor de oefeningenles Oefening 23 In de les hebben wij gezien hoe je het TSP kan vertalen naar een lineair probleem en hoe je verschillende eisen in een vorm Ax b kan formuleren waarbij A een matrix is, x de vector van bogen en b een getal. Natuurlijk mag behalve in het geval van maar 3 steden een oplossing nooit driehoeken bevatten. Formuleer deze eis door een reeks van eisen in de vorm Ax b.

Oefening 24 Vertaal het volgende probleem naar een gekend probleem. Geef enkel aan hoe het probleem kan vertaald worden; het is niet nodig ook het algoritme uit te werken. Veronderstel dat n taken T j (j = 1,..., n) moeten uitgevoerd worden op een machine, waarop slechts één taak tegelijk kan uitgevoerd worden. Veronderstel dat de taken in willekeurige volgorde kunnen uitgevoerd worden. De machine moet in een bepaalde toestand S j gebracht worden om taak j te kunnen uitvoeren, ze is in toestand S 0 bij het begin van de reeks taken, en ze moet terug in toestand S 0 gebracht worden bij het einde van de reeks taken; een dergelijke toestand kan bijvoorbeeld beschreven worden door temperatuur, druk, of omwentelingen per minuut. Gegeven is de tijd w ij, die nodig is om de machine om te schakelen van toestand S i naar toestand S j, voor elke i en j; we veronderstellen dat w ij = w ji. Voor elke taak T j is ook de tijd c j gegeven die nodig is om de taak uit te voeren wanneer de machine zich reeds in toestand S j bevindt. Het is de bedoeling een volgorde voor de taken te bepalen zodanig dat de reeks in zo weinig mogelijk tijd kan afgewerkt worden.

Oefening 25 Werk de spelboom uit voor de volgende beginsituatie van drie-opeen-rij. X X O X O O Maar: De regels zijn een klein beetje gewijzigd: Je kan niet alleen maar winnen en verliezen maar de winst/het verlies is het aantal stenen die na de laatste zet op het bord aanwezig zijn. Dus hoe later je wint hoe meer je wint. Wat is de waarde van dit spel?

Oefeningen voor de oefeningenles Oefening 26 Een knikkerspelletje Beschouw het volgende spelletje : Twee spelers zitten aan een tafel met daarop 6 knikkers. Elke speler neemt om beurt één, twee of drie knikkers weg. De speler die de laatste knikker wegneemt, verliest het spel. 1. Teken de volledige spelboom voor dit spel. 2. Onderstel dat de boom systematisch afgelopen wordt met de minimax strategie, waarbij toppen met de configuraties met het kleinste aantal knikkers eerst doorzocht worden. Probeer het eindresultaat te bekomen door zo weinig mogelijk takken uit te werken (d.i. snoeien). Welke toppen worden dan weggesnoeid? 3. Wie wint het spel als beide spelers optimaal spelen?

Oefening 27 α-β-snoeien Oefening 10.2 in het boek: Gegeven is een hypothetische spelboom, waarbij in elk blad de waarde van de evaluatiefunctie voor die situatie ingevuld is. Bepaal de waarde van de wortel van de boom, en probeer daarbij zoveel mogelijk te snoeien, m.a.w. probeer zo weinig mogelijk interne toppen ook effectief te evalueren. Merk op: van bepaalde bladeren is de waarde irrelevant! max max min min max max min 11 12 min 5 4 1 2 max 3 4 10 11 12 4 2 max 2 5 10 9 4 6 3 5 10 2 12 8 8 7 6 2 4 5 7 5 6 1 4 3

Oefening 28 Nog een oefening uit een examen. Als jullie het ook deze keer zelfstandig oplossen en kijken hoeveel tijd jullie ervoor nodig hebben, kunnen jullie dat al veel beter inschatten als er echt examen is. Een wisselgeldspel Gegeven een bedrag b van eurocent en een getal m dat het maximale aantal zetten bepaalt. De regels zijn als volgt: In het begin ligt 0 cent op tafel. Speler X begint. Als een speler aan de beurt is en er ligt al een bedrag van t < b cent op tafel, moet hij er precies één munt bijleggen zodanig dat nog steeds ten hoogste een bedrag van b op tafel ligt (1 euro telt natuurlijk als 100 cent, etc). Het spel is gedaan als er b cent op tafel ligt. Als er op dit moment ten hoogste m munten liggen, mag speler X het bedrag houden, anders speler Y. De winst is natuurlijk, wat de andere speler op tafel legde. Stel nu dat alleen maar munten van 1, 2 en 10 cent toegelaten zijn (anders wordt de vertakking gewoon te groot om het op papier te doen). Wat is de waarde van het spel met b = 15 en m = 5. //Misschien kan je hier ook branch and bound en dynamisch programmeren toepassen //om niet de hele spelboom te moeten uitwerken...

Oefeningen voor de oefeningenles Oefening 29 Gebruik de Miller-Rabin test om te testen of 70 een priemgetal is. Werk in 3 groepen één groep neemt als basis 11, één groep 12 en één groep 13.

Oefening 30 De volgende oefening lijkt sterk op het voorbeeld in de les, maar er zijn ook sommige belangrijke verschillen die een een beetje verschillende argumentatie vragen: Gegeven een verzameling V en V 1,..., V k V zodat voor 1 i k geldt V i r 3 en k 3 r 1 /2 r+1. Gezocht is een kleuring met 3 kleuren zodat in elke verzameling elementen met alle drie kleuren aanwezig zijn. Let op: Dat is iets anders dan niet alleen maar één kleur aanwezig is. Beschrijf een Las Vegas algoritme dat in lineaire tijd met kans tenminste 1/2 zo n kleuring vindt en toon aan dat jouw algoritme aan de eisen voldoet.

Oefening 31 De binomiaalcoëfficiënten C(n, k) worden recursief als volgt gedefinieerd, voor n = 0, 1, 2,...: C(n, 0) = 1, C(n, n) = 1, C(n, k) = C(n 1, k) + C(n 1, k 1), voor 0 < k < n 1. Geef een recursief algoritme (in pseudocode) dat, voor een gegeven waarde van n en k, de binomiaalcoëfficiënt C(n, k) berekent. Leg uit waarom dit recursieve algoritme inefficiënt is. 2. Geef een algoritme met dynamisch programmeren (in pseudocode) dat, voor een gegeven waarde van n en k, de binomiaalcoëfficiënt C(n, k) berekent. Bespreek de tijds- en geheugencomplexiteit van dit algoritme met dynamisch programmeren.

Oefeningen voor de oefeningenles Oefening 32 Een gretig algoritme voor het (gewone) TSP kan bijvoorbeeld zo werken: Begin met de goedkoopste boog en maak het pad altijd langer maar kies altijd de goedkoopste boog, die het pad verlengt. Toon aan dat dit algoritme arbitrair slechte resultaten kan opleveren. Precies: Toon aan dat er voor elk getal k TSP s zijn (dus gewogen complete grafen waarvoor een goedkoopste hamiltoniaanse cykel wordt gezocht), zodat dit algoritme Hamiltoniaanse cykels berekent die tenminste k keer duurder zijn, dan de goedkoopste.

Oefening 33 Dit is een oefening uit een examen dus probeer het best ze zelfstandig op te lossen om te zien hoeveel tijd je nodig hebt. Geef een voorbeeld waar first-fit dalend beter presteert dan best-fit dalend. Geef een voorbeeld waar best-fit dalend beter presteert dan first-fit dalend. Geef een oneindige reeks van voorbeelden (dus een reeks die afhankelijk is van bijvoorbeeld k) waar best-fit dalend en firstfit dalend allebei niet het optimum vinden.

Oefening 34 Vertaal het volgende probleem naar een gekend probleem. Geef enkel aan hoe het probleem kan vertaald worden; het is niet nodig ook het algoritme uit te werken. In een schrijnwerkerij moet een reeks planken van gegeven lengten x 1,..., x n gezaagd worden uit stukken hout van een zekere vaste lengte x (in mm). Dit moet gebeuren met zo weinig mogelijk verspilling van hout en je kan stellen dat elke snede 2 mm breed is.

Oefening 35 Beschrijf een branch and bound algoritme dat voor een gegeven reeks van gewichten de optimale oplossing van het inpakprobleem vindt. Wat is de complexiteit?