Tot nu toe hebben we data in lijnen bekeken - arrays, linked lists, stacks en queues rangschikken items in een reeks. Maar de echte wereld is niet lineair. Stambomen vertakken. Sociale netwerken vormen webben. Wegenkaarten creëren onderling verbonden routes.
Bomen en grafen vangen deze relaties, en ze vormen de kern van enkele van AI's krachtigste technieken.
Een boom is een structuur waarin elk item (een node of knooppunt) kind-nodes kan hebben, waardoor een hiërarchie ontstaat. Er is één speciaal knooppunt bovenaan genaamd de root (wortel), en knooppunten zonder kinderen heten leaves (bladeren).
CEO
/ \
CTO CFO
/ \ \
Dev1 Dev2 Accountant
Een binaire boom beperkt elk knooppunt tot maximaal twee kinderen - een linkerkind en een rechterkind. Deze eenvoudige beperking maakt krachtige algoritmen mogelijk.
8
/ \
3 10
/ \ \
1 6 14
Een binary search tree voegt één regel toe: voor elk knooppunt zijn alle waarden in de linker deelboom kleiner en alle waarden in de rechter deelboom groter.
Dit maakt zoeken snel - bij elk knooppunt weet je of je links of rechts moet:
Sign in to join the discussion
Vind 6 in de BST hierboven:
Start bij 8 → 6 < 8, ga links
Bij 3 → 6 > 3, ga rechts
Bij 6 → Gevonden!
Tijdcomplexiteit: O(log n) voor een gebalanceerde boom - dezelfde logaritmische magie als binary search op een gesorteerde array.
In een gebalanceerde binary search tree met 1.000.000 knooppunten, hoeveel vergelijkingen zijn er ruwweg nodig om een waarde te vinden?
Een graaf generaliseert bomen door de hiërarchiebeperking weg te nemen. Het bestaat uit knooppunten (nodes/vertices) en kanten (edges/verbindingen). Kanten kunnen zijn:
Sociaal netwerk (ongericht):
Alice - Bob - Charlie
\ |
Diana - Eve
Wegenkaart (gewogen, gericht):
Londen →(2u)→ Birmingham →(1,5u)→ Manchester
Facebooks sociale graaf bevat meer dan 3 miljard knooppunten (gebruikers) en honderden miljarden kanten (vriendschappen). Graafalgoritmen bepalen je Nieuwsfeed, vriendsuggesties en advertentietargeting - allemaal draaiend op een van de grootste grafen ooit gebouwd.
Een van de meest interpreteerbare AI-modellen is de decision tree (beslisboom). Het stelt een reeks ja/nee-vragen om data te classificeren:
Is temperatuur > 30°C?
├── Ja: Is luchtvochtigheid > 70%?
│ ├── Ja: "Niet tennissen"
│ └── Nee: "Wel tennissen"
└── Nee: Is het winderig?
├── Ja: "Niet tennissen"
└── Nee: "Wel tennissen"
Decision trees zijn populair omdat mensen ze kunnen lezen en begrijpen - cruciaal in gezondheidszorg, financiën en juridische AI waar verklaarbaarheid ertoe doet.
Een ziekenhuis gebruikt AI om patiëntrisico te voorspellen. Toezichthouders eisen dat de AI zijn beslissingen kan uitleggen. Waarom zou een decision tree de voorkeur hebben boven een diep neuraal netwerk, zelfs als het netwerk iets nauwkeuriger is?
Een random forest bouwt honderden decision trees, elk getraind op een iets andere subset van de data, en laat ze stemmen. Deze ensemble-aanpak is nauwkeuriger en robuuster dan een enkele boom.
Een knowledge graph slaat feiten op als relaties tussen entiteiten:
(Londen) --[hoofdstad_van]--> (Verenigd Koninkrijk)
(Londen) --[gelegen_in]--> (Engeland)
(Big Ben) --[gelegen_in]--> (Londen)
Google's Knowledge Graph drijft de informatiepanelen aan die je ziet in zoekresultaten.
Netflix, Spotify en Amazon modelleren gebruikers en items als een graaf. Als gebruikers A en B beide items X en Y leuk vonden, en A ook item Z leuk vond, suggereert de graaf Z aan B. Dit is collaborative filtering aangedreven door graafstructuur.
Waarom zijn grafen beter dan simpele lijsten voor het modelleren van sociale netwerken?
DFS verkent zo ver mogelijk langs één pad voordat het terugkeert. Denk aan een doolhof verkennen door altijd links af te slaan tot je vastloopt, dan teruglopen.
A
/ \
B C
/ \ \
D E F
DFS-volgorde: A → B → D → E → C → F
DFS gebruikt een stack (vanzelf via recursie, of expliciet). Geschikt voor: doolhoven, cyclusdetectie, topologisch sorteren.
BFS verkent alle buren op de huidige diepte voordat het dieper gaat. Denk aan rimpelingen die zich uitbreiden vanaf een steen in een vijver.
A
/ \
B C
/ \ \
D E F
BFS-volgorde: A → B → C → D → E → F
BFS gebruikt een queue. Geschikt voor: kortste pad, sociale-netwerkanalyse, webcrawling.
Merk op hoe stacks en queues uit de vorige les verbonden zijn met boom- en graaftraversal? DFS gebruikt een stack; BFS gebruikt een queue. Datastructuren bouwen op elkaar voort - daarom is de volgorde van leren belangrijk.
Je wilt de kortste route vinden tussen twee steden op een kaart waar alle wegen even lang zijn. Welke traversal gebruik je?
Sociale media meten "graden van scheiding" - hoeveel vriend-van-vriend-stappen twee mensen verbinden. Welk traversal-algoritme vindt efficiënt het minste aantal stappen?
Google's PageRank-algoritme - de oorspronkelijke doorbraak die Google dominant maakte - modelleert het web als een graaf. Elke webpagina is een knooppunt, elke hyperlink een gerichte kant, en het belang van een pagina wordt bepaald door hoeveel belangrijke pagina's ernaar linken.