码迷,mamicode.com
首页 > 其他好文 > 详细

最短路径算法之三——Bellman-Ford算法

时间:2014-07-23 14:56:26      阅读:202      评论:0      收藏:0      [点我收藏+]

标签:style   blog   color   strong   for   问题   

Bellman-Ford算法

Dijkstra算法无法判断含负权边的图的最短路。

如果遇到负权,在没有负权回路存在时,即便有负权的边,也可以采用Bellman-Ford算法正确求出最短路径。

PS:负权回路的含义是,回路的权值和为负

算法描述

1.初始化:将除源点外的所有顶点的最短距离估计值 d[v] +, d[s] 0;

2.迭代求解:反复对边集E中的每条边进行松弛操作,使得顶点集V中的每个顶点v的最短距离估计值逐步逼近其最短距离;(运行|v|-1次)

3.检验负权回路:判断边集E中的每一条边的两个端点是否收敛。如果存在未收敛的顶点,则算法返回false,表明问题无解;否则算法返回true,并且从源点可达的顶点v的最短距离保存在 d[v]中。

伪代码:

1     For i=1 to |G.V|-1
2         For each edge(u,v)属于G.E
3             RELAX(u,v,w)
4     For each edge(u,v)属于G.E
5         If (v.d>u.d+w(u,v)
6             Return FALSE;
7     Return TRUE;

时间复杂度:O(VE)顶点数*边数

最短路径算法之三——Bellman-Ford算法,布布扣,bubuko.com

最短路径算法之三——Bellman-Ford算法

标签:style   blog   color   strong   for   问题   

原文地址:http://www.cnblogs.com/Enumz/p/3862678.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!