2012-12-30 19 views
7

Son zamanlarda OSRM yönlendirme kitaplığı ile dolaşıyorum. En kısa yol problemini çözmede oldukça etkili görünüyor. Bununla birlikte, tek kaynak en kısa yolları nasıl hesaplayacağımı görmedim. Daha kesin olarak, sabit bir başlangıç ​​noktası verildiğinde, belirli bir mesafe sınırında ulaşılabilen tüm konumlara en kısa mesafeleri hesaplayın (ör., 30 dakika içinde ulaşılabilir).OSRM ile tek kaynak en kısa yolları nasıl hesaplanır?

OSRM dahili olarak daralma hiyerarşilerini kullanır. Anlayışımdan, bu teknik, gerçek dünyadaki verilerdeki iki konum arasındaki mesafenin hesaplanması söz konusu olduğunda Dijkstra'nın algoritmasına göre çok daha üstün. Ancak, benim sorunum için, Dijkstra'nın algoritması daha iyi görünüyor, değil mi?

OSRM, tek kaynak en kısa yol problemlerini hesaplamak için bir API sağlıyor mu (uzaktan limit ile)? Bu tür bir problem için daha uygun olan başka serbest yönlendirme kütüphaneleri var mı? Tercihen OpenStreetMap verileri için iyi bir destek.

cevap

6

OSRM kadar hızlı "1-1 yönlendirme" için olduğu büzülme hiyerarşileri (CH) kullanıyor. Bir uyarlanmış çift yönlü algoritma (A *, Dijkstra, ...) bu yüzden tek kaynak kutusu gerekecek çalışan CH yapmak için daha zordur. İstediğiniz hedefler ön biliyorsanız AMA birçok algoritmaya bir göreli basittir. Ayrıca "Fast Detour Computation for Ride Sharing" ya da here numaralı kağıda bir göz atma tabloları kullanan "hedeflenmeyen, çift yönlü bir arama" için bir çözüm arıyorsanız.

diğer ücretsiz yönlendirme kütüphaneleri?

benim Java GraphHopper projesini öneririm

;)

ama tabii bununla sınırlı değildir: http://wiki.openstreetmap.org/wiki/Routing

İlgili konular