Floyd Warshall - Floyd Warshall算法


问题

用Floyd Warshall算法求图中任意两顶点之间的最短距离。

解法

为顶点的边的距离,二维数组表示从顶点到顶点的最短距离。

初始时,任意顶点到自己的距离为0(即),到其他顶点的距离为无穷大;

对于图中任意两顶点,遍历图中的所有其他顶点,尝试进行松弛操作。若存在顶点满足:

则更新之间的最短距离:

遍历任意两顶点,更新最短距离,最终可得图中任意两顶点间的最短距离。该算法时间复杂度为


Introduction To Algorithms


源码

FloydWarshall.h

FloydWarshall.cpp

测试

FloydWarshallTest.cpp