簡體   English   中英

加權有向圖中的最短路徑

[英]Shortest path in weighted directed graph

我需要在加權有向圖中找到兩個節點 s,t 之間的最短路徑。 以下是限制:

  1. 權重可以為負。
  2. 路徑必須通過特定的邊,讓她從節點 u 到 v 稱她為 e 和 shes。
  3. 輸出路徑必須簡單,即我們只通過一個節點一次。

現在我有一個解決方案的想法,但我不知道輸出是否是一個簡單的路徑。

我的解決方案是運行 bellman Ford 算法兩次,一次從 s,第二次從 v。最短路徑將是 s 到 u,u 到 v,v 到 t。

因為我希望它很簡單,所以我不會使用我在第二次 bellman Ford 運行中已經使用過的節點。

因為我希望它最短,所以我會檢查在從 s 到 u 運行之前從 v 到 t 運行 bellman Ford 是否比其他方式更快(如果有一個節點,則兩者都使用放置它的最佳位置)。

感謝幫助者!

即使找到這樣的路徑也是 NP 完全的。 這是因為兩個頂點/邊不相交的路徑問題是有向圖中的 NPC。 假設邊 e=(u,v) 那么你正在尋找一個 (s,u), (v,t) 不相交的路徑,但這在有向圖中是 NP 完全的。

在這里你可以找到硬度結果: https : //www.sciencedirect.com/science/article/pii/0304397580900092

您當前基於 Bellman-ford 的算法並未針對所有情況給出正確答案(在有路徑時可能無法找到路徑),但是,它可能是一個很好的啟發式方法。 如果你的圖是無向圖,那么任務就容易多了。

如果您允許重復頂點,那么任何最短路徑算法都是正確的方法。

暫無
暫無

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

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