Floyd-Warshall für alle Paare
Finden Sie kürzeste Pfade zwischen jedem Paar
Floyd-Warshall für alle Paare ist eine kostenlose Competitive Programming Academy-Lektion auf CoddyKit. Dies ist Lektion 4 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Competitive Programming Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Competitive Programming Academy-Kurs umfasst insgesamt 4 Lektionen.
Alle Paare auf einmal
Manchmal benötigen Sie den kürzesten Weg zwischen jedem Knotenpaar und nicht nur von einem Startknoten aus. Das ist das Problem der kürzesten Wege zwischen allen Knotenpaaren.
Floyd-Warshall kennenlernen
Floyd-Warshall füllt mit drei übersichtlichen verschachtelten Schleifen eine vollständige Entfernungstabelle für alle Knotenpaare – und benötigt kaum Vorbereitung.
Die Entfernungsmatrix
Verwenden Sie eine Matrix, in der dist[i][j] die bisher beste bekannte Entfernung von i nach j angibt. Initialisieren Sie sie mit den vorgegebenen direkten Kanten.
dist = [[INF] * n for _ in range(n)]Die Diagonale setzen
Jeder Knoten kann kostenlos sich selbst erreichen. Setzen Sie daher die Diagonale dist[i][i] vor Beginn der Relaxationen auf null.
for i in range(n):
dist[i][i] = 0Die Idee des Zwischenknotens
Der Trick: Erlauben Sie Wegen, über einen Zwischenknoten k zu führen, und prüfen Sie dann, ob der Weg über k günstiger ist als der direkte Weg.
Die Reihenfolge der Schleifen ist wichtig
Die äußere Schleife ist k, der ausgewählte Mittelpunkt. Die inneren Schleifen über i und j prüfen jedes Knotenpaar mit diesem Mittelpunkt.
for k in range(n):
for i in range(n):
for j in range(n):Der Relaxationsschritt
Relaxieren Sie für jedes Paar über k: Wenn der Weg von i über k nach j kürzer ist, aktualisieren Sie dist[i][j] auf diese Summe.
if dist[i][k] + dist[k][j] < dist[i][j]:
dist[i][j] = dist[i][k] + dist[k][j]Warum k außen stehen muss
Wenn k abgeschlossen ist, dürfen alle Paare Zwischenknoten bis einschließlich k verwenden. Wenn k die äußerste Schleife bildet, bleibt diese Voraussetzung korrekt erhalten.
Negative Kanten sind erlaubt
Floyd-Warshall akzeptiert negative Kanten, aber keine negativen Zyklen. Ein negativer Zyklus führt dazu, dass ein Diagonaleintrag kleiner als null wird.
Die Laufzeit
Drei Schleifen über n Knoten ergeben eine Laufzeit von O(n^3) und einen Speicherbedarf von O(n^2). Das ist nur praktikabel, wenn n bei einigen Hundert bleibt.
Wann Sie den Algorithmus wählen sollten
Wählen Sie Floyd-Warshall, wenn der Graph klein und dicht ist und Sie tatsächlich die Entfernungen für jedes Knotenpaar benötigen, nicht nur die von einem Startknoten.
Schnelltest
Welche Schleife muss bei Floyd-Warshall die äußerste sein?
Zusammenfassung: Floyd-Warshall
Initialisieren Sie eine Matrix, setzen Sie die Diagonale auf null und durchlaufen Sie anschließend k, i, j, wobei Sie über k relaxieren. Kürzeste Wege zwischen allen Knotenpaaren in O(n^3). 🧮
Häufig gestellte Fragen
Ist die Lektion „Floyd-Warshall für alle Paare“ kostenlos?
Ja — der vollständige Text von „Floyd-Warshall für alle Paare“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Competitive Programming Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Competitive Programming Academy-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „Floyd-Warshall für alle Paare“?
Finden Sie kürzeste Pfade zwischen jedem Paar Du übst Competitive Programming Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um Competitive Programming Academy zu starten?
Keine Vorkenntnisse erforderlich. Competitive Programming Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 4 von 4.
Wie lange dauert die Lektion „Floyd-Warshall für alle Paare“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser Competitive Programming Academy-Lektion Code schreiben und ausführen?
Ja. Jede Competitive Programming Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- Dijkstra mit einem Heap
- 0-1 BFS mit einer Deque
- Bellman-Ford und negative Kanten
- Floyd-Warshall für alle Paare