Sei sulla pagina 1di 4

Universidad de Córdoba. Banda, Ana y Suarez, Sindy. Algoritmo de Dijkstra.

El camino más corto: Algoritmo de Dijkstra


Banda, Ana y Suarez, Sindy
Adaluzd_13@hotmail.com
Sinditoto13@hotmail.com
Universidad de Córdoba

II. EL CAMINO MÁS CORTO (ALGORITMO DE
Resumen—En el presente artículo se hace una DIJKSTRA)
recopilación de información para presenta de una forma clara
y concisa de cómo trabaja el algoritmo de Dijkstra para A. El camino más corto
obtener un camino más corto, además se dan a conocer las
Cuando se trabaja con grafos dirigidos
aplicación sobre las cuales el algoritmo se aplica en la vida
real. etiquetados o ponderados con pesos no negativos, es
muy frecuente buscar la ruta más corta entre dos
Índice de Términos—ponderado, peso en la arista, vértices existentes; es decir, encontrar un camino
camino más corto, mínimos, vertice. que permita desplazarse desde un vértice origen a
un vértice destino recorriendo el camino con costes
mínimos [1].
I.INTRODUCCIÓN Los algoritmos más usados para hallar el camino
Existen numerosos problemas que se pueden más corto son: Dijkstra, Floyd y Warshall.
formular en términos de grafos. De los cuales se Estos tres algoritmos ya mencionados utilizan una
pueden planificar proyectos para buscar rutas más matriz de adyacencia ponderada: que es la misma
cortas entre dos puntos geográficos, calcular el matriz de adyacencia para representar grafos, pero
trayecto más rápido en una ruta de transporte, con la diferencia que en lugar de poner el número 1,
determinar el flujo máximo que puede tener una se pondrá el peso de la arista
fuente A hasta un punto B de destino. B. Algoritmo de Dijkstra
Para la resolución de estos problemas se necesita
El algoritmo de Dijkstra, también llamado
examinar todos vértices y aristas del grafo que está
algoritmo de caminos mínimos es un algoritmo para
representando el problema; sin embargo, existen
la determinación del camino más corto dado un
ocasiones donde la estructura del problema es tal
vértice origen al resto de vértices en un grafo con
que solo se necesita llegar a algunos vértices o las
pesos en cada arista; es de tipo “greedy” porque en
aristas.
cada iteración elige la mejor opción [2]. Este
Los algoritmos trabajan de tal forma que se puede
algoritmo fue diseñado por el holandés Edsger
establecer un orden en sus recorridos, como: visitar
Wybe Dijkstra en 1959.
el vértice próximo o la arista más corta, y así
El fundamento sobre el que se asienta este
sucesivamente. Existen otros tipos de algoritmos
algoritmo es el principio de optimización: si el
para resolución de problemas que no requieren
camino más corto entre los vértices u y v pasa por el
ningún tipo de orden para realizar su recorrido.
vértice w, entonces la parte del camino que va de w
Para el problema de la ruta corta tenemos varios
a v debe ser el camino más corto entre todos los
algoritmos como Dijkstra, Floyd y Warshall, pero
caminos que van de w a v (Fig. 1). De esta manera,
en esta oportunidad se tomara el algoritmo de
se van construyendo sucesivamente los caminos de
Dijkstra, para observar su forma de trabajo y cómo
coste mínimo desde un vértice inicial hasta cada
encuentra la ruta más corta.
uno de los vértices del grafo, y se utilizan los
caminos conseguidos como parte de los nuevos
caminos. Este algoritmo resuelves los problemas en
pasos sucesivos, trabajando de tal forma que se
 puede establecer un orden en sus recorridos y así
Universidad de Córdoba. Banda, Ana y Suarez, Sindy. Algoritmo de Dijkstra. 2

encontrar la solución más óptima [2], [3] y [4]. el funcionamiento del algoritmo, se tomaran en
cuenta los siguientes pasos y se ira ilustrando con el
siguiente grafo (fig. 2).

Figura 1

Entre las condiciones más importantes que se


deben tener en cuenta para aplicar este algoritmo
son:
- Que el grafo sea dirigido, por supuesto Figura 2
ponderado.
- Que las aristas deben tener un peso y su 1. Pasos a realizar con el algoritmo
valor no puede ser negativo.
1. Seleccionar un vértice origen, (en este caso
C. Complejidad se tomara el vértice 0).
Considerando el primer caso en el cual 2. Marcar un vértice como punto de partida,
mantenemos la cola de prioridad Q = V − S como (en este caso el vértice 0).
un arreglo lineal. Para cada implementación, cada 3. Seleccionar un vértice como destino (se
operación EXTRAER-MIN tomaría un tiempo del tomara el vértice 2)
orden O (V) y son | V | operaciones, para un total 4. Determinar los caminos cercanos al vértice
del tiempo de EXTRAER-MIN de O ( ). Cada origen (2, 3,4).
vertice v ∈ V es insertado en el conjunto S 5. Para seleccionar un nuevo vértice como
exactamente una vez, así cada arista en la lista de referencia se toma el camino con el mínimo valor,
adyacencia Adj[u] es examinada por el ciclo PARA (en este caso tomamos el vértice 3, ya que el peso
en las líneas 4-8 exactamente una vez durante el de la arista es el menor (2)).
curso del algoritmo. Luego el total del número de 6. Se vuelven a determinar caminos cercanos
aristas en toda la lista de adyacencia es | E |, existe para este vértices (4 y 5), y así sucesivamente en
un total de | E |iteraciones del ciclo PARA y en cada cada vértice que se tome como referencia hasta
iteración se toma un tiempo O(1). El tiempo de llegar al destino. Cada vez que se toma un vértice
ejecución del algoritmo completo es O(V 2 + E) = como punto de origen se va sumando en cada
O(V 2 ). camino el peso de la arista.
7. El camino más óptimo corresponde a la
Teorema suma de los pesos mínimos de las aristas que
El Algoritmo de Dijkstra realiza O(n2) forman el camino para llegar al vértice final
operaciones (sumas y comparaciones) para (2+1+1+2+0=6).
determinar la longitud del camino más corto entre
dos vértices de un grafo ponderado simple, conexo 2. Matriz de adyacencia del grafo.
y no dirigido con n vértices [6]. La matriz de adyacencia o también llamada
matriz de distancias, se fundamenta en
estudiar las propiedades de la estructura de
D. ¿Cómo funciona el algoritmo de Dijkstra? relaciones de un grafo. Por medio de la
Para realizar una mejor explicación de cómo es misma, se obtiene información acerca de la
Universidad de Córdoba. Banda, Ana y Suarez, Sindy. Algoritmo de Dijkstra. 3

distancia que separa a dos vértices dado en este caso por la diferencia de
cualesquiera del grafo. Se trata de una matriz intensidad. Esta técnica presenta un gran
cuadrada de orden n (vértices del grafo), ahorro de costes frente a las herramientas
cuyos elementos, ij representan las distancias existentes actualmente en el mercado que
entre los vértices xi y xj [11]. usan métodos de vectorización
automáticos.
0 1 2 3 4 5 - Caminos mínimos en Grafos usando XML
y parsers de Java [9]: El concepto de
0 - - 7 2 4 -
camino es una secuencia de operadores y
1 - - 0 - 4 2 conectores: un operador será cualquier
unidad de proceso de información
2 7 0 - - 1 -
realizando un algoritmo específico (i.e.
3 2 - - - 1 3 conversores digitales, de formato etc.) y
un conector será cualquier mecanismo a
4 4 4 1 1 - 1
través del cual los operadores se
5 - 2 - 3 1 - comunican entre sí. Dado un conjunto de
descripciones de operadores y conectores,
Tabla I: Representación de la matriz de unos parámetros de optimización (que el
adyacencia- distancia de un grafo dirigido. usuario queda encargado de introducir) y
una serie de requisitos, el sistema se
E. Aplicaciones del algoritmo encargará de encontrar un camino óptimo
Las aplicaciones del algoritmo de Dijkstra son de una entrada establecida hasta un tipo de
muy diversas y de gran importancia en distintas salida especificada aplicando
áreas del conocimiento. Vamos a presentar algunas transformaciones específicas en el menor
de ellas. tiempo posible.
- Encaminamiento de paquetes por los - Reconocimiento de lenguaje hablado [10]:
routers [7]: Consideremos una red Un problema que se presenta es el
telefónica. En un momento dado, un distinguir entre palabras que suenan de
mensaje puede tardar una cierta cantidad manera similar. Se puede construir un
de tiempo en atravesar cada línea (debido grafo cuyos vértices correspondan a
a efectos de congestión, retrasos en las palabras posibles y cuyos arcos unan
conexiones etc.). En este caso tenemos palabras que puedan ir colocadas una al
una red con costes en los arcos y dos lado de otra. Si el peso del arco
nodos especiales: el nodo de comienzo y corresponde a la probabilidad de que estén
el de finalización, el objetivo aquí es así colocadas, el camino más corto en el
encontrar un camino entre estos dos nodos grafo será la mejor interpretación de la
cuyo coste total sea el mínimo. frase.
- Aplicaciones para Sistemas de - Otras aplicaciones: Enrutamiento de
información geográficos: extracción de aviones y tráfico aéreo. Tratamiento de
características curvilíneas de imágenes imágenes médicas. Problemas de
usando técnicas de minimización del optimización de una función de coste para
camino [8]: La imagen se representa como moverse entre diversas posiciones.
una matriz de puntos, cada uno con una
especial intensidad. Cada nodo se
III. PSEUDOCÓDIGO
corresponde con un punto (pixel) de la
imagen y tiene hasta ocho nodos El algoritmo de Dijkstra mantiene un conjunto de vértices
cuyo camino de pesos mínimos final desde el inicio (fuente) s
adyacentes. El peso de los arcos viene
Universidad de Córdoba. Banda, Ana y Suarez, Sindy. Algoritmo de Dijkstra. 4

se ha determinado. Esto es, para todos los vértices v ∈ S, IV. CONCLUSIONES


donde d[v] = δ(s, v). El algoritmo selecciona repetidamente el
vértice u ∈ V −S con la menor estimación de camino mínimo,
inserta u en S y relaja todas las aristas salientes de u. En la Haciendo uso del algoritmo de Dijkstra se puede
siguiente implementación, mantendremos la cola de disminuir considerablemente el tiempo de respuesta
prioridades Q que contiene todos los vértices en V − S, sobre grafos, garantizando así la eficiencia.
ingresado por sus valores d. La implementación asume que el Además, con la reducción, se garantiza
grafo G es representado por una lista de adyacencia.
escalabilidad respecto al tamaño del grafo sobre el
que se realiza el análisis.

La representación de las distancias en un matriz de


adyacencia o también llamada matriz de distancia
hae…..

REFERENCIAS
[1] Serna, L., Raquel M., and Miguel R. “Programación y
estructuras de datos avanzadas”. Editorial Universitaria
Ramón Areces, 2011.
El algoritmo de Dijkstra relaja todas las aristas. En la línea 1,
[2] J. M. Alonso, “flujo en redes y gestion de proyectos,”
se realiza la inicialización respectiva de d y los valores π, en la
Netbiblo, Mar 1, 2008 - 224 pag.
línea 2 inicializa el conjunto S como el conjunto vacío. En la
[3] Torrubia, G. Sánchez, and V. Lozano Terrazas.
línea 3 luego de inicializar la cola de prioridad Q que contiene
"Algoritmo de Dijkstra. Un tutorial interactivo." VII
todos los vértices en V − S = V − ∅ = V. En cada instante que
Jornadas de Enseñanza Universitaria de la Informática
se produzca el ciclo MIENTRAS desde la línea 4-8 un vértice
(JENUI 2001) (2012).
u es extraído de Q = V −S e insertado en el conjunto S (Al
[4] Pedraza, L., Danilo López, and Octavio Salcedo.
inicio del ciclo u = s). El vértice u, por lo tanto, tiene la más
"Enrutamiento basado en el algoritmo de Dijkstra para
pequeña estimación de camino mínimo de cualquier vértice en
una red de radio cognitiva." (2012).
V − S. Entonces, en las líneas 7-8 se relaja cada arista (u, v)
[5] Salas, Alvaro. "Acerca del Algoritmo de Dijkstra." arXiv
que salen de u, así actualizando la estimación d[v] y el
preprint arXiv:0810.0075 (2008).
predecesor π[v] si el camino mínimo hacia v puede ser
[6] Montón, M., Castells, D., Portero, A., & Carrabina, J.
mejorado al ir atravesó de u. Observemos que los vértices
Implementación SystemC sintetizable de un procesador
nunca son insertados en Q después de la línea 3 y que cada
asociativo para el algoritmo de Dijkstra. Dept.
vértice es extraído de Q e insertado en S exactamente una vez.
Microelectrònica i Sistemas Electrònics, Universitat
Así que el ciclo MIENTRAS de las líneas 4-8 interactúa
Autònoma de Barcelona (2005).
exactamente | V | veces.
[7] Michael A. Trickk: Shortest Path
Con el siguiente teorema y su respectivo corolario
http://mat.gsia.cmu.edu/classes/networks/node4.html
mostraremos que el algoritmo de Dijkstra calcula caminos
Carnegie Mellon University. Computer Science
mínimos. La clave está en mostrar que cada vértice u es
Department. 1998.
insertado en el conjunto
[8] M.R. Dobie y P. H. Lewis: Extracting curvilinear Features
S y tener d[u] = δ(s, u)
from Remotely Sensed Images Using Minimum Cost Path
Techniques.http://www.mmrg.ecs.soton.ac.uk/publications
/archive/dobie1994/html/Universidad de Leeds. U.K.
[9] LindaMay Patterson: Using the IBM XMLParser Find
and replace elements in an XML Document
http://www.as400.ibm.com./developer/java/xml/xml_pars
er2.html IBMXML Parser 2000.
[10] Steven S. Skiena: Shortest Path
http://www.cs.sunysb.edu/~algorith/files/shortestpath.sht
ml.Stone Brook (State University of New York).
computer Science Department,2001.
[11] Morillas, A. "Aplicación de la Teoría de Grafos al estudio
de los cambios en las relaciones intersectoriales de la
economía andaluza en la década de los 80." Instituto de
Estadística de Andalucía, Junta de Andalucía (1995).

Potrebbero piacerti anche