Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 为网络中的每一对查找最短路径_Python_Pandas_Csv_Networkx_Graph Theory - Fatal编程技术网

Python 为网络中的每一对查找最短路径

Python 为网络中的每一对查找最短路径,python,pandas,csv,networkx,graph-theory,Python,Pandas,Csv,Networkx,Graph Theory,我在csv文件中有一个从父对象到子对象的定向边列表,如下所示: parent child 0 7 4847454 1 7 14823924 2 7 31208539 3 7 32584634 4 7 54293428 我想找到网络中每一对可能的节点之间的最短路径。我该怎么做?我不确定在这种情况下哪个软件包是最好的(networkX、igraph等)具体来说,您可以使用networkX实现这一点。该算法查找

我在csv文件中有一个从父对象到子对象的定向边列表,如下所示:

    parent  child
0   7       4847454
1   7       14823924
2   7       31208539
3   7       32584634
4   7       54293428

我想找到网络中每一对可能的节点之间的最短路径。我该怎么做?我不确定在这种情况下哪个软件包是最好的(networkX、igraph等)

具体来说,您可以使用networkX实现这一点。该算法查找源节点和目标节点之间的最短路径,如果未指定最短路径,则生成每个节点对(存在路径的位置)之间所有最短路径的字典

例如:

>>> 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]}}

在这种情况下,重新发明轮子实际上非常简单,请使用
Floyd warshall
algorithm@Raj你知道我可以在哪个库中使用这个吗?据我所知,
networkX
可以这样做。我不能说哪一个是最好的,这完全取决于您的应用程序的需要。