Bellman-Ford路由算法
算法描述
1.初始化,建立d[],pred[],且d[s]=0,其余为无穷大,pred表示节点的父节点,s为起点
2.迭代求解:反复对边集E中的每条边进行松弛操作,使得顶点集V中的每个顶点v的最短距离估计值逐步逼近其最短距离;(运行|v|-1次)
3.检验负权回路:判断边集E中的每一条边的两个端点是否收敛。如果存在未收敛的顶点,则算法返回false,表明问题无解;否则算法返回true,并且从源点可达的顶点v的最短距离保存在 d[v]中。
6
10
0
0 1 2 3 4 5
0 1 -10
0 4 19
0 5 21
1 2 5
1 3 6
1 5 11
2 3 -6
3 4 18
3 5 14
4 5 -33
输出:
从源点s=0开始到0的最短路径长为0:
从源点s=0开始到1的最短路径长为-10: