π Voorbeeld - Eieren breken
Eieren zijn kwetsbaar en breken snel, maar hoe snel? Je doet een experiment: je kan een ei laten vallen van 1 cm, 2 cm of 3 cm hoogte. Je wil uitzoeken vanaf welke hoogte eieren breken en je beschikt over 2 eieren.
Dit weet je:
- Alle eieren breken op dezelfde hoogte.
- Als een ei breekt op een bepaalde hoogte, dan breekt het ook op elke grotere hoogte.
- Als je een ei laat vallen en het breekt niet, dan kan je het ook opnieuw gebruiken.
Begin bij 3 cm:
β Opgelet
Als je al je eieren kwijt bent vΓ³Γ³r je een definitief antwoord hebt, is je experiment mislukt. Je moet je eieren slim inzetten!
Begin bij de laagste hoogte en werk omhoog:
Dit werkt, maar in het slechtste geval heb je 3 pogingen nodig. Kan het slimmer?
We kunnen alle mogelijke strategieΓ«n uitschrijven en de beste kiezen. Dat is de Brute Force-aanpak.
π Alle mogelijkheden uitgewerkt
Kies de strategie met het kleinste aantal pogingen in het slechtste geval:
Strategie A - Begin bij 1 cm:
- Ei valt van 1 cm β breekt: antwoord na 1 poging β
- Ei valt van 1 cm β breekt niet:
- Ei valt van 2 cm β breekt: antwoord na 2 pogingen β
- Ei valt van 2 cm β breekt niet:
- Ei valt van 3 cm β breekt: antwoord na 3 pogingen
- Ei valt van 3 cm β breekt niet: antwoord na 3 pogingen
β Slechtste geval: 3 pogingen
Strategie B - Begin bij 2 cm:
- Ei valt van 2 cm β breekt:
- Ei valt van 1 cm β breekt: antwoord na 2 pogingen β
- Ei valt van 1 cm β breekt niet: antwoord na 2 pogingen β
- Ei valt van 2 cm β breekt niet:
- Ei valt van 3 cm β breekt: antwoord na 2 pogingen β
- Ei valt van 3 cm β breekt niet: antwoord na 2 pogingen β
β Slechtste geval: 2 pogingen π
Strategie C - Begin bij 3 cm:
- Ei valt van 3 cm β breekt:
- Ei valt van 1 cm β breekt: antwoord na 2 pogingen β
- Ei valt van 1 cm β breekt niet:
- Ei valt van 2 cm β breekt: antwoord na 3 pogingen
- Ei valt van 2 cm β breekt niet: antwoord na 3 pogingen
- Ei valt van 3 cm β breekt niet: antwoord na 1 poging β
β Slechtste geval: 3 pogingen
Conclusie: Strategie B (begin bij 2 cm) heeft in het slechtste geval slechts 2 pogingen nodig. Maar, oef, wat een werk om dit allemaal uit te schrijven! Stel je voor wat er gebeurt bij 15 cm hoogte en 3 eierenβ¦
π€ Huh? - Brute kracht is duidelijk niet alles
Naarmate het probleem groter wordt, wordt de lijst van mogelijkheden exponentieel langer. Er moet een slimmere aanpak bestaan!
Als je de Brute Force-boom goed bekijkt, zie je dat hetzelfde deelprobleem meerdere keren voorkomt. Bijvoorbeeld: βje hebt nog 2 eieren en 1 hoogte te testenβ komt op twee verschillende plaatsen in de boom voor.
π Hergebruik van resultaten
Wat telt in dit probleem zijn twee dingen:
- Het aantal eieren dat je nog hebt
- De grootte van het bereik waarbinnen je nog zoekt
Als je voor een bepaalde combinatie van (aantal eieren, bereik) al weet wat het minimale aantal pogingen is, moet je dat niet opnieuw berekenen β je kan het gewoon hergebruiken!
β Begrip - Memoisatie
Memoisatie is een techniek waarbij je een eerder berekend resultaat onthoudt en hergebruikt, zodat je hetzelfde rekenwerk niet twee keer hoeft te doen.
Als de zoekruimte groter wordt, loopt het werk dat je uitspaart met memoisatie flink op.