Alejandro Crdenas Islas Bustamante A01182797 A01182797 ALEJANDRO CRDENAS LGEBRA LINEAL El algoritmo de Dijkstra Encontrar el camino ms corto
Qu es? El algoritmo de Dijkstra, nombrado en honor a su inventor Edgser Dijkstra, fue publicado en 1959. El propsito del algoritmo es encontrar la ruta ms corta desde una fuente nica a un destino nico. Es comnmente aplicado y representado en grafos, as como en matrices de adyacencia. A pesar de que su concepcin tiene ya ms de 50 aos, el algoritmo es ampliamente utilizado hoy en da. Con ayuda de investigaciones por parte de Fredman & Tarjan, el algoritmo tiene un orden O(M + N*log(N)) en el peor de los casos. Esto lo hace el algoritmo ms rpido que conocemos para calcular este tipo de rutas, adems, el algoritmo es fcilmente implementable en un lenguaje de programacin computacional posibilitando as el clculo de rutas muy complejas. Estos programas son utilizados muy frecuentemente en industrias de logstica y aviacin y en protocolo de rateo de internet que nuestros dispositivos electrnicos utilizan todos los das como por ejemplo OSPF (Open Shortest Path First) y IS-IS (Intermediate System to Intermediate System).
El motivo de este reporte es encontrar diferentes rutas existentes entre mi casa, el punto A, y el Tecnolgico de Monterrey Campus Toluca, punto K y de entre ellas, con ayuda de matrices, grafos, y el algoritmo previamente discutido, encontrar la ruta ptima entre esos dos puntos. El primer paso es crear un grafo. Con ayuda de Google Maps (http://maps.google.com), trac un grafo sobre imgenes satelitales que muestra diferentes rutas posibles entre dichos puntos.
De la imagen satelital podemos apreciar claramente el grafo sobre el que trabajaremos para calcular la ruta ptima. Tenemos un grafo con 11 vrtices, en este caso representando vueltas signicantes en las calles que puedo recorrer desde mi casa al Tecnolgico, y 13 conexiones, que representan las calles. Podemos, a travs de este grafo, calcular la matriz de adyacencia entre vrtices: A01182797 ALEJANDRO CRDENAS LGEBRA LINEAL La matriz de adyacencia que resulta del grafo es una matriz simtrica ya que las rutas que puedo tomar desde mi casa hacia el Tecnolgico de Monterrey son las mismas que puedo tomar desde el Tecnolgico de Monterrey hacia mi casa; todas las calles son de doble sentido. El siguiente paso es calcular el peso de cada conexin. Esto se realiz con ayuda de software satelital:
A01182797 ALEJANDRO CRDENAS LGEBRA LINEAL El peso de cada conexin est expresado en trminos de distancia, con metros como unidad. Ahora que hemos calculado la distancia entre cada vrtice, nuestro grafo esta completo y lo podemos expresar en una matriz de distancias:
Expresada esta matriz, podemos utilizar el algoritmo de Dijkstra para calcular la ruta ptima. Como mencion anteriormente, hay muchas implementaciones del algoritmo. Utilic una implementacin del algoritmo escrita en el lenguaje de programacin Ruby, el cdigo se encuentra en la pgina web pblica en <http://rosettacode.org/wiki/Dijkstra's_algorithm#Ruby>
A01182797 ALEJANDRO CRDENAS LGEBRA LINEAL Cdigo del algoritmo Dijkstra implementado en el lenguaje Ruby
Proporcionando nuestro grafo como entrada al programa, obtenemos la siguiente salida:
A01182797 ALEJANDRO CRDENAS LGEBRA LINEAL El algoritmo de Dijkstra nos dice que la distancia ms corta es de 8973 metros y la ruta ptima es la denotada en rojo: Este algoritmo calcula nicamente un peso entre vrtices, por lo tanto para el algoritmo que corrimos, la ruta ptima resulta ser aquella de la menor distancia, que no necesariamente es la mejor cuando consideramos factores externos como accidentes, trco, semforos, etctera, pero resulta ser la que tomo diario para llegar a la escuela.
Conclusin
Encontramos la ruta de menor distancia desde mi casa al Tecnolgico de Monterrey utilizando conceptos matemticos como grafos, matrices y el algoritmo de Dijkstra y con ayuda de tecnologa podemos utilizar estos conceptos en muchas aplicaciones. Esto nos da una buena perspectiva de la gran utilidad que tienen estos conceptos en usos de la vida cotidiana. Todo el mundo usa conceptos matemticos diariamente y conocerlos nos ayuda a entender un poco (o mucho) ms nuestro entorno y el mundo en general. A01182797 ALEJANDRO CRDENAS LGEBRA LINEAL