簡體   English   中英

k-shortest(替代)路徑算法,java實現

[英]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最短路徑是相關的,但不是與替代路徑完全相同的問題。 好的替代路徑更復雜。 閱讀其他類似方法的概述:

  • k-Shortest Paths
  • 帕累托最優
  • 高原法
  • 懲罰方法

高原方法在這里有點說明。

如果您有可能閱讀德語,那么這個講座很棒

  • 例如關於時間或距離的優化=>問題:缺少有趣的替代方案
  • dijunct paths =>同樣的問題
  • k-shortest paths =>問題:真正的替代方案可能不在前1000條路徑之下

第5頁

所以直覺告訴我們:替代方案應該具有幾乎相同的距離或時間。 但應該是顯着不同的。 所以第一個想法:找到一個縮小長度和相似性的路徑。 問題:可能有當地的彎路。

第6頁

我們引入第三個標准: 局部最優 :每個短子路徑都需要是最短路徑。

之前有類似的請求,但在StackOverflow上查找所有路徑。 使用DFS查找圖形中的所有路徑

希望這有所幫助,它得到了回答,但沒有得到確切的解決方案,而是更多的指南

暫無
暫無

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

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