zoukankan      html  css  js  c++  java
  • Bellman-Ford与SPFA判定负环

    1.Bellmen-Ford判定负环

    思路:

    • 若经过n轮迭代,算法仍未结束(仍有能产生更新的边),则图中存在负环
    • 若n - 1轮迭代之内,算法结束(所有边满足三角不等式),则图中无负环

    2.SPFA判定负环

    思路:

    1. 设cnt[x]表示从1到x的最短路径包含的边数,cnt[1] = 0。当执行更新dist[y] = dist[x] + z 时,同样更新cnt[y] = cnt[x] + 1。若此时发现cnt[y] >= n,则图中有负环,若算法正常结束则不存在负环。
    2. 另一种方法是记录每个点的入队次数,次数达到n时说明有负环。

    两种方法的比较:一般情况下第二种方法的效率不如第一种的高,例如在n个点构成一个负环的图中,第一种的判定方法只要绕行一次,就能发现负环,而第二种方法要绕环n次。

    例题:POJ3259

    《算法竞赛进阶指南——李煜东》P361

  • 相关阅读:
    2月3日
    照片测试
    家属签证计时
    我来了
    090204 阴天
    重要提醒to 小爱
    小毛小毛
    C++Primer学习日程
    资料库字段存储文件记录的方式
    本日有点忙
  • 原文地址:https://www.cnblogs.com/long98/p/10352195.html
Copyright © 2011-2022 走看看