在Networkx中选择最短路径的明确性

时间:2017-12-30 18:21:53

标签: python networkx shortest-path

我有一张图表:

enter image description here

为什么在使用最短路径的函数后:

nx.shortest_path(g, 0, 6)

为什么输出路径是[0, 3, 6]?为什么不[0, 2, 6]?在上述情况下,算法[0, 3, 6]的路径shortest_path()的选择是否总是明确的?

1 个答案:

答案 0 :(得分:1)

@ jon-clements在对问题的评论中有正确的答案。如果有多个最短路径,则函数networkx.shortest_path()将返回其中一个。您获得的具体路径取决于数据在networkx图形数据结构(基于Python字典)中的存储方式,并且不保证是确定性的。如果您愿意,您可以获得所有最短路径,甚至可以对它们进行排序以提供稳定的订单 - 例如

In [1]: import networkx as nx

In [2]: G = nx.Graph({0: [3, 2], 2: [6, 4], 3: [5, 6]})

In [3]: nx.shortest_path(G, 0, 6)
Out[3]: [0, 2, 6]

In [4]: list(nx.all_shortest_paths(G, 0,6))
Out[4]: [[0, 3, 6], [0, 2, 6]]

In [5]: sorted(nx.all_shortest_paths(G, 0,6))
Out[5]: [[0, 2, 6], [0, 3, 6]]