सच्चाई यह है कि अधिकांश लोग ए * एल्गोरिथ्म के एक कस्टम भिन्नता का उपयोग करते हैं । आप इसे अधिकांश "बड़े लोगों" में देखेंगे (मैं यह नहीं कह सकता कि वे सार्वजनिक मंच पर कौन हैं, लेकिन मैं आपको बता सकता हूं कि आप शायद उनमें से एक का उपयोग करते हैं - गारंटीकृत), जहां उत्तराधिकार का संशोधन है उन डेटासेट पर बहुत निर्भर करता है जिनका वे उपयोग करते हैं।
आपने पहले ही pgrouting का उल्लेख किया है , जिसे मैं "पारंपरिक" विकल्प मानूंगा । यह सरल रूटिंग एल्गोरिदम करने और अधिकांश समस्याओं के लिए अच्छा है। अपने बैकएंड पर एक पारंपरिक डेटाबेस का उपयोग करना और उपयोग करना भी आसान है।
फिर भी, यह वास्तव में उस समस्या के पैमाने और प्रकार पर निर्भर करता है जिसे आप हल करने की कोशिश कर रहे हैं और रूटिंग एक ग्राफ समस्या है।
एक बार फिर, "बड़े लोगों" के पास आमतौर पर बहुत सारे डेटा होते हैं जो उनके ग्राफ़ (उदाहरण के लिए, ट्रैफ़िक डेटा, बस मार्ग, पैदल पथ) से जुड़े होते हैं जो रूटिंग एल्गोरिदम को प्रभावित करते हैं। इन्हें मल्टी-मॉडल ट्रिप प्लानर्स के रूप में जाना जाता है (जहां आपके पास "मोड" की योजना भी है - कोई बाइक पथ नहीं - केवल सार्वजनिक पारगमन - उस तरह की चीज)। यदि आप चलना कैसे यात्रा की योजना भी एक समय संवेदनशील मुद्दा (यानी हो जाता है सोच सकते हैं वापस कुछ किनारों वापस, आप मेट्रो है कि आप अपने गंतव्य के लिए ले जाता है को पकड़ने के लिए सक्षम हो जाएगा आगे की तुलना में अगर आप सिर्फ किनारों नेविगेट करने के लिए करने की कोशिश की बहुत तेजी से सबसे कम लागत का उपयोग करना)।
"बड़े लोग" अपने डेटा को प्रति पारंपरिक डेटाबेस में संग्रहीत नहीं करते हैं, वे पूर्व-संकलित ग्राफ़ (स्वागत हडूप / मैप्रेड्यूस क्लस्टर!) का उपयोग करते हैं। जैसा कि आप कल्पना कर सकते हैं, ये रेखांकन वास्तव में बड़े हो जाते हैं, इसलिए आसन्न रेखांकन के किनारों को कनेक्ट करना जानना एक चुनौती हो सकता है।
वैसे भी, मैं आपको कुछ मल्टी-मोडल रूटिंग ग्राफ प्रोजेक्ट्स देखने की सलाह दूंगा:
ग्राफसर्वर के दिमाग में आता है। बहुत सारे दस्तावेज़ीकरण नहीं बल्कि बहुत सारे शुद्ध कोडिंग awesomeness (AFAIK, मेरा मानना है कि MapQuest उनके कुछ रूटिंग उत्पादों के लिए इस परियोजना की भिन्नता का उपयोग करता है)।
एक अन्य विकल्प OpenTripPlanner होगा, जिसके पीछे बहुत सारे स्मार्ट लोग हैं (ग्राफसर से लोगों सहित)।