📅  最后修改于: 2023-12-03 15:33:06.202000             🧑  作者: Mango
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)])
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()
参数即可。