Як постачальники карт (наприклад, Google або Yahoo! Maps) пропонують вказівки?
Я маю на увазі, вони, мабуть, мають реальну інформацію в якійсь формі, звичайно, включаючи відстані, але також, можливо, такі речі, як швидкість руху, наявність тротуарів, розклад поїздів тощо. Але припустимо, дані були у більш простому форматі, скажімо, дуже великий спрямований графік з крайовими вагами, що відображають відстані. Я хочу мати можливість швидко обчислити напрямки від однієї довільної точки до іншої. Іноді ці точки будуть близько один від одного (в межах одного міста), а іноді вони будуть далеко один від одного (поперек).
Графічні алгоритми на зразок алгоритму Дейкстри не працюватимуть, оскільки графік величезний. На щастя, евристичні алгоритми на зразок A *, ймовірно, спрацюють. Однак наші дані дуже структуровані, і можливо, якийсь багаторівневий підхід може спрацювати? (Наприклад, зберігайте попередньо обчислені напрямки між певними "ключовими" точками далеко один від одного, а також деякими локальними напрямками. Тоді вказівки для двох віддалених точок включатимуть місцеві напрямки до ключових точок, глобальні напрямки до іншої ключової точки, а потім локальні вказівки знову.)
Які алгоритми реально використовуються на практиці?
PS. Це питання було мотивоване пошуку химерностей в напрямках онлайн-картографування. На відміну від нерівності трикутників, інколи Google Maps вважає, що XZ займає більше часу і довше, ніж використання проміжної точки, як у XYZ . Але, можливо, їх напрямки ходіння оптимізуються і для іншого параметра?
PPS. Ось ще одне порушення нерівності трикутників, що говорить (на мене) про те, що вони використовують якийсь багаторівневий підхід: XZ проти XYZ . Перший, здається, використовує видатний бульвар Севастополя, хоча він трохи не в дорозі.
Редагувати : Здається, жоден із цих прикладів більше не працює, але обидва вони робили під час первинної публікації.