这个算法是用来求任意两点的最短距离问题,可以用dfs和bfs但是需要搜索所有点到所有点的距离,即对任意两点是用dfs或bfs会用很多次,所以有了这个算法,时间复杂度是o(n^3),对于下面的图,画出临界矩阵存储法
当我们规定,任意两点只允许经过点1的时候的存储
注意,floyd-w可以解决正负权值的图,但是不能解决带负权回路图,因为负权回路图永远没有最短路径
最终核心代码
<span style="font-size:24px;"> </span><span style="font-size:14px;">for(k=1;k<=n;k++)
{
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
if(A[i][j]>(A[i][k]+A[k][j]))
{
A[i][j]=A[i][k]+A[k][j];
path[i][j]=k;
}
}</span>