1、问题:
用Floyd算法求解下图各个顶点的最短距离。
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210315163428293.png)
2、解析:
任意两点间的最小距离要么直接相连,要么通过另外一个点相连。用每个点去更新两两点之间的距离即可。Floyd优点是代码简单,能够求任意两点的最短路;缺点是暴力带来的时间复杂度较大,不适合用在点较多的图中。
3、设计(核心伪代码):
for(k : 1 ~ n){
for(i : 1 ~ n){
for(j : 1 ~ n){
e[i][j]=min(e[i][j],e[i][k]+e[k][j]);
}
}
}
4、分析:
Floyd枚举了所有两个点,又遍历了一遍中间点,所以Floyd的时间复杂度是O(n^3)
5、源码:
Floyd算法源码