戴克斯特拉算法(Dijkstra's algorithm)

戴克斯特拉算法

加权图(weighted graph)
非加权图(unweighted graph)
当图的边有权重时,如何计算最小开销路径
戴克斯特拉算法四部
1.找出最便宜节点
2.对于该节点邻居,检查是否有更便宜路径,如果有,更新其开销
3.重复
4.获得最小路径

换钢琴

戴克斯特拉算法(Dijkstra's algorithm)_第1张图片
换钢琴

怎样用一本乐谱加一点钱换一台钢琴
所有节点到起点的最小开销,并跟踪父节点


戴克斯特拉算法(Dijkstra's algorithm)_第2张图片
image.png

戴克斯特拉算法(Dijkstra's algorithm)_第3张图片
image.png

戴克斯特拉算法(Dijkstra's algorithm)_第4张图片
image.png

戴克斯特拉算法(Dijkstra's algorithm)_第5张图片
image.png

戴克斯特拉算法(Dijkstra's algorithm)_第6张图片
image.png

戴克斯特拉算法(Dijkstra's algorithm)_第7张图片
image.png

戴克斯特拉算法(Dijkstra's algorithm)_第8张图片
image.png

负权边

如果有边的权重为负,请使用贝尔曼-福德算法(Bellman-Ford algorithm)

实现

戴克斯特拉算法(Dijkstra's algorithm)_第9张图片
image.png

首先创建三张散列表(三个dic)


戴克斯特拉算法(Dijkstra's algorithm)_第10张图片
image.png

你可能感兴趣的:(戴克斯特拉算法(Dijkstra's algorithm))