python - 为网络中的每一对找到最短路径
问题描述
我在 csv 文件中有一个从父级到子级的有向边列表,如下所示:
parent child
0 7 4847454
1 7 14823924
2 7 31208539
3 7 32584634
4 7 54293428
我想找到网络中每对可能的节点之间的最短路径。我怎样才能做到这一点?我不确定在这种情况下哪个包最好(networkX、igraph 等)
解决方案
您可以使用 networkx 来实现这一点,特别是nx.shortest_path
. 此算法查找源节点和目标节点之间的最短路径,或者如果未指定,则生成每个节点对(存在路径的位置)之间的所有最短路径的字典。
对于您的示例:
>>> df = pd.DataFrame({'parent': {0: 7, 1: 7, 2: 7, 3: 7, 4: 7},
'child': {0: 4847454, 1: 14823924, 2: 31208539, 3: 32584634, 4: 54293428}})
>>> G = nx.convert_matrix.from_pandas_edgelist(df, 'parent', 'child', create_using=nx.DiGraph)
>>> nx.shortest_path(G)
{7: {7: [7],
4847454: [7, 4847454],
14823924: [7, 14823924],
31208539: [7, 31208539],
32584634: [7, 32584634],
54293428: [7, 54293428]},
4847454: {4847454: [4847454]},
14823924: {14823924: [14823924]},
31208539: {31208539: [31208539]},
32584634: {32584634: [32584634]},
54293428: {54293428: [54293428]}}
推荐阅读
- vim - 在 tmux 中拆分保持相同的目录和相同的文件打开
- python - Python中二维网格的最近邻距离
- node.js - Nestjs:导入模块未定义,但可以导入模块中的方法和函数
- c# - 如何从滚动视图中删除两帧之间的距离
- python - 当我尝试提取文本并将其填充到文本文件中时,我的代码给了我错误“'JpegImageFile' object is not subscriptable”
- google-sheets - 将所有行设为相同的格式标准
- nginx - 如何使 Nginx 代理传递与外部请求一起工作到节点
- python - 检查字典列表中是否存在重复值并更新所述重复值
- maven - 黄瓜选项未从 mvn cli 命令运行标记场景
- r - R,错误:$ 运算符对 fastai 中的原子向量无效