首页 > 解决方案 > NetworkX 中的最短路径生成器

问题描述

我有几百到几千个节点的图表,权重和它的名字G

我想计算该图的所有最短路径。为此,我写了

pathlens = nx.algorithms.shortest_paths.generic.shortest_path_length(G, weight="weight")

但是由于字典的大小,它返回一个生成器对象,所以我不能简单地从topathlens[x][y]获取最短路径长度。xy

我尝试将其转换为 dict usingdict(pathlens)但此操作需要很长时间(至少几秒钟,并且在我写这个问题时它仍在进行)。有没有更好的方法可以从此生成器访问最短路径?

标签: pythonnetworkx

解决方案


尝试迭代生成器,类似这样:

import networkx as nx

G = nx.path_graph(5)
P = nx.shortest_path_length(G)
for key, value in P:
  print(key,'-->',value)

如果结果太多,将其转换为字典会消耗太多内存(这样做没有意义)。如果您需要特定路径,请传递源节点或目标节点或两者,因此该函数将不会返回生成器Networkx 文档,请参阅“返回”


推荐阅读