1 / 43

Recreatieve algoritmiek

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)

thetis
Download Presentation

Recreatieve algoritmiek

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Recreatieve algoritmiek Gerard Tel, Thomas van Dijk

  2. UKP BAPC NWERC.eu World Finals

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

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

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

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

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

  8. Discodrukte • Persoon i komt op tijd si en gaat op tijd fi. • Hoeveel mensen waren er maximaal tegelijk binnen?

  9. Discodrukte • Persoonikomtbinnen op tijdsi en gaat op tijdfi. • Hoeveelmensenwarenermaximaaltegelijkbinnen? Sorteers en f Tegelijkdoorlopenals in een ‘merge’ Lopend maximum bijhouden

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

  11. Taarten snijden Elegante greedy oplossing met prio queue. • Grootstmogelijkestuktaart? Haalbaarheid van eenbepaaldegroottetriviaaltecontroleren. Binary search! (Alert: specs vermeldtprecisie)

  12. Verhuizen • Dozen moeten naar verdieping N • m personen • Staan op verdieping ai, 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?

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

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

  15. Maanspullen • Ruimteschipnaar de maan • Objectenverzamelen • Opbrengst • Gewicht • Tijdnodigom in te laden • Ruimteschipkan max gewichtW vervoeren • Er is maar beperktetijdT voorinladen • Welkeobjectenneem je meevoor opt opbrengst? Knapsack!

  16. 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?

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

  18. Vrij korte paden Dijkstraaanpassen? Dynamischprogrammeren over die graaf. Volgorde? Misschien elegant, maar … teveel details. GewoneDijkstraomlengtekortste pad tebepalen. Recursiefaantalpadentellen:Aantalpaden van lengtekdat in knoopvuitkomt,met de extra stap al wel/nietgenomen. Memoisatie.

  19. Schaduwen • Lichtbron op punt p. • Lijnstukken van punt ai naar bi. • Beschouw de schaduw op de lijn y=0. • Hoeveel aaneengesloten stukken schaduw? • Of: totale lengte van schaduw

  20. Schaduwen • Lichtbron op punt p. • Lijnstukken van punt ai naar bi. • Beschouw de schaduw op de lijn y=0. • Hoeveel aaneengesloten stukken schaduw? • Of: totale lengte van schaduw

  21. Schaduwen • Lichtbron op punt p. • Lijnstukken van punt ai naar bi. • Beschouw de schaduw op de lijn y=0. • Hoeveel aaneengesloten stukken schaduw? • Of: totale lengte van schaduw 0 1 0 1 2

  22. 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?

  23. Penguin bashing • Een Yeti slaat met eenknuppeleenpinguïn • Slaatpinguïnondertekiezenhoek (-90 ... 90 graden) • Gegevenmechanica: zwaartekracht, wrijving, etc. • Bommen: pinguïnwordtverdergelanceerd. • Valkuilen: pinguïnverloren. • Welke integer hoekbrengt de penguïn het verst? 182 is weinig. Voorgegevenhoek: gewoondoorrekenen.

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

  25. 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?

  26. Rookverbod • Ruimtes in een restaurant, verbonden met deuren. Eengraaf, uiteraard. • De Ingang is rokersgebied. • De Keuken is niet-rokersgebied. • Hoeveelrooksluizenzijnerminimaalnodig? ScheidIngang en Keuken met zo min mogelijkkanten. Datprobleemheet Min Cut = Max Flow!

  27. 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?

  28. Priem kamernummers • 4-cijferige priemgetallen. Zijnernietveel van. KNOPEN (Zeker <10k. Hm. 10k/ln(10k), ~1000) Mag van de eennaar de anderals 1 cijferverschil. KANTEN • Minstaantalstappen? Korste pad in ongewogengraaf: BFS.

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

  30. 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?

  31. Chip routing • Is dat mogelijk in de gegeven instantie? Hoeft niet constructief! Greedy:beschouw de randals corresponderende in/outputnaast elkaar: weghalenals geen: instantie onmogelijk

  32. 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 cij. • Beste volgorde?

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

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

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

  36. 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 si keer, dan is de schots weg. Node capacity flow Gok vergaderschots

  37. Succes met toets 2 enpracticum

More Related