📜  NetworkX Dijkstra 的算法 - Python (1)

📅  最后修改于: 2023-12-03 15:33:06.202000             🧑  作者: Mango

NetworkX Dijkstra 的算法 - Python

NetworkX是一个用于操作、可视化和学习复杂网络的Python库。其中包含了包括Dijkstra算法在内的许多路径算法。本文介绍了如何使用NetworkX Dijkstra算法来找到在有向或无向图中一些节点之间的最短路径。

安装

在继续之前,请确保已安装NetworkX。可以通过执行以下命令来安装NetworkX:

pip install networkx
导入库

导入NetworkX库:

import networkx as nx
创建图

可以通过使用add_nodes_from()add_edges_from()方法来创建一个图。首先让我们创建一个简单的无向图:

G = nx.Graph()

G.add_nodes_from([1,2,3,4,5])
G.add_edges_from([(1,2),(1,3),(2,3),(2,4),(3,4),(4,5)])
应用Dijkstra算法

NetworkX中的Dijkstra算法由shortest_path()函数实现。 让我们使用此函数找到节点1和节点5之间的最短路径:

path = nx.shortest_path(G, source=1, target=5)
print(path)

输出结果为:

[1, 3, 4, 5]

这表明从节点1到节点5的最短路径依次经过节点3和节点4。

我们还可以使用shortest_path_length()函数来计算这两个节点之间的最短路径的长度:

length = nx.shortest_path_length(G, source=1, target=5)
print(length)

输出结果为:

3
扩展

上面的例子是一个简单的无向图,但是Dijkstra算法也可以应用到有向图中。您只需要在创建图时传递create_using=nx.DiGraph()参数即可。