美文网首页算法
Bellman_Ford算法

Bellman_Ford算法

作者: _NewMoon | 来源:发表于2019-09-28 23:41 被阅读0次

Bellman_Ford算法也是单源最短路径算法中的一种,不同于一般Dijkstra算法的是,它可以
解决带负权图的最短路问题,不过该算法的时间复杂度较高,O(nm),n为顶点的个数,m为边的个数

算法的主要思路:

for(int i = 0 ; i<k ;i++)
    {
        memcpy(backup,dist,sizeof dist);
        
        for(int j = 0; j<m ;j++)
        {
            int a = edge[j].a, b = edge[j].b, w = edge[j].w;
            dist[b] = min(dist[b],backup[a] + w);  //松弛操作
        }
    }

第一层循环的意思,经过不超过k条边,得到的图中所有点的最短距离
第二层循环类似于之前的Dijkstra算法,用当前点来更新最短距离,这步操作叫做松弛

注意1

在第二层循环之前,需要对dist做一个备份backup,目的是为了防止上一次的距离更新对
这次的更新造成影响,从而得到错误的结果

注意2

图中可能存在负权回路,但只要该负权回路的位置不在答案的那条路径上,那么它对结果
没有影响,否则,可能得出负无穷的结果(在负权回路上迭代”无穷次“)。

相关文章

  • Bellman_Ford算法

    Bellman_Ford算法也是单源最短路径算法中的一种,不同于一般Dijkstra算法的是,它可以解决带负权图的...

  • 图的算法

    求起点到其他所有点的最短距离: Bellman_Ford算法 Dijkstra 最大网络流算法 Edmonds_K...

  • Dijikstra和Bellman_ford算法

    算法实现思路: Dijkstra算法 预处理:将所有的节点除开始节点的访问位置为零表示没有找到大该节点的最短路径,...

  • 匈牙利算法

    算法思想 算法流程 算法步骤 算法实现 python 算法应用

  • web开发需要知道的几个算法

    算法分类 快速排序算法 深度优先算法 广度优先算法 堆排序算法 归并排序算法

  • 机器学习算法

    机器学习的算法分监督算法和无监督 算法。监督算法包括回归算法,神经网络,SVM;无监督算法包括聚类算法,降维算法。...

  • 字符串匹配

    BF 算法和 RK 算法BM 算法和 KMP 算法

  • 垃圾回收算法有几种类型? 他们对应的优缺点又是什么?

    常见的垃圾回收算法有: 标记-清除算法、复制算法、标记-整理算法、分代收集算法 标记-清除算法 标记—清除算法包括...

  • 头条-手撕代码

    [toc] 图算法 以及最短路径算法 树算法 手写LRU 排序算法 链表算法

  • 关于一些算法

    我们平常说的算法按照使用方向加密算法,排序算法,搜索算法,优化算法,音视频处理算法,图片处理算法 1.加密解密算法...

网友评论

    本文标题:Bellman_Ford算法

    本文链接:https://www.haomeiwen.com/subject/axfxpctx.html