zoukankan      html  css  js  c++  java
  • 最短路径算法之三——Bellman-Ford算法

    Bellman-Ford算法

    Dijkstra算法无法判断含负权边的图的最短路。

    如果遇到负权,在没有负权回路存在时,即便有负权的边,也可以采用Bellman-Ford算法正确求出最短路径。

    PS:负权回路的含义是,回路的权值和为负

    算法描述

    1.初始化:将除源点外的所有顶点的最短距离估计值 d[v] +, d[s] 0;

    2.迭代求解:反复对边集E中的每条边进行松弛操作,使得顶点集V中的每个顶点v的最短距离估计值逐步逼近其最短距离;(运行|v|-1次)

    3.检验负权回路:判断边集E中的每一条边的两个端点是否收敛。如果存在未收敛的顶点,则算法返回false,表明问题无解;否则算法返回true,并且从源点可达的顶点v的最短距离保存在 d[v]中。

    伪代码:

    1     For i=1 to |G.V|-1
    2         For each edge(u,v)属于G.E
    3             RELAX(u,v,w)
    4     For each edge(u,v)属于G.E
    5         If (v.d>u.d+w(u,v)
    6             Return FALSE;
    7     Return TRUE;

    时间复杂度:O(VE)顶点数*边数

  • 相关阅读:
    ideaIU-2017.1.1.exe安装、注册、汉化IntelliJ IDEA
    504 Gateway Timeout 异常
    Windows下80端口被进程System占用的解决方法
    D2Admin基本使用
    MySQL 教程
    Element 插件
    VSCode-Element-Helper
    ECharts 教程
    JSP 教程
    Kotlin 教程 Android 官方开发语言
  • 原文地址:https://www.cnblogs.com/Enumz/p/3862678.html
Copyright © 2011-2022 走看看