2011-09-06 66 views
4

假設我有一個最小邊權重爲-100的圖。我可以將100作爲偏移量添加到所有邊緣並使用Dijkstra算法嗎?即使在具有負邊權重的圖中,我們是否可以使用Dijkstra's來找到最短路徑?

請幫我理解爲什麼這樣的方法給出了錯誤的解決方案。

+1

你爲什麼認爲它給出了錯誤的答案? – bmargulies

+1

它給出了錯誤的答案,因爲Dijkstra的算法沒有被定義爲否定的否定,理由已經被Nayuki指出。 – nikhil

回答

14

將100添加到每個邊權重會給出錯誤的解決方案,因爲它會懲罰比具有更少邊的路徑更多的邊的路徑。

例如,假設我們有一個圖,從點A到點B的最短路徑有3條邊和總距離爲5.假設從點A到點B的其他路徑有2條邊,但總距離爲10.

如果我們爲每個邊權重添加100,那麼第一條路徑的成本爲305,而第二條路徑的成本爲210.所以第二條路徑變得比第一條路徑短。

Example graph

因此,我們可以得出結論,將偏移或偏置到每個邊緣權重不一定保持最短路徑。

+0

完美..!得到了我的答案,謝謝 – Pradhan