假设我有一个有N个节点的BA网络,其中每个节点至少有两个边。网络是不加权的。我试图为网络中的所有节点找到每个节点i
和j
之间的所有最短路径。但是,如果节点i
和j
之间有超过1条最短路径,则需要i
和j
之间的每一条最短路径。
因此,如果可以使用路径[0,1,2], [0,3,4,2], [0,3,4,5,2], [0,4,5,2]
和[0,3,2]
从0到达节点2,我需要一个表示[[0,1,2], [0,3,2]]
的列表。
这样做的唯一方法是计算从i到j的每条路径,并得到最小的从属性列表吗?这能否以更有效的方式建立起来?
编辑:显然有一个名为路径的路径查找方法。我会试试这个,看看它是否有效。
发布于 2020-10-22 10:13:47
您可以为此使用nx.nx.all_shortest_paths
:
all_shortest_paths(G,源,目标,weight=None,method='dijkstra')
它允许您指定源节点和目标节点。下面是一个简单的例子:
plt.figure(figsize=(6,4))
G = nx.from_edgelist([[1,2],[2,3],[7,8],[3,8],[1,8], [2,9],[9,0],[0,7]])
nx.draw(G, with_labels=True, node_color='lightgreen')
list(nx.all_shortest_paths(G, 2, 8))
# [[2, 1, 8], [2, 3, 8]]
https://stackoverflow.com/questions/64479578
复制相似问题