使用狄克斯特拉算法找出从起点到终点最快的路径
图以及每条边的权重(所耗时间)如下:
需要如下三个散列表:
#!/usr/bin/env python
# -*- coding:utf-8 -*-
__author__ = 'calmXia'
'''
狄克斯特拉算法(Dijkstra’s algorithm)-- 最快路径
包含4个步骤
(1) (从起点开始)找出开销最低的节点
(2) 对于该节点的邻居,检查是否有前往它们的更短路径,如果有,就更新其开销。 -- 开销指的是从起点开始的花费。
(3) 重复这个过程,直到对图中的每个节点都这样做了。-- 终点除外。
(4) 计算最终路径。
'''
# ==================================================
# 1. 散列表 graph -- 表示整张图
# 一级散列表 "key-value"
# --> "节点-邻居节点"
# 二级散列表 "key-value" -- 一级散列表中元素的 value 使用散列表构造
# --> "节点-(从父节点过来的)开销"
# ==================================================
graph = {
}
graph["start"] = {
}
graph["start"]["a"] = 6
graph["start"]["b"] = 2
# graph["start"].keys() # 获取 start 节点的所有邻居节点
graph["a"]