簡體   English   中英

無向圖的最小加權路徑樹

[英]Minimum Weighted Path Tree of an Undirected Graph

假設我們有一個無向圖G =(V,E)並且我們有兩個節點S和X.

  1. 我們能否提出一種算法,以使從S到X的路徑上邊緣的最大權重最小化? 請注意,它不是最短路徑算法,因為我們不希望最小化它們的總和。
  2. 該算法的復雜性是什么?
  3. 最小生成樹算法(例如Prim)是否可以解決此問題?

我不知道最小生成樹是否可以解決它,但是通過對Dijkstra算法進行一些修改,它肯定可以解決。

將路徑的“長度”定義為該路徑的最大邊緣。 現在,使用Dijkstra算法找到從S到X的最短路徑。 這是您要尋找的路徑。 如果使用二進制堆,則復雜度為O((N+M)log N) O(N * log N + M) ,而對於Fibonacci堆,復雜度為O((N+M)log N) O(N * log N + M)

請注意,對於路徑長度的這個新定義,如果路徑的長度為l ,則在路徑的末尾添加邊緣不會減小其長度,因為該路徑中的最大邊緣只能增加。 該屬性對於Dijkstra的算法正常工作是必需的。

例如,如果您正在尋找邊緣最短的路徑,則Dijkstra的算法將失敗,就像圖形中存在負邊緣時失敗一樣。

您可以使用最小生成樹(Prim算法)來解決此問題。 您將從頂點S開始,然后繼續使用Prim的算法構建樹,直到找到X為止。 復雜度將為O((V + E)* logV)。
之所以會起作用,是因為在prim的算法中,您總是首先選擇權重最小的邊緣。

暫無
暫無

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

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