Terug naar begrippenlijst

Depth-First Search (DFS)

Depth-First Search (DFS) is een algoritme dat wordt gebruikt om door een boom of graaf (graph) te navigeren. Het werkt volgens een simpel maar krachtig principe: duik zo diep mogelijk één kant op, en ga pas terug als je vastloopt. DFS zoekt dus niet “laag voor laag” (zoals Breadth-First Search dat doet), maar volgt één pad tot het einde, en backtrackt dan om andere paden te verkennen. Het is een soort digitale speurtocht door knopen en verbindingen en het komt verrassend vaak van pas.

Geschreven door Thijn de Haas

Zwaaiende emoji

Thijn Lead developer

Meer over Thijn

Inhoudsopgave

Eerst de diepte in, dan pas terug

Stel je een doolhof voor. DFS kiest een richting en blijft die volgen tot het niet verder kan. Pas dan keert het terug naar het vorige keuzepunt om een ander pad te proberen. Net zolang tot het doel is bereikt of alles is verkend.

In code gebeurt dit meestal via recursie (waarbij een functie zichzelf opnieuw aanroept), of met een stack (een datastructuur die het laatst bezochte punt bijhoudt). Daardoor is DFS relatief eenvoudig te implementeren, maar toch krachtig in zijn werking en breed toepasbaar in allerlei soorten software.

Voor puzzels, paden en programmeertrucs

DFS is ideaal als je:

  • Snel een pad naar een oplossing wilt vinden (niet per se het kortste)
  • Alles in een netwerk wilt doorlopen
  • Structuren zoals puzzels, bomen of afhankelijkheden moet analyseren
  • Wil checken of er cycli in een graaf zitten

Het algoritme is compact, efficiënt, en past in allerlei situaties: van spelontwikkeling tot compilerdesign.

Niet altijd de snelste, wél grondig

DFS is niet altijd de beste keuze. Het kan zich blindstaren op één pad dat eindeloos doorgaat (zeker in oneindige of cyclische grafen). En het vindt lang niet altijd het kortste pad.

Maar het is wel grondig. DFS komt uiteindelijk bij elke knoop, zolang je maar goed bijhoudt waar je al bent geweest. En met de juiste aanpassingen kun je het uitbreiden naar krachtige toepassingen, zoals topologische sortering of labyrintoplossers.

Veelgestelde vragen

DFS gaat eerst diep de structuur in; BFS (Breadth-First Search) verkent eerst alle knopen op hetzelfde niveau. BFS vindt meestal de kortste route, DFS verkent sneller diepere paden.

Nee, je kunt DFS ook implementeren met een stack in plaats van recursie. Dat is vaak efficiënter bij grote grafen.

Bijvoorbeeld in het doorlopen van bestanden/directories, dependency analysis, speloplossers, webcrawlers en meer.

Ja, als je geen visited-checks gebruikt. Altijd bijhouden waar je bent geweest!

Thijn de Haas Lead developer

Meer over Thijn

Mijn programmeeravontuur begon rond mijn twaalfde, toen ik ontdekte dat je met code vrijwel alles kunt maken. Ik begon met het bouwen van kleine projecten en startte al snel mijn eigen hostingdienst, wat me veel leerde over maatwerkcode, serverbeheer en het koppelen aan websites. Deze kennis pas ik nu dagelijks toe in mijn werk aan websites en applicaties.

Als student Applicatieontwikkelaar liep ik drie stages bij Wux, waarbij ik tijdens de eerste stage mijn eerste bedrijf startte, deels op advies van Bo. Deze ervaringen vormden het fundament van mijn rol als lead developer en mede-eigenaar van Wux. Met een constante interesse in nieuwe technieken en het meedenken naar de beste oplossingen, zet ik mijn expertise dagelijks in om complexe vraagstukken op te lossen samen met mijn team.

Twee mannen in overleg tijdens het werk achter hun computerschermen
Zwaaiende emoji

Thijn Back-end developer

Op zoek naar slimme software-oplossingen die jouw bedrijf efficiënter maken?

Het team van Wux ontwikkelt maatwerk software die aansluit bij jouw behoeften. Neem vandaag nog contact op en ontdek hoe we jouw bedrijf elke dag succesvoller kunnen maken.

Meer over software