Voorbereiding op programmeerinterviews · Les

Floyd-Warshall voor alle paren

Kortste paden tussen elk paar vinden

Les 4 van 413 stappen

Floyd-Warshall voor alle paren is een gratis Voorbereiding op programmeerinterviews-les op CoddyKit. Dit is les 4 van 4. Je kunt de volledige les hieronder gratis lezen en daarna in de browser praktisch oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject Voorbereiding op programmeerinterviews. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus Voorbereiding op programmeerinterviews bevat in totaal 4 lessen.

Elk paar tegelijk

Soms heb je het kortste pad nodig tussen elk paar knopen, niet alleen vanaf één bron. Dat is het probleem van alle paren.

Maak kennis met Floyd-Warshall

Floyd-Warshall vult met drie overzichtelijke geneste lussen een volledige afstandstabel voor alle paren, met vrijwel geen voorbereiding.

De afstandsmatrix

Gebruik een matrix waarin dist[i][j] de best bekende kosten van i naar j bevat. Initialiseer die met de directe kanten die je krijgt.

dist = [[INF] * n for _ in range(n)]

Zet de diagonaal

Elke knoop kan zichzelf gratis bereiken, dus zet je de diagonaal dist[i][i] op nul voordat je begint met relaxeren.

for i in range(n):
    dist[i][i] = 0

Het idee van een tussenknoop

De truc is om paden door een tussenliggende knoop k te laten lopen en vervolgens te vragen of de route via k goedkoper is dan de directe route.

De volgorde van de lussen is belangrijk

De buitenste lus is k, de gekozen tussenknoop. De binnenste lussen i en j proberen elk paar uit via die tussenknoop.

for k in range(n):
  for i in range(n):
    for j in range(n):

De relaxatiestap

Relaxeer voor elk paar via k: als de route van i via k naar j korter is, werk je dist[i][j] bij naar die gecombineerde kosten.

if dist[i][k] + dist[k][j] < dist[i][j]:
    dist[i][j] = dist[i][k] + dist[k][j]

Waarom k buiten staat

Wanneer k klaar is, mogen alle paren tussenknopen tot en met k gebruiken. Door k als buitenste lus te gebruiken, blijft die garantie correct.

Negatieve kanten zijn toegestaan

Floyd-Warshall accepteert negatieve kanten, maar geen negatieve cycli. Een negatieve cyclus zorgt ervoor dat een diagonaalelement kleiner dan nul wordt.

De uitvoeringstijd

Drie lussen over n knopen geven een tijd van O(n^3) en een geheugenruimte van O(n^2), en zijn alleen praktisch wanneer n enkele honderden blijft.

Wanneer je het kiest

Kies Floyd-Warshall wanneer de graaf klein en dicht is en je echt de afstand tussen elk paar nodig hebt, niet alleen die vanaf één bron.

Snelle controle

Welke lus moet de buitenste zijn in Floyd-Warshall?

Samenvatting: Floyd-Warshall

Initialiseer een matrix, zet de diagonaal op nul en doorloop daarna k, i, j om via k te relaxeren. Kortste paden tussen alle paren in O(n^3). 🧮

Gratis beginnen

Leer Voorbereiding op programmeerinterviews met een AI-tutor — gratis

Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.

Cursussen
90
Lessen
360

Veelgestelde vragen

Is de les “Floyd-Warshall voor alle paren” gratis?

Ja — de volledige tekst van “Floyd-Warshall voor alle paren” kun je hier gratis op het web lezen. Als je interactief wilt oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is, en de rest van de cursus Voorbereiding op programmeerinterviews wilt ontgrendelen, kun je upgraden naar CoddyKit PRO. De cursus Voorbereiding op programmeerinterviews bevat in totaal 4 lessen.

Wat leer ik in “Floyd-Warshall voor alle paren”?

Kortste paden tussen elk paar vinden Je oefent met Voorbereiding op programmeerinterviews door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.

Heb ik ervaring nodig om met Voorbereiding op programmeerinterviews te beginnen?

Ervaring vooraf is niet nodig. Voorbereiding op programmeerinterviews op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 4 van 4.

Hoe lang duurt de les “Floyd-Warshall voor alle paren”?

De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.

Kan ik code schrijven en uitvoeren in deze les over Voorbereiding op programmeerinterviews?

Ja. Elke les over Voorbereiding op programmeerinterviews bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.

Alle lessen in deze cursus

  1. Dijkstra met een heap
  2. 0-1 BFS met een deque
  3. Bellman-Ford en negatieve kanten
  4. Floyd-Warshall voor alle paren
← Terug naar Voorbereiding op programmeerinterviews