介绍
Floyd算法是Floyd在研究用于求解带权图中所有结点对之间的最短路径算法,又称为差点法。在算法求解的过程中,每个结点轮流作为源点,重复执行N次Dijkstra算法。其基本思想是通过一个图的权值矩阵求出的它的每两点间的最短路径矩阵。首先,从任意一条单边路径开始,所有两点之间的距离是边的权,如果两边之间没有边相连,则权为无穷大。然后,对于每一对顶点 u 和 v 查看是否存在一个顶点w,使得从u 到 w 再到 v比已知路径更短,则进行更新。
该算法的核心思路是通过一个图的权值矩阵求出该图中任意两个结点之间的最短路径。若图的带权邻接矩阵为 A = [ a ( i , j ) ] n × n A=[a(i,j)]_{n \times n} A=[a(i,j)]n×n,由此开始进行n次递归并更新,即由矩阵 D ( 0 ) = A D(0)=A D(0)=A,按照一个公式建立矩阵 D ( 1 ) D(1) D(1);相同的,由 D ( 1 ) D(1) D(1)构造出 D ( 2 ) D(2) D(2),直到由 D ( n − 1 ) D(n-1) D(n−1)构造出 D ( n ) D(n) D(n)。矩阵