NetworkX中Bellman Ford例程的小扩展,主要是为了方便(https://networkx.github.io)。
bellmanford的Python项目详细描述
这个包提供了贝尔曼福特的一些小的扩展。 NetworkX中的例程,主要用于 方便。
安装
bellmanford在pypi上可用:
pip install bellmanford
用法
贝尔曼福特
length,nodes,negative_cycle=bellman_ford(G,source,target,weight='weight')
计算源节点之间的最短路径和最短路径长度 利用bellman-ford算法实现加权图中的目标节点。
参数
- G:networkx图形
- pred:dict-由路径中的节点到前置任务键控
- dist:dict-按节点键控到与源的距离
- source:节点标签-源节点
- target:节点标签-目标节点
- weight:string-与边权重相对应的边数据键
返回
- {TT8} $:如果存在一个负周期的数值长度。 否则,最短路径的长度。长度是inf如果source 和target未连接。
- nodes:list-负边循环中的节点(按顺序),如果 存在。否则节点在最短路径上。列表为空,如果 source和target未连接。
- {TT15} $:如果存在负边缘循环,则布尔-^ {TT16}$; 否则False。
示例
>>>importnetworkxasnx>>>G=nx.path_graph(5,create_using=nx.DiGraph())>>>bf.bellman_ford(G,source=0,target=4)(3,[1,2,3,4],False)
负边缘循环
length,nodes,negative_cycle=negative_edge_cycle(G,weight='weight')
如果G中的任何地方有负边循环,则返回True。 还返回周期的总权重和周期中的节点。
参数
- G:networkx图形
- weight:字符串,可选(默认值='weight')-边缘数据 与边权重相对应的键
返回
- {TT8} $:负边循环的数字长度,如果存在的话, 否则None。
- nodes:list-负边循环中的节点(按顺序),如果 存在,否则^ {TT24}$。 如果存在一个负边循环,则<, 否则False。