MOR - Tema 3
Camino de menor valor
Conjunto de caminos desde un nodo. Definición
Sea red orientada con raíz de salida , sea nodo cualquiera denotamos al conjunto de caminos que van de a como , es decir,
Valor de un camino. Definición
Sea red orientada con raíz de salida y sea camino definido como:
definimos el valor del camino como la suma de los pesos de los arcos que lo forman:
Camino de valor mínimo. Definición
Sea red orientada con raíz de salida y sea nodo cualquiera. Definimos el camino de valor mínimo como el camino que cumple:
✏️Ejemplo
¿Los caminos de mínimo valor de una raíz de salida al resto de los vértices forman siempre una arborescencia de unión de salida en ?
En general, esto no es cierto. Por ejemplo:
Si consideramos los caminos de mínimo valor desde al resto de vértices, obtenemos:
Observamos que el arco no pertenece al conjunto de caminos de mínimo valor, pero el conjunto de caminos de mínimo valor no forma una arborescencia de unión de salida en ya que el nodo tiene grado de entrada 2.
No obstante, en el caso particular de que los caminos de valor mínimo sean únicos, entonces si forman una arborescencia de unión de salida en .
Teorema 3.1. Caracterización de los caminos de valor mínimo
Sea red con raíz de salida , se cumple que:
📐Demostración
- Sea circuito con y sea , por hipótesis existe un camino de valor mínimo desde a . Consideramos el camino:
Entonces, si calculamos el valor del camino :
lo cual contradice la hipótesis de que es un CVM desde a .
- Como ya que es la raíz de salida, existe al menos un camino de a cualquier vértice . Veamos que existe un camino de valor mínimo desde a .
Al no existir circuitos de valor negativo, nos basta con encontrar el camino de menor valor entre los caminos elementales. Como el grafo es finito, el número de caminos elementales entre y es finito y por tanto, los pesos asociados a dichos caminos es una colección finita de números reales. Por tanto, existe el mínimo entre ellos, que corresponderá al camino de valor mínimo desde a .
Valor del camino trivial
Sea red orientada con raíz de salida . Consideramos el camino trivial que va desde a sin pasar por ningún otro vértice. El valor del camino trivial es:
✏️Ejemplo
Si no hay circuito de valor negativo, ¿el camino trivial es un CMV de a ? ¿Y es único?
Si no hay circuito de valor negativo, el camino trivial es un CMV de a ya que cualquier otro camino desde a tendrá un valor mayor o igual a 0. No obstante, el camino trivial no tiene por qué ser único. Por ejemplo:
En este caso, el camino trivial tiene valor 0, pero también existe otro camino desde a que pasa por y tiene valor . Por tanto, el camino trivial no es único.
Consecuencia del Teorema 3.1
A partir del Teorema 3.1, se deduce que si no existen circuitos de valor negativo en la red , es suficiente buscar caminos elementales para encontrar los caminos de valor mínimo desde la raíz de salida al resto de vértices .
Teorema 3.2. Subcaminos de caminos de valor mínimo
Sea red orientada y camino de menor valor de a en , entonces se tiene que cualquier subcamino de es un camino de menor valor de a en , para cualquier vértice en con y .
📐Demostración
Sea camino de menor valor de a y sea subcamino de con vértice final , supongamos que no es de menor valor, entonces:
Consideramos ahora el camino dado por:
Y entonces se tiene que es un camino de a y su valor es:
Lo cual contradice que sea camino de menor valor de a . Por lo tanto, cualquier subcamino de un camino de menor valor es también un camino de menor valor.
Consecuencia del Teorema 3.2
A partir del Teorema 3.2, se deduce que al obtener un camino de valor mínimo desde la raíz de salida a un vértice , con el mínimo esfuerzo ya tenemos los caminos de valor mínimo desde a todos los vértices intermedios que forman el camino de a .
Algoritmo de Ford-Moore-Bellman
Este algoritmo se puede emplear para obtener un camino de valor mínimo desde un vértice fijado a todos los demás vértices de una red orientada independientemente del valor de los pesos de los arcos, es decir, para cualquier . No obstante, su tiempo de ejecución es .
Teorema 3.3. Condición suficiente y necesaria para caminos de valor mínimo
Sea red orientada y el valor de un camino desde a en , para cada . Entonces, los caminos son caminos de valor mínimo desde a en si y solo si se cumplen las siguientes condiciones:
📐Demostración
-
) Sea cualquiera, por hipótesis sabemos que:
-
) Suponiendo que para todo veamos que la familia de caminos es de valor mínimo desde a para todo .
Sea cualquiera, consideramos un camino formado por:
Entonces, aplicando expresión a cada arco del camino , obtenemos:
Sumando todas estas desigualdades, obtenemos:
Y como , tenemos que:
Por tanto, es el valor mínimo entre todos los caminos desde a , es decir, es un camino de valor mínimo desde a .
Descripción del Algoritmo de Ford-Moore-Bellman
Sea red con raíz de salida , consideramos para cualquier y consideramos que no existen circuitos de valor negativo en entonces, el algoritmo de Ford-Moore-Bellman se describe a continuación:
- Tomar y se definen:
-
Sea tal que entonces:
-
Repetir el paso 2 hasta que
💡Nota
Una vez completado el algoritmo, el valor representa el valor del camino de valor mínimo desde a . Para obtener dichos caminos utilizamos las etiquetas hacia atrás, es decir:
✏️Ejemplo
Dada la siguiente red orientada con raíz de salida 1, aplicar el algoritmo de Ford-Moore-Bellman para obtener los caminos de valor mínimo desde la raíz de salida al resto de vértices.
Aplicando los pasos del algoritmo, obtenemos:
- Sea entonces tenemos y , por tanto:
- Veamos cual es el vértice con mínimo, es decir:
Actualizamos y tenemos calculamos:
Por tanto, no actualizamos nada. Ahora, como , repetimos el paso 2. 3. El vértice con mínimo es:
Actualizamos y tenemos calculamos:
Como , actualizamos esa entrada de la tabla:
Ahora, como , repetimos el paso 2. 4. El vértice con mínimo es:
Actualizamos y tenemos calculamos:
Por tanto, actualizamos esa entrada de la tabla:
Ahora, como , repetimos el paso 2. 5. El vértice con mínimo es:
Actualizamos y tenemos calculamos:
Por tanto, no actualizamos nada. Ahora, como , el algoritmo termina.
El resultado final del algoritmo es:
Así, los caminos de valor mínimo desde la raíz de salida 1 al resto de vértices son:
- Camino de 1 a 2: con valor 1
- Camino de 1 a 3: con valor 3
- Camino de 1 a 4: con valor 5
- Camino de 1 a 5: con valor 8
- Camino de 1 a 1: camino trivial con valor 0
Además, podemos construir la arborescencia de unión de salida formada por los caminos de valor mínimo:
💡Nota
En el ejercicio anterior, la arborescencia de unión de salida formada por los caminos de valor mínimo no es una arborescencia de salida de valor mínimo, ya que:
No obstante, si consideramos la arborescencia de salida:
Algoritmo de Dijkstra
El algoritmo de Dijkstra se puede emplear para obtener un camino de valor mínimo desde un vértice fijado a todos los demás vértices de una red orientada siempre que los pesos de los arcos sean no negativos, es decir, para cualquier . Su tiempo de ejecución es .
Teorema 3.4. Condición suficiente para caminos de valor mínimo
Sea red orientada con raíz de salida y para cualquier , una colección de caminos de a para cada , cada uno de valor y, además, existe un conjunto tal que:
Si cumple que , entonces es el valor de un CMV desde a .
📐Demostración (no entra)
Sea tal que . Tenemos y, por hipótesis, denota el valor de un camino desde a . Veamos que es un camino de valor mínimo.
Sea camino cualquiera de a y denotamos:
- al primer vértices en que pertenece a
- al antecesor de en
Por lo tanto, tenemos que y, así:
Como , sabemos que es el valor de un camino de menor valor de a y, por tanto, . Además, como por hipótesis todos los pesos son positivos, se tiene que y, por tanto:
Como y entonces y por tanto:
Aplicando la hipótesis de la definición de , tenemos que:
Como estamos suponiendo que y , entonces:
Y esto se cumple para cualquier camino desde a , por lo que es el valor de un camino de valor mínimo desde a .
💡Nota
Notar que representa el conjunto de vértices para los cuales ya se ha encontrado un camino de valor mínimo desde la raíz de salida . Por otro lado, representa el conjunto de vértices para los cuales aún no se ha encontrado un camino de valor mínimo desde .
Descripción del Algoritmo de Dijkstra
Sea red con raíz de salida y para cualquier , entonces el algoritmo de Dijkstra se describe a continuación:
- Tomar y se definen:
-
Sea tal que entonces:
-
Repetir el paso 2 hasta que
💡Nota
Una vez completado el algoritmo, el valor representa el valor del camino de valor mínimo desde a . Para obtener dichos caminos utilizamos las etiquetas hacia atrás, es decir:
✏️Ejemplo
Dada la siguiente red orientada con raíz de salida 1, aplicar el algoritmo de Dijkstra para obtener los caminos de valor mínimo desde la raíz de salida al resto de vértices.
Aplicando los pasos del algoritmo, obtenemos:
- Sea entonces tenemos y , por tanto:
- Veamos cual es el vértice con mínimo, es decir:
Actualizamos y tenemos entones , por tanto, no actualizamos nada. Ahora, como , repetimos el paso 2. 3. El vértice con mínimo es:
Actualizamos y tenemos entonces , calculamos:
Como , actualizamos esa entrada de la tabla
Ahora, como , repetimos el paso 2. 4. El vértice con mínimo es:
Actualizamos y tenemos entonces , por tanto, no actualizamos nada. Ahora, como , repetimos el paso 2. 5. El vértice con mínimo es:
Actualizamos y tenemos entonces , por tanto, no actualizamos nada. Ahora, como , el algoritmo termina.
El resultado final del algoritmo es:
Así, los caminos de valor mínimo desde la raíz de salida 1 al resto de vértices son:
- Camino de 1 a 2: con valor 2
- Camino de 1 a 3: con valor 3
- Camino de 1 a 4: con valor 5
- Camino de 1 a 5: con valor 8
- Camino de 1 a 1: camino trivial con valor 0
Además, podemos construir la arborescencia de unión de salida formada por los caminos de valor mínimo:
💡Nota
Al igual que en el caso del algoritmo de Ford-Moore-Bellman, la arborescencia de unión de salida formada por los caminos de valor mínimo no es necesariamente una arborescencia de salida de valor mínimo:
Sin embargo, si consideramos la arborescencia de salida:
💡Nota
Notar que, ambos algoritmos pueden ser usados indistintamente para redes con pesos no negativos (en caso de que algún peso fuera negativo, habría que usar el algoritmo de Ford-Moore-Bellman). No obstante, el algoritmo de Dijkstra es más eficiente en este caso, ya que su tiempo de ejecución es frente a los del algoritmo de Ford-Moore-Bellman.
Esta diferencia de eficiencia se debe a que, el algoritmos de Dijkstra, recalcula en cada iteración las etiquetas únicamente para los vértices adyacentes al vértice seleccionado en dicha iteración, mientras que el algoritmo de Ford-Moore-Bellman recalcula las etiquetas para todos los vértices en cada iteración.
Transformaciones monótonas de redes orientadas
En general, los caminos de valor mínimo en una red orientada no se mantienen bajo transformaciones estrictamente crecientes de los pesos de los arcos.
💡Nota
Para estos casos, basta considerar funciones como logaritmos, exponenciales o algunas transformaciones lineales.
Transformación
No obstante, existe una transformación monótona que si permite relacionar los caminos de valor mínimo. Se define como:
Así, consideramos la transformación de una red orientada en otra red orientada y, por tanto, para cualquier y .
De esta forma, sea un camino cualquiera en , entonces:
Entonces, se dan las siguientes propiedades:
- Si el camino de valor mínimo en es el mismo que en
- Si el camino de valor mínimo en es el camino de valor máximo en
💡Nota
Notar que, a partir de esta transformación, podemos obtener los caminos de valor máximo en una red orientada a partir de los caminos de valor mínimo en la red transformada con .
Camino de menor longitud
Este problema se puede reinterpretar como encontrar el camino de valor mínimo en una red orientada donde los pesos de los arcos valen 1, es decir, para cualquier .
A través de esta interpretación, podemos aplicar los algoritmos vistos anteriormente para encontrar caminos de menor longitud en una red orientada.
✏️Ejemplo
Dada la siguiente red orientada con raíz de salida 1, aplicar el algoritmo de Dijkstra para obtener los caminos de menor longitud desde la raíz de salida al resto de vértices.
Aplicando los pasos del algoritmo, obtenemos:
- Sea entonces tenemos y , por tanto:
- Veamos cual es el vértice con mínimo, es decir:
Actualizamos y tenemos , entonces:
Por tanto, actualizamos esas entradas de la tabla:
Ahora, como , repetimos el paso 2. 3. El vértice con mínimo es:
Actualizamos y tenemos , entonces:
Por tanto, actualizamos esa entrada de la tabla:
Ahora, como , repetimos el paso 2. 4. El vértice con mínimo es:
Actualizamos y tenemos , entonces:
Por tanto, no actualizamos nada. Ahora, como , repetimos el paso 2. 5. El vértice con mínimo es:
Actualizamos y tenemos , entonces:
Por tanto, no actualizamos nada. Ahora, como , el algoritmo termina.
El resultado final del algoritmo es:
Así, los caminos de menor longitud desde la raíz de salida 1 al resto de vértices son:
- Camino de 1 a 2: con longitud 1
- Camino de 1 a 3: con longitud 2
- Camino de 1 a 4: con longitud 2
- Camino de 1 a 5: con longitud 3
- Camino de 1 a 1: camino trivial con longitud 0
Además, podemos construir la arborescencia de unión de salida formada por los caminos de menor longitud:
Caminos de menor valor entre todos los pares de vértices
Sea red orientada, se pretende calcular todos los caminos de menor valor entre todos los pares de vértices . Aunque una opción sería aplicar el algoritmo de Dijkstra veces, existe un algoritmo más eficiente conocido como el algoritmo de Floyd-Warshall.
Teorema 3.5. Algoritmo de Floyd-Warshall
Sea red orientada fuertemente conexa sin circuitos de valor negativo con y para cualquier y sean:
Y para cada se definen:
Se verifica que:
- representa el valor de un camino de menor valor de a tal que sus vértices intermedios pertenecen a
- Si y con posibles vértices intermedios en entonces representa el valor de un camino de menor valor de a tal que sus vértices intermedios pertenecen a . Además, representa el penúltimo vértice de dicho camino. Si no existe tal camino, entonces y .
📐Demostración (no entra)
La demostración se realiza por inducción sobre . Ver apuntes de la asignatura para un desarrollo completo.
Corolario 3.6
Sea red orientada fuertemente conexa sin circuitos de valor negativo con y para cualquier . Entonces, para cualquier , representa el valor de un camino de menor valor de a y representa el penúltimo vértice de dicho camino. Si no existe tal camino, entonces y .
📐Demostración (no entra)
Al ser una red fuertemente conexa y sin circuitos, se puede aplicar el Teorema 3.5 para y así:
- Si entonces que coincide con el valor del camino trivial de a , que es el camino de menor valor entre ambos vértices.
- Si , como la red es fuertemente conexa, existe al menos un camino de a con posibles vértices intermedios en , por lo que representa el valor de un camino de menor valor de a con posibles vértices intermedios en . Además, representa el penúltimo vértice de dicho camino.
Consecuencias del corolario 3.6
A partir del Corolario 3.6, se pueden extraer las siguientes consecuencias:
- De se obtienen todos los vértices de un camino de menor valor entre y aplicando el Teorema 3.2 de forma recursiva hacia atrás.
- De se obtiene el valor del camino de menor valor entre y .
- Los caminos de menor valor desde un vértice se obtienen de las filas -ésimas de las matrices e .
- La información proporcionada en las filas es equivalente a la obtenida en la tabla resultante del algoritmo de Ford-Moore-Bellman aplicado desde la raíz de salida .
Descripción del algoritmo de Floyd-Warshall
Sea red orientada fuertemente conexa con y para cualquier . El algoritmo de Floyd-Warshall se describe a continuación:
- Definimos las matrices e como en el Teorema 3.5 y consideramos
- Definimos los elementos de la matriz como:
- Obtenemos los elementos de la matriz como:
- Si entonces y volvemos al paso 2. En otro caso, el algoritmo termina con las matrices e .
✏️Ejemplo
Dada la siguiente red orientada, aplicar el algoritmo de Floyd-Warshall para obtener los caminos de menor valor entre todos los pares de vértices.
Aplicamos los pasos del algoritmo:
- Definimos las matrices e :
- Para , calculamos e , es decir, nos fijamos en la primera fila y primera columna y comprobamos si existe algún camino de menor valor que pase por el vértice 1. Podemos ver que:
Por tanto, las matrices quedan como:
Como , pasamos a . 3. Para , calculamos e . Podemos ver que:
Por tanto, las matrices quedan como:
Como , pasamos a . 4. Para , calculamos e . Podemos ver que:
Por tanto, las matrices quedan como:
Como , pasamos a . 5. Para , calculamos e . Podemos ver que:
Por tanto, las matrices quedan como:
Como , el algoritmo termina con las matrices e .
Así, los caminos de menor valor entre todos los pares de vértices son:
- Camino de 1 a 2: con valor
- Camino de 1 a 3: con valor
- Camino de 1 a 4: con valor
- Camino de 2 a 1: con valor
- Camino de 2 a 3: con valor
- Camino de 2 a 4: con valor
- Camino de 3 a 1: con valor
- Camino de 3 a 2: con valor
- Camino de 3 a 4: con valor
- Camino de 4 a 1: con valor
- Camino de 4 a 2: con valor
- Camino de 4 a 3: con valor
- Camino de a : camino trivial con valor para cualquier
Cadena de menor valor/longitud
Cadena de menor valor
Valor de una cadena. Definición
Sea red no orientada conexa, dados y una cadena de a definida como:
El valor de la cadena se define como:
Cadena de menor valor. Definición
Sea red no orientada conexa, dados , una cadena de menor valor de a es aquella cadena de a cuyo valor es mínimo entre todas las cadenas de a .
💡Nota
Notar que, en caso de tener un grafo no dirigido, es posible transformar dicho grafo en una red orientada duplicando cada arista en dos arcos opuestos con el mismo valor. De esta forma, se pueden demostrar resultados análogos a los vistos en redes orientadas y aplicar métodos como los algoritmos de Dijkstra o Floyd-Warshall para encontrar cadenas de menor valor entre vértices.
✏️Ejemplo
Sea la siguiente red no orientada, encontrar las cadenas de menor valor entre todos los vértices.
Transformamos la red no orientada en una red orientada:
Y ahora, aplicamos el algoritmo de Floyd-Warshall:
- Definimos las matrices e :
- Para calculamos e . Tenemos que:
Por tanto, las matrices quedan como:
Como , pasamos a . 3. Para calculamos e . No se actualiza ningún valor, por lo que las matrices quedan igual. Como , pasamos a . 4. Para calculamos e . No se actualiza ningún valor, por lo que las matrices quedan igual. Como , el algoritmo termina con las matrices e .
Así, las cadenas de menor valor entre todos los pares de vértices son:
- Cadena de 1 a 2: con valor
- Cadena de 1 a 3: con valor
- Cadena de 2 a 1: con valor
- Cadena de 2 a 3: con valor
- Cadena de 3 a 1: con valor
- Cadena de 3 a 2: con valor
- Cadena de a : cadena trivial con valor para cualquier
Cadena de menor longitud
La idea de cadena de menor longitud es análoga a la de cadena de menor valor, pero en este caso, el peso de cada arista se considera como 1. Por tanto, el valor de una cadena coincide con su longitud, y la cadena de menor longitud entre dos vértices es aquella que tiene el menor número de aristas entre ellos.