Die Tiefensuche (DFS) ist ein Algorithmus zur Durchsuchung oder Traversierung eines Baumes oder Graphen. Im Gegensatz zur Breitensuche geht DFS so tief wie möglich in eine Richtung, bevor es zurückgeht und andere Pfade erkundet.
Beispiel anhand des gegebenen Baumes: Der Baum beginnt mit dem Startknoten S (1). Die DFS erkundet den Baum in folgender Reihenfolge:
Eine mögliche Reihenfolge der besuchten Knoten ist: S → A → C → D → G
Wichtig: Die genaue Reihenfolge hängt davon ab, in welcher Reihenfolge die Kinder eines Knotens besucht werden
Sie beginnen bei S und wählen dann als nächsten Knoten A, weil der Buchstabe vor den anderen Optionen (B und E) liegt.
Wenn diesen Prozess weiterführen resultiert daraus folgender Pfad:
S → A → E → A → E → A → E...
Sie drehen sich also unendlich oft im Kreis.
Sie beginnen bei S und wählen dann als nächsten Knoten B, weil der Buchstabe an zweiter Stelle im Alphabet liegt (nach A und vor E).
Wenn diesen Prozess weiterführen resultiert daraus folgender Pfad:
S → B → D → G
Nein, wie das Beispiel oben gezeigt hat, finden sie zwar einen Weg zum Ziel, dieser ist jedoch nicht optimal.
Es gäbe einen kürzeren Weg:
S → A → G
Die Tiefensuche kann dann ohne Bedenken angewendet werden, wenn der Graph azyklisch ist (Sie sich also nicht im Kreis drehen können). Diese Eigenschaft kann von einem Graph selbst bereits gegeben sein, falls nicht, erreichen Sie diese Eigenschaft, indem Sie Knoten im Suchbaum prunen, die Sie bereits besucht haben. Ansonsten ist nicht garantiert, dass die Tiefensuche terminiert (ein Ende findet). Es ist theoretisch aber möglich, dass Sie auch in einem zyklischen Graphen mit der Tiefensuche eine Lösung finden.