-
迪克斯特拉(Dijkstras)算法,适用于加权图(weighted graph),找出的是总权重最小的路径。
-
Dijsktra算法包含四个步骤:
- 找出当前离起点最近的节点;
- 对于该节点的邻居,检查是否有前往它们的更短路径,如果有,就更新其开销,并更新邻居的父节点;
- 重复这个过程,直到对所有节点都这样做了;
- 计算最终路径(路线和开销)。
code
#!/bin/python
# -*- coding:utf-8 -*-
def dijkstra(graph, startIndex, path, cost, max):
"""
求解各节点最短路径,获取path,和cost数组,
path[i] 表示vi节点的前继节点索引,一直追溯到起点。
cost[i] 表示vi节点的花费
"""
lenth = len(graph)
v = [0] * lenth
# 初始化 path,cost,V, 获得start节点同相邻节点的 权重情况
for i in range(lenth):
if i == startIndex:
v[startIndex] = 1
else:
cost[i] = graph[startIndex