7.5 O(log n) — logaritmische tijd
Leerdoel: je herkent algoritmes die bij elke verdubbeling van n
maar één stap extra doen, en je ziet visueel een bijna platte
curve.
Hoe gedraagt het zich?
O(log n) betekent: bij elke verdubbeling van n komt er één stap
bij. Dat is bizar weinig groei.
n | log₂ n |
|---|---|
| 10 | ~3 |
| 100 | ~7 |
| 1.000 | ~10 |
| 1.000.000 | 20 |
| 1.000.000.000 | 30 |
Een miljard elementen → 30 stappen. Dat is O(log n) in actie.
Analogie: een woord opzoeken in het woordenboek. Sla open in het midden, beslis "linker- of rechterhelft", herhaal. Bij elke verdubbeling van het woordenboek heb je maar één extra slag nodig.
Hoe ontstaat het?
O(log n) ontstaat bijna altijd door halveren: bij elke stap snij je
het werk doormidden. Dat is precies wat binair zoeken doet.
Vergelijk:
- Bij
O(n)doe jenstappen door alles te bekijken. - Bij
O(log n)doe jelog₂(n)stappen door steeds de helft weg te gooien.
Voorspel
Op een lijst van 1.000.000 elementen: hoeveel vergelijkingen doet binair zoeken in het slechtste geval?
Antwoord
Ongeveer 20 vergelijkingen. log₂(1.000.000) ≈ 19.9.
Vergelijk met lineair zoeken op dezelfde lijst: 1.000.000 vergelijkingen. Het verschil is een factor 50.000.
Run — kijk hoe het groeit
Wat zie je?
Op een log-schaal voor n zie je een rechte lijn die maar
langzaam stijgt. Elke verdubbeling van n voegt slechts één stap toe.
- 10 → 4 stappen
- 100 → 7 stappen
- 1.000 → 10 stappen
- 1.000.000 → 20 stappen
Op een normale (lineaire) x-as zou dezelfde lijn er bijna vlak uitzien — de groei is zó traag dat je hem nauwelijks ziet.
Welke algoritmes zijn O(log n)?
In dit curriculum:
- Binair zoeken — het schoolvoorbeeld van halveren. Zie binair-zoeken/08-compleet.
Belangrijk: binair zoeken werkt alleen op een gesorteerde lijst. Geen
sortering, geen O(log n). Sorteren is zelf duurder (O(n log n) of
slechter), dus binair zoeken loont alleen als je vaak in dezelfde
gesorteerde lijst zoekt.
Door naar stap 6: O(n²) — kwadratisch →.