Interaktive Demo

Tiefensuche

Die Tiefensuche (DFS) macht immer bei der Zelle weiter, die sie zuletzt erreicht hat. Sie läuft so weit wie möglich in eine Richtung und kehrt erst in Sackgassen um, als würde man ein Labyrinth erkunden und immer den nächsten unbekannten Gang nehmen.

Dein Browser unterstützt das HTML5-Canvas-Element nicht.

Zeichne Wände oder Schlamm ins Gitter und ziehe Start und Ziel. Ist eine Suche fertig, wird nach jeder Änderung sofort neu gesucht. Probiere ein Labyrinth: Die Tiefensuche löst es, macht in offenen Bereichen aber lange Umwege. Die Reihenfolge der Richtungen (oben, rechts, unten, links) entscheidet, wohin sie zuerst geht.

Ablauf

Erweitert
–
Front (max.)
–
Wegkosten
–

Drücke Abspielen oder Nächster Schritt, um die Suche zu starten.

Raster

Optionen

Legende

  • Start (ziehen zum Verschieben)
  • Ziel (ziehen zum Verschieben)
  • Wand
  • Schlamm
  • Front (Open List)
  • Besucht (Closed List)
  • Gerade erweitert
  • Weg

Eigenschaften

Optimal

Nein

Nimmt den ersten Weg, auf den sie stößt, oft einen langen Umweg.

Gewichtete Zellen

Nein

Ignoriert die Kosten vollständig.

Heuristik

Nein

Blind: Nur die Reihenfolge der Richtungen entscheidet, wohin sie geht.

Beliebiger Winkel

Nein

Bewegt sich von Zelle zu Zelle, gerade oder diagonal.

Alle Wegfindungsalgorithmen im Vergleich

AlgorithmusOptimalGewichtete ZellenHeuristikBeliebiger Winkel
BreitensucheOhne Schlamm und DiagonalenNeinNeinNein
Tiefensuche diese SeiteNeinNeinNeinNein
Dijkstra-AlgorithmusJaJaNeinNein
Bidirektionale SucheJaJaNeinNein
Gierige BestensucheNeinNeinJaNein
A*-SucheMit Gewicht 1 und zulässiger HeuristikJaJaNein
Jump Point SearchOhne SchlammNeinJaNein
Theta*NeinAbkürzungen nur über freies GeländeJaJa

1. Ein Stapel

  1. Lege den Start auf einen Stapel.
  2. Nimm die neueste Zelle vom Stapel und überspringe sie, wenn sie schon besucht ist.
  3. Markiere sie als besucht und lege alle unbesuchten Nachbarn auf den Stapel, die bevorzugte Richtung zuletzt.
  4. Wiederhole das, bis das Ziel vom Stapel kommt.

2. Tief statt breit

In Bäumen und tiefen Suchen muss sich die Tiefensuche nur den Ast merken, auf dem sie gerade ist, deshalb braucht sie wenig Speicher. Auf einem Gitter bringt das nichts: Sie besucht trotzdem viele Zellen, und der gefundene Weg ist einfach der, den sie zufällig genommen hat.

3. Wo sie verwendet wird

Die Tiefensuche ist die Grundlage von Labyrinthgeneratoren (Recursive Backtracker), topologischer Sortierung, der Suche nach zusammenhängenden Teilen eines Graphen und der Suche in Spielbäumen. Als Wegfinder ist sie eine schlechte Wahl, und gerade deshalb ein guter Vergleich.