¿Qué algoritmo usa el GPS de su automóvil? ¿Es el algoritmo de ruta más corta?

“El algoritmo de ruta más corta” no sería una respuesta, ya que hay más de un algoritmo de ruta más corta. Los más conocidos son el algoritmo de Dijkstra y Bellman-Ford; estos no serían lo suficientemente rápidos por sí solos y usarían demasiada memoria para el enrutamiento en tiempo real en un GPS. El algoritmo heurístico A * sería más apropiado y se ha utilizado en algunos servidores de enrutamiento.

Una heurística importante para el enrutamiento en grandes redes de autopistas (y otros tipos de redes) es que una ruta desde un lugar pequeño a otro lugar lejano tiende a seguir caminos pequeños a caminos principales, luego permanece en los caminos principales hasta que nuevamente caminos hacia el destino. Muchos enrutadores usan esta observación: buscan desde ambos puntos finales (usando una variante de A * o el algoritmo de Dijkstra) favoreciendo las transiciones a carreteras más grandes, hasta que se encuentran en algún punto intermedio. Las jerarquías de contracción es un enfoque que procesa previamente la estructura de datos del mapa para hacer que este enfoque funcione de manera muy eficiente, y aunque es poco probable que Google divulgue sus algoritmos públicamente, es muy probable que Google Maps use jerarquías de contracción o algo estrechamente relacionado.

Como las jerarquías de contracción son un desarrollo bastante reciente, es más probable que el GPS de su automóvil use alguna variante de A *, probablemente con algún uso de la observación sobre rutas que van de pequeño a grande.

Desde su GPS, debe tener un destino fijo. En lugar de calcular la ruta desde su nodo actual al destino cada vez que cambia el nodo actual, puede encontrar las rutas más cortas desde su destino a todos los nodos: esto es suficiente con el algoritmo de Dijkstra. A pesar del número generalmente mayor de iteraciones requeridas por el método Bellman-Ford sobre el método de Dijkstra, en la práctica, el método Bellman-Ford puede ser superior debido a la menor sobrecarga por iteración.

En cada nodo, mantenga prev = el nodo anterior a este en la ruta más corta a este nodo (desde su destino). Actualice esto mientras calcula las rutas más cortas. O puede usar una matriz anterior [] fuera de los nodos, básicamente cualquier método que esté usando para reconstruir la ruta ahora debería funcionar.
Al mover su automóvil, su ruta está dada por currentNode.prev -> currentNode.prev.prev ->….
Esto resolverá el retraso de actualización y mantendrá su camino óptimo, pero aún tendrá un ligero retraso al ingresar a su destino.

Por lo tanto, aún debe considerar estos enfoques, incluso si planea usar el
A *, y es derivados como Hierarchical A * y A * JPS.

Algunos otros algoritmos que puede considerar algoritmos de optimización de colonias de hormigas que le ayudan a proporcionar rutas óptimas.

Prueba esto….
http://blog.kdgregory.com/2011/1