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如果sourcetarget未连接。
  • nodes:list-负边循环中的节点(按顺序),如果 存在。否则节点在最短路径上。列表为空,如果 sourcetarget未连接。
  • {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

示例
>>>importnetworkxasnx>>>importbellmanfordasbf>>>G=nx.cycle_graph(5,create_using=nx.DiGraph())>>>print(bf.negative_edge_cycle(G))(None,[],False)>>>G[1][2]['weight']=-7>>>print(bf.negative_edge_cycle(G))(-3,[4,0,1,2,3,4],True)

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java ActiveMQ 5.9.0、Glassfish 3.1.2和MDB用于长时间的消息处理   从main调用的对象数组的Java字符串表示形式   java如何在iText 7中为泰国字母上方的双标记设置GPO   编译如果Java6工件是用Java6、7或8编译的,这有关系吗?   image Java KeyListener未检测到键盘输入   java找不到符号(构造函数)   java如何使Kafka使用者从特定主题分区读取Spring Boot   Java readLine()返回null   从CSV文件计算值时出现java系统错误   java如何避免处理程序。被调用后延迟(可运行运行)?   Java Do和While验证   java如何访问父类型的ArrayList中的子方法?   java如何使用Deepfirstsearch算法获得最高级别的搜索   xml使用SAX解析器Java正确构建字符串   Android片段中的java Toast显示空指针expn   如何在java中将多个文件合并到另一个新文件中?   java在运行时在JVisualVM中更改应用程序的标题   javajavax。命名。NoInitialContextException:需要在环境或sys中指定类名