在一个图中用求单源最短路的方法对每一个顶点执行一次,即可得到每一对顶点的最短路径。由弗洛伊德提出的一个算法,和Dijkstra类似,它们得出的最短路径都是一步一步组合得到的。Floyd算法适合在稠密的矩阵图中使用,所以下面的例子我也用邻接矩阵表示法的方式来理解Floyd算法的运用。
看这样一个例子:
这是一个有向网图。表示这个图的邻接矩阵为:
首先看V0这个结点,从该图的邻接矩阵中,看0行0列以外的,且非对角线的元素。首先是D[ 1 ][ 2 ]=2。然后看D[ 1 ][ 2 ]元素在0行0列上的投影,D[ 0 ][ 2 ]+D[ 1 ][ 0 ]=11+6=17,因为17>2,所以不用跟新最短路径长度。然后矩阵里另一个元素D[ 2 ][ 1 ]=∞,在0行0列上的投影D[ 2 ][ 0 ]+D[ 0 ][ 1 ]=3+4=7,而7<∞,所以D[ 2 ][ 1 ]即顶点2到顶点1的最短路径长度