2012-12-30 64 views
7

最近我一直在玩OSRM路由庫。它似乎在解決最短路徑問題方面非常有效。但是,我沒有看到如何用它來計算單個源最短路徑。更確切地說,給定一個固定的起始點,計算到達給定距離限制範圍內可達到的所有位置的最短距離(例如,可在30分鐘內到達)。如何使用OSRM計算單源最短路徑?

OSRM使用收縮層次結構內部。根據我的理解,在計算現實世界數據中兩個位置之間的距離時,此技術優於Dijkstra算法。然而,對於我的問題,Dijkstra的算法似乎更適合,不是嗎?

確實OSRM提供API,以計算單源最短路徑問題(與距離的限制)?是否還有其他免費路由庫更適合這類問題?最好有一個支持OpenStreetMap數據。

回答

6

OSRM使用收縮層級(CH)到是快「一對一路由」。爲了使CH工作,你需要一個適應的雙向算法(A *,Dijkstra,...),所以單一來源的情況更加困難。但是如果你知道前面你想要的目的地,一對多的算法是相對簡單的。

也可以看看進紙「Fast Detour Computation for Ride Sharing」或here,如果你想爲它使用查找表「非目標導向,雙向搜索」的解決方案。

其他免費路由庫?

我會建議我的Java GraphHopper項目;)

但當然更主要有:http://wiki.openstreetmap.org/wiki/Routing