Ein Navi findet in wenigen Sekunden die kürzeste Verbindung zwischen zwei Punkten. Wie macht es das?
Im Navi sind alle erreichbaren Orte als Knoten und die Wege zwischen ihnen als Kanten dargestellt. Die Kanten sind jeweils mit der Weglänge gewichtet. Schauen wir uns das Beispiel auf der rechten Seite an. Gesucht ist der kürzeste Pfad zwischen A und F.
Die Lösungsidee besteht darin, von A ausgehend den Graphen so zu traversieren ("durchschreiten"), dass als nächstes immer der Knoten besucht wird, der von A die bisher kürzeste Entfernung hat. Wir legen uns dazu eine Tabelle an, in der wir zu jedem Knoten die Länge des bisher kürzesten bekannten Pfades nach A notieren:
Bei A tragen wir zu Beginn gleich 0 ein, bei allen anderen Knoten den Wert ∞ (unendlich), da wir noch nicht wissen, wie lange der jeweils kürzeste Pfad zu A ist.
Wir wissen jetzt, dass der kürzeste Pfad von A zu C die direkte Verbindung zwischen den beiden Knoten ist und die Länge 3 hat.
Begründung:
Falls es einen kürzeren Pfad von A zu C gäbe, müsste dieser über einen Vorgängerknoten X führen, der weniger als 3 km von A entfernt ist. Dieser wäre aber dann bereits in einem der vorhergehenden Schritte besucht worden und bei diesem Besuch wäre die kürzere Pfadlänge A → … → X → C bei C notiert worden.
Wir wissen jetzt, dass der kürzeste Pfad von A zu B der Pfad A→C→B ist und die Länge 6 hat.
Begründung:
Falls es einen kürzeren Pfad von A zu B gäbe, müsste dieser über einen Vorgängerknoten X führen, der weniger als 6 km von A entfernt ist. Dieser wäre aber dann bereits in einem der vorhergehenden Schritte besucht worden und bei diesem Besuch wäre dann die kürzere Pfadlänge A→ … → X → B bei B notiert worden.
Unsere Aufgabe bestand darin, den kürzesten Weg von A zu F zu finden: