zoukankan      html  css  js  c++  java
  • 图上最短路径问题

    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就是所求的最短距离了,这部分代码如下:
    加油啦!加油鸭,冲鸭!!!
  • 相关阅读:
    Appium+python自动化2-环境搭建(下)【转载】
    Appium+python自动化1-环境搭建(上)【转载】
    python+requests接口自动化完整项目设计源码【转载】
    python接口自动化10-token登录【转载】
    linux_samba服务搭建
    linux_nginx反向代理
    linux_Nginx优化
    linux_mysql安装
    linux_http协议
    linux_nginx_rewrite
  • 原文地址:https://www.cnblogs.com/clarencezzh/p/10375083.html
Copyright © 2011-2022 走看看