• 图上最短路径问题


    OI中常用的四种最短路算法

    1.广度优先算法BFS主要适用于无权重向图重搜索出源点到终点的步骤最少的路径,当方向图存在权重时,不再适用

    2.狄克斯特拉算法Dijkstra主要用于有权重的方向图中搜索出最短路径,但不适合于有负权重的情况.对于环图,个人感觉和BFS一样,标志好已处理的节点避免进入死循环,可以支持

    3.Bellman–Ford可以处理有负权边的图,可以判断出图是否存在负环路,但存在负环路的情况下不支持计算出各个节点的最短路径。只需要在结束(节点数目-1)次遍历后,再执行一次遍历,若还可以更新数据则说明存在负环路(负环路是指某个环的边权之和为负数)

    4.spfa可以处理有负权边的图,可以判断出图是否存在负环路,但存在负环路的情况下不支持计算出各个节点的最短路径。在判断是否存在负权回路时优于Bellman–Ford算法

    5.flord求求多源、无负权边的最短路。用矩阵记录图。时效性较差,时间复杂度O(V^3)。

    单源最短路问题1(Bellman-Ford算法)

    • 记从起点s出发到顶点i的最短距离为d[i],则下述等式成立:d[i]=min{d[j]+(从j到i的边的权值)|e(j,i)∈E}
    • Bellman-Ford算法:记当前到顶点i的最短路长度为d[i],并设初值d[s]=0,d[i]=INF,不断使用上面这条递推关系式更新d的值,就可以算出新的d。只要图中不存在负圈,这样的更新操作就是有限的。结束之后的d就是所求的最短距离了,这部分代码如下:
    加油啦!加油鸭,冲鸭!!!
  • 相关阅读:
    PAT 甲级 1120 Friend Numbers (20 分)
    AcWing 894. 拆分-Nim游戏
    AcWing 891. Nim游戏
    AcWing 892. 台阶-Nim游戏
    AcWing 893. 集合-Nim游戏
    洛谷P1433 吃奶酪
    洛谷P1118 [USACO06FEB]数字三角形`Backward Digit Su`…
    AcWing 125. 耍杂技的牛
    AcWing 104. 货仓选址 绝对值不等式
    AcWing 913. 排队打水 排序不等式贪心
  • 原文地址:https://www.cnblogs.com/clarencezzh/p/10375083.html
Copyright © 2020-2023  润新知