Page 31Dynamic Programming

31 — Floyd–Warshall

All-pairs shortest paths as DP over intermediate vertex k.

APSP DP table

At step k, decide whether path i→k→j improves i→j.

Recurrence

D(k)[i][j] = min(D(k−1)[i][j], D(k−1)[i][k] + D(k−1)[k][j])

for k = 0 to n-1: for i = 0 to n-1: for j = 0 to n-1: dist[i][j] = min(dist[i][j], dist[i][k] + dist[k][j])

Time: O(n³), Space: O(n²). Useful for dense graphs and all-pairs shortest paths.