Algoritmen
Zeven hoofdstukken over de methoden achter zoeken, sorteren en een weg door een doolhof vinden: het algoritme van Euclides, lineair en binair zoeken, vijf sorteermethoden, grote-O-notatie, recursie met de Torens van Hanoi en breedte-eerst en diepte-eerst zoeken. Elk hoofdstuk heeft een lab waarin je het algoritme stap voor stap uitvoert en vergelijkingen telt, JavaScript-oefeningen die op de pagina worden gecontroleerd, flitskaarten en 10 tot 12 oefenvragen met uitleg.
Over deze cursus
Een algoritme is een nauwkeurige methode met een duidelijke invoer en uitvoer. Je eerste gewoonte is beide opschrijven voordat je code schrijft. Voor de grootste gemeenschappelijke deler zijn de invoer twee positieve gehele getallen en de uitvoer één geheel getal dat beide deelt, zonder grotere gemeenschappelijke deler. Eerst ontmoet je Euclides' methode. Je telt hoeveel delingen die nodig heeft voor 1071 en 462. Je leest ook over Ada Lovelace. Haar laatste aantekening bij Charles Babbages ongebouwde Analytical Engine, Note G, beschrijft stap voor stap hoe de machine Bernoulligetallen kon berekenen.
In zeven hoofdstukken ga je van eenvoudig naar slim. Je vergelijkt lineair met binair zoeken. Binair zoeken halveert bij elke controle minstens het overgebleven deel en werkt alleen op een gesorteerde lijst. Daarna volgen twee hoofdstukken over sorteren: Bubblesort, Selectionsort en Insertionsort, dan Mergesort en Quicksort. John von Neumann stelde Mergesort in 1945 voor; Tony Hoare bedacht Quicksort in 1959. De Big O-notatie verklaart waarom dat telt. Bij een miljard stappen per seconde heeft een n²-methode op een miljoen waarden ongeveer 17 minuten nodig. Een n log n-methode doet het in 0.02 seconden. Recursie gebruikt de Toren van Hanoi, in 1883 gepubliceerd door Édouard Lucas. Tot slot komen breedte-eerst en diepte-eerst zoeken op een kleine graaf van A tot F. Elk hoofdstuk heeft een lab dat het algoritme stap voor stap uitvoert.
Een veelgemaakte fout is recursie zonder stopgeval. Elke wachtende aanroep neemt ruimte op de aanroepstapel in. In Chrome en Node.js krijg je dan RangeError: Maximum call stack size exceeded.
Voor je begint
Elk hoofdstuk heeft JavaScript-oefeningen die op de pagina worden gecontroleerd. Daarom is JavaScript het logische begin: lussen, arrays en functies komen hier allemaal voor. Goed kunnen werken met machten van 2 en eenvoudige logaritmen helpt ook wanneer je berekent hoeveel controles binair zoeken nodig heeft.
Als je klaar bent
Je kunt na afloop met het algoritme van Euclides een grootste gemeenschappelijke deler vinden, uitleggen waarom binair zoeken een naam tussen een miljoen namen in hoogstens 20 controles vindt en bubble-, selection-, insertion-, merge- en quicksort stap voor stap volgen. Je kunt Big O uit code aflezen, een recursieve Toren van Hanoi schrijven en bij een graaf kiezen tussen breedte-eerst en diepte-eerst zoeken.
- 1Wat een algoritme isDe methode om de grootste gemeenschappelijke deler te vinden uit Boek VII van de Elementen van Euclides, ongeveer 2300 jaar geleden geschreven, werkt nog steeds in computers.
- 2Zoeken: lineair en binair zoekenOm één naam in een gesorteerde lijst van een miljoen te vinden, heeft binair zoeken nooit meer dan 20 controles nodig.
- 3Sorteren 1: bubblesort, selectionsort en insertionsortSelectionsort doet precies 45 vergelijkingen op elke lijst van 10 waarden, ongeacht of de lijst door elkaar of al op volgorde begint.
- 4Sorteren 2: mergesort en quicksortEen miljoen waarden sorteren door elk paar te vergelijken kost ongeveer 500 miljard vergelijkingen; mergesort heeft er ongeveer 20 miljoen nodig.
- 5Hoe snel? Grote-O-notatieBij een miljard stappen per seconde kost een n²-methode op een miljoen waarden ongeveer 17 minuten; een n log n-methode kost 0.02 seconden.
- 6RecursieEen Toren van Hanoi met 64 schijven verplaatsen kost 18 446 744 073 709 551 615 zetten; een recursieve functie beschrijft de oplossing in vier regels.
- 7Grafen doorzoeken: BFS en DFSIn 1736 toonde Leonhard Euler aan dat geen wandeling elk van de zeven bruggen van Koningsbergen precies eenmaal oversteekt. Met dat antwoord begon de grafentheorie.
Bronnen van deze cursus (11)
- MIT OpenCourseWare 6.006 Introduction to Algorithms, Spring 2020 (Demaine, Ku, Solomon)
- lecture notes 1 Introduction, 3 Sorting, 9 Breadth-First Search, 10 Depth-First Search (ocw.mit.edu/courses/6-006-introduction-to-algorithms-spring-2020/pages/lecture-notes) and Fall 2011 lecture 13 BFS notes (ocw.mit.edu/courses/6-006-introduction-to-algorithms-fall-2011)
- Cormen, Leiserson, Rivest, Stein, Introduction to Algorithms (MIT Press)
- with the CLRS-based Khan Academy algorithms unit by Thomas Cormen and Devin Balkcom of Dartmouth (khanacademy.org/computing/computer-science/algorithms: binary search, selection sort analysis, merge sort, quicksort overview and analysis)
- MacTutor History of Mathematics, Al-Khwarizmi (mathshistory.st-andrews.ac.uk/Biographies/Al-Khwarizmi: word algorithm from the Latin title Algoritmi de numero Indorum)
- D. E. Joyce, Euclid's Elements Book VII Propositions 1 and 2 (mathcs.clarku.edu/~djoyce/elements/bookVII)
- Wolfram MathWorld, Merge Sort (mathworld.wolfram.com/MergeSort.html: proposed by John von Neumann in 1945, after Knuth 1998 p. 159)
- Stanford CS "Tony Hoare: Quicksort" (cs.stanford.edu/people/eroberts/courses/soco/projects/2008-09/tony-hoare/quicksort.html: devised while a student at Moscow State University for Russian-English machine translation with a tape dictionary, programmed in Algol 60 and published 1961; the year 1959 from the Wikipedia Quicksort article and its cited sources)
- Bodleian Libraries, Ada Lovelace (blogs.bodleian.ox.ac.uk/adalovelace: 1843 paper, Note G Bernoulli numbers)
- Fourmilab text of Menabrea's Sketch with Lovelace's notes (fourmilab.ch/babbage/sketch.html)
- Seven Bridges of Konigsberg (Euler 1736) and Tower of Hanoi (Edouard Lucas, 1883) checked against the Wikipedia articles and their cited sources.
Geraadpleegd: 2026-10-17