- 迪杰斯特拉算法采用动态规划的算法,从起点开始,遍历子节点并计算两节点之间的距离,并比较,更新数据后继续遍历。
- 该算法适用于边的距离为正数的简单图。
- 下面的算法通过堆的数据结构,通过hd记录两节点之间的距离并更新最小距离。
- 参数
(1)s: 起点 (2) vetix_list: 图中的全部节点(3)graph: 图中节点的连接关系 (4)edge: 两节点间的距离
- 返回值:起始节点到所有节点最小距离的字典。
def Dijkstra(s, vertx_list, graph, edges):
hd = heapdict()
distance_map = {
}
for v in vertx_list:
if v == s:
hd[(s, v)] = 0
distance_map[(s, v)] = 0
else:
hd[(s, v)] = np.inf
distance_map[(s, v)] = np.inf
edge = hd.peekitem()
while edge is not None:
point_in_edge = edge[0]
second_point = point_in_edge[1]
update