Dein Lernbereich wird geladen
App wird gestartet …
Dein Lernbereich wird geladen
App wird gestartet …
Bellman-Ford berechnet kürzeste Distanzen von einer Quelle durch wiederholte Kantenrelaxation und unterstützt auch negative Kantengewichte.
Ansehen kostenlos · Karteikarten oder Multiple-Choice-Test · übernehmen ab Essential
Formel
Distanzen und Kantengewichte müssen dieselbe additive Einheit haben; k und |V| sind dimensionslose Zählwerte.
| Symbol | Bedeutung | Einheit |
|---|---|---|
| Kürzeste bekannte Distanz von Quelle s zu v mit höchstens k Kanten | Gewichtseinheit | |
| Gewicht der gerichteten Kante von u nach v | Gewichtseinheit | |
| Menge gerichteter Kanten des Graphen | Kanten | |
| Zahl der bereits erlaubten Kanten im betrachteten Weg | Anzahl | |
| Knotenmenge des Graphen | Knoten |
d_k(v)=\min\left(d_{k-1}(v),\min_{(u,v)\in E}[d_{k-1}(u)+w(u,v)]\right)Setze d0(s)=0 und d0(v)=∞ für alle anderen Knoten. Jede Runde lässt entweder den bisherigen Weg mit höchstens k−1 Kanten stehen oder hängt eine eingehende Kante an einen solchen Weg an. Nach |V|−1 Runden sind kürzeste Distanzen bestimmt, sofern kein von s erreichbarer negativer Kreis existiert. Eine zusätzliche Relaxationsrunde erkennt einen solchen Kreis; für davon erreichbare Knoten gibt es dann keinen endlichen kürzesten Weg. Die dynamische Programmierformulierung liest pro Runde aus dk−1; übliche In-place-Implementierungen können schneller konvergieren, behalten aber die Schranke O(|V||E|).
Für gerichtete gewichtete Graphen; negative Kanten sind zulässig, aber kein von der Quelle erreichbarer negativer Kreis. Nach |V|−1 Kantenrunden stehen die kürzesten endlichen Distanzen fest.
Nach k Runden kennt die dynamische Programmierung kürzeste Wege mit höchstens k Kanten.
Laufzeit beim Kanten-Scan
Jede der höchstens |V| Runden scannt alle |E| Kanten; frühes Beenden bei keiner Änderung kann praktische Laufzeit sparen.
Gegeben sind s→a=4, s→b=5, a→b=−2, b→t=3 und a→t=4. Bestimme die kürzeste Distanz zu t.
Über a wird d(b)=4−2=2.
Über b folgt d(t)=2+3=5; der direkte Weg über a kostet 8.
Also ist d(t)=5 über s→a→b→t.
Negative Kanten mit einem negativen Kreis gleichsetzen.
Einzelne negative Kanten sind erlaubt; problematisch ist ein von s erreichbarer Kreis mit negativer Gesamtsumme.
Formelcluster
Bellman-Ford deckt negative Kanten ab; Dijkstra nutzt Nichtnegativität für eine effizientere Greedy-Wahl.
Dijkstra-Algorithmus für gewichtete kürzeste Wege
Graphsuche: BFS, DFS und kürzeste Wege
Minimaler Spannbaum
Kanten: s→a mit 4, s→b mit 5, a→b mit −2, b→t mit 3 und a→t mit 4. Nach Relaxation über a wird d(b)=4−2=2 statt 5; über b folgt d(t)=2+3=5 statt 8. Probe: Der Weg s→a→b→t kostet 4−2+3=5, weniger als s→a→t mit 8.
Kürzeste Wege in gerichteten gewichteten Graphen bestimmen, wenn negative Kanten vorkommen, und erreichbare negative Kreise erkennen.
Eine typische Aufgabe Schritt für Schritt: Bellman-Ford-Algorithmus für kürzeste Wege (dk(v) = min(dk−1(v), dk−1(u)+w(u,v))).
Aufgabe
Gegeben sind s→a=4, s→b=5, a→b=−2, b→t=3 und a→t=4. Bestimme die kürzeste Distanz zu t.
Rechenweg
Über a wird d(b)=4−2=2.
Über b folgt d(t)=2+3=5; der direkte Weg über a kostet 8.
Also ist d(t)=5 über s→a→b→t.
Bellman-Ford ist eine passende Wahl, wenn Kantengewichte negativ sein können und du kürzeste Wege ab einer Quelle berechnen möchtest. Dijkstras Greedy-Schritt setzt nichtnegative Gewichte voraus: Sobald ein Knoten als nächster fest gewählt wird, darf später kein negativer Umweg ihn verbessern. Bellman-Ford lockert dagegen wiederholt alle Kanten und lässt solche Verbesserungen zu. Bei ausschließlich nichtnegativen Gewichten ist Dijkstra oft schneller. Beide Algorithmen lösen dasselbe Distanzproblem, aber ihre Voraussetzungen und Laufzeiten unterscheiden sich. Prüfe außerdem, ob ein erreichbarer negativer Kreis existiert. Prüfe zuerst die Eingabegewichte und danach die erreichbaren Zyklen.
Ein negativer Kreis hat entlang seiner gerichteten Kanten eine Summe kleiner als null. Ist er von der Quelle erreichbar und kann danach ein Ziel erreicht werden, kann man den Kreis beliebig oft durchlaufen und den Pfad jedes Mal billiger machen. Dann gibt es für dieses Ziel keinen endlichen kürzesten Weg. Eine einzelne negative Kante verursacht dieses Problem nicht. Bellman-Ford prüft nach den |V|−1 normalen Runden, ob eine weitere Relaxation noch verbessert; so lässt sich ein erreichbarer negativer Kreis erkennen. Nicht erreichbare negative Kreise betreffen die Quelle nicht.
Wenn ein kürzester Weg existiert und kein erreichbarer negativer Kreis vorliegt, kann ein kürzester Weg ohne wiederholten Knoten gewählt werden. Ein solcher einfacher Weg durch höchstens |V| Knoten besitzt höchstens |V|−1 Kanten. In Runde k berücksichtigt die dynamische Programmierung Wege mit höchstens k Kanten. Daher reichen |V|−1 Runden, um jeden einfachen kürzesten Weg abzudecken. In einer Implementierung, die alle Kanten in-place scannt, können Verbesserungen je nach Kantenreihenfolge früher weitergereicht werden; die Schranke bleibt dennoch korrekt. Das ist eine obere Schranke und oft weniger als nötig.
Der einfache Algorithmus führt höchstens |V|−1 Runden aus und prüft in jeder Runde jede der |E| Kanten. Eine Prüfung berechnet d(u)+w(u,v) und vergleicht den Wert mit d(v), also kostet sie konstant viele Rechenschritte. Das ergibt O(|V||E|). Eine zusätzliche Runde zur Negativkreisprüfung ändert die asymptotische Schranke nicht. Wird in einer ganzen Runde kein Abstand verändert, kann man vorzeitig stoppen. Die konkrete Laufzeit kann also besser sein, aber die Standardgarantie für den Kanten-Scan ist das Produkt aus Knotenzahl und Kantenzahl. Dabei zählt eine Kante als eine geprüfte Graphbeziehung.
Vergleiche für eine gerichtete Kante u→v den bisherigen Wert d(v) mit d(u)+w(u,v). Ist die Quelle u noch unerreichbar, also d(u)=∞, entsteht daraus kein endlicher Vorschlag. Im Beispiel kostet s→a vier und a→b minus zwei; dadurch sinkt d(b) von fünf auf zwei. Die Kante b→t mit Gewicht drei setzt d(t) anschließend auf fünf. Der resultierende Weg s→a→b→t hat Kosten 4−2+3=5. Notiere jede Verbesserung und verwende dieselben additiven Gewichtseinheiten. Halte die Kantenrichtung bei jedem Schritt konsequent ein. Prüfe am Ende alle Distanzen nochmals.
Quanta-Prüfungsset
Kuratiertes Prüfungsset für "Bellman-Ford-Algorithmus für kürzeste Wege":
Frage (Vorderseite)
Welche Formel beschreibt Bellman-Ford-Algorithmus für kürzeste Wege?
Antwort in deinem Set
Frage (Vorderseite)
Wie stellst du dk(v) = min(dk−1(v), dk−1(u)+w(u,v)) nach Laufzeit beim Kanten-Scan um?
Antwort in deinem Set
Frage (Vorderseite)
Welcher typische Fehler passiert bei dk(v) = min(dk−1(v), dk−1(u)+w(u,v))?
Antwort in deinem Set
+ 8 weitere Karten: Einheiten, Variablen, Herleitung, Beispiel, Klausuraufgabe
Das Formelset enthält 11 Karten. Nach der Übernahme kannst du sie prüfen und lernen; deine Bewertungen bestimmen die weiteren Wiederholungen.
Die Liste nennt Fachquellen und weiterführende Literatur. Eine Seiten- oder Abschnittsnummer steht dabei, wenn sie Teil der Literaturangabe ist; es handelt sich nicht um wörtliche Zitate.
Erstelle ein kuratiertes FSRS-Prüfungsset für dk(v) = min(dk−1(v), dk−1(u)+w(u,v)): Formelabruf, Variablen, Herleitung, Umstellung, Beispiel, typische Fehler und Klausurkontext.
Kuratiertes Formelset · LaTeX · FSRS Spaced Repetition · übernehmen ab Essential