簡體   English   中英

具有更新的最短路徑算法

[英]Shortest Path Algorithm With Updates

有N個城市,並且有M個雙向道路連接到它們,我必須找到兩個固定城市A和B之間的最短路徑。

但問題是有Q查詢給出了兩個城市之間的路徑被阻止,我必須找到每個Q查詢中的最短路徑。

我的時間復雜性在我的蠻力算法是O(QNlogN),它給我時間限制超出錯誤,我怎樣才能改善我的解決方案請幫助

Pseduo代碼:

for u in Q:
  cin>>a>>b;
graph[a][b] = graph[b][a] = INFINITY VALUE
dijkstra algorithm();
cout<<Distance[D]<<endl; 

問題鏈接

我的代碼給了我超出時間限制的錯誤

請幫助我如何改進算法?

論文Vickrey價格和最短路徑:什么是優勢? 作者:John Hershberger和Subhash Suri展示了如何在時間O(NlogN + M)中解決這個問題,其中N是頂點數,M是邊數。

這允許您根據阻止的道路預先計算M個答案,因此您可以在O(1)中回答每個查詢,總復雜度為O(NlogN + M + Q)。

暫無
暫無

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

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