python - NetworkX 中的最短路径生成器
问题描述
我有几百到几千个节点的图表,权重和它的名字G
。
我想计算该图的所有最短路径。为此,我写了
pathlens = nx.algorithms.shortest_paths.generic.shortest_path_length(G, weight="weight")
但是由于字典的大小,它返回一个生成器对象,所以我不能简单地从topathlens[x][y]
获取最短路径长度。x
y
我尝试将其转换为 dict usingdict(pathlens)
但此操作需要很长时间(至少几秒钟,并且在我写这个问题时它仍在进行)。有没有更好的方法可以从此生成器访问最短路径?
解决方案
尝试迭代生成器,类似这样:
import networkx as nx
G = nx.path_graph(5)
P = nx.shortest_path_length(G)
for key, value in P:
print(key,'-->',value)
如果结果太多,将其转换为字典会消耗太多内存(这样做没有意义)。如果您需要特定路径,请传递源节点或目标节点或两者,因此该函数将不会返回生成器Networkx 文档,请参阅“返回”。
推荐阅读
- r - 在数据框列表中使用 lapply 和匿名函数
- javascript - typeError:无法在“ResizeObserver”上执行“观察”:参数 1 不是“元素”类型
- ruby-on-rails - 将 React 视图导出到 MS Word 文档
- python - Dymos:如何记录和可视化子系统的输入/输出?
- python - ImageField 未在 Django 中上传
- python - 我升级到 python3,现在 awscli 不工作
- python - 根据行的条件对一个数据框应用两种排序方法
- function - Flutter:帮助评估功能并在 Flutter 中按下按钮显示输出
- c++ - 我需要在我的 C++ 代码中使用向量或学习 STL
- javascript - 如何让 VsCode 从 es6 模块正确自动导入?