Floyd-Warshall算法 - 为什么这个命令?

时间:2015-10-03 18:57:03

标签: algorithm loops

在算法中,你有3个循环用于最短的[u,v,x] x从1 - n, 你从1 - n, v从1 - n。

为什么循环来自x,u,v而不是x,v,u或u,v,x?

1 个答案:

答案 0 :(得分:0)

假设(u,v)是顶点的索引而x表示索引,以便我们找到顶点u和顶点v之间的最短距离,其中只有顶点之间的那些顶点编号<= x

因此dist[u,v,x]的重复使用dist[u,v,x-1]dist[u,x,x-1]dist[x,v,x-1]

由于在u,v,x的计算中涉及三个顶点(dist[u,v,x]),所以在计算dist之前我们应该已经为所有三对计算了dist[u,v,x]&#39; 1}}。

因此,x的循环必须是最外层的循环。内循环可以是v,uu,v,因为它们都是顶点。