![](/img/trans.png)
[英]connected weighted directed graph with diameter k< |V|, find the shortest path
[英]k-Edge Shortest Path in Positive Weighted Directed Acyclic Graph
我得到一個圖,G =(V,E),即正加權,有向和非循環。 我將設計一個在O(k(m + n))中運行的算法,用於報告從s到t的k邊緣最短路徑。 k邊緣最短路徑被定義為從s到t的具有k個邊緣的路徑,並且對於從s到t的所有路徑,路徑的總權重也必須是最小的。
由於BFS不能單獨用於查找最短路徑(除非權重相等),我認為運行時間意味着使用BFS來查找具有k個邊緣的路徑。 什么讓我失望的是k,因為我認為它意味着執行BFS k次。
我可能的想法是從源運行BFS以找到所有可能的k-link路徑。 通過跟蹤沿途的水平並將每個節點的總路徑權重存儲到我的隊列中,我可以找到所有可能的k-link路徑及其權重。 顯然,如果我在較低級別遇到具有較低路徑權重的目的地,則根據定義沒有k邊緣最短路徑。 如果有超過k個邊的路徑總重量減少的情況怎么辦? 它也不是O(k(m + n))。 任何有用的提示將不勝感激。
設f[i][j]
是從s
到j
的i-link最短路徑,最初我們有
f[1][x] = e(s, x);
然后迭代K - 1
次,每輪我們使用f[i][]
計算f[i + 1][]
,這可以通過
for each node v:
f[i + 1][v] = INF;
for each edge e[u][v]:
f[i + 1][v] = min(f[i + 1][v], f[i][u] + e[u][v]);
因此取O(k(n + m))
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.