贪心算法之Bellman-Ford
来源:互联网 发布:必佳预算软件下载 编辑:程序博客网 时间:2024/06/14 06:52
前面都是边的权值是正的情况,如果一个图包含负权值的环,那么最短路径可能不存在。而Bellman-Ford算法:从源s∈V到所有v∈V找到所有的最短路径的长度或者检测是否有一个负环路存在。
算法如下:
算法的前面还是和Dijkstra一样的,只是在后面多了一个检测负权环的for循环,即对所有的边松弛完毕后,开始检测如果d[v]>d[u]+w(u,v)任然存在那么显然有一个负权环
代码如下:
# This Python file uses the following encoding: utf-8import sys lineNum=0 nodeNum=0 dist = [] pre = [] sourceNode = -1 dataFile = open('e:\\drg.data', 'r') [ nodeNum, sourceNode ] = dataFile.readline().split("\t") dataFile.close() print (nodeNum, sourceNode) nodeNum = int(nodeNum) sourceNode = int(sourceNode) - 1 dist = [10000 for i in range(nodeNum)] pre = [-1 for i in range(nodeNum)] dist[sourceNode] = 0 dataFile = open('e:\\drg.data', 'r') dataFile.readline()for line in dataFile.readlines(): #其实就是Dijkstra算法中的对边进行松弛 [frm, to, wei] = line.split("\t") frm = int(frm)-1 to = int(to)-1 wei = int(wei) if (dist[frm] + wei < dist[to]): dist[to] = dist[frm] + wei pre[to] = frmdataFile.close() for i in range(len(dist)): print (i, dist[i]) dataFile = open('e:\\drg.data', 'r') dataFile.readline()for line in dataFile.readlines(): #对负权环进行检测 [frm, to, wei] = line.split("\t") frm = int(frm)-1 to = int(to)-1 wei = int(wei) if (dist[frm] + wei < dist[to]): print ("Graph contains a neg-wei cycle")dataFile.close()
其中drg.data数据组织形式如下:
两个数用Tab键隔开
以上转自:http://www.cnblogs.com/enyun/archive/2011/06/28/2092545.html
这是我见过的比较简洁的代码,谢谢链接中的博主。
- 贪心算法之Bellman-Ford
- 单源最短路径算法之Bellman-Ford算法
- 算法储备之Bellman-Ford算法
- 求最短路径之Bellman-Ford算法
- 【算法】最短路径之Bellman-Ford
- 最短路之Bellman-Ford算法
- 单源最短路径之Bellman-Ford 算法
- 单源最短路径之Bellman-Ford算法
- Bellman-Ford算法之单源最短路径问题
- 最短路之Bellman-Ford算法
- Bellman-Ford&SPFA算法
- Bellman-ford算法实现
- Bellman-Ford 算法详解
- Bellman-Ford算法
- Bellman-Ford算法
- Bellman-Ford路由算法
- Bellman-Ford算法分析
- bellman ford算法
- Printf() 输出格式控制
- SAP中的一些FUNCTION应用
- 【工具类】Java常用数据类型的转换
- math 是实例化过后的对象 然后调用属性 和函数 这个类存在去浏览器中,javascript解析器 去解释
- socket通信过程
- 贪心算法之Bellman-Ford
- 求质因数
- 破碎流离的伤感QQ空间日志发布:我们的爱能有几次?
- Three ways to do WCF instance management
- MySQL索引的使用
- Eclipse git插件简单使用
- XCAP 协议
- 嵌入式网络视频采集源程序servfox解析
- php 接口问题(php接口主要也就是运用curl,curl函数)