[英]k-shortest (alternative) path algorithm, java implementations
你能推薦任何實現k-shortest算法的java庫 - >搜索替代方法,而不是定向多圖中唯一最短的方法嗎?
我發現只有JGraphT,但實際上有bug(我提交了)但是我需要花很多時間修復它,是否有其他可用的實現? 除了JGraphT,我發現只有小型單人項目:/
或者很難修改Disjktra最短路徑alg以顯示替代路徑?
謝謝
2個可能的選擇:
選項1. MascOpt包中的class KshortestPath
是k- shortest路徑的Java實現的一個很好的選擇。
選項2.你也可以從code.google.com嘗試這個。這似乎是一個人的努力,但好的是該算法是共享的:Yen的排名 - 詳情在這里。( http://www.ohloh .net / p / k-shortest-paths )
注意 :查找給定圖形中所有節點對之間的最短路徑是一個不同的問題。 在Dijkstra對陣Floyd-Warshall看到這個問題。
還要注意,富圖的k-shortest paths
往往是(Dijkstra)最短路徑的微小變化 - 最短路徑上的頂點之間的替代路徑,成本稍高。
我知道OP要求Java實現,但是如果人們有選擇而R是一個選項,那么來自CRAN的kBestShortestPaths
包也是一個非常好的選擇。
希望有所幫助。
找到k最短路徑是相關的,但不是與替代路徑完全相同的問題。 好的替代路徑更復雜。 閱讀其他類似方法的概述:
高原方法在這里有點說明。
如果您有可能閱讀德語,那么這個講座很棒 :
第5頁
所以直覺告訴我們:替代方案應該具有幾乎相同的距離或時間。 但應該是顯着不同的。 所以第一個想法:找到一個縮小長度和相似性的路徑。 問題:可能有當地的彎路。
第6頁
我們引入第三個標准: 局部最優 :每個短子路徑都需要是最短路徑。
之前有類似的請求,但在StackOverflow上查找所有路徑。 使用DFS查找圖形中的所有路徑
希望這有所幫助,它得到了回答,但沒有得到確切的解決方案,而是更多的指南
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.