我們可以假設所有邊權重都是正數,並且可以枚舉從頂點向外引出的邊,以及在O(1)時間內向內引導的邊。例如,您可以執行Dijkstra遍歷(或帶有可容許啓發式的A *),並標記每個頂點的距離,直到您找到結束頂點,然後在它們描述可能的前輩時反轉這些標記在最佳路徑上。也就是說,對於每個可能的前驅,如果標記的距離之間的差等於連接它們的邊的權重,則可以確定它是否在貪婪的最優路徑上找到。在未知大小的加權有向圖上,如何迭代兩個頂點之間從最短到最長的所有可能的非循環路徑?
當考慮可能的前輩時,進入邊的成本加上到每個頂點的最優距離之間的差值等於將該邊包含在解中導致的最優性損失(最優路徑上的邊爲零)。所以也許這個問題變成:如何才能最大限度地延長產量全部可能的路徑按優化程度遞減排列?是否有一種乾淨的方式來執行這種元圖的最佳優先遍歷?
這似乎是一個有用的解決方案的正確方向。也許是爲了記住一個有用的事情是,如果到目前爲止,你已經探索路徑的一部分可能是一個解決方案的一部分是由至少X欠佳,檢查週期只需要沿最後X完成訪問距離(x次優的任何路徑不可能包含比x更長的週期)。
有沒有更高效的方法?
作爲一個獎勵問題,是否也可以在具有負邊權重的圖形上(已知大小)執行此操作?如果引入負循環,它會變得更加困難嗎? (請記住,因爲我們只查找非循環路徑,所以這並不一定意味着最佳解決方案會失控。)
https://en.m.wikipedia.org/wiki/K_shortest_path_routing –
@ n.m。謝謝,完美 – Mumbleskates