Floyd-Warshall 算法采用动态规划方案来解决在一个有向图 G = (V, E) 上每对顶点间的最短路径问题,即全源最短路径问题(All-Pairs Shortest Paths Problem),其中图G允许存在权值为负的边,但不存在权值为负的回路。Floyd-Warshall 算法的时间复杂度为$O(V^3)$。
算法的基本思想:求两个顶点间的最短路径,允许经过一个或多个顶点进行中转。例如,最开始只允许经过1号顶点进行中转,接下来只允许经过1号和2号顶点进行中转······允许经过1~n号所有顶点进行中转,求得任意两点之间的最短路径。
一句话概括:从i号顶点到j号顶点只经过前k号点的最短路径。
|
|
测试结果:12340 2 5 49 0 3 46 8 0 15 7 10 0