我只是想確保這會工作。你能找到使用Dijkstra算法的最佳路徑嗎?你是否必須首先將距離初始化爲-1,然後更改鬆弛子程序以檢查它是否更大?Dijkstra的算法找到最權重的路徑
這是針對沒有任何負面權重的問題。
這實際上是該問題:
假設給出一個電話網,它是一個曲線圖 ģ其頂點代表交換機中心和其邊緣代表通信的兩個中心之間 線的圖。邊緣由其帶寬最低的帶寬邊緣標記。給出一個算法,給定一個圖和兩個開關中心 和b,將輸出a和b之間路徑的最大帶寬。
這項工作?
編輯:
我發現這一點:
提示:基本子程序將是非常相似的子程序的Dijkstra放鬆。 假設我們有一個邊(u,v)。如果min {d [u],w(u,v)}> d [v]那麼我們應該更新 d [v] min {d [u],w(u,v)}(因爲到你再到v的帶寬爲 min {d [u],w(u,v)},這比我們目前的還要多)。
不完全確定這是什麼意思,但因爲所有距離在初始化時都是無窮大。所以,我不知道這是如何工作的。任何線索?
簡短的回答是:不,它不會工作。最長的路徑問題沒有Djikstra所假設的最佳子結構,所以Djikstra's不會給你正確的答案。 – bdares 2011-04-18 04:20:31