Der Bellman-Ford Algorithmus

Der Bellman-Ford-Algorithmus berechnet die Kosten der günstigsten Wege von einem Startknoten aus zu allen anderen Knoten im Graph. Auf diese Weise kann er also auch die günstigsten Wege selbst konstruieren. Anders als der Dijkstra Algorithmus kann der Bellmann-Ford Algorithmus auch mit negativen Kantengewichten rechnen.

Der Algorithmus geht iterativ vor, er geht also zunächst von einer schlechten Schätzung der Kosten aus, und verbessert diese so lange, bis die korrekten Werte gefunden sind.

Die erste Schätzung ist:

Anschließend werden alle Kanten auf folgende Bedingung geprüft: Ist der Wert des Anfangsknotens der Kante plus die Kosten für die Benutzung der Kante niedriger als der Wert des Zielknotens der Kante?

Wenn das der Fall ist, haben wir eine Abkürzung gefunden: Es ist besser, die eben geprüfte Kante zu nutzen, als den bisherigen Weg. Der Wert des Zielknotens der Kante wird entsprechend aktualisiert: Sie entsprechen jetzt genau den Kosten des Anfangsknotens der Kante plus den Kosten für die Benutzung der Kante.

Beispiel


(A1)

Wieviele Phasen müssen maximal durchlaufen werden, um einen Graphen mit n Knoten sicher vollständig zu untersuchen?


(A2)


(A3)

Welche Situation muss vermieden werden, damit die Zulässigkeit von negativen Kantengewichten nicht zu unsinnigen Ergebnissen führt?

Wie kann man das im Algorithmus prüfen?