[英]Finding paths of fixed cost in weighted undirected graph?
我遇到以下問題,但不確定如何解決:
給定一個圖G = (V;E)
,其中每個邊e都有一個正整數成本c_e
和起始頂點s\\in V
設計一種O(V + E)
算法,該算法使用一條路徑(不一定是簡單路徑)標記從s
可到達的所有頂點,而該路徑的總成本是5的倍數。
我如何跟蹤已經訪問過的路徑的總成本? 我一直在研究無向加權圖中的BFS,並嘗試過在這里使用它,但是大多數BFS參考文獻都着眼於尋找最短路徑(而不是將其保持5的倍數 )。
您如何看待下一個算法?
讓我們考慮基於源圖的新的有向圖。 為源圖中的每個頂點v
在新圖中創建5
新頂點v[0], v[1], ..., v[4]
,對應於除以5
的模塊。 然后,如果頂點v
和u
通過權重為w
的邊在源圖中連接,則在v[i]
和u[(i + w) % 5]
, u[j]
和v[(j + w) % 5]
,其中i = 0..4, j = 0..4
。 然后從v[0]
運行BFS ,其中v
是源圖中的起始頂點。
考慮索引為0
頂點,例如v[0]
。 它們每個都對應於源圖中頂點v
的5
的長度倍數的路徑。 在BFS之后標記為從起始頂點可到達的所有此類頂點均構成了答案。 總復雜度是線性的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.