Search⌘ K
AI Features

Introduction to All-Pairs Shortest Paths

Understand how to solve the all-pairs shortest path problem by computing shortest distances between every pair of vertices in a graph. Explore implementations that use single-source shortest path algorithms repeatedly, and learn strategies such as edge reweighting to handle negative edges effectively.

Shortest path tree

Previously, we discussed several algorithms to find the shortest paths from a single-source vertex ss to every other vertex of the graph by constructing the shortest path tree rooted at ss. The shortest path tree specifies two pieces of information for each node vv in the graph:

  • dist(v)dist(v): This is the length of the shortest path from ss to vv.
  • pred(v)pred(v): This is the second-to-last vertex in the shortest path from ss to vv.

Now, we consider the more general all-pairs shortest path problem, which asks for the shortest path from every possible source to every possible destination. For every pair of vertices uu and vv, we want to compute the following information:

  • dist(u,v)dist(u, v): This is the length of the shortest path from uu to vv.

  • pred(u,v)pred(u, v): This is the second-to-last vertex on the shortest path from uu to vv. These intuitive definitions exclude a few boundary cases, all of which we already saw previously.

  • If there is no path from uu ...