Er bestaan, zoals hiervoor uitgelegd, zeer veel verschillende problemen en algoritmes om ze op te lossen.

Algoritmes zijn specifiek ontworpen voor het oplossen van een bepaald probleem. De algoritmes voor uiteenlopende problemen zijn verschillend, maar ze gebruiken vaak wel dezelfde algoritmische technieken.

Hier stellen we kort een aantal bekende problemen voor die we later in deze module zullen behandelen.

👀 Voorbeeld – Van klein naar groot

Een bekend probleem dat met een algoritme kan worden opgelost, is het sorteren van getallen van klein naar groot. Er zijn erg veel verschillende manieren waarop dit probleem opgelost kan worden en elk van die manieren geeft aanleiding tot een ander algoritme.

Denk onder andere aan het herhaaldelijk willekeurig door elkaar husselen van de getallen in de hoop dat ze ooit in de juiste volgorde komen te staan, of door getallen twee per twee te vergelijken en de kleinste steeds vooraan te plaatsen.

Bij het ontwikkelen van algoritmes voor complexe problemen worden deze vaak opgedeeld in kleinere deelproblemen, waarbij het hoofdalgoritme gebruikmaakt van de algoritmes voor de deelproblemen. Het is een goede gewoonte om een probleem op te splitsen in deelproblemen. Dat houdt je code/algoritme overzichtelijk en makkelijker om te begrijpen.

👀 Voorbeeld – Vele kleintjes maken één grote

In het dagelijkse leven pas je het gebruik van hoofd- en deelproblemen automatisch toe. Als je bijvoorbeeld een TikTok-post wil plaatsen, doe je dit aan de hand van de volgende deelproblemen:

  1. Vind de app op je GSM.
  2. Bedenk een leuk idee voor je post.
  3. Upload je filmpje met de juiste muziek.
  4. Bewerk je video tot die perfect is.
  5. Post de video.

Vele kleine deelproblemen splitsen het grote probleem dus op in haalbare, makkelijkere probleempjes.

tiktok

🧐 Wist je dat…

…het opsplitsen van problemen in verschillende deelproblemen een algoritmische techniek is? De techniek wordt decompositie genoemd en is een van de meest gebruikte algoritmische technieken.

🧠 Denkoefening – Wat zou jij doen?

Hoe zou jij de volgende problemen in deelproblemen opsplitsen?

  1. Het klaarmaken van je lunch.
  2. Een deling van 65 door 8 berekenen.
  3. Een taart in 16 gelijke stukken snijden.

Een bijkomend voordeel van het opsplitsen in deelproblemen is dat veel problemen gemeenschappelijke deelproblemen hebben. In het volgende hoofdstuk zal je zien dat we een aantal eenvoudige algoritmes kunnen hergebruiken in meerdere sorteeralgoritmes.

🧐 Wist je dat…

…er altijd meerdere algoritmes bestaan om een programmeerprobleem op te lossen? Net zoals in alle andere domeinen, zijn er bijna altijd meerdere oplossingen voor een gegeven probleem.

Om dit te tonen, zullen we in de volgende hoofdstukken meerdere algoritmes bespreken die allemaal gebruikt kunnen worden om lijsten te sorteren.