所有顶点间最短路径——Floyd算法
算法思想及数据结构
Floyd算法的基本思想是,把初始直接相连的通路中,把图中的每一个节点都尝试加入到各对点的通路当中,尝试是否能够得到更短的通路。若是,则保留这个通路,如此整个图中的点之间的通路距离就会在遍历中保持缩减的趋势最终达到最优。
arsc [][]int //图的邻接矩阵
由于递推的过程可直接对邻接矩阵做处理,因此不需要其他的辅助元素。
算法流程
- x = 0,对于所有顶点arsc[i][j],若存在arsc[i][j] > arsc[i][x] + arsc[x][j],则更新arsc[i][j]。
- x自增,循环n次。
算法复杂度
$O(|V|^3) $
同等的复杂度下可以对每个顶点使用dijskra算法达到同样的效果。
算法实现
1 |
|
所有顶点间最短路径——Floyd算法
https://1303-yzym.github.io/2024/09/24/所有顶点间最短路径——Floyd算法/