Recreatieve algoritmiek Gerard Tel, Thomas van Dijk.

Slides:



Advertisements
Verwante presentaties
Minimum Spanning Tree. Wat is MST? • Minimum spanning tree • De meest efficiënte manier vinden om een verbonden netwerk op te bouwen.
Advertisements

Algoritmen en Datastructuren (ALDAT)
Hogeschool HZ Zeeland 19 augustus 2003augustus 2003 Data Structuren & Algoritmen Week 1.
Entiteit-Relatie Model
Datastructuren Analyse van Algoritmen en O
‘Inleiding programmeren in Java’ SWI cursus: ‘Inleiding programmeren in Java’ 4e college Woe 19 januari 2000 drs. F. de Vries.
Graph Begrippen: knoop, vertices kant, zijde, edge
Instructie Programmeren Debuggen 5JJ70. Debuggen: Wat is het probleem Je programma compileert, maar werkt niet zoals verwacht, wat nu? Vraag je af: wat.
Project D2: Kempenland Sander Verkerk Jeffrey van de Glind
Marktonderzoek Informatie inwinnen.
1 Datastructuren Sorteren: alleen of niet alleen vergelijkingen College 5.
Datastructuren Zoekbomen
Transport en locatie warehouse
Terrain Analysis Seminar GIA najaar 2004 Joost Voogt.
Dijkstra Kortste pad algoritme.
INTERACTION DESIGN Week 4.
Geheugenbeheer ICT Infrastructuren hoofdstukken 7 en 8.1.
Korstste pad van A (in phase 1) naar B (in phase N+1=5) Welke pijlenreeks x i (i=1,2,..4) ? A B aantal mogelijke paden >2 N-1 bv: x 1 =(pijl naar) 2, x.
T U Delft Parallel and Distributed Systems group PGS Fundamentele Informatica in345 Deel 2 College 5 Cees Witteveen.
Inleidend probleem Data structuur (hiërarchie van classes)
Practicum I&M College deel 1
Motion planning with complete knowledge using a colored SOM Jules Vleugels, Joost N. Kok, & Mark Overmars Presentatie: Richard Jacobs.
1 Datastructuren Skiplists. 2 Skiplists  Vrij eenvoudige datastructuur  “Makkelijker” dan gebalanceerde bomen  Kunnen hetzelfde als gebalanceerde bomen.
Optuigen van datastructuren
1 Datastructuren Heapsort (2e deel) College 5. 2 Vandaag  Heaps en Heapsort  (eind)  Nog sneller sorteren:  Ondergrenzen  Linair sorteren.
Informatieanalyse.
Opgave 1a: void nvoid staat in de header van een methode die geen resultaatwaarde heeft nde aanroep van een void-methode is dan een opdracht i.p.v. een.
Datastructuren Sorteren, zoeken en tijdsanalyse
1 Datastructuren Een informele inleiding tot Skiplists Onderwerp 13.
Cooperative Transport Planning
T U Delft Groep Parallelle en Gedistribueerde Systemen PGS College in345 Deel 2 Cees Witteveen Parallelle en Gedistribueerde Systemen Faculteit Informatie.
De rommel van de programmeur Pieter van Ede. Handmatig geheugenbeheer Programmeur gooit zelf objecten weg Veel fouten mee gemaakt Geheugenlekken ‘Dangling.
T U Delft Parallel and Distributed Systems group PGS Fundamentele Informatica in345 Deel 2 College 6 Cees Witteveen.
1 PI1 week 9 Complexiteit Sorteren Zoeken. 2 Complexiteit van algoritmen Hoeveel werk kost het uitvoeren van een algoritme (efficiëntie)? –tel het aantal.
Toepassingen 5L week 2: ‘Vakantieherinneringen’ Ik bereken het gemiddelde: 1.Ik tel alle waarden op. 2.Ik deel dat door het totaal aantal waarden. 3.Het.
Grafentheorie Graaf Verzameling knopen al dan niet verbonden door takken, bijv:
Communicatie & gastheerschap
Recursie…. De Mandelbrot Fractal De werking… De verzameling natuurlijke getallen… 0 ∞-∞
Snijpunt bepalen. Lijn p en lijn q snijden elkaar. Wat zijn de coördinaten van het snijpunt ?
Minimum Opspannende Bomen Algoritmiek. 2 Inhoud Het minimum opspannende bomen probleem Een principe om een minimum opspannende boom te laten groeien Twee.
Doorzoeken van grafen Algoritmiek. Algoritmiek: Divide & Conquer2 Vandaag Methoden om door grafen te wandelen –Depth First Search –Breadth First Search.
Kortste Paden Algoritmiek. 2 Vandaag Kortste Paden probleem All pairs / Single Source / Single Target versies DP algoritme voor All Pairs probleem (Floyd’s.
Heuristieken en benaderingsalgoritmen Algoritmiek.
Divide & Conquer: Verdeel en Heers vervolg Algoritmiek.
Datastructuren voor grafen Algoritmiek. 2 Grafen Model van o.a.: –Wegennetwerk –Elektrische schakeling –Structuur van een programma –Computernetwerk –…
PLANNING MAKEN Stap één bij projecten. HOE MAAK JE EEN ANALYSE? Wat is het verschil tussen een planning en een plan?
Kortste Paden Algoritmiek.
Doorzoeken van grafen Algoritmiek.
Datastructuren voor graafrepresentatie
Minimum Opspannende Bomen
Kennismaking met programmeren
Hoe kijkt EZ naar Beheer BGT
Wanneer er maar één aanbieder is
Wiskunde in het eerste leerjaar
Welkom Havo 5..
Welkom Havo 5..
Modelleren en Programmeren voor KI Practicumopdracht 4: SAT Solver
Kennismaking met programmeren
Het online opzetten, afnemen, beoordelen en verwerken van toetsen
Keuzevoorlichting havo wiskunde AB.
Modderdorp UNPLUGGED Bron: csunplugged.org.
Zandloper LOGO! Daniël en Martijn 1.
Slim tellen.
Reflectie en verstrooiing Schaduw en halfschaduw
Modderdorp UNPLUGGED Bron: csunplugged.org.
Slim tellen.
Doolhof. doolhof doolhof Maak een routine die de ‘hekken’ tussen de cellen weghaalt Maak een 2-dimensionale array met kolommen en rijen aangeklikt.
Hoofdstuk 21 PROBLEEMOPLOSSEN. Hoofdstuk 21 PROBLEEMOPLOSSEN.
Hoofdstuk 20 Grafieken en tabellen. Hoofdstuk 20 Grafieken en tabellen.
Python – For loop + strings
Transcript van de presentatie:

Recreatieve algoritmiek Gerard Tel, Thomas van Dijk

UKP BAPC NWERC.eu World Finals

3 personen 5 uur 8+ opgaven Algoritmische puzzels Snel programmeren

Details kunnen belangrijk zijn String + String tijd lineair in de lengtes van de strings. – (java.lang.String) String total = “”; for( String s : myStrings ) total = total + s; Kost kwadratische tijd! Gebruik toepasselijke streams/buffers, bijv StringBuilder.

Geheugenbeheer Heap (new) Allocaties zijn duur Veel ruimte Vrij te referencen Garbage collection Stack Allocaties zijn goedkoop Beperkte ruimte Beperkte scope

Comments Goede comments zijn moeilijk. Veel is niet per se goed. Gaat om leesbaarheid / begrijpbaarheid. “Als de code en de comments elkaar tegenspreken, zijn ze waarschijnlijk allebei fout.”

Amortized analyse Dynamisch programmeren Korste paden Spanning trees Lin. time order statistics Datastructuren: Zoekbomen Prio queue Binary search Datastructuren: Zoekbomen Prio queue Binary search Max flow / matching Divide & conquer Greedy NP-volledigheid Randomisering Linear programming Tries Approximatie

Discodrukte Persoon i komt op tijd s i en gaat op tijd f i. Hoeveel mensen waren er maximaal tegelijk binnen?

Discodrukte Persoon i komt binnen op tijd s i en gaat op tijd f i. Hoeveel mensen waren er maximaal tegelijk binnen? Sorteer s en f Tegelijk doorlopen als in een ‘merge’ Lopend maximum bijhouden

Taarten snijden Er komen n vrienden op bezoek. Er zijn k taarten, met omvang r i. Verder identiek. Iedereen krijgt 1 stuk uit 1 taart. Iedereen krijgt evenveel taart. Grootst mogelijke stuk taart?

Taarten snijden Elegante greedy oplossing met prio queue. Grootst mogelijke stuk taart? Haalbaarheid van een bepaalde grootte triviaal te controleren. Binary search! (Alert: specs vermeldt precisie)

Verhuizen Dozen moeten naar verdieping N m personen Staan op verdieping a i, al dan niet met doos Er staan nog k dozen op de begane grond De trap is smal: Mensen kunnen elkaar niet passeren Kan wel op de trap een doos doorgeven Hoe lang duurt het voordat alle dozen boven zijn?

Verhuizen het gaat om de dozen! Antwoord makkelijk te bepalen met simulatie, maar

Maanspullen Ruimteschip naar de maan Objecten verzamelen – Opbrengst – Gewicht – Tijd nodig om in te laden Ruimteschip kan max gewicht W vervoeren Er is maar beperkte tijd T voor inladen Welke objecten neem je mee voor opt opbrengst?

Maanspullen Ruimteschip naar de maan Objecten verzamelen – Opbrengst – Gewicht – Tijd nodig om in te laden Ruimteschip kan max gewicht W vervoeren Er is maar beperkte tijd T voor inladen Welke objecten neem je mee voor opt opbrengst? Knapsack!

Vrij korte paden Tour operator Amsterdam-Brussel. Klant mag route kiezen; gewogen graaf. Maar geen grote omweg: alleen kortste pad of 1 langer. Hoeveel mogelijke routes?

Vrij korte paden (…) kortste pad of 1 langer. Dijkstra aanpassen? Hoeveel mogelijke routes? Wellicht dynamisch programmeren: kan ‘meestal’ uitgebreid worden om te tellen.

Vrij korte paden Dijkstra aanpassen? Dynamisch programmeren over die graaf. Volgorde? Misschien elegant, maar … te veel details. Gewone Dijkstra om lengte kortste pad te bepalen. Recursief aantal paden tellen: Aantal paden van lengte k dat in knoop v uitkomt, met de extra stap al wel/niet genomen. Memoisatie.

Schaduwen Lichtbron op punt p. Lijnstukken van punt a i naar b i. Beschouw de schaduw op de lijn y=0. Hoeveel aaneengesloten stukken schaduw? Of: totale lengte van schaduw

Schaduwen Lichtbron op punt p. Lijnstukken van punt a i naar b i. Beschouw de schaduw op de lijn y=0. Hoeveel aaneengesloten stukken schaduw? Of: totale lengte van schaduw

Schaduwen Lichtbron op punt p. Lijnstukken van punt a i naar b i. Beschouw de schaduw op de lijn y=0. Hoeveel aaneengesloten stukken schaduw? Of: totale lengte van schaduw 01012

Penguin bashing Een Yeti slaat met een knuppel een pinguïn Slaat pinguïn onder te kiezen hoek ( graden) Gegeven mechanica: zwaartekracht, wrijving, etc. Bommen: pinguïn wordt verder gelanceerd. Valkuilen: pinguïn verloren. Welke integer hoek brengt de penguïn het verst?

Penguin bashing Een Yeti slaat met een knuppel een pinguïn Slaat pinguïn onder te kiezen hoek ( graden) Gegeven mechanica: zwaartekracht, wrijving, etc. Bommen: pinguïn wordt verder gelanceerd. Valkuilen: pinguïn verloren. Welke integer hoek brengt de penguïn het verst? 182 is weinig. Voor gegeven hoek: gewoon doorrekenen.

Penguin bashing vs taart snijden Bij het taartsnijden is de JA/NEE beslissing monotoon (als stuk s niet kan, dan groter stuk ook niet) Binary search! Bij penguin bashing onvoorspelbaar Brute force

Rookverbod Ruimtes in een restaurant, verbonden met deuropeningen. Aangegeven ruimtes: Ingang en Keuken. Partitioneer het restaurant met rooksluizen in aaneengesloten “rokers-” en “niet-rokersgebieden”. De Ingang is rokersgebied. De Keuken is niet-rokersgebied. Hoeveel rooksluizen zijn er minimaal nodig?

Rookverbod Ruimtes in een restaurant, verbonden met deuren. Een graaf, uiteraard. De Ingang is rokersgebied. De Keuken is niet-rokersgebied. Hoeveel rooksluizen zijn er minimaal nodig? Scheid Ingang en Keuken met zo min mogelijk kanten. Dat probleem heet Min Cut = Max Flow!

Priem kamernummers Alle kamernummers zijn 4-cijferige priemgetallen. Kamernummer p moet veranderd worden in q, ook priem. Kamernummer kan alleen per cijfer veranderd worden. Alle tussenstappen moeten ook priem zijn. Kan dit? Minst aantal stappen?

Priem kamernummers 4-cijferige priemgetallen. Zijn er niet veel van. KNOPEN (Zeker <10k. Hm. 10k/ln(10k), ~1000) Mag van de een naar de ander als 1 cijfer verschil. KANTEN Minst aantal stappen? Korste pad in ongewogen graaf: BFS.

Chip routing Gigantisch grid N x N k “input” en “output” punten op de rand. Verbind input i met output i over de grid. Paden mogen elkaar niet kruisen. Is dat mogelijk in de gegeven instantie?

Chip routing Verbind input i met output i over de grid. Paden mogen elkaar niet kruisen. Klinkt als (node capacity) flow Gigantisch grid N x N Maar niet letterlijk op de grid… … simplificatie?

Chip routing Is dat mogelijk in de gegeven instantie? Hoeft niet constructief! Greedy: beschouw de rand als corresponderende in/output naast elkaar: weghalen als geen: instantie onmogelijk

Mixtape Verzameling van k nummers voor een mixtape (k~20). Sommige nummers passen beter na elkaar dan anderen. Kwaliteit van nummer i na j is c ij. Beste volgorde?

Mixtape Verzameling van k nummers voor een mixtape (k~20). 20 is erg weinig. Beste volgorde? Brute force geeft 20! mogelijkheden, ~ 2.4 x Toch erg veel.

Mixtape Kwaliteit van nummer i na j is c ij. Beste volgorde? Klinkt een beetje als Traveling Salesman Problem (“TSP”). Volgorde-problemen kunnen soms in O * ( 2 n ) tijd met dynamisch programmeren. “Beste score voor deelverzameling S van de nummers, eindigend op nummer i” 2 20 ~ 1 miljoen

Pinguïnvergadering n ijsschotsen. p i pinguïns op schots i. Gegeven is van welke schots je naar welke andere kan springen. Landen op een schots doet schade: kan maar s i keer, dan is de schots weg. Kunnen de pinguïns verzamelen op 1 schots?

Pinguïnvergadering Gegeven is van welke schots je naar een andere kan springen. (…) verzamelen op 1 schots? Iets met een graaf / paden. Landen op een schots doet schade: kan maar s i keer, dan is de schots weg. Node capacity flow Gok vergaderschots

Succes met toets 2 en practicum