一、弗洛伊德算法是什么?
Floyd算法又称为插点法,是一种利用动态规划的思想寻找给定的加权图中多源点之间最短路径的算法。
——百度百科
咋一看很复杂,其实弗洛伊德是求最短路算法中最最最简单的一种!看看核心代码:
for(int k=1;k<=n;k++)
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++){
if(d[i][k]+d[k][j]<d[i][j])
d[i][j]=d[i][k]+d[k][j];
怎么样!是不是简单地令人发指——三个for循环,一个if判断,一个赋值语句。
那么,话不多说,让我们简单了解一下弗洛伊德的用法和写法吧!
二、适用情况
多源最短路问题
时间复杂度:O(n^3)
空间复杂度