Floyd算法的来历
Floyd算法又称为插点法,是一种利用动态绘画的思想寻找给定的加权图中多源点之间最短路径的算法,与Dijkstra算法类似。该算法名称以创始人之一、1978年图灵奖获得者、斯坦福大学计算机科学系教授罗布特·弗洛伊德命名。
Floyd算法的用处是什么?
是求多源最短路,相比于dijkstra算法只能求一个点到其他点的距离,floyd算法可以求出任意两点间的最短路。但同时,它所需的时间空间复杂度也较高。
Floyd算法的原理以及实现
在确定两个点之间的最短路时候,利用除两点外的其它点(即中间点)维护这两点间的最短路。例如判断1到5的最短路,比较“当前最短路”与“1到2和2到5的最短路的和”,进行维护新最短路。这样时间复杂度是n的立方,空间复杂度是n方。
不理解的看一下代码应该都会理解的。
for(int k=1;k<=n;k++)//中间点
{
for(int i=1;i<=n;i++)//起始点
{
for(int j=1;j<=n;j++)//终点
{
dis[i][j]=min(dis[i][j],dis[i][k]+dis[k][j]);//维护最短路
}
}
}
如有错误求大佬指出,蒟蒻感激不尽qwq。