Developer Toolbox

Diepte-eerst zoeken (DFS)

Doorzoekt een graaf door één pad zo diep mogelijk te volgen en dan terug te gaan naar de laatste splitsing. De stapel op het scherm is dat pad.

  • O(V + E)
  • geheugen O(V)
  • stapel
Andere begrippen op deze pagina
  • Knoop: een punt van de graaf, hier getekend als een cirkel met een letter.
  • Kant: een lijn die twee knopen verbindt. Je kunt hem hier in beide richtingen volgen.
  • Buren: de knopen die via een kant met een knoop verbonden zijn. Ze worden in alfabetische volgorde bekeken.
0 / 60 stappen
  • op de stapel
  • huidige
  • afgerond
  • kant van de zoekboom
  • overgeslagen kant

Begin bij A. Druk op afspelen of doorloop de zoektocht stap voor stap.

Spatie: afspelen of pauzeren. Pijltjes links/rechts: stap. Home en End: springen.

Probeer dit: Kies de graaf met cycli. Elke gestreepte kant leidt terug naar een knoop die al op de stapel ligt of al is afgerond: die kant sluit een cyclus.

Hoe het werkt

DFS roept zichzelf aan op de eerste buur die het nog niet heeft gezien, dan op de eerste nieuwe buur daarvan, enzovoort. Heeft een knoop geen nieuwe buren meer, dan eindigt zijn aanroep en gaat DFS één stap terug om daar de volgende buur te proberen. De open aanroepen vormen een stapel, en die is altijd het pad van de start naar de huidige knoop. Het getal naast een knoop is de volgorde waarin hij is bezocht.

Wanneer het een goede keuze is

Gebruik DFS om uit te zoeken wat je überhaupt kunt bereiken, om cycli te vinden, om door een doolhof te lopen of om taken die van elkaar afhangen in de juiste volgorde te zetten. De kortste weg vindt het niet.