Python 3.x 在networkx库中使用dijkstra_路径函数

Python 3.x 在networkx库中使用dijkstra_路径函数,python-3.x,networkx,shortest-path,dijkstra,adjacency-matrix,Python 3.x,Networkx,Shortest Path,Dijkstra,Adjacency Matrix,我使用networkxlibrary,使用dijkstraalgo查找两个节点之间的最短路径,如下所示 import networkx as nx A = [[0, 100, 0, 0 , 40, 0], [100, 0, 20, 0, 0, 70], [0, 20, 0, 80, 50, 0], [0, 0, 80, 0, 0, 30], [40, 0, 50, 0, 0, 60], [0, 70, 0, 30, 60, 0]]; prin

我使用
networkx
library,使用
dijkstra
algo查找两个节点之间的最短路径,如下所示

import networkx as nx

A = [[0, 100, 0, 0 , 40, 0],
     [100, 0, 20, 0, 0, 70],
     [0, 20, 0, 80, 50, 0],
     [0, 0, 80, 0, 0, 30],
     [40, 0, 50, 0, 0, 60],
     [0, 70, 0, 30, 60, 0]];

print(nx.dijkstra_path(A, 0, 4))
在上面的代码中,我直接使用矩阵,但库要求按如下方式创建图形

G = nx.Graph()
G = nx.add_node(<node>)
G.add_edge(<node 1>, <node 2>)
G=nx.Graph()
G=nx.add_node()
G.添加_边(,)

使用上述命令创建矩阵非常耗时。是否有任何方法将输入作为加权矩阵提供给
dijkstra_路径
函数。

首先,您需要使用
np.array
将邻接矩阵转换为
numpy
矩阵。 然后,您可以简单地使用创建图形

输出:

[0, 4]
(0, 1, {'weight': 100})
(0, 4, {'weight': 40})
(1, 2, {'weight': 20})
(1, 5, {'weight': 70})
(2, 3, {'weight': 80})
(2, 4, {'weight': 50})
(3, 5, {'weight': 30})
(4, 5, {'weight': 60})
旁注:您可以使用以下代码检查图形边

for edge in G.edges(data=True):
    print(edge)
输出:

[0, 4]
(0, 1, {'weight': 100})
(0, 4, {'weight': 40})
(1, 2, {'weight': 20})
(1, 5, {'weight': 70})
(2, 3, {'weight': 80})
(2, 4, {'weight': 50})
(3, 5, {'weight': 30})
(4, 5, {'weight': 60})