2012-12-30 31 views
7

मैं हाल ही में OSRM रूटिंग लाइब्रेरी के साथ खेल रहा हूं। यह सबसे छोटी पथ समस्या को हल करने में अत्यधिक कुशल प्रतीत होता है। हालांकि, मैंने नहीं देखा कि इसके साथ एकल स्रोत सबसे कम पथों की गणना कैसे करें। अधिक सटीक, एक निश्चित प्रारंभिक बिंदु दिया गया है, किसी भी दूरी सीमा के भीतर पहुंचने वाले सभी स्थानों पर सबसे छोटी दूरी की गणना करें (उदाहरण के लिए, 30 मिनट के भीतर पहुंच योग्य)।ओएसआरएम के साथ एकल स्रोत सबसे कम पथ की गणना कैसे करें?

ओएसआरएम आंतरिक रूप से संकुचन पदानुक्रमों का उपयोग करता है। मेरी समझ से, यह तकनीक वास्तविक दुनिया डेटा में दो स्थानों के बीच की दूरी की गणना करने के लिए डिजस्ट्रा के एल्गोरिदम से बेहतर है। हालांकि, मेरी समस्या के लिए, डिजस्ट्रा का एल्गोरिदम बेहतर फिट लगता है, है ना?

क्या ओएसआरएम एकल स्रोत सबसे छोटी पथ समस्याओं (दूरी पर सीमा के साथ) की गणना करने के लिए एक एपीआई प्रदान करता है? क्या कोई अन्य मुफ्त रूटिंग लाइब्रेरी है जो इस प्रकार की समस्या के लिए बेहतर अनुकूल है? पसंदीदा डेटा के लिए पसंदीदा समर्थन के साथ एक।

उत्तर

6

ओएसआरएम "एक से एक रूटिंग" के लिए तेज़ होने के लिए संकुचन पदानुक्रम (सीएच) का उपयोग कर रहा है। सीएच काम करने के लिए आपको एक अनुकूलित बिडरेक्शनल एल्गोरिदम (ए *, डिजस्ट्रा, ...) की आवश्यकता है ताकि एकल स्रोत केस अधिक कठिन हो। लेकिन कई एल्गोरिदम में से एक सापेक्ष सरल है यदि आप जानते हैं कि आप किन गंतव्यों को चाहते हैं।

यदि आप "गैर लक्ष्य-निर्देशित, बिडरेक्शनल खोज" के लिए समाधान चाहते हैं तो लुकअप टेबल का उपयोग करने के लिए "Fast Detour Computation for Ride Sharing" या here पर एक नज़र डालें।

अन्य निःशुल्क रूटिंग पुस्तकालय?

मैं अपने जावा GraphHopper परियोजना सुझाव है;)

लेकिन वहाँ निश्चित रूप से अधिक कर रहे हैं: http://wiki.openstreetmap.org/wiki/Routing