¿Qué algoritmo usa Google para GMaps?

Google Maps es posiblemente una de las aplicaciones geoespaciales más famosas de la historia. De la noche a la mañana, transformó la forma en que navegamos y se convirtió en la corriente principal para usar un mapa digital para llegar del punto A al punto B.

Antes de que apareciera Google Maps, la mayoría de las personas todavía usaban mapas en papel para navegar y luego nos adaptamos rápidamente y comenzamos a usar mapas digitales. Los mapas de Google no fueron los primeros en tener estas características, pero ciertamente ayudaron a que la navegación fuera general.

Los mapas digitales tenían varias ventajas sobre el equivalente de impresión: diferentes niveles de zoom, la capacidad de agregar sus propios puntos de interés, etc. pero quizás la característica más atractiva era la capacidad de usar la computadora (o teléfono inteligente) para calcular la distancia más corta desde el punto A B sin necesidad de resolverlo usted mismo o preguntarle a alguien que ha vivido en el lugar lo suficiente como para saberlo por experiencia.

¿Cuán importante fue la navegación para el éxito de los mapas digitales? ¡Quizás mucho! Todos usamos mapas digitales hoy y la mayoría de las veces, es para la navegación.

El algoritmo simple que hizo posible la navegación

El trabajo del Dr. Dana Tomlin a principios de los 80 titulado “Álgebra de mapas” allanó el camino para que los SIG se convirtieran en una aplicación poderosa que es hoy. Del mismo modo, fue el trabajo de Edsger W. Dijkstra sobre el algoritmo de ruta más corta que finalmente recibió su nombre: el algoritmo de Dijkstra que hizo posible la navegación.

El núcleo de este algoritmo es lo que potencia la funcionalidad de navegación en Google Maps, Apple Maps, Here, OpenStreetMap y cualquier otro mapa digital que probablemente use. Sí, no es exactamente el mismo algoritmo que impulsa la aplicación de navegación hoy en día, pero la búsqueda A * y otros algoritmos son una extensión del algoritmo original de Dijkstra.

Estamos tan acostumbrados a la navegación usando mapas digitales que ya no pensamos en lo compleja que podría ser esta tarea, si no fuera por el algoritmo de Dijkstra que resolvió el problema del camino más corto de la manera más eficiente posible. El hecho de que el algoritmo se siga utilizando más de 50 años después de su publicación dice mucho sobre él.

Gracias a Edsger W. Dijkstra

Compran datos de GPS y aplican sus propias superposiciones personalizadas (como pines y reseñas), complementadas con fotos de sus autos para ver en la calle.

Un algoritmo es un cálculo matemático utilizado para determinar (cosas como) el rango para la búsqueda de Google aplicando niveles de importancia a más de 200 factores que Google considera importantes. Cosas como: número de visitantes, redes sociales, frecuencia de actualizaciones, etc.

Google no ha publicado ningún detalle sobre el algoritmo que están utilizando.

Sin embargo, reconozco que están usando una combinación de Dijkstra / A *, con ligeras modificaciones, y tal vez algún preprocesamiento del gráfico para acelerar las consultas.

El algoritmo de Dijkstra podría ser “malo” en el sentido de que intenta pasar por todos los estados posibles, mientras que A * generalmente tiene una heurística que calcula el camino más corto.

Sin embargo, podrías imaginar que no es tan simple y que hay muchas otras características que entran en juego.

Si desea ver algunas implementaciones de los algoritmos que acabo de mencionar (aunque hay muchas implementaciones en línea), podría repasar algunas cosas que escribí: robertbutacu / advanced-algoritms, robertbutacu / advanced-algoritms.