진실은 대부분의 사람들이 A * 알고리즘 의 맞춤형 변형을 사용한다는 것입니다 . 휴리스틱의 수정이있는 "큰 녀석들"(공개 포럼에있는 사람은 말할 수 없지만 아마도 그 중 하나를 사용한다고 말할 수 있습니다)에서 이것을 볼 수 있습니다. 사용하는 데이터 세트에 따라 크게 달라집니다.
당신은 이미 "전통적인"옵션을 고려하는 pgrouting을 언급 했습니다 . 간단한 라우팅 알고리즘과 대부분의 문제에 적합합니다. 또한 사용하기 쉽고 백엔드에서 기존 데이터베이스를 사용합니다.
그럼에도 불구하고, 그것은 실제로 해결하려는 문제의 규모와 유형에 달려 있으며 라우팅은 그래프 문제입니다.
다시 한 번, "big guys"에는 일반적으로 라우팅 알고리즘에 영향을주는 그래프와 관련된 많은 데이터 (예 : 교통 데이터, 버스 경로, 보행 경로)가 있습니다. 이들은 멀티 모달 여행 플래너로 알려져 있습니다 (여기서는 "모드"를 계획 할 수도 있습니다-자전거 경로는없고 대중 교통 만 가능합니다). 당신은 당신이 걸 으면 여행 계획도 시간이 민감한 문제 (예를하게하는 방법을 생각할 수 다시 당신이 당신의 목적지로 이동 지하철 잡을 수있을 것입니다, 다시 몇 가장자리를 앞으로 훨씬 더 빨리 당신이 단지 앞으로 가장자리를 탐색하려고하면 이상을 최저 비용 사용).
"big guys"는 기존 데이터베이스에 데이터를 저장하지 않고 사전 계산 된 그래프 (웰컴 하둡 / 매 프러 덕트 클러스터)를 사용합니다. 상상할 수 있듯이 이러한 그래프는 실제로 커지기 때문에 인접한 그래프의 가장자리를 연결하는 방법을 아는 것이 어려울 수 있습니다.
어쨌든, 일부 멀티 모달 라우팅 그래프 프로젝트를 살펴 보는 것이 좋습니다.
Graphserver 가 떠 오릅니다. 많은 문서가 아니라 많은 순수한 코딩 경이 (AFAIK, MapQuest는 일부 라우팅 제품에 대해이 프로젝트의 변형을 사용한다고 생각합니다).
또 다른 옵션은 OpenTripPlanner 인데 , 그 뒤에는 똑똑한 사람들이 많이 있습니다 (그래프 서버의 사람들 포함).