算法 - 图(Graph)- 最短路径(Shortest Path)- Bellman-Ford(贝尔曼-福特算法)


Bellman - Ford

  • Bellman-Ford 也属于单源最短路径算法,支持负权边,还能检测出是否有负权环
    算法原理:对所有的边进行V - 1次松弛操作(V是节点数量),得到所有可能的最短路径
    时间复杂度:O(EV),E是变数,V是节点数量
  • 下图的最好情况是恰好从做导游的顺序对边进行松弛操作
    对所有边仅需进行1次松弛操作就能计算出A到达其他所有顶点的最短路径
    在这里插入图片描述
    在这里插入图片描述

Bellman - Ford - 实例

  • 一共8条边
  • 假设每次松弛操作的顺序是:DC、DF、BC、ED、EF、BE、AE、AB
    在这里插入图片描述
  • 松弛操作(Relaxation):更新2个顶点之间的最短路径
  1. 这里一般是指:更新源点到另一个点的最短路径
  2. 松弛操作的意义:尝试找出更短的最短路径
  • 确定A到B的最短路径后,对BC、BE边进行松弛操作,更新了A到C、A到E的最短路径
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • 不难分析出,经过4次松弛操作之后,已经计算出了A到其他所有顶点的最短路径
发布了163 篇原创文章 · 获赞 18 · 访问量 8万+

猜你喜欢

转载自blog.csdn.net/songzhuo1991/article/details/103072241
今日推荐