2

我有一个由两组不同的边组成的图。第一组由权重为 1 的边组成(列表 1)。第二组由权重为 2 的边组成(列表 2)。首先,我使用 networkx 创建图,然后使用 add_edges_from 添加列表 1 和列表 2。我想计算此加权图中的所有最短路径。基本上我正在寻找类似于“all_shortest_paths”但带有权重(看起来像“dijkstra”模块不允许您知道给定源和给定目标之间的所有可能路线)。如果我尝试将“all_shortest_path”与加权链接​​(三元组、两个节点和权重)一起使用,我会收到错误消息。有谁能够帮我?非常感谢!

4

1 回答 1

3

这是一个简单的例子来展示 all_shortest_paths() 是如何工作的

import networkx as nx
import StringIO
edges = StringIO.StringIO("""
a b 1
a bb 1
b c 2
bb c 2
c d 1
a d 10""")
G = nx.read_weighted_edgelist(edges, nodetype=str)
print list(nx.all_shortest_paths(G, 'a', 'd', weight='weight'))
# [['a', 'b', 'c', 'd'], ['a', 'bb', 'c', 'd']]
于 2013-05-16T01:48:18.143 回答