Dein Lernbereich wird geladen
App wird gestartet …
Dein Lernbereich wird geladen
App wird gestartet …
Floyd–Warshall berechnet kürzeste Wege zwischen allen Knoten, indem nacheinander jeder Knoten als möglicher Zwischenknoten zugelassen wird.
Ansehen kostenlos · Karteikarten oder Multiple-Choice-Test · übernehmen ab Essential
Formel
Distanzen in derselben additiven Kantengewichtseinheit; Laufzeit O(V3), Speicher O(V2)
| Symbol | Bedeutung | Einheit |
|---|---|---|
| Aktuell beste Distanz von i nach j | Kantengewichtssumme | |
| Index des neu zugelassenen Zwischenknotens | Knotenindex | |
| Knotenmenge des Graphen | Anzahl |
D_{ij}^{(k)}=\min(D_{ij}^{(k-1)},D_{ik}^{(k-1)}+D_{kj}^{(k-1)})Initialisiere Dii=0, direkte Kanten mit ihren Gewichten und fehlende Kanten mit ∞. Die dynamische Aktualisierung muss die Schleifenreihenfolge k, i, j verwenden. Negative Kanten sind zulässig, sofern kein negativer Kreis vorliegt; Dii<0 nach Abschluss weist auf einen solchen Kreis hin. Ein negativer Kreis macht betroffene kürzeste Wege nach unten unbeschränkt. Für V Knoten kostet das Verfahren Θ(V3) Zeit und Θ(V2) Speicher.
Initialisiere Dii=0, direkte Kanten mit ihren Gewichten und fehlende Kanten mit ∞. Die dynamische Aktualisierung muss die Schleifenreihenfolge k, i, j verwenden. Negative Kanten sind zulässig, sofern kein negativer Kreis vorliegt; Dii<0 nach Abschluss weist auf einen solchen Kreis hin. Ein negativer Kreis macht betroffene kürzeste Wege nach unten unbeschränkt. Für V Knoten kostet das Verfahren Θ(V3) Zeit und Θ(V2) Speicher.
Floyd–Warshall berechnet kürzeste Wege zwischen allen Knoten, indem nacheinander jeder Knoten als möglicher Zwischenknoten zugelassen wird.
Weg über k übernehmen
Initialize the diagonal to zero and preserve the k,i,j update order.
Erkläre am Beispiel zu Floyd-Warshall-Algorithmus, welche Eingabegrößen zur gesuchten Ausgabe führen.
Das Beispiel verknüpft konkrete Eingaben mit dem Ergebnis.
Floyd–Warshall berechnet kürzeste Wege zwischen allen Knoten, indem nacheinander jeder Knoten als möglicher Zwischenknoten zugelassen wird.
Gültig ist die Beziehung nur unter den genannten Voraussetzungen.
Die Beziehung ohne ihre angegebenen Voraussetzungen auf einen anderen Fall übertragen.
Prüfe vor dem Einsetzen den Gültigkeitsbereich: Initialisiere Dii=0, direkte Kanten mit ihren Gewichten und fehlende Kanten mit ∞. Die dynamische Aktualisierung muss die Schleifenreihenfolge k, i, j verwenden. Negative Kanten sind zulässig, sofern kein negativer Kreis.
Formelcluster
Floyd–Warshall berechnet kürzeste Wege zwischen allen Knoten, indem nacheinander jeder Knoten als möglicher Zwischenknoten zugelassen wird.
Es gebe gerichtete Kanten A→B=3, B→C=−1 und A→C=5. Nach Zulassen von B wird DAC=min(5,3+(−1))=2. Der Pfad A→B→C kostet 2 statt der direkten 5; negative Kanten sind hier unproblematisch, da kein negativer Kreis existiert.
Alle-Paare-Kürzeste-Wege in kleinen oder dichten gerichteten Graphen bestimmen.
Eine typische Aufgabe Schritt für Schritt: Floyd-Warshall-Algorithmus (Dᵢⱼ ← min(Dᵢⱼ, Dᵢₖ + Dₖⱼ)).
Aufgabe
Erkläre am Beispiel zu Floyd-Warshall-Algorithmus, welche Eingabegrößen zur gesuchten Ausgabe führen.
Rechenweg
Das Beispiel verknüpft konkrete Eingaben mit dem Ergebnis.
Floyd–Warshall berechnet kürzeste Wege zwischen allen Knoten, indem nacheinander jeder Knoten als möglicher Zwischenknoten zugelassen wird.
Gültig ist die Beziehung nur unter den genannten Voraussetzungen.
Nach dem Schritt für Zwischenknoten k enthält Dij den besten Weg von i nach j, dessen innere Knoten aus der bisher zugelassenen Menge stammen. Die Aktualisierung vergleicht den alten Weg mit einer Route über k: Dik+Dkj. Jeder betrachtete Weg vermeidet k oder zerfällt bei Nutzung von k in zwei Teilwege. Diese Zerlegung ist die dynamische Programmieridee des Verfahrens und erklärt, weshalb die Distanzwerte entlang gerichteter Kanten addiert werden. Bei ungerichteten Graphen wird jede Kante als zwei entgegengesetzte gerichtete Einträge in der Anfangsmatrix repräsentiert.
Die übliche In-place-Implementierung führt k als äußere Schleife, damit jede Stufe des dynamischen Programms vollständig abgeschlossen wird, bevor der nächste Zwischenknoten erlaubt ist. Wird i oder j nach außen gezogen, können aktualisierte Werte in einer Reihenfolge wiederverwendet werden, die nicht mehr zum Stufeninvariant passt. Die scheinbar gleiche Rekurrenz liefert dann nicht zwingend dieselben korrekten Werte. Die Schleifenordnung ist somit Teil der Implementierung, nicht bloß eine Stilfrage. Die Schleifeninvariante beschreibt genau, welche Zwischenknoten nach einer vollständigen k-Stufe bereits zugelassen wurden. Der Wert von k kodiert somit den aktuellen Wissensstand des dynamischen Programms.
Floyd–Warshall kann negative Kantengewichte verarbeiten, im Unterschied zu Dijkstra. Es darf aber keinen negativen Zyklus geben, der für betrachtete Wege beliebig oft durchlaufen werden kann; dann wäre ein kürzester Weg nach unten unbeschränkt. Nach dem Algorithmus weist ein negatives Diagonalelement Dii auf einen erreichbaren negativen Zyklus hin. Betroffene Paare müssen entsprechend markiert werden, statt ihnen eine gewöhnliche endliche kürzeste Distanz zuzuschreiben. Zur Erkennung eines Zyklus reicht ein negatives Diagonalelement; seine Auswirkungen müssen anschließend auf erreichbare Paare übertragen werden. Für endliche kürzeste Wege muss die Zyklusbedingung im gesamten relevanten Teilgraphen gelten.
Es gibt V mögliche Zwischenknoten und zu jedem k werden alle V2 geordneten Paare (i,j) untersucht. Daraus folgen Θ(V3) Rechenzeit. Gespeichert wird eine V-mal-V-Distanzmatrix mit Θ(V2) Speicherbedarf. Das Verfahren ist daher für mittelgroße oder dichte Graphen oft übersichtlich. Bei großen dünn besetzten Graphen können wiederholte Einquellenverfahren günstiger sein, abhängig von Graphstruktur, Gewichten und Zahl der angefragten Startpunkte. Der Speicherbedarf kann für sehr große Graphen den Einsatz einer dünneren Repräsentation oder anderer Algorithmen nahelegen. Die asymptotischen Kosten ergeben sich direkt aus den drei verschachtelten Schleifen.
Am Anfang beträgt die direkte Distanz von A nach C fünf. Sobald B als Zwischenknoten erlaubt ist, kostet der Weg A→B→C insgesamt 3+(−1)=2. Der Algorithmus setzt deshalb DAC=min(5,2)=2. Die Rechnung nutzt das negative Kantengewicht korrekt; sie bleibt sinnvoll, solange kein negativer Zyklus existiert. Man kann das Ergebnis unmittelbar prüfen, indem man beide verfügbaren Routen vergleicht und ihre Kantengewichte addiert. Ein negativer Kanteneintrag allein erzeugt keinen Zyklus; erst eine Rückverbindung kann die Summe beliebig oft senken. Die Initialisierung setzt außerdem Dii=0 und nutzt unendlich für nicht vorhandene direkte Kanten.
Quanta-Prüfungsset
Kuratiertes Prüfungsset für "Floyd-Warshall-Algorithmus":
Frage (Vorderseite)
Welche Formel beschreibt Floyd-Warshall-Algorithmus?
Antwort in deinem Set
Frage (Vorderseite)
Wie stellst du Dᵢⱼ ← min(Dᵢⱼ, Dᵢₖ + Dₖⱼ) nach Weg über k übernehmen um?
Antwort in deinem Set
Frage (Vorderseite)
Welcher typische Fehler passiert bei Dᵢⱼ ← min(Dᵢⱼ, Dᵢₖ + Dₖⱼ)?
Antwort in deinem Set
+ 7 weitere Karten: Einheiten, Variablen, Herleitung, Beispiel, Klausuraufgabe
Das Formelset enthält 10 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 Dᵢⱼ ← min(Dᵢⱼ, Dᵢₖ + Dₖⱼ): Formelabruf, Variablen, Herleitung, Umstellung, Beispiel, typische Fehler und Klausurkontext.
Kuratiertes Formelset · LaTeX · FSRS Spaced Repetition · übernehmen ab Essential