Förberedelse inför kodningsintervjuer · Lektion

Floyd-Warshall för alla par

Kortaste vägar mellan varje par

Lektion 4 av 413 steg

Floyd-Warshall för alla par är en gratis lektion i Förberedelse inför kodningsintervjuer på CoddyKit. Detta är lektion 4 av 4. Ni kan läsa hela lektionen gratis nedan och sedan öva praktiskt i webbläsaren med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt. Den ingår i lärvägen för Förberedelse inför kodningsintervjuer, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Förberedelse inför kodningsintervjuer innehåller totalt 4 lektioner.

Alla par på en gång

Ibland behöver Ni hitta den kortaste vägen mellan alla par av noder, inte bara från en enda startnod. Det är problemet med alla par.

Möt Floyd-Warshall

Floyd-Warshall fyller i en fullständig avståndstabell för alla par med tre enkla nästlade loopar och nästan ingen initiering.

Avståndsmatrisen

Använd en matris där dist[i][j] är den bästa kända kostnaden från i till j. Initiera den med de direkta kanter som anges.

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

Sätt diagonalen

Varje nod når sig själv utan kostnad, så sätt diagonalen dist[i][i] till noll innan Ni börjar relaxera.

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

Idén med mellanliggande noder

Tricket är att tillåta vägar att gå via en mellanliggande nod k och sedan fråga om vägen via k är billigare än den direkta vägen.

Loopordningen spelar roll

Den yttre loopen är k, den valda mellanpunkten. De inre looparna i och j provar varje par mot den mellanpunkten.

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

Relaxeringssteget

För varje par relaxerar Ni via k: om vägen från i till k och sedan till j är kortare uppdateras dist[i][j] till den sammanlagda kostnaden.

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

Varför k ligger ytterst

När k är färdigbehandlad kan alla par använda mellanliggande noder upp till k. Genom att placera k ytterst förblir den garantin korrekt.

Negativa kanter går bra

Floyd-Warshall accepterar negativa kanter, men inte negativa cykler. En negativ cykel gör att något diagonalelement blir mindre än noll.

Körtiden

Tre loopar över n noder ger O(n^3) tidskomplexitet och O(n^2) minnesåtgång, vilket bara är praktiskt när n är högst några hundra.

När metoden ska väljas

Välj Floyd-Warshall när grafen är liten och tät och Ni verkligen behöver avståndet mellan varje par, inte bara avstånd från en enda startnod.

Snabbkontroll

Vilken loop måste ligga ytterst i Floyd-Warshall?

Sammanfattning: Floyd-Warshall

Initiera en matris, sätt diagonalen till noll och kör sedan looparna k, i, j för att relaxera via k. Kortaste vägar mellan alla par på O(n^3). 🧮

Gratis att börja

Lär dig Förberedelse inför kodningsintervjuer med en AI-lärare – gratis

Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.

Kurser
90
Lektioner
360

Vanliga frågor

Är lektionen ”Floyd-Warshall för alla par” gratis?

Ja – hela texten till ”Floyd-Warshall för alla par” kan läsas gratis här på webben. Om Ni vill öva interaktivt med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt och låsa upp resten av kursen i Förberedelse inför kodningsintervjuer, kan Ni uppgradera till CoddyKit PRO. Kursen i Förberedelse inför kodningsintervjuer innehåller totalt 4 lektioner.

Vad lär jag mig i ”Floyd-Warshall för alla par”?

Kortaste vägar mellan varje par Ni övar på Förberedelse inför kodningsintervjuer med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.

Behöver jag någon erfarenhet för att börja lära mig Förberedelse inför kodningsintervjuer?

Du behöver inga förkunskaper. Utbildningen i Förberedelse inför kodningsintervjuer på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 4 av 4.

Hur lång tid tar lektionen ”Floyd-Warshall för alla par”?

De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.

Kan jag skriva och köra kod i den här Förberedelse inför kodningsintervjuer-lektionen?

Ja. Varje Förberedelse inför kodningsintervjuer-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.

Alla lektioner i den här kursen

  1. Dijkstra med en heap
  2. 0-1 BFS med en deque
  3. Bellman-Ford och negativa kanter
  4. Floyd-Warshall för alla par
← Tillbaka till Förberedelse inför kodningsintervjuer