martes, 15 de marzo de 2016

¿Cómo sabe el GPS qué ruta recomendarnos


 El inexperto aparato recomienda uno u otro camino en función de la distancia, de las características de cada carretera, e incluso de las horas en que preveamos viajar: así, el sistema informático de enrutamiento puede mostrarnos una alternativa u otra. La determinación del camino mínimo desde un lugar de origen a uno de destino es un problema clásico en Informática, que cualquier estudiante universitario de esta disciplina debe saber resolver. 
El problema responde a lo que se llama un recorrido en un grafo que, en Informática, es un colección de puntos (ciudades o edificios o direcciones postales, por ejemplo) con líneas que los conectan (carreteras, calles, caminos). A cada línea se le asigna lo que se llama un "peso", que normalmente es la distancia, pero que puede ser otro factor (como el número de carriles o la velocidad máxima permitida) o una conjunción de factores (la distancia y el número de carriles y la velocidad máxima y la existencia de obras en algún trecho).
¿Cómo determina un sistema informático la ruta óptima de manera automática? 
El cálculo del camino óptimo es lo que se llama un problema de orden n2, es decir, que su tiempo de cálculo depende del número de puntos en el mapa elevado al cuadrado. Pero son tantos los puntos en el mapa (sólo España tiene más de 8.000 municipios, cada uno con sus calles, cruces, monumentos, edificios públicos…) que la aplicación del llamado algoritmo de Dijkstra se torna imposible.
Para resolver este tipo de problemas en un tiempo razonable se utilizan algoritmos que se llaman "voraces": un algoritmo voraz avanza progresivamente hacia la solución, en varios pasos, tomando en cada paso el trozo "más gordo" de la tarta o, en nuestro contexto, el elemento de la solución que abarata más, al menos parcialmente, el recorrido entre los dos puntos.
En el caso concreto de la determinación del camino mínimo en un mapa se utiliza habitualmente un algoritmo llamado A* ("A asterisco" o "A estrella"), que mezcla la heurística humana (es decir: cómo iríamos de Madrid a Ciudad Real si no tuviéramos GPS) con el rigor matemático y el pseudorigor voraz. En efecto, A* considera todos los lugares a los que podemos llegar directamente desde el lugar origen y calcula la distancia a cada uno: por ejemplo, para llegar de Madrid a Ciudad Real, calcula primero la distancia desde Madrid a sus lugares directamente adyacentes: Alcorcón (16 km), Las Rozas (19), Parla (25) o Alcalá de Henares (35,6); hecho esto, determina la distancia en línea recta desde cada uno de estos lugares intermedios hasta el lugar de destino: 150 km desde Alcorcón, 167 desde Las Rozas, 136 desde Parla, 172 desde Alcalá, y suma las dos distancias: 166 Madrid-Ciudad Real si vamos por Alcorcón; 183 por Las Rozas; 161 si pasamos por Parla; 197 desviándonos por Alcalá.
Así que A* se queda con Parla, descarta los demás municipios y repite el proceso: ¿A dónde podemos ir desde Parla? A Getafe, a Pinto, a Fuenlabrada, a Illescas. ¿Qué distancias hay desde Parla a estos sitios? ¿Y qué distancia en línea recta desde estos sitios a Ciudad Real, nuestro destino? Pues A* hace lo mismo: calcula, suma y selecciona; calcula, suma y selecciona; calcula de nuevo, suma otra vez y selecciona un nuevo subobjetivo; e itera así, hasta que consigue al fin recomendarnos las dos rutas.


No hay comentarios:

Publicar un comentario