Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Algoritmo de
D i j k s t r a
B U S I
N E S S
T E M P
L A T E
CONTENIDO Algoritmo de Dijkstra
01 02 03 04 05
Algoritmo de Teoría de Grafos Complejidad Pseudocódigo Analisis Dinámico
Dijkstra Estudios Previos
01
Algoritmo de
Dijkstra
Algoritmo de Dijkstra
El algoritmo de Dijkstra, nombrado así a su creador, es uno de los recursos algorítmicos mayormente consolidadas y de gran uso en varias industrias, este, basado en los
estudios de la teoría de grafos y, el estudio por parte de Edsger Dijkstra, que fue un científico informático holandés, dió a conocer al público su algoritmo en 1959. El
algoritmo da solución, o bien fija las bases para uno de los problemas que a la fecha sigue en crecimiento, entre mayores grupos relacionados entre ellos, encontrar la ruta
o el camino mínimo entre ellos,partiendo de origen o inicio y teniendo en cuenta las condiciones de entrada para su aplicación, las cuales son:
Este algoritmo encuentra aplicación en múltiples contextos como lo son: optimización en la construcción de redes (agua, telecomunicaciones, carretera, circuito, etc.) o la
organización y evaluación de rutas de tiempo de ejecución en el campo de la robótica.
Supongamos que tenemos un gráfico con n vértices marcados por enteros {1, 2,. , ∞} y que uno de estos nodos es el nodo inicial y otro nodo es el nodo de destino. El peso
en el arco que une los nodos j y k se indica con p (j, k). Al final del análisis, se deben adjuntar dos etiquetas a cada nodo, f (i) que indica el peso total de la ruta(la suma de
los pesos en las rutas de arco para llegar al nodo i - ésimo) y J (i) que indica el nodo que precede a i en la ruta mínima. También definimos dos conjuntos S y T que
contienen respectivamente los nodos a los que las etiquetas ya se han asignado y los que aún no se han escaneado.
La siguiente imágen es una
representación del grafo a resolver
mediate el algoritmo de Dijkstra:
En todos los problemas que se tenga la construcción de una red,
encontrar la ruta mínima ya sea la más corta, más rápida, más barata
Se representa como nodos todas las rutas posibles para llegar al trabajo.
Si, lo que se requiere es medir el tiempo, para obtener la ruta de menor tiempo, entonces la
unión entre cada nodo será el tiempo que toma recorrer desde el nodo 1 hasta el siguiente
nodo, con ello y el algoritmo se obtendrá como resultado el camino más rápido a recorrer
entonces considera que la unión o arcos entre los puntos por los
menor coste.
obteniendo con ello siempre la ruta más corta, más rápida, de menor
El primer libro sobre teoría de grafos fue escrito por Dénes Kőnig y publicado en
1936.
Si estudiamos la vida de Edsger Wybe Dijkstra nos daremos cuenta de varios puntos importantes
sobre su primer sociedad, su padre un importante químico en su país, su madre una matemática
dos puntos importantes aún no aplicados por él, pero estudiados por sobre “todo”, crece y se
desenvuelve en un nicho de estudio matemático fuerte, y que bajo su dirección, estudió
matemáticas y física, la parte que omito es donde estudia y se gradua de derecho para tomarse
“años sabáticos”, ya que nunca ejerció, al contrario regresa al mundo matemático de forma seria
llegando así a la Universidad de Texas en donde ocupó el Schlumberger Centennial Chair in
Computer Sciences, apartir de aquí es donde en sus aportaciones a la ciencia genera la solución
del problema del camino más corto, también conocido como el algoritmo de Dijkstra y de ahí a la
fecha su legado permanece y se acentúa en cada grupo que se requiera enlazar entre si formando
una red.
03
La complejidad
Complejidad
El algoritmo de Dijkstra es un algoritmo eficiente de
red.
04
Pseudocódigo
Paso 1. S ← {vinicial} //Inicialmente S contendrá el vértice //origen
2.1. D[v] ← C[vinicial, v] //Inicialmente el costo del //camino mínimo de vinicial a v es lo contenido en //la matriz de costos
2.2. P[v] ← vinicial //Inicialmente, el //predecesor de v en el camino mínimo construido //hasta el momento es vinicial
Paso 3. Mientras (V – S ≠ 0) hacer //Mientras existan vértices para //los cuales no se ha determinado el //camino mínimo
3.2. S ← S ∪ {w} //Se agrega w al conjunto S, pues ya se //tiene el camino mínimo hacia w
3.3.1. D[v] ← min(D[v],D[w]+C[w,v]) //Se escoge, entre //el camino mínimo hacia v que se tiene //hasta el momento, y el camino hacia v //pasando por
3.3.2. Si min(D[v],D[w]+C[w,v]) = D[w]+C[w,v] entonces P[v] ← w //Si se escoge ir por w entonces //el predecesor de v por el momento es w
Paso 4. Fin
05
Analisis
Dinámico
Suponiendo
La siguiente red
Se obtendrá la siguiente solución de caminos más cortos
Programación Dinámica para el Algoritmo de Dijkstra
Como el algoritmo es iterativo la forma dinámica de reducir la complejidad será guardando la
matriz solución para determinar sin iteraciones el camino más corto, es decir validar el número
total de grafos una sola ocasión y los resultados que serán los mismos en las siguientes
consultas solo sumar el costo desde el origen hacia el destino en cada nueva consulta siendo asi
costo de viajar desde A a F dando como resultado
G(A,B) + G(B,F) = 85 +165
F I N
B U S I
N E S S
T E M P
L A T E