1. 问题
用Floyd算法求解下图各个顶点的最短距离。

2. 解析
假设有向图G=(V,E)采用邻接矩阵存储。
设置一个二维数组A用于存放当前顶点之间的最短路径长度,分量A[i][j]表示当前顶点i到j的最短路径长度。
递推产生一个矩阵序列:A0–>A1->-A2–>…Ak–>…An-1
A[i][j]:i–>j的路径上所经过的顶点编号不大于k的最短路径长度。
3. 设计
核心算法:
for(k=1;k<=n;k++)
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
if(e[i][j]>e[i][k]+e[k][j])
e[i][j]=e[i][k]+e[k][j];
4. 分析
时间复杂度:O(n^3)
5. 源码
https://github.com/dickdan/Floyd/blob/master/2.1(floyd).cpp
本文深入讲解了Floyd算法,一种用于解决有向图中所有顶点对之间最短路径问题的经典算法。通过递推产生矩阵序列,实现了顶点间最短路径的高效计算。文章详细介绍了算法的核心思想、设计步骤及时间复杂度分析。
595

被折叠的 条评论
为什么被折叠?



