TRT
Sign in

Advanced · Module 17 · Lesson 4 of 4

Floyd-Warshall

Floyd-Warshall computes the shortest path between every pair of vertices with three nested loops over a distance matrix. Its outer loop allows one more intermediate vertex at a time, which is a dynamic program in disguise.

Pro — members onlyAbout 14 minutes

By the end you can

  • Compute all-pairs shortest paths with Floyd-Warshall, and explain the dynamic programming state behind it
  • Explain why the intermediate vertex must be the outermost loop
  • Detect negative cycles, rebuild paths, and choose between Floyd-Warshall, repeated Dijkstra and Johnson's algorithm

Builds on A* and heuristics, Bottom-up tables.

01 · A question first

A delivery company needs the travel time between every pair of its 300 depots. Running Dijkstra 300 times works. So do three nested loops of five lines with no heap at all. Why does the order of those three loops matter so much?

Make a guess before you read on.

02 · The idea

Members only

Unlock the full lesson

This lesson is part of the membership. Join to read it in full, along with every other premium deep dive.

What's inside

  • All pairs at once
  • The dynamic program inside
  • Negative weights and cycles
  • Recovering paths
  • Reachability
  • Cost in practice
  • Choosing an all-pairs method
  • Pseudocode & Multi-Language Implementations (C++, Java, Python)

03 · Practice

Something wrong with this lesson? Report a problem