MOR - Tema 4
Flujo en redes
Red estándar. Definición
Sea red, decimos que es una red estándar si cumple:
- es un grafo orientado débilmente conexo
- Los pesos para cada arco son positivos () y se les denomina capacidad del arco (máxima capacidad del arco)
- Existe un único vértice tal que denominado fuente
- Existe un único vértice tal que denominado sumidero
Flujo en redes. Definición
Sea red estándar, se dice que colección de reales es un flujo en si cumple:
- Acotación:
- Conservación de flujo: para cada con :
💡Nota
Notar que, lo que estamos pidiendo en la conservación de flujo es que, para cada nodo que no sea fuente o sumidero, el flujo que entra es igual al flujo que sale.
Valor del flujo. Definición
Sea red estándar y un flujo en , se define el valor del flujo como:
Y en caso de que no haya ambigüedad, es decir, estemos trabajando con una única red y un único flujo, se denota simplemente como .
✏️Ejemplo
A continuación, se muestra un ejemplo de red estándar con un flujo asociado.
Podemos observar que el flujo cumple las condiciones de acotación ya que:
Además, también cumple la conservación de flujo:
- Para el nodo A:
- Para el nodo B:
- Para el nodo C:
Finalmente, el valor del flujo es:
Existencia de un flujo. Proposición
Sea una red estándar, entonces existe al menos un flujo en .
📐Demostración
Basta notar que es un flujo en ya que:
- Acotación:
- Conservación de flujo: para cada con :
Por lo tanto, es un flujo en .
Existencia de camino de a . Proposición
Sea una red estándar y un flujo en con valor . Entonces, existe al menos un camino elemental de a en .
📐Demostración
Si es el camino elemental de mayor longitud que comienza en y tal que para cada , al menos es de longitud 1 ya que:
- La red es débilmente conexa
Si llega a ya estaría. Supongamos que no llega a y acaba en . Por la ley de conservación del flujo, tendría que existir un arco tal que . Pero entonces podríamos alargar con el arco , contradiciendo la maximalidad de la longitud de . Por lo tanto, tiene que llegar a .
Flujo máximo en una red
Conjunto de flujos en una red. Definición
Sea red estándar, se define el conjunto de flujos en como:
Flujo máximo en una red. Definición
Sea una red estándar , la búsqueda del flujo máximo consiste en enviar la cantidad máxima de flujo posible desde la fuente hasta el sumidero de forma que se satisfagan las condiciones de acotación y conservación de flujo.
Formalmente, consiste en encontrar un flujo en tal que:
Cuasicamino. Definición
Sea red estándar, un cuasicamino de a en es una sucesión alternada de vértices y arcos que forman una cadena elemental en el grafo subyacente de . Es decir, un cuasicamino de a es:
Arco positivo y negativo. Definición
Sea red estándar, dado un cuasicamino de a en , un arco con diremos que es:
- Arco positivo: si está orientado desde hacia , es decir,
- Arco negativo: si está orientado desde hacia , es decir,
✏️Ejemplo
Supongamos la siguiente red estándar:
Podemos notar que, como el flujo máximo que sale de la fuente es 7 y el flujo máximo que entra al sumidero es 7, el flujo máximo de la red es 7.
Ahora, si consideramos el cuasicamino dado por:
Si añadimos dos unidades más al flujo que pasa de a (y por tanto, tenemos que restar dos unidades al flujo que pasa de a para mantener la conservación de flujo), obtenemos el siguiente cuasicamino:
Además, habrá que hacer que las dos unidades que hemos restado al flujo que pasa de a se sumen al flujo que pasa de a . Por tanto, la red quedaría de la siguiente forma:
En este caso, el flujo total de la red será 9, que es mayor que el flujo máximo inicial de 7.
No vale modificar cualquier cuasicamino para aumentar el flujo total de la red, hay que emplear los cuasicaminos de flujo aumentable, que se verán más adelante.
Arco saturado. Definición
Sea red estándar y un flujo en . Un arco se dice que está saturado si .
Arco de flujo nulo o libre. Definición
Sea red estándar y un flujo en . Un arco se dice que es de flujo nulo o libre si .
Cuasicamino de flujo aumentable. Definición
Sea red estándar, flujo en y un cuasicamino de a en . Decimos que es un cuasicamino de flujo aumentable o cuasicamino -aumentable si se cumplen las siguientes condiciones:
💡Nota
Notar que un cuasicamino puede ser aumentable para un flujo y no serlo para otro flujo . A continuación, se muestra un ejemplo de cuasicamino aumentable.
No obstante, si cambiamos el flujo en el arco a y hacemos las modificaciones pertinentes en los demás arcos para mantener la conservación de flujo, el cuasicamino ya no sería aumentable:
Cuasicamino de flujo aumentable desde a . Definición
Sea red estándar, flujo en , prestaremos especial atención a los cuasicaminos de flujo aumentable que van desde la fuente hasta el sumidero . Estos se denotan como .
Holgura de un arco. Definición
Sea red estándar, flujo en y cuasicamino de flujo aumentable desde a en . Se define la holgura de como:
Holgura de un cuasicamino de flujo aumentable. Definición
Sea red estándar, flujo en y cuasicamino de flujo aumentable desde a en . Se define la holgura de como:
💡Nota
Por la propiedad de la conservación del flujo, el cambio en el flujo de los arcos de un cuasicamino tiene que ser de la misma cantidad en todos los arcos del cuasicamino. Por tanto, la holgura de un cuasicamino nos indica la cantidad máxima que podemos aumentar el flujo a lo largo de todo el cuasicamino sin violar las condiciones de acotación.
Proposición 4.1
Sea red estándar, flujo en y cuasicamino de flujo aumentable desde a en tal que la holgura mínima de sus arcos es . Si se considera la aplicación:
entonces la colección es un flujo en con valor .
📐Demostración
*Veamos que \widehat{f* es un flujo en :}
-
Acotación: Se dan dos casos:
-
Conservación del flujo: Sea cualquiera con . Se dan dos casos:
-
Si entonces tanto el flujo que llega como el que sale no se ven modificados, por lo que siguen siendo iguales por ser un flujo , es decir:
-
Si , como la cadena generada por el cuasicamino es elemental, cada vértice está solo una vez, por lo que se dan 4 subcasos:
-
Valor del flujo: Por definición de valor del flujo, tenemos que:
donde es el arco positivo (ya que ) que sale de en .
Corte en una red. Definición
Sea red estándar, partición de tal que y (separa el vértice fuente del sumidero). Al subconjunto de arcos formado por los arcos con origen en y destino en se le denomina corte y se denota como:
Análogamente, podemos definir el conjunto inverso que no cumple las condiciones de corte dado por:
Conjunto de cortes en una red. Definición
Sea red estándar, se define el conjunto de cortes en como:
💡Nota
Podemos observar que cualquier red estándar tiene al menos un corte, basta considerar y , entonces:
Capacidad de un corte. Definición
Sea red estándar, flujo y corte de dicha red, se define la capacidad del corte como la suma de las capacidades de los arcos que forman el corte:
Flujo neto a través de un corte. Definición
Sea red estándar, flujo y corte de dicha red, se define el flujo neto a través del corte como:
💡Nota
En palabras simples, la capacidad de un corte nos indica la cantidad máxima de flujo que puede pasar a través del corte, mientras que el flujo neto a través del corte nos indica la cantidad de flujo que realmente pasa a través del corte.
Además, podemos notar que para una misma red, dados dos cortes distintos y un mismo flujo, el flujo neto a través de ambos cortes es el mismo. Esto se debe a que el flujo que entra en desde menos el flujo que entra en desde es igual al flujo total que sale de la fuente y llega al sumidero , independientemente del corte que consideremos.
Proposición 4.2
Sea red estándar, flujo en y corte de dicha red. Entonces, el flujo neto a través del corte es igual al valor del flujo, es decir:
📐Demostración
Sea flujo en dicha red estándar, por definición se tiene que:
Pero como entonces:
Y por tanto, le valor del flujo se puede reescribir como:
Ahora, por la propiedad de conservación del flujo, se tiene que:
Por tanto, si sumamos ambas expresiones para todos los vértices , obtenemos:
Por definición de flujo neto a través de un corte, tenemos que:
Podemos notar que los dos sumatorios entre paréntesis representan exactamente el mismo valor, ya que ambos representan el flujo que entra y sale de los vértices en (exceptuando ), por lo que:
Proposición 4.3
Sea red estándar, flujo en y corte de dicha red, se verifican:
- El valor del flujo está acotado superiormente por la capacidad del corte, es decir:
- Además, se cumple que:
📐Demostración
- Por la proposición anterior , y tenemos que:
Como para todo (por ser un flujo), entonces:
- Por lo que hemos visto en el apartado anterior, se tiene que:
Con lo que la igualdad se cumple si y solo si:
Lo cual ocurre si y solo si:
Ahora, como y por la acotación del flujo, se tiene que ambas expresiones son iguales a cero, con lo que la igualdad se cumple si y solo si:
Como en ambos casos estamos sumando términos no negativos, esto es equivalente a que:
Corte mínimo en una red. Definición
Sea red estándar y un corte, se dice que es corte mínimo si:
Flujo máximo en una red. Definición
Sea red estándar, se dice que un flujo en es flujo máximo si:
Corolario 4.4
Sea red estándar, si y son un corte y un flujo en respectivamente, tales que:
📐Demostración
Sea otro flujo en , por la proposición 4.3 se tiene que:
Sea otro corte en , por la proposición 4.3 se tiene que:
Teorema 4.5
Sea red estándar y flujo en . Entonces se cumplen:
📐Demostración
- ) Sea flujo máximo, supongamos que existe un cuasicamino de flujo aumentable . Entonces tenemos que . Si consideramos el flujo definido en la proposición 4.1, tenemos que:
- ) Sea el conjunto de vértices formado por:
Por hipótesis , con lo cual es partición de con y . Consideremos el corte . Veamos que:
Algoritmo de Ford-Fulkerson
El objetivo de este algoritmo es encontrar un flujo máximo , para ello, la idea es ir saturando cuasicaminos de flujo aumentable hasta que no queden más. Sea red estándar, el algoritmo es el siguiente:
-
Sea el flujo definido como para todo .
-
Etiquetado:
-
Para el cuasicamino -aumentable formado por los arcos entre vértices etiquetados, obtener y con ese valor, obtener el nuevo flujo según la proposición 4.1.
-
Volver al paso 2 borrando todas las etiquetas.
✏️Ejemplo
Aplicación del algoritmo de Ford-Fulkerson a la siguiente red estándar:
Primera iteración: Aplicamos el etiquetado de la siguiente forma:
El cuasicamino -aumentable es y su incremento es:
Por tanto, el nuevo flujo es:
Segunda iteración: Aplicamos el etiquetado de la siguiente forma:
El cuasicamino -aumentable es y su incremento es:
Por tanto, el nuevo flujo es:
Tercera iteración: Aplicamos el etiquetado de la siguiente forma:
En este caso, no es posible etiquetar el vértice , por lo que el flujo actual es máximo y el algoritmo termina aquí. El flujo máximo obtenido es:
Porposición 4.6
Sea red estándar, flujo máximo y corte mínimo, entonces:
📐Demostración
Sea cualquier flujo y cualquier corte, aplicando la proposición 4.3 se tiene que:
Por otra parte, si es flujo máximo, por el teorema 4.5 no existe ningún cuasicamino -aumentable desde a . Definiendo:
por la demostración del teorema 4.5, sabemos que determina un corte tal que:
Aplicando la proposición 4.3, tenemos que:
Como es corte mínimo, se tiene que:
Corolario 4.7
Sea red estándar, flujo y corte de dicha red. Son equivalentes:
- es flujo máximo y es corte mínimo.
- .
- Todo arco de es saturado y todo arco de es libre
📐Demostración
Esta demostración es consecuencia de las previas:
- ) Por la proposición 4.6.
- ) Por la proposición 4.3.
- ) Por el corolario 4.4.
Consecuencias del teorema de Ford-Fulkerson
A partir del algoritmo de Ford-Fulkerson no solo obtenemos un flujo máximo, si no que también podemos obtener el corte mínimo. Este último es generado por todos los vértices etiquetados en la última iteración, es decir, los vértices alcanzables desde mediante cuasicaminos de flujo aumentable.
✏️Ejemplo
Continuando con el ejemplo anterior, en la última iteración:
Podemos notar que no existen cuasicaminos de flujo aumentable desde a . No obstante, el cuasicamino de flujo aumentable que encontramos es:
Y por tanto, el corte mínimo será generado por:
Con lo que el corte mínimo es:
Además, su capacidad es:
💡Nota
El flujo de valor máximo no es único, además, el corte mínimo tampoco lo es.
💡Nota
La convergencia del algoritmo de Ford-Fulkerson está garantizada si las capacidades son números enteros. No obstante, su eficiencia puede estar comprometida en función de las elecciones que se hagan en el proceso de etiquetado.
Para solucionar esto, se puede modificar el algoritmo en el paso de etiquetado exigiendo que se elija el cuasicamino con el menor número de arcos. Por tanto, el algoritmo quedaría igual, pero el paso 2 se modificaría a:
- Hacer y para cada y :
- Para con , hacer para todo con y además o .
- Si considerar el cuasicamino -aumentable de a que se forma yendo para atrás desde hasta siguiendo los vértices con etiquetas decrecientes. Continuar al paso 3.
- Si se han etiquetado nuevos vértices y , hacer y repetir el paso 2.
- Si no se puede asignar nuevas etiquetas y , el flujo es máximo y se termina el algoritmo.
✏️Ejemplo
Se considera la siguiente red, aplicar el algoritmo de Ford-Fulkerson con la modificación del paso de etiquetado:
Primera iteración: A partir del flujo nulo, tenemos que cada vértice tiene asociado el siguiente valor de :
Sea y entonces solo para . Y a partir de tenemos que etiquetar y con :
Ahora, incrementamos a y consideramos los vértices con , que son y . Desde podemos etiquetar con y desde no podemos etiquetar ningún vértice nuevo:
El cuasicamino -aumentable es y su incremento es:
Por tanto, el nuevo flujo es:
Segunda iteración: A partir del flujo actual, tenemos que cada vértice tiene asociado el siguiente valor de :
Sea y entonces solo para . Y a partir de tenemos que etiquetar con :
Ahora, incrementamos a y consideramos los vértices con , que es solo . Desde podemos etiquetar con y con :
El cuasicamino -aumentable es y su incremento es:
Por tanto, el nuevo flujo es:
Tercera iteración: A partir del flujo actual, tenemos que cada vértice tiene asociado el siguiente valor de :
Sea y entonces solo para . Y a partir de no podemos etiquetar ningún vértice nuevo ya que ambos arcos están saturados:
Por tanto, el flujo actual es máximo y el algoritmo termina aquí. El flujo máximo obtenido es:
Flujo de costo mínimo
El objetivo del flujo de coste mínimo es determinar los flujos en los diferentes arcos que minimicen el coste total del flujo de la red y, simultáneamente, conservan el flujo y satisfacen las capacidades de los arcos.
Coste del flujo. Definición
Sea una red estándar con función de costes . El coste total asociado a un flujo en la red viene dado por:
Coste mínimo. Definición
Sea una red estándar con función de costes . Un flujo en la red es un flujo de coste mínimo si:
donde .
💡Nota
Aunque el problema se podría resolver hallando todos los flujos de valor y seleccionando el de coste mínimo, esto tiene un coste computacional muy elevado. Por tanto, hay que emplear otros métodos alternativos.
Cuasicircuito. Definición
Sea red estándar, un cuasicircuito es un cuasicamino en el que el primer y último vértice coinciden.
Cuasicircuito -aumentable. Definición
Sea red estándar y flujo en dicha red. Un cuasicircuito es -aumentable si todo arco positivo no está saturado y todo arco negativo no es libre.
💡Nota
Notar que un cuasicircuito puede ser aumentable en un sentido y no en el otro.
Holgura del cuasicircuito. Definición
Sea red estándar, flujo en dicha red y un cuasicircuito -aumentable. La holgura del cuasicircuito viene dada por:
Proposición 4.8
Sea red estándar, flujo en dicha red y cuasicircuito -aumentable tal que la holgura mínima de sus arcos es , si consideramos la aplicación:
se tiene que la colección es un flujo en la red con el mismo valor que .
💡Nota
Notar que los cuasicircuitos de flujo aumentable en realidad, no aumentan el valor de flujo, sino que lo mantienen constante.
📐Demostración
La demostración es análoga a la de la proposición 4.1. El cambio viene dado en el valor de que, en este caso es:
y podemos considerar dos casos:
- Si entonces:
- SI entonces:
Pero como cuasicircuito, no repite vértices, con lo que solo está una vez en y además , entones, si tales que entonces uno de los dos arcos será negativo y otro positivo, es decir:
Por lo tanto,
Por lo tanto, sustituyendo en la ecuación se tiene que:
Red asociada al flujo. Definición
Sea red estándar y un flujo en dicha red, se define la red asociada al flujo como la red con:
donde definimos como:
💡Nota
Así, se pueden dar tres casos para una arista en la red asociada al flujo :
- Si entonces es un arco positivo y es un arco negativo.
- Si entonces es un arco positivo
- Si entonces es un arco negativo.
Proposición 4.9
Sea red estándar, flujo y red asociada al flujo , se cumple que:
📐Demostración
-
) Sea cuasicircuito -aumentable en . Entonces, estará formado por arcos positivos y negativos:
-
) Sea circuito elemental en , como está formado por los arcos de con misma o distinta orientación, entonces es un cuasicircuito en .
Ahora, como todos los arcos de tienen peso positivo, entonces:
Si ese arco proviene de un arco positivo de entonces:
Si ese arco proviene de un arco negativo de entonces:
Por lo tanto, es un cuasicircuito -aumentable en .
💡Nota
Notar que aunque el flujo se mantenga constante al aumentar por un cuasicircuito -aumentable, el coste del flujo puede variar. Además, esta variación del coste puede ser positiva, negativa o nula. Por tanto, no todo cuasicircuito -aumentable es útil para minimizar el coste del flujo.
Selección de circuitos elementales de . Idea
Intuitivamente buscamos cuasicircuitos de flujo aumentable que reduzcan el coste del flujo. Podemos notar que si el cuasicircuito de flujo aumentable verifica que:
entonces el coste del nuevo flujo es menor (veremos que esto es cierto en general).
Red residual. Definición
Sea red estándar y flujo en dicha red, se define la red residual asociada al flujo como la red donde:
donde se definen:
✏️Nota
Así, se pueden dar tres casos para una arista en la red residual :
- Si entonces:
- Si entonces:
- Si entonces:
Notar que la red residual es similar a la red asociada al flujo, pero en este caso los arcos tienen asociados tanto una capacidad residual como un coste asociado. De esta forma, mantenemos toda la información necesaria para poder trabajar con los cuasicircuitos -aumentables.
💡Nota
En las redes residuales, los parámetros que tenemos miden:
- : lo que podemos aumentar el flujo de ese arco (o lo que podemos reducirlo si está en sentido contrario).
- : el coste por unidad de flujo que se incrementa (o decrementa si está en sentido contrario).
Así, dado un cuasicircuito -aumentable , consideramos como el circuito elemental generado por los arcos de en la red residual . Entonces, el coste asociado a aumentar el flujo en el cuasicircuito es:
Y se dan dos casos:
- Si entonces aumentar el flujo en el cuasicircuito reduce el coste total del flujo. Además, sabemos que permitirá distribuir unidades de flujo, donde es la holgura del cuasicircuito ahorrando un coste total de por cada unidad de flujo aumentada. Es decir, el ahorro total será:
- Si entonces aumentar el flujo en el cuasicircuito no reduce el coste total del flujo, por lo que no es interesante. Es el caso contrario al anterior.
Proposición 4.10
Sea red estándar, flujo en dicha red, cuasicircuito -aumentable y el circuito elemental generado por los arcos de en la red residual . Si consideramos el flujo definido en la proposición 4.8, entonces:
📐Demostración
Basta notar que:
💡Nota
Notar que por la definición de red residual es directo que:
Es decir, el coste asociado a aumentar el flujo en el cuasicircuito es igual a la suma de los costes de los arcos positivos menos la suma de los costes de los arcos negativos. Con lo cual, si queremos disminuir el coste total del flujo, debemos buscar cuasicircuitos -aumentables tales que:
Y además, por definición tenemos que:
Corolario 4.11
Sea flujo de valor en la red estándar . Si es un flujo de coste mínimo, entonces no existe ningún circuito elemental en con:
📐Demostración
Supongamos que existe circuito elemental en con . Entonces, por la proposición 4.9 existe un cuasicircuito -aumentable en que genera el circuito elemental . Si consideramos el flujo definido en la proposición 4.8, entonces por la proposición 4.10 se tiene que:
pero esto contradice que es un flujo de coste mínimo. Por tanto, no puede existir tal circuito elemental .
Red de pesos asociada a una red estándar. Definición
Sea red estándar y dos flujos en dicha red con , se define la red de pesos tal que:
- Tiene los mismos vértices que .
- Los arcos son:
es decir, están los mismos arcos que en si su flujo en es mayor que en y los arcos que están en sentido contrario si su flujo en es menor que en .
- El peso de cualquier arco es:
Lema 4.12
Sea red estándar, y dos flujos diferentes con y entonces:
Lema 4.13
Sea red estándar, y dos flujos diferentes con entonces existe una colección de circuitos en la red de pesos con tales que:
donde .
💡Nota
Lo que nos dice este lema es que la diferencia entre dos flujos de igual valor se puede expresar como la suma de flujos en circuitos elementales en la red de pesos asociada.
Teorema 4.14
Sea flujo de valor en la red estándar . Si no existe ningún circuito elemental en con:
entonces es un flujo de coste mínimo en .
Corolario 4.15
Un flujo de valor en una red estándar con costes es un flujo de coste mínimo si y solo si no existe ningún circuito elemental en con:
Algoritmo de Klein
El objetivo del algoritmo es encontrar un flujo de manera que cualquier otro flujo con se tiene que cumplir que . El algoritmo es el siguiente:
- Hacer y asignar de valor a la red .
- Construir la red residual asociada a y al flujo .
- Buscar en un circuito elemental con:
Si existe ir al paso 4, si no es flujo de valor y coste mínimo 4. Calcular y definir el flujo como:
donde es el cuasicircuito en asociado a . Hacer y volver al paso 2.
✏️Ejemplo
Sea la siguiente red estándar con costes:
Iteración 1: sea y flujo inicial como el de la figura, entonces:
Construimos la red residual :
... Repetir mucho que no me da la vida ...