Das einzige Element der Tiefensuche, das Sie optimieren, ist die Reihenfolge, in der Kinder untersucht werden. Die normale Version läuft in beliebiger Reihenfolge ab, dh in der Reihenfolge, in der die Kinder gespeichert sind.
Die einzig mögliche Alternative (in Richtung kürzester Wege) ist ein gieriger Ansatz, bei dem Kinder in der Reihenfolge ihres Abstands vom aktuellen Knoten (von klein nach groß) betrachtet werden. Es ist einfach, ein Gegenbeispiel für diese Regel zu erstellen:
[ Quelle ]
Dies ist kein Beweis dafür, dass es keine Strategie für die Auswahl des nächsten zu untersuchenden Kindes gibt, die es der DFS ermöglicht, kürzeste Wege zu finden.
Unabhängig von der Regel¹ können Sie jedoch Diagramme erstellen, bei denen DFS gleich beim ersten Knoten einen langen Umweg einlegt, genau wie bei der gierigen Regel. Weisen Sie die Kantengewichte und ( s , a ) so zu, dass die Regel einen ersten Besuch wählt , und weisen Sie ( a , b ) ein Gewicht zu, das größer als das von ist(s,t)(s,a)a(a,b)(s,t)
cc−1
- Solange die Regel deterministisch ist. Wenn es nicht ist, kann es eindeutig nicht immer kürzeste Wege finden.