0% encontró este documento útil (0 votos)
92 vistas17 páginas

Metodo de Camino Mas Corto

El método de camino más corto es fundamental en la teoría de grafos para encontrar la ruta más eficiente entre nodos, con aplicaciones prácticas en navegación, logística y optimización de redes. Existen varios algoritmos para resolver este problema, como Dijkstra y Floyd-Warshall, cada uno adecuado para diferentes tipos de grafos y necesidades. Estos métodos ayudan a optimizar decisiones en diversas industrias, desde la conducción hasta la investigación operativa.

Cargado por

elizatl585
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
92 vistas17 páginas

Metodo de Camino Mas Corto

El método de camino más corto es fundamental en la teoría de grafos para encontrar la ruta más eficiente entre nodos, con aplicaciones prácticas en navegación, logística y optimización de redes. Existen varios algoritmos para resolver este problema, como Dijkstra y Floyd-Warshall, cada uno adecuado para diferentes tipos de grafos y necesidades. Estos métodos ayudan a optimizar decisiones en diversas industrias, desde la conducción hasta la investigación operativa.

Cargado por

elizatl585
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 17

Introducción

El método de camino más corto es una de las técnicas más esenciales en la teoría
de grafos, una rama de las matemáticas y la informática que estudia las relaciones
entre diferentes elementos o nodos a través de aristas o conexiones. Este método
se utiliza para encontrar la ruta más eficiente entre dos puntos en un grafo, donde
los nodos pueden representar lugares, elementos, o conceptos, y las aristas
pueden representar costos, distancias o tiempos de viaje. La capacidad de
identificar la ruta más corta no solo es valiosa en contextos teóricos, sino que tiene
aplicaciones prácticas en un amplio espectro de industrias y campos de estudio.

La relevancia del método de camino más corto se manifiesta de manera clara en


la vida cotidiana. Por ejemplo, en la navegación GPS, se emplean algoritmos que
calculan la ruta más rápida para llegar a un destino, lo que ahorra tiempo y
recursos a los usuarios. En el ámbito de la logística, las empresas utilizan estos
algoritmos para optimizar las rutas de entrega, minimizando costos y mejorando la
eficiencia operativa. Además, en informática, la búsqueda de caminos más cortos
es crucial para la optimización de redes, donde la conectividad y la eficiencia de la
transmisión de datos son prioritarias.

Entre los algoritmos más conocidos para resolver el problema del camino más
corto se encuentran el algoritmo de Dijkstra, que es particularmente efectivo en
grafos ponderados, y el algoritmo de Floyd-Warshall, que permite calcular caminos
más cortos entre todos los pares de nodos en un grafo. La elección del algoritmo
adecuado depende de las características específicas del problema a resolver,
como el tamaño del grafo, la naturaleza de los costos asociados a las aristas, y la
necesidad de encontrar rutas entre múltiples nodos. En este contexto, es
fundamental comprender no solo la teoría detrás de estos métodos, sino también
su implementación práctica y las implicaciones que tienen en la toma de
decisiones en el mundo real.
Método de la ruta más corta

El problema del camino más corto puede ser definido para grafos no dirigidos o
dirigidos. La siguiente es una definición para grafos no dirigidos, en el caso de
grafos dirigidos la definición de camino requiere que los vértices adyacentes estén
conectados por una apropiada arista dirigida.

Dos vértices son adyacentes cuando poseen una arista común. Un camino en un
grafo no dirigido es una secuencia de vértices P = (v1,v2,…,vn) ∈V×V×…×V tal
que todo vértice vi es adyacente con el vértice vi + 1. Un camino P se dice que es
de longitud n – 1 si va desde v1hasta vn.

Sea ei , j la arista incidente con los vértices vi y v . Dada una función de variable
real ponderada f: E → R y un grafo no dirigido G , el camino más corto desde v
hasta v ′es el camino P =(v1,v2,…,vn) , donde . v1= v y vn =v ′ sobre todos los
posibles n que minimiza la suma ∑i = 1n − 1f (ei , i + 1) . Cuando cada arista en
el grafo tiene un peso unitario o f : E →{ 1 }, hallar el camino más corto es
equivalente a encontrar el camino con menor número de aristas.

El problema es también conocido como el problema de los caminos más cortos


entre dos nodos, para diferenciarlo de las siguientes generalizaciones:

 El problema de los caminos más cortos desde un origen, en el cual


tenemos que encontrar los caminos más cortos de un vértice origen v a
todos los demás vértices del grafo.
 El problema de los caminos más cortos con un destino, en el cual tenemos
que encontrar los caminos más cortos desde todos los vértices del grafo a
un único vértice destino, esto puede ser reducido al problema anterior
invirtiendo el orden.
 El problema de los caminos más cortos entre todos los pares de vértices, el
cual tenemos que encontrar los caminos más cortos entre cada par de
vértices (v, v') en el grafo.

La distancia geodésica o simplemente distancia entre dos vértices es la longitud


del camino más corto o geodésica entre ellos. La distancia entre dos vértices i y j
se puede denotar como d (i , j ) en tal caso, note que d (i , j) = d (i , j ) Si dos
vértices no son accesibles a través de un camino, entonces la distancia entre ellos
es infinita.

Los algoritmos más importantes para resolver este problema son:

 Algoritmo de Dijkstra: resuelve el problema de los caminos más cortos


desde un único vértice origen hasta todos los otros vértices del grafo.
 Algoritmo de Bellman – Ford: resuelve el problema de los caminos más
cortos desde un origen si la ponderación de las aristas es negativa.
 Algoritmo de Búsqueda A*: resuelve el problema de los caminos más cortos
entre un par de vértices usando la heurística para intentar agilizar la
búsqueda.
 Algoritmo de Floyd – Warshall: resuelve el problema de los caminos más
cortos entre todos los vértices.
 Algoritmo de Johnson: resuelve el problema de los caminos más cortos
entre todos los vértices y puede ser más rápido que el de Floyd-Warshall en
grafos de baja densidad.
 Algoritmo de Viterbi: resuelve el problema del camino estocástico más corto
con un peso probabilístico adicional en cada vértice.

Los algoritmos de los caminos más cortos se aplican para encontrar direcciones
de forma automática entre lugares físicos, como las rutas de conducción en sitios
de mapas web como MapQuest o Google Maps. Para estas aplicaciones están
disponibles rápidos algoritmos especializados.9

Si un algoritmo representa una máquina abstracta no determinista como un grafo,


donde los vértices describen estados, y las aristas posibles transiciones, el
algoritmo del camino más cortos puede ser usado para encontrar una secuencia
óptima de decisiones para llegar a un cierto estado final o para establecer límites
más bajos en el tiempo necesario para alcanzar un estado dado. Por ejemplo, si
los vértices representan los estados de un puzle como el Cubo de Rubik y cada
arista dirigida corresponde a un simple movimiento o giro, los algoritmos del
camino más corto se pueden usar para encontrar la solución que utiliza el menor
número posible de movimientos.

En el argot de las telecomunicaciones, a este algoritmo es también conocido como


el problema del mínimo retraso, y con frecuencia va ligado con el problema del
camino más ancho. Por ejemplo, el algoritmo podría buscar el camino más corto
entre los más anchos, o el camino más ancho entre los más cortos.

Una aplicación más coloquial es la teoría de los "Seis grados de separación", a


partir de la cual se intenta encontrar el camino más corto entre dos personas
cualesquiera.

Otras aplicaciones incluyen la investigación de operaciones, instalaciones y


facilidad de diseño, robótica, transporte y el diseño VLSI

Los problemas conocidos como problemas del camino mínimo o camino más
corto, tratan como su nombre indica de hallar la ruta mínima o más corta entre dos
puntos. Este mínimo puede ser la distancia entre los puntos origen y destino o
bien el tiempo transcurrido para trasladarse desde un punto a otro. Se aplica
mucho para problemas de redes de comunicaciones.

Este tipo de problemas pueden ser resueltos por el método del Simplex, sin
embargo existen otros métodos más eficientes como por ejemplo el algoritmo de
Dijkstra o el de Bellman-Ford.

Este algoritmo calcula el camino mínimo de un nodo a a otro nodo z en particular,


a la vez que calcula los caminos mínimos desde el nodo inicial a dado hasta cada
uno de los otros nodos del grafo.

Consiste en encontrar la ruta más corta entre dos nodos dados de un grafo dirigido
y valuado (con capacidades). Veremos dos algoritmos, por un lado el algoritmo de
Dijkstra, que encuentra el camino más corto entre el nodo origen y cada uno de los
otros nodos de la red, y por otro lado el algoritmo de Floyd, que encuentra el
camino más corto entre cualquier par de nodos de la red.

Ejemplo
Algoritmo de DIJKSTRA

tendremos a lo largo de todo el proceso dos conjuntos y dos vectores:

 Conjunto C : Conjunto de vértices candidatos. Inicialmente contiene todos


los nodos menos el nodo origen.
 Conjunto S : Conjunto de vértices seleccionados, es decir, aquellos para los
que ya conocemos su camino mínimo desde el nodo origen. Inicialmente
contiene el nodo origen.
 Vector D : Almacenará la longitud del camino más corto desde el origen a
cada nodo. Tendrá tantas posiciones como nodos tenga el grafo. El coste
de ir del nodo origen a sí mismo lo estimaremos como cero.
 Vector P : Almacenará el nodo predecesor a cada nodo en el camino más
corto desde el origen hasta él. Tendrá tantas posiciones como nodos tenga
el grafo. La posición del nodo predecesor al origen estableceremos que sea
cero para indicar que es el nodo origen.

Llamaremos al nodo origen o, y el coste de ir del nodo i al nodo j lo denotaremos


como COSTE i j.

Hay que seguir los siguientes pasos:

Seleccionamos el nodo que sea destino de la arista con menor valor que salga del
nodo o, llamémoslo u. Introducimos el nodo u en S y lo sacamos de C.
Almacenamos en la posición u del vector D el valor COSTEou y en la posición u
del vector P el valor del nodo predecesor, es decir, o.

Seleccionamos el siguiente nodo al que podamos llegar con menor coste, bien
directamente desde o, bien a través del otro nodo seleccionado u. Llamamos al
nuevo nodo seleccionado v. Introducimos el nodo v en S y lo sacamos de C.
Introducimos en la posición v del vector D el coste de llegar al nodo v, si es
directamente desde o será COSTEov, si es a través de u será D[u]+COSTEuv. Por
último, en la posición v del vector P introducimos el valor del nodo predecesor, ya
sea o o u.
Repetiremos este proceso hasta que todos los nodos hayan sido seleccionados,
es decir, hasta que el conjunto C esté vacío, o lo que es lo mismo, hasta que en el
conjunto S se encuentren todos los nodos del grafo. En ese momento en el vector
D tendremos almacenado el coste mínimo para llegar desde el nodo origen a
cualquier nodo del grafo, y podremos obtener el camino más corto mediante el
vector P.

Aplicar el algoritmo de Dijkstra sobre el siguiente grafo siendo el nodo origen el 1:


Algoritmo DE FLOYD

El algoritmo de Floyd es más general que el de Dijkstra, ya que determina la ruta


más corta entre dos nodos cualquiera de la red.

El algoritmo representa una red de n nodos como una matriz cuadrada de orden n,
la llamaremos matriz C. De esta forma, el valor Cij representa el coste de ir desde
el nodo i al nodo j, inicialmente en caso de no existir un arco entre ambos, el valor
Cij será infinito.

Definiremos otra matriz D, también cuadrada de orden n, cuyos elementos van a


ser los nodos predecesores en el camino hacia el nodo origen, es decir, el valor Dij
representará el nodo predecesor a j en el camino mínimo desde i hasta j.
Inicialmente se comienza con caminos de longitud 1, por lo que Dij = i.

Las diagonales de ambas matrices representan el coste y el nodo predecesor para


ir de un nodo a si mismo, por lo que no sirven para nada, estarán bloqueadas.

Los pasos a dar en la aplicación del algoritmo de Floyd son los siguientes:

Formar las matrices iniciales C y D.

Se toma k=1.

Se selecciona la fila y la columna k de la matriz C y entonces, para i y j, con i≠k,


j≠k e i≠j, hacemos:

Si (Cik + Ckj) < Cij → Dij = Dkj y Cij = Cik + Ckj

En caso contrario, dejamos las matrices como están.

Si k ≤ n, aumentamos k en una unidad y repetimos el paso anterior, en caso


contrario paramos las iteraciones.

La matriz final C contiene los costes óptimos para ir de un vértice a otro, mientras
que la matriz D contiene los penúltimos vértices de los caminos óptimos que unen
dos vértices, lo cual permite reconstruir cualquier camino óptimo para ir de un
vértice a otro.
Aplicar el algoritmo de Floyd sobre el siguiente grafo para obtener las rutas más
cortas entre cada dos nodos. El arco (3, 5) es direccional, de manera que no está
permitido ningún tráfico del nodo 5 al nodo 3 . Todos los demás arcos permiten el
tráfico en ambas direcciones.

Tomamos i=2 (i ≠k):


j=3 (j≠k, j≠i): C[2,1]+C[1,3] = 3+10 = 13 < C[2,3] = ∞, por tanto hacemos:

C[2,3] = 13 y D[2,3] = 1.

j=4 (j≠k, j≠i): C[2,1]+C[1,4] = 3+∞ = ∞, no hay que cambiar nada, no podemos
llegar de 2 a 4 a través de 1.

j=5 (j≠k, j≠i): C[2,1]+C[1,5] = 3+∞ = ∞, no hay que cambiar nada, no podemos
llegar de 2 a 5 a través de 1.

Tomamos i=3 (i ≠k):

j=2 (j≠k, j≠i): C[3,1]+C[1,2] = 10+3 = 13 < C[3,2] = ∞, por tanto hacemos:

C[3,2] = 13 y D[3,2] = 1.

j=4 (j≠k, j≠i): C[3,1]+C[1,4] = 10+∞ = ∞, no hay que cambiar nada, no podemos
llegar de 3 a 4 a través de 1.

j=5 (j≠k, j≠i): C[3,1]+C[1,5] = 10+∞ = ∞, no hay que cambiar nada, no podemos
llegar de 3 a 5 a través de 1.

Tomamos i=4 (i ≠k):

j=2 (j≠k, j≠i): C[4,1]+C[1,2] = ∞+3 = ∞, no hay que cambiar nada, no podemos
llegar de 4 a 2 a través de 1.

j=3 (j≠k, j≠i): C[4,1]+C[1,3] = ∞+10 = ∞, no hay que cambiar nada, no podemos
llegar de 4 a 3 a través de 1.

j=5 (j≠k, j≠i): C[4,1]+C[1,5] = ∞+∞ = ∞, no hay que cambiar nada, no podemos
llegar de 4 a 5 a través de 1.

Tomamos i=5 (i ≠k), en este caso ocurre como en el paso anterior, como C[5,1]=∞,
entonces no habrá ningún cambio, no puede haber ningún camino desde 5 a
través de 1
Tomamos i=1:

j=3: C[1,2]+C[2,3] = 3+13 = 16 > C[1,3] = 10 , por tanto no hay que cambiar nada,
el camino es mayor que el existente.

j=4: C[1,2]+C[2,4] = 3+5 = 8 < C[1,4] = ∞, por tanto hacemos:

C[1,4] = 8 y D[1,4] = 2 .

j=5: C[1,2]+C[2,5] = 3+∞ = ∞, no hay que cambiar nada.

Tomamos i=3:

j=1: C[3,2]+C[2,1] = 13+3 = 16 > C[3,1] = 10, no hay que cambiar nada.

j=4: C[3,2]+C[2,4] = 13+5 = 18 > C[3,4] = 6, no hay que cambiar nada.

j=5: C[3,2]+C[2,5] = 13+∞ = ∞, no hay que cambiar nada.

Tomamos i=4:

j=1: C[4,2]+C[2,1] = 5+3 = 8 < C[4,1] = ∞, por tanto hacemos:

C[4,1] = 8 y D[4,1] = 2.

j=3: C[4,2]+C[2,3] = 5+13 = 18 > C[4,3] = 6, no hay que cambiar nada.

j=5: C[4,2]+C[2,5] = 5+∞ = ∞, no hay que cambiar nada.

Tomamos i=5, como C[5,2]=∞, entonces no habrá ningún cambio


Tomamos i=1:

j=2: C[1,3]+C[3,2] = 10+13 = 23 > C[1,2] = 3, no hay que cambiar nada.

j=4: C[1,3]+C[3,4] = 10+6 = 16 > C[1,4] = 8, no hay que cambiar nada.

j=5: C[1,3]+C[3,5] = 10+15 = 25 < C[1,5] = ∞, por tanto hacemos:

C[1,5] = 25 y D[1,5] = 3 .

Tomamos i=2:

j=1: C[2,3]+C[3,1] = 13+10 = 23 > C[2,1] = 3, no hay que cambiar nada.

j=4: C[2,3]+C[3,4] = 13+6 = 19 > C[2,4] = 5, no hay que cambiar nada.

j=5: C[2,3]+C[3,5] = 13+15 = 28 < C[2,5] = ∞, por tanto hacemos:

C[2,5] = 28 y D[2,5] = 3.

Tomamos i=4:

j=1: C[4,3]+C[3,1] = 6+10 = 16 > C[4,1] = 8, no hay que cambiar nada.

j=2: C[4,3]+C[3,2] = 6+13 = 19 > C[4,2] = 5, no hay que cambiar nada.

j=5: C[4,3]+C[3,5] = 6+15 = 21 > C[4,5] = 4, no hay que cambiar nada.

Tomamos i=5, como C[5,3]=∞, entonces no habrá ningún cambio


Tomamos i=1:

j=2: C[1,4]+C[4,2] = 8+5 = 13 > C[1,2] = 3, no hay que cambiar nada.

j=3: C[1,4]+C[4,3] = 8+6 = 14 > C[1,3] = 10, no hay que cambiar nada.

j=5: C[1,4]+C[4,5] = 8+4 = 12 < C[1,5] = 25, por tanto hacemos:

C[1,5] = 12 y D[1,5] = 4.

Tomamos i=2:

j=1: C[2,4]+C[4,1] = 5+8 = 13 > C[2,1] = 3, no hay que cambiar nada.

j=3: C[2,4]+C[4,3] = 5+6 = 11 < C[2,3] = 13, por tanto hacemos:

C[2,3] = 11 y D[2,3] = 4.

j=5: C[2,4]+C[4,5] = 5+4 = 9 < C[2,5] = 28, por tanto hacemos:

C[2,5] = 9 y D[2,5] = 4.

Tomamos i=3:

j=1: C[3,4]+C[4,1] = 6+8 = 14 > C[3,1] = 10, no hay que cambiar nada.

j=2: C[3,4]+C[4,2] = 6+5 = 11 < C[3,2] = 13, por tanto hacemos:

C[3,2] = 11 y D[3,2] = 4.

j=5: C[3,4]+C[4,5] = 6+4 = 10 < C[3,5] = 15, por tanto hacemos:


C[3,5] = 10 y D[3,5] = 4.

Tomamos i=5:

j=1: C[5,4]+C[4,1] = 4+8 = 12 < C[5,1] = ∞, por tanto hacemos:

C[5,1] = 12 y D[5,1] = 2 .

j=2: C[5,4]+C[4,2] = 4+5 = 9 < C[5,2] = ∞, por tanto hacemos:

C[5,2] = 9 y D[5,2] = 4.

j=3: C[5,4]+C[4,3] = 4+6 = 10 < C[5,3] = ∞, por tanto hacemos:

C[5,3] = 10 y D[5,3] = 4.

Tomamos i=1:

j=2: C[1,5]+C[5,2] = 12+9 = 21 > C[1,2] = 3, no hay que cambiar nada.

j=3: C[1,5]+C[5,3] = 12+10 = 22 > C[1,3] = 10, no hay que cambiar nada.

j=4: C[1,5]+C[5,4] = 12+4 = 16 > C[1,4] = 8, no hay que cambiar nada.

Tomamos i=2:

j=1: C[2,5]+C[5,1] = 9+12 = 21 > C[2,1] = 3, no hay que cambiar nada.

j=3: C[2,5]+C[5,3] = 9+10 = 19 > C[2,3] = 11, no hay que cambiar nada.

j=4: C[2,5]+C[5,4] = 9+4 = 13 > C[2,4] = 5, no hay que cambiar nada.


Tomamos i=3:

j=1: C[3,5]+C[5,1] = 10+12 = 22 > C[3,1] = 10, no hay que cambiar nada.

j=2: C[3,5]+C[5,2] = 10+9 = 19 > C[3,2] = 11, no hay que cambiar nada.

j=4: C[3,5]+C[5,4] = 10+4 = 14 > C[3,4] = 6, no hay que cambiar nada.

Tomamos i=4:

j=1: C[4,5]+C[5,1] = 4+12 = 16 > C[4,1] = 8 , no hay que cambiar nada.

j=2: C[4,5]+C[5,2] = 4+9 = 13 > C[4,2] = 5 , no hay que cambiar nada.

j=3: C[4,5]+C[5,3] = 4+10 = 14 > C[4,3] = 6, no hay que cambiar nada.

Las matrices finales C y D contienen toda la información necesaria para


determinar la ruta más corta entre dos nodos cualquiera de la red. Por ejemplo, la
distancia más corta del nodo 1 al nodo 5 es C[1,5] = 12.

Para determinar la ruta asociada del camino mínimo entre el nodo 1 y el nodo 5
haremos lo siguiente:

Consultamos D[1,5]=4, por tanto el nodo predecesor al 5 es el 4, es decir, 4 → 5.

Consultamos D[1,4]=2, por tanto el nodo predecesor al 4 es el 2, es decir, 2 → 4


→ 5.

Consultamos D[1,2]=1, por tanto el nodo predecesor al 2 es el 1, es decir, 1 → 2


→ 4 → 5, y así ya tenemos la ruta completa
Conclusión

En conclusión, el método de camino más corto representa una herramienta vital en


la resolución de problemas de optimización en grafos, contribuyendo
significativamente a diversas disciplinas y aplicaciones prácticas. La capacidad de
determinar la ruta más eficiente tiene un impacto directo en la eficiencia operativa
de las empresas, la experiencia del usuario en aplicaciones de navegación, y la
eficacia de los sistemas de redes. A medida que la tecnología avanza y el volumen
de datos crece, la necesidad de algoritmos que puedan procesar información de
manera rápida y efectiva se vuelve aún más crítica.

El estudio de los métodos de camino más corto no solo se limita a la aplicación de


algoritmos específicos, sino que también abarca la investigación y el desarrollo de
nuevas técnicas que puedan superar las limitaciones de los métodos existentes.
Por ejemplo, la implementación de algoritmos de inteligencia artificial y aprendizaje
automático está comenzando a influir en cómo se abordan estos problemas,
permitiendo soluciones más adaptativas y eficientes. Además, la integración de
estos métodos en sistemas de información geográfica (SIG) y plataformas de big
data abre nuevas posibilidades para la exploración de datos y la toma de
decisiones informadas.

En un mundo cada vez más interconectado, donde la movilidad y la eficiencia son


esenciales, el método de camino más corto seguirá siendo un área de estudio
relevante y en evolución. Su impacto en la optimización de rutas y procesos no
solo mejora la competitividad de las empresas, sino que también contribuye al
desarrollo sostenible y a la mejora de la calidad de vida de las personas al facilitar
el acceso a recursos y servicios. Por lo tanto, es fundamental continuar
investigando y perfeccionando estos métodos, asegurando que puedan adaptarse
a las necesidades cambiantes de un entorno global dinámico
Referencias

‫־‬ andala, K. (s. f.). Problema del camino más corto. Recuperado de
https://karenbandala.wordpress.com/about/2-2-problema-camino-mas-corto/
‫־‬ Autor desconocido. (s. f.). Modelo del camino más corto [Presentación en
diapositivas]. Slideshare. Recuperado de
https://es.slideshare.net/slideshow/modelo-del-camino-mas-cortopptx/
266298602
‫־‬ Wasserman y Faust, 2013, «Grafos y matrices» (por Dawn Iacobucci), pp.
121-188.
‫־‬ ↑ Cherkassky, Boris V.; Goldberg, Andrew V.; Radzik, Tomasz (1996).
«Shortest paths algorithms: theory and experimental evaluation».
Mathematical Programming. Ser. A 73 (2): 129-174. MR 1392160.
doi:10.1016/0025-5610(95)00021-6..
‫־‬ ↑ Saltar a:a b Thorup, Mikkel (1999). «Undirected single-source shortest
paths with positive integer weights in linear time». Journal of the ACM
(JACM) 46 (3): 362-394. Consultado el 28 de noviembre de 2014.
‫־‬ ↑ Papamanthou, Charalampos (2004). Depth First Search & Directed
Acyclic Graphs. pp. 12-14. Consultado el 2 de mayo de 2015.
‫־‬ ↑ Schrijver, Alexander (2004). Combinatorial Optimization — Polyhedra and
Efficiency. Algorithms and Combinatorics 24. Springer. ISBN 3-540-20456-
3. Aquí: vol.A, sec.7.5b, p.103
‫־‬ ↑ Proceedings of the thirteenth annual ACM-SIAM symposium on Discrete
algorithms. 2002. pp.267–276
‫־‬ ↑ Theoretical Computer Science 312. 2004. pp.47–74
‫־‬ ↑ Proceedings of the 27th International Colloquium on Automata,
Languages and Programming. 2000. pp.61–72
‫־‬ ↑ Sanders, Peter (23 de marzo de 2009). Fast route planning. Google Tech
Talk..

También podría gustarte