“spfa判断正负环“以及“对偶操作建图“的应用

 算法流程:

 关于spfa判断正负环:

        注:N为点的数量,M为边的数量

        Bellman_Ford在求解最短路时,如果A->B,那么只有dist[A]被更新了以后,dist[B]才有必要被更新,但Bellman_Ford无论如何,都对每条边进行N- 1次松弛操作。

        Spfa针对这一点进行优化,如果松弛操作使某个点改变,且这个点不在队列中,就加进队列中。

        总共有n个点,因为如果cnt[j] >= n有大于等于n条边时,则证明有n + 1个点,根据抽屉原理说明这条路径有一个点被经过了两次,则成环

        可以用这个方法在求最短路的过程中判断负环
        因为是在dist数组更新时cnt[]才更新所以说明这个一定是负权环才会导致dist[]变小

        求正环同理,转换成最长路即可

SPFA(Shortest Path Faster Algorithm)是一种基于贪心思想的最短路径算法,它可以用于求解带有负权边的图中的单源最短路径问题。在一般的图中,如果存在负权边,那么可能存在负环。负环指的是图中一个环路,使得环路上

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值