Floyd-Warshall voor alle paren
Kortste paden tussen elk paar vinden
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] = 0Het 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). 🧮
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
- Dijkstra met een heap
- 0-1 BFS met een deque
- Bellman-Ford en negatieve kanten
- Floyd-Warshall voor alle paren