微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

查找NetworkX中两个节点之间的所有最短路径

如何解决查找NetworkX中两个节点之间的所有最短路径

假设我有一个具有N个节点的BA网络,其中每个节点至少有2条边。网络未加权。我正在尝试查找网络中所有节点的每个节点ij间的所有最短路径。但是,如果节点ij间的最短路径不止1条,那么我就需要i j间的每条最短路径。

因此,如果可以通过使用路径[0,1,2],[0,3,4,5,2][0,2]从0到达节点2,我需要一个列表,上面写着[[0,2]]

执行此操作的唯一方法是计算从i到j的每个路径并获得最小的冗长列表吗?能否以更有效的方式来建立?

编辑:显然有一个名为all_shortest_paths的寻路方法。我会尝试一下,看看它是否有效。

解决方法

您可以为此使用nx.nx.all_shortest_paths

all_shortest_paths(G,来源,目标,重量=无,方法='dijkstra')

允许您指定源节点和目标节点。这是一个简单的示例:

plt.figure(figsize=(6,4))
G = nx.from_edgelist([[1,2],[2,3],[7,8],[3,[1,9],[9,0],[0,7]])
nx.draw(G,with_labels=True,node_color='lightgreen')

enter image description here

list(nx.all_shortest_paths(G,2,8))
# [[2,1,3,8]]
,

Floyd Warshall算法就是您所需要的

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。