¿Cómo sugieren las direcciones los proveedores de mapas (como Google o Yahoo! Maps)?
Quiero decir, probablemente tienen datos del mundo real de alguna forma, que ciertamente incluyen distancias, pero también tal vez cosas como velocidades de conducción, presencia de aceras, horarios de trenes, etc. Pero supongamos que los datos están en un formato más simple, digamos un gráfico dirigido muy grande. con pesos de borde que reflejan distancias. Quiero poder calcular rápidamente las direcciones de un punto arbitrario a otro. A veces, estos puntos estarán muy juntos (dentro de una ciudad), mientras que a veces estarán muy separados (a campo traviesa).
Los algoritmos gráficos como el algoritmo de Dijkstra no funcionarán porque el gráfico es enorme. Afortunadamente, los algoritmos heurísticos como A * probablemente funcionarán. Sin embargo, nuestros datos están muy estructurados, ¿y quizás algún tipo de enfoque escalonado podría funcionar? (Por ejemplo, almacene direcciones precalculadas entre ciertos puntos "clave" muy separados, así como algunas direcciones locales. Luego, las direcciones para dos puntos lejanos incluirán direcciones locales a puntos clave, direcciones globales a otro punto clave y luego local direcciones de nuevo.)
¿Qué algoritmos se usan realmente en la práctica?
PD. Esta pregunta fue motivada por encontrar peculiaridades en las instrucciones de mapeo en línea. Contrariamente a la desigualdad del triángulo, a veces Google Maps piensa que XZ lleva más tiempo y es más lejos que usar un punto intermedio como en XYZ . ¿Pero quizás sus indicaciones para caminar también se optimicen para otro parámetro?
PPS Aquí hay otra violación de la desigualdad del triángulo que sugiere (para mí) que usan algún tipo de enfoque escalonado: XZ versus XYZ . El primero parece usar el prominente Boulevard de Sebastopol, aunque está un poco alejado.
Editar : Ninguno de estos ejemplos parece funcionar más, pero ambos lo hicieron en el momento de la publicación original.