簡體   English   中英

給定無向加權連通圖,s,t。 找到從s到t的路徑,其最大加權邊緣盡可能低

[英]Given undirected weighted connected graph, s,t. Find path from s to t that its most weighted edge is low as possible

給定:無向加權連通圖。 s,t是頂點。

問題:找到一個盡可能高效的算法,它返回從s到t的路徑。 在該路徑中,具有最高重量的邊緣將具有盡可能最小的重量。 因此,如果我們有來自s,t的5條路徑,並且對於每條路徑,我們都有最重的邊緣,所以這些路徑的最小邊緣為5。

我嘗試過的:

  1. 使用一些算法來找到s和t之間的最短路徑。
  2. 刪除不屬於我們找到的最短路徑的所有邊
  3. 使用BFS進行一些修改,我們根據從s到t的路徑數運行BFS。 每當我們找到最大邊並將其存儲在數組中時,我們就會找到數組的最小值。

我很難找到一個可以在(1)中運行的算法,Bellman ford將不起作用 - 因為它必須是有向圖。 Dijkstra不會工作,因為我們不知道它是否有負圓或負邊。 Prim用於尋找MST,我不知道它如何幫助我們找到最短的路徑。 有任何想法嗎?

除此之外,如果你有一個可以解決這個問題的算法,我將不勝感激。

你可以用Kruskal算法解決這個問題。 像往常一樣添加邊緣,並在s和t位於同一群集中時立即停止。

我們的想法是,在算法的每個階段,我們都有效地將所有邊緣添加到特定權重閾值以下。 因此,如果s和t在同一簇中,則它們之間存在一條完全由重量小於閾值的邊組成的路徑。

您可以通過轉換為MST問題來解決它,基本上MST中從s到t的路徑將是具有最小可能最大權重的路徑

  1. 找到圖中最負的邊緣
  2. 將(重量+ 1)添加到每個邊緣。
  3. 現在所有邊緣都是正面的,因此您可以應用Dijkstra的算法
  4. 你可以得到源和目的地之間的最短路徑
  5. 現在計算源和目標之間的邊數(比如x)
  6. 真正的最短路徑是:shortest_path - x *(weight + 1)

暫無
暫無

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

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