Правда полягає в тому, що більшість людей використовують власну варіацію алгоритму A * . Ви побачите це у більшості "великих хлопців" (я не можу сказати, хто вони є на публічному форумі, але можу сказати вам, що ви, мабуть, використовуєте один із них - гарантовано), де модифікація евристики є дуже залежать від наборів даних, якими вони користуються.
Ви вже згадали про прутінг , який я вважав би "традиційним" варіантом. Це добре для прості алгоритми маршрутизації та для більшості проблем. Він також простий у використанні та використовує традиційну базу даних у своєму резервному часі.
Тим не менш, це дійсно залежить від масштабу та типу проблеми, яку ви намагаєтеся вирішити, а маршрутизація - це проблема графіка .
Знову ж таки, "великі хлопці" зазвичай мають багато даних, пов'язаних з їх графіком (наприклад, дані про трафік, маршрути автобусів, пішохідні доріжки), які впливають на алгоритм маршрутизації. Вони відомі як мультимодальні планові поїздки (де ви також можете вибрати "режими" планування - немає велосипедних доріжок - лише громадський транзит - така штука). Ви можете думати , як планування поїздки також стає час делікатного питання (тобто , якщо ви йдете назад кілька ребер назад, ви зможете зловити метро , який доставить вас до місця призначення вперед набагато швидше , ніж якби ви просто намагалися перейти краю вперед з використанням найменшої вартості).
"Великі хлопці" самі не зберігають свої дані в традиційній базі даних, вони використовують попередньо обчислені графіки (привітання кластерів hadoop / mapreduce!). Як ви можете собі уявити, ці графіки стають дійсно великими, тому знання, як з'єднати краї сусідніх графіків, може стати проблемою.
У будь-якому разі, я б рекомендував вам переглянути кілька мультимодальних проектів графіків маршрутизації:
Графічний сервер приходить на думку. Не багато документації, але багато чистого кодування (див. AFAIK, я вважаю, що MapQuest використовує варіацію цього проекту для деяких своїх продуктів маршрутизації).
Іншим варіантом буде OpenTripPlanner, який має за собою багато розумних людей (включаючи людей із графічного сервера).