0Pricing
Competitive Programming Academy · Lektion

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] = 0

Die 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

  1. Dijkstra mit einem Heap
  2. 0-1 BFS mit einer Deque
  3. Bellman-Ford und negative Kanten
  4. Floyd-Warshall für alle Paare
← Zurück zu Competitive Programming Academy