De presentatie wordt gedownload. Even geduld aub

De presentatie wordt gedownload. Even geduld aub

Recreatieve algoritmiek Gerard Tel, Thomas van Dijk.

Verwante presentaties


Presentatie over: "Recreatieve algoritmiek Gerard Tel, Thomas van Dijk."— Transcript van de presentatie:

1 Recreatieve algoritmiek Gerard Tel, Thomas van Dijk

2 UKP BAPC NWERC.eu World Finals

3

4 3 personen 5 uur 8+ opgaven Algoritmische puzzels Snel programmeren

5 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.

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

7 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.”

8 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

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

10 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

11 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?

12 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)

13

14 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?

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

16

17 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?

18 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!

19 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?

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

21 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.

22 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

23 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

24 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

25

26 Penguin bashing Een Yeti slaat met een knuppel een pinguïn Slaat pinguïn onder te kiezen hoek (-90... 90 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?

27 Penguin bashing Een Yeti slaat met een knuppel een pinguïn Slaat pinguïn onder te kiezen hoek (-90... 90 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.

28 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

29 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?

30 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!

31 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?

32 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.

33 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?

34 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?

35 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

36 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?

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

38 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

39

40 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?

41 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

42

43 Succes met toets 2 en practicum


Download ppt "Recreatieve algoritmiek Gerard Tel, Thomas van Dijk."

Verwante presentaties


Ads door Google