如何通过图解理解Bellman-Ford单源最短路算法?
- 内容介绍
- 文章标签
- 相关推荐
本文共计2258个文字,预计阅读时间需要10分钟。
最短路径问题+Bellman-Ford(单源最短路径)(图解)+核心思想:松散操作+对于边(u,v),用dist(u)和(u,v)的和尝试更新dist(v):dist(v)=min(dist(v), dist(u) + l(u,v)),注意:dist(i)为源点(i)的初始距离
最短路问题 Bellman-Ford(单源最短路径)(图解) 核心思想:松弛操作对于边(u,v),用dist(u)和(u,v)的和尝试更新dist(v):
dist(v) = min(dist(v) , dist(u)+l(u,v)
注:dist(i)为源点(起点)到i点的距离,l(u,v)为u->v的边权。
Bellman-Ford的基本操作是进行多次迭代,每一轮迭代对图上所有边进行松弛操作,直到再一次迭代中没有点的dist发生变化即可停止迭代。为什么呢?不妨假设已经没有dist发生变化了,再进行一轮迭代的话,很显然,之后的迭代没有产生任何作用,dist数组依旧没有改变,反倒增大了时间复杂度,这不是多此一举么。
本文共计2258个文字,预计阅读时间需要10分钟。
最短路径问题+Bellman-Ford(单源最短路径)(图解)+核心思想:松散操作+对于边(u,v),用dist(u)和(u,v)的和尝试更新dist(v):dist(v)=min(dist(v), dist(u) + l(u,v)),注意:dist(i)为源点(i)的初始距离
最短路问题 Bellman-Ford(单源最短路径)(图解) 核心思想:松弛操作对于边(u,v),用dist(u)和(u,v)的和尝试更新dist(v):
dist(v) = min(dist(v) , dist(u)+l(u,v)
注:dist(i)为源点(起点)到i点的距离,l(u,v)为u->v的边权。
Bellman-Ford的基本操作是进行多次迭代,每一轮迭代对图上所有边进行松弛操作,直到再一次迭代中没有点的dist发生变化即可停止迭代。为什么呢?不妨假设已经没有dist发生变化了,再进行一轮迭代的话,很显然,之后的迭代没有产生任何作用,dist数组依旧没有改变,反倒增大了时间复杂度,这不是多此一举么。

