斯坦福算法专项课程Course2 week2内容回顾
距离上次更新已经 2011 天了,文章内容可能已经过时。
这一周的内容主要介绍了Dijkstra算法。
Course 2 Week 1
Dijkstra’s Algorithm
Dijkstra算法是解决单源最短路径问题,来看下算法的输入输出:
- Input:有向图
,每条边有非负边长 ,一个源点 - Output: 对于每个节点
,计算 ,其中 为 到 的最短路径长度
这里最重要的假设为
来看下算法描述:
解释下算法,这里将节点分为
Why It Works
这部分证明为什么Dijkstra算法计算出了正确的结果,即如下事实成立:
利用数学归纳法证明。
证明:
对于出发点
假设对于任意
现在任取一条到达$w^
这里就要用到每条边都非负的假设了,由假设可得
所以
由于$A[v^]+l(v^,w^*)
这表示
Fast Implementation
这一部分介绍加速算法的方法。
之前的算法一共要进行
这里保持了两个不变量,一是堆中的元素为
从上图中可以看出,之所以要进行这样的更新,是因为对于任意的点
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Doraemonzzz!
评论
ValineLivere
Powered By Valine
v1.5.2
v1.5.2