日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

如何判断图中存环(正负)

發布時間:2025/7/25 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 如何判断图中存环(正负) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.正環

用 SPFA不斷的進行松弛操作,發現當前金額可以比本身大就更新,同時記錄更新次數。如果更新次數超過n次,說明存在”正“環。

2.負環

這里先說明下負環。(求最短距離的時候)

在我們用SPFA求最短路徑的時候,如果存在負環,在松弛操作的時候總會加入隊列 因為最小距離會越來越小,同樣這里如果經過一次次的轉換,如果可以使本金增大,那么松弛操作也會無限進行下去,我們以n為界限,超過n就說明存在正環,也就說明可以使本金增大。

用spfa算法。經驗證:當一個點重復進入隊列n次以上,就存在負環。?

?


題目大意:

有多種匯幣,匯幣之間可以交換,這需要手續費,當你用100A幣交換B幣時,A到B的匯率是29.75,手續費是0.39,那么你可以得到(100 - 0.39) *      29.75 = 2963.3975 B幣。問s幣的金額經過交換最終得到的s幣金額數能否增加?

貨幣的交換是可以重復多次的,所以我們需要找出是否存在正權回路,且最后得到的s金額是增加的

怎么找正權回路呢?(正權回路:在這一回路上,頂點的權值能不斷增加即能一直進行松弛)

解題思路:單源最短路徑算法,因為題目可能存在負邊,所以用Bellman Ford算法,

     原始Bellman Ford可以用來求負環,這題需要改進一下用來求正環

     本題是“求最大路徑”,之所以被歸類為“求最小路徑”是因為本題題恰恰與bellman-Ford算法的松弛條件相反,

     求的是能無限松弛的最大正權路徑,但是依然能夠利用bellman-Ford的思想去解題。

     因此初始化dis(S)=V?? 而源點到其他點的距離(權值)初始化為無窮小(0),當s到其他某點的距離能不斷變大時,

     說明存在最大路徑;如果可以一直變大,說明存在正環。判斷是否存在環路,用Bellman-Ford和spfa都可以。

轉載于:https://www.cnblogs.com/Roni-i/p/9445634.html

總結

以上是生活随笔為你收集整理的如何判断图中存环(正负)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。