Aufgabe vollständig gelöst
-
Knoten 1 eine Kante von der Quelle entfernt mit Kosten von 4 5 Schritte
Knoten 1 ist eine Kante vom Startknoten entfernt, mit Kosten von 4 – und der Algorithmus gibt seine Distanz mit 3 an. Gehen Sie die Reihenfolge des Abschließens durch und finden Sie heraus, woher die 3 kommt.
-
Dijkstra schließt Knoten in der Reihenfolge ihrer Distanz ab und besucht sie nie erneut. Diese Reihenfolge ist der gesamte Algorithmus und der gesamte Beweis: Wenn ein Knoten abgeschlossen ist, kann kein günstigerer Weg zu ihm existieren, da jeder solche Weg über einen noch nicht abgeschlossenen Knoten führen müsste, der bereits weiter entfernt ist.
-
Vom Startknoten aus liefern die zwei direkten Kanten vorläufige Distanzen von 4 und 2. Keine von beiden ist bereits final – sie sind obere Schranken.
-
Der nächstgelegene ist Knoten 3 mit 2, daher wird er zuerst abgeschlossen. Das Relaxieren seiner Kanten findet einen Weg zu Knoten 1 mit den Kosten 2 + 1 = 3, was die direkte Kante von 4 unterbietet. Dies ist der Schritt, der die Frage beantwortet: Der günstigste Weg zu einem Nachbarn muss nicht die Kante zu ihm sein.
-
Knoten 1 wird bei 3 abgeschlossen, und das Relaxieren von dort aus erreicht Knoten 2 bei 8.
-
Knoten 4 ist über Knoten 3 bei 8 erreichbar, und die Alternative über Knoten 2 kostet 8 + 3 = 11, sodass der kürzere Weg bestehen bleibt.
Antwort
Das Werkzeug gibt Distanzen von 3, 8, 2, 8 und einen kürzesten Pfad von 0 → 3 → 4 aus. Die Lehre liegt in Knoten 1: Eine direkte Kante ist kein kürzester Pfad, und gieriges Abschließen macht das Herausfinden günstig statt exponentiell. Die Garantie hat jedoch eine Voraussetzung – nicht-negative Gewichte. Mit einer negativen Kante kann ein früh abgeschlossener Knoten später noch verbessert werden, und der Beweis aus Schritt 1 bricht zusammen. Klicken Sie auf die Voreinstellung für negative Kanten und beobachten Sie, wie der Algorithmus auf beide Arten gleichzeitig scheitert: Knoten 3 kommt mit −1 zurück, was keine Distanz ist, die irgendein Weg erzeugt, und die Pfadrekonstruktion gibt mit „Kein Pfad – die Vorgänger bilden eine Schleife“ völlig auf. Falsche Zahlen und kein Pfad – von einem Algorithmus, der nachweislich korrekt ist, sobald jedes Gewicht nicht-negativ ist.
-
Quellen (2)
- The three-page paper, in which the shortest-path algorithm is the SECOND of the two problems: E. W. Dijkstra, "A note on two problems in connexion with graphs." Numerische Mathematik 1, 269–271, 1959.
- The algorithm the negative-edge preset points you to, which tolerates negative weights and detects a negative cycle instead of answering as though there were none: R. Bellman, "On a routing problem." Quarterly of Applied Mathematics 16(1), 87–90, 1958.