簡體   English   中英

可以修改 BFS 以搜索具有負權重邊的圖嗎?

[英]Can BFS be modified to search a graph with negative weighted edges?

我寫了一個 DFS 算法,它在圖中找到頂點之間的路徑,但想要優化它以返回包含最少邊數的路徑。

我只想切換到 BFS 算法,但我不確定根據我的圖形的屬性和結果路徑必須滿足的標准,我需要如何修改它。

圖:無向、加權並包含具有正權重、負權重和 0 權重的邊。

路徑:不能多次訪問任何頂點。 路徑的總權重必須始終為正,包括到路徑末端頂點之前的任何頂點的路徑。

權重可以被認為是使用每條路徑的成本,總權重可以被認為是可用的數量。 正權重增加了可用的數量,負權重消耗了它們的使用權重。

任何幫助將不勝感激,謝謝!

BFS 適用於未加權的圖(或所有邊具有相同權重的圖)。
對於加權圖,可以使用諸如Dijkstra's (這是“修改的 BFS”)或A* (這是“修改的 Dijkstra”)之類的算法。
然而,Dijkstra's 或 A* 都不能在負權重下正常工作。
對於具有負權重的圖,請考慮Bellman-Ford 算法

編輯:如果您只想使用最少數量的邊同時保持

路徑的總權重必須始終為正,包括到路徑末端頂點之前的任何頂點的路徑。

您可以使用 BFS 並將權重用作選擇標准,這意味着在向隊列添加邊緣之前進行檢查。 如果添加它會使總重量為負,請不要添加。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM