
Origen del Algoritmo de Dijkstra
Edsger Wybe Dijkstra naci贸 en Rotterdam, Holanda) en 1930. Sus padres eran ambos intelectuales y 茅l recibi贸 una excelente educaci贸n. En 1942, cuando Dijkstra ten铆a 12 a帽os, entr贸 en Gymnasium Erasminium, una escuela para estudiantes especialmente brillantes. Se especializ贸 en el 谩mbito de la inform谩tica generando grandes aportes como lo son la notaci贸n polaca inversa, el algoritmo shunting yard; fue uno de los principales dise帽adores del lenguaje de programaci贸n ALGOL. Fue en 1956, Dijkstra anunci贸 su algoritmo, algoritmo de caminos m铆nimos, y desde entonces es utilizado bajo su apellido, "el algoritmo de dijkstra".
Definici贸n de Grafos
Un grafo es un conjunto de puntos (v茅rtices) en el espacio, que est谩n conectados por un conjunto de l铆neas (aristas). En notaci贸n matem谩tica se describe as铆: un Grafo G es un par ordenado G=(V,E) donde, V es un conjunto de v茅rtices o nodos y E es un conjunto de aristas o arcos que relacionan los v茅rtices entre s铆. Normalmente, V es una cantidad finita para poder ejercer operaciones con los datos obtenidos del Grafo.
Una de las propiedades de los grafos es la ponderaci贸n, la cu谩l es la herramienta 煤til para el desarrollo del algoritmo dijkstra que se explicar谩 m谩s adelante. Consiste en asociar a cada arista un valor, el que representa costo, peso, longitud; dependiendo de la funci贸n que cumpla el Grafo. Es a menudo utilizado para problemas de optimizaci贸n. El peso de cada arista se denota por ω ({vi ; vj}) = ωij y se define como peso de una trayectoria a la suma de los pesos de las aristas que la componen.
En un grafo pesado, se llama matriz de pesos del grafo a la matriz Ω = ωijnxn, donde se coloca ωij = ∞ si no hay arista desde el v茅rtice vi al v茅rtice vj y ωii = o, ceros en la diagonal.
Algoritmo Dijkstra
El algoritmo Dijkstra o tambi茅n llamado algoritmo de caminos m铆nimos, es un algoritmo eficiente para la determinaci贸n del camino m谩s corto dado un v茅rtice origen al resto de v茅rtices en un grafo con pesos en cada arista. 脡ste se encarga de formar un camino a partir de otro ya existente.
El algoritmo Dijkstra trabaja por etapas bajo el principio de la optimalidad, tomando en cada etapa la mejor soluci贸n sin considerar consecuencias futuras; donde el 贸ptimo encontrado puede modificarse posteriormente si surge una soluci贸n mejor. El algoritmo devuelve en realidad el peso m铆nimo, no el camino m铆nimo propiamente dicho.

Las aplicaciones del algoritmo Dijkstra son muy diversas y de gran importancia en distintas 谩reas del conocimiento. Se presentan a continuaci贸n algunas de ellas.
- Encaminamiento de paquetes por los routers: se considera una red telef贸nica. En un momento dado, un mensaje puede tardar una cierta cantidad de tiempo en atravesar cada l铆nea (debido a efectos de congesti贸n, retrasos en las conexiones etc.). En este caso se tiene una red con costes en los arcos y dos nodos especiales: el nodo de comienzo y el de finalizaci贸n, el objetivo aqu铆 es encontrar un camino entre estos dos nodos cuyo coste total sea el m铆nimo.
- Aplicaciones para Sistemas de informaci贸n geogr谩ficos: extracci贸n de caracter铆sticas curvil铆neas de im谩genes usando t茅cnicas de minimizaci贸n del camino: La imagen se representa como una matriz de puntos, cada uno con una especial intensidad. Cada nodo se corresponde con un punto (pixel) de la imagen y tiene hasta ocho nodos adyacentes. El peso de los arcos viene dado en este caso por la diferencia de intensidad. Esta t茅cnica presenta un gran ahorro de costes frente a las herramientas existentes actualmente en el mercado que usan m茅todos de vectorizaci贸n autom谩ticos.
- Otras aplicaciones: enrutamiento de aviones y tr谩fico a茅reo. Tratamiento de im谩genes, m茅dicas. Problemas de optimizaci贸n de una funci贸n de coste para moverse entre diversas posiciones.

Aprender la teor铆a de grafos es importante, dado que con ella, se pueden resolver diversos problemas como por ejemplo: la s铆ntesis de circuitos secuenciales, contadores o sistemas de apertura. Se utiliza en diferentes 谩reas del saber como lo son dibujo computacional, sistemas, administraci贸n, matem谩tica, inform谩tica, electr贸nica, ciencias sociales y biolog铆a.
Los grafos son usados para modelar trayectos como el de una l铆nea de autob煤s a trav茅s de las calles de una ciudad, en el que podemos obtener caminos 贸ptimos para el trayecto aplicando diversos algoritmos como puede ser el algoritmo de Floyd. Los gps que utilizamos a diario desde nuestros smartphones o veh铆culos, realizan el c谩lculo de sus rutas basados en el algoritmo dijkstra, haciendo un estudio por medio de los grafos, para encontrar el camino mas corto a la ruta buscada. Actualmente, se est谩n agregando nuevas variables, como lo son nivel de tr谩fico, estado de la calle a transitar, clima, entre otros, para que el sistema gps, facilite una 贸ptima soluci贸n.
La teor铆a de grafos funciona dentro de las ciencias sociales, en especial para desarrollar un concepto no metaf贸rico de red social que sustituye los nodos por los actores sociales y verifica la posici贸n, centralidad e importancia de cada actor dentro de la red. Esta medida permite cuantificar y abstraer relaciones complejas, de manera que la estructura social puede representarse gr谩ficamente. Por ejemplo, una red social puede representar la estructura de poder dentro de una sociedad al identificar los v铆nculos (aristas), su direcci贸n e intensidad y da idea de la manera en que el poder se transmite y a qui茅nes.

Asimismo, se emplea en problemas de control de producci贸n, para proyectar redes de ordenadores, para dise帽ar m贸dulos electr贸nicos modernos y proyectar sistemas f铆sicos con par谩metros localizados (mec谩nicos, ac煤sticos y el茅ctricos). Se emplean los grafos para la soluci贸n de problemas de gen茅tica y problemas de automatizaci贸n de la proyecci贸n (SAPR). Apoyo matem谩tico de los sistemas modernos para el procesamiento de la informaci贸n.
Dentro de la programaci贸n android, se utiliza para resolver problemas asociados a los patrones de navegaci贸n comunes, a su vez, para el estudio de patrones de navegaciones basados en Fragmentos. El diagrama de una aplicaci贸n android est谩 representado por un grafo dirigido, en el cual, podemos establecer las relaciones entre la actividad principal y todas las que se desarrollan a partir de ella. En el art铆culo "Gu铆a de desarrolladores de Android para el Patr贸n de Navegaci贸n de Fragmentos" podemos observar como el autor Becze Szabolcs, hace uso de los grafos para representar las problem谩ticas asociadas a los patrones de navegaci贸n y c贸mo el desarrollo de las actividades por medio de fragmentos dan soluci贸n.
En otro orden de ideas, los grafos son utilizados dentro de el enrutamiento de un protocolo basado en vector de distancias, puesto que requiere que un router informe a sus vecinos de los cambios en la topolog铆a peri贸dicamente y en algunos casos cuando se detecta un cambio en la topolog铆a de la red. Para finalizar, en la administraci贸n de proyectos, los grafos se utilizan en t茅cnicas de revisi贸n y evaluaci贸n de programas (PERT) en las que se modelan los mismos y son optimizandos los tiempos para concretarlos.
No comments:
Post a Comment