Está en la página 1de 11

FLUJO MÁXIMO

Existe un flujo que viaja desde un único lugar de origen hacia un único lugar de
destino a través de arcos que conectan nodos intermediarios. Los arcos tienen una
capacidad máxima de flujo y se trata de enviar desde la fuente al destino la mayor
cantidad posible de flujo.

Hay problemas donde lo importante es la cantidad de flujo que pasa a través de la


red como por ejemplo: en las líneas de oleoductos, redes eléctricas o de
transmisión de datos. Por esta razón en dichos problemas se determina el flujo
máximo que pasa a través de una red.

Definiciones básicas

Flujo:Circulación de unidades homogéneas de un lugar a otro.

Capacidad de flujo: es la capacidad de unidades que pueden entrar por el nodo


fuente y salir por el nodo destino.

Origen o fuente de flujo:nodo por el cual el flujo ingresa.

Destino o Sumidero de flujo:nodo por el cual el flujo sale.

Capacidades residuales:capacidades restantes unas vez que el flujo pasa el arco.

Arco saturado: es el arco donde se utiliza la totalidad de su capacidad , es decir el


residuo es igual a cero
Algoritmo de Ford Fulkerson

Para la resolución de problemas de flujo máximo se requiere el uso del método


Ford Fulkerson. Este método propone buscar caminos en los que se pueda
aumentar el flujo hasta que se alcance el flujo máximo, la idea es encontrar una
ruta de penetración con un flujo positivo neto que una los nodos de origen y
destino.

CARACTERISTICAS:
• El flujo es siempre positivo y con unidades enteras.
• El flujo a través de un arco es menor o igual que la capacidad.
• El flujo que entra en un nodo es igual al que sale de él. ( Los nodos NO son
sumideros, es decir no consumen el producto que circula por la red)

Resolución de problema

1. Encontrar un Flujo Completo.


definición: es el flujo que va desde el nodo origen (inicial) al nodo final (sumidero)
de tal manera que por todos los caminos posibles tiene al menos un arco saturado.

2. Marcar los vértices (nodos) según corresponda con signo (+) ó signo (-) .
Signo + : se puede llegar al nodo desde otro nodo que lo precede pues tiene un
arco no saturado
Signo - : el nodo recibe flujo por un arco donde se puede dejar de enviar

En esta marcación se busca encontrar una cadena dese el nodo inicial al nodo final
Si existe esa cadena el flujo completo se puede mejorar.

3. Mejorar el Flujo Completo calculando los residuos de la cadena hallada en el paso


anterior.
residuo de arcos entre nodos marcados con signo (+) : capacidad – lo que se envía
residuo de arcos entre nodos marcados con signo (-) : valor absoluto | 0 – lo que se
envía|.

4. Hallar el nuevo flujo completo.

5. Repetir el proceso del paso 2 en adelante hasta que no exista una cadena del nodo
inicial al nodo final.
Este último Flujo Completo es el Flujo óptimo.

6. Hallar el corte de capacidad mínima:


Corte de capacidad mínima:
• Conjunto de nodos con marca según la metodología del paso 2.
• Conjunto de nodos NO marcados.
• Sumar las capacidades de los arcos que van de nodos marcados a nodos no
marcados.
• Verificar que el valor de la suma es igual al flujo óptimo.

Paso 1: encontrar el primer Flujo Completo:

• Se identifica el nodo origen y destino.


• Se parte desde el nodo de origen y se escoge el arco que posea mayor flujo
• Se identifica los nodos de transbordo.
• Repetir como si el nodo intermediario fuera el nodo origen.
• Se calcula "k" y las capacidades nuevas.
• Dado el resultado se cambian las capacidades y se repite el mismo
procedimiento desde el inicio.

Formulario
Cij,ji =(Ci-K, Cj+K), donde:
C: capacidad
Ij: índices de los nodos
K: es el minimo flujo que pasa por el nodo, se calcula como k= min(capacidades de
la ruta).

Hallar el flujo máximo del siguiente problema:

4
(20)
(10)

(10)
1 5
(30)

(20)
(20)
(20)
2 3
(40)
Método Ford Fulkerson

El nodo de origen es el numero 1 , y el nodo de destino es el numero 5 .


Se escoge desde el nodo de origen aquel flujo que sea el mayor, en este caso es
30, y va dirigido al nodo numero 3.

Se identifica el nodo de transbordo como [30,1], 30 es la capacidad, y 1 es el nodo


del cual proviene la capacidad y luego repetimos todo el proceso, como si el nodo
intermediario fuese el nodo de origen. Se tiene como flujo mayor 20 del nodo
numero 3 al nodo numero 5, con el nodo de transbordo como [20,5].

Ahora que hemos llegado al nodo de destino, procedemos a calcular "k" y las
nuevas capacidades.

K=min(∞,30,20)
K=20
Luego 20 es lo que puedo efectivamente enviar por ese camino, de esta manera se
envían los 20 y se calculan las nuevas capacidades que quedan.
Luego de haber calculado las nuevas capacidades, es necesario reemplazarlas.
Importante en cada arco se indica un valor cercano al nodo origen : nueva
capacidad y lo que está llegando, próximo al nodo destino.
Así entre el nodo 1 y el nodo 3 su capacidad = 30 queda
10 = residuo= nueva capacidad disponible= 30- K =30-20 =10
20= ingresa al nodo destino= 0+ K = 0+20=20

4
(20)
(10)

(10)
1 (10)
5
(30)
20
(20)
(20)
20 (20)
2 3 (0)
(40)

Se realiza el proceso otra vez, haciendo la ruta con los mayores flujos desde el
nodo inicial . Entre 10; 10; 20 resulta arrancar con 20, se llega al nodo 2 , del nodo
2 entre 20 ; 40 resulta 40 al nodo 3; del nodo 3 entre 10 y 0; resulta 10 al nodo 4;
del nodo 4 la única opción es al nodo 5 con 20.

K=min(∞,20,40,10,20)
K=10
Así entre el nodo 1 y el nodo 2 su capacidad = 20 queda
10 = residuo= nueva capacidad disponible= 20- K =20-10 =10
10= ingresa al nodo destino= 0+ K = 0+10=10
del nodo 2 al nodo 3= (40-10, 0+10) =(30, 10)
del nodo 3 al nodo 4= (10-10, 0+10) =(0, 10)
del nodo 4 al nodo 5= (20-10, 0+10) =(10, 10)

4 (10)
(20)
(10) 10
10
(10)
1 (10) (0) 5
(30)
20
(20)
(20) 10
(10) 20 (20)
2 10 3 (0)
(40)
(30)

Volvemos a hacer el proceso y escogemos el camino 1,2. Como se puede observar si se


tomara rumbo del nodo 2 al nodo 3 terminaría trancado, por lo que se toma el camino 2,5.

K=min(∞,10,20)
K=10
Así entre el nodo 1 y el nodo 2 su capacidad actual es = 10 queda
0 = residuo= nueva capacidad disponible= 10- K =10-10 =0
10= ingresa al nodo destino= 0+ K = 0+10=10

del nodo 2 al nodo 5= (20-10, 0+10) =(10, 10)

Se actualizan las capacidades y procedemos a resolver de nuevo.


4 (10)
(20)
(10) 10
10
(10)
1 (10) (0) 10 5
(30) (20) 20
(10)
(20) 20
(10) 20 (20)
(0) 2 10 3 (0)
(40)
(30)
Esta vez agarraremos el camino de 1,3. Pero no se puede continuar pues de 3 a 4 está
saturado (capacidad actual 0) y 3 a 5 está saturado (capacidad actual 0)
Y por ultimo escogemos el camino 1,4.
K=min(∞,10,10)
K=10

Reemplazando las nuevas capacidades, nos queda de la siguiente forma, las


capacidades del nodo de origen quedan como 0, por lo cual seguimos a sumar a todas las
K y ahi conseguimos el flujo máximo.

(0)
10 4 (10
(0) (20)
(10) 10
20
(10)
1 (10) (0) 10 5
(30) (20) 20
(10)
(20) 20
(10) 20 (20)
(0) 2 10 3 (0)
(40)
(30)
Flujo Obtenido es un FLUJO COMPLETO pues todos los caminos que conducen del nodo
1 al nodo 5 tiene al menos un arco saturado.
El valor del flujo completo es = 50

También podemos verificar que los valores calculados deben cumplir la característica de
que ningún nodo es consumidor: todo lo que sale del nodo 1(origen) debe llegar al nodo 5
(destino). En ese sentido lo que sale del nodo inicial por los tres arcos posibles es igual a
50 que coincide con lo que llega al nodo 5
Paso 2: Partiendo del flujo completo obtener el Flujo Óptimo

¿Es este flujo completo un flujo máximo?


Para iniciar el paso de optimización (encontrar el flujo óptimo= flujo máximo) se debe
comenzar desde un FLUJO COMPLETO con el proceso de marcación de nodos
Le ponemos nombre a cada arco para poder trabajar más claramente e indicamos en la
tabla los flujo que pasa por cada uno de ellos. La tabla permite verificar que todo lo que
sale es igual a lo que llega al nodo final . Esto lo reflejamos con las columnas en gris

4 20
u8(20)

10 u3(10)
1 u5(10) 5
20
u1(20) u2(30) u6(20)
20 10
20 u7(20)
10
2 u4(40) 3
10
FLUJO COMPLETO

u1 u2 u3 u4 u5 u6 u7 u8 Flujo
20 20 10 10 10 10 20 20 50

Marcar los vértices (nodos)


Signo + : se puede llegar al nodo desde otro nodo que lo precede pues tiene un arco no
saturado.
Signo - : el nodo recibe flujo por un arco donde se puede dejar de enviar

En esta marcación se busca encontrar una cadena desde el nodo inicial al nodo
final. Si existe esa cadena el flujo completo se puede mejorar.

Siempre comienzo por el nodo origen poniendo un signo (+), ¿es posible enviar algo por
alguno de los tres arcos que parten del nodo 1?
Por el arco u1 y u3 no es posible pues están saturados.
Por el arco u2 es posible y por lo tanto marco el nodo 3 con + 1 ; + pues llego con el
sentido del arco y 1 indica de qué nodo llego.
Una vez que estoy en el nodo 3 NO puedo avanzar por los arcos u5 ni u7 pues ambos
están saturados. Puedo retroceder por el nodo u4. Retroceder se interpreta como dejar
de mandar, esto significa que tomo el arco en sentido contrario y puedo dejar de enviar
algún flujo: el signo –, es ir en sentido contrario. No se puede dejar de mandar en el caso
que por ese arco el flujo que se envía es cero.
Marco el nodo 2 con - 3 ; - pues llego con el sentido contrario al del arco y 3 indica de
qué nodo estoy llegando.
Una vez que estoy en el nodo 2 puedo avanzar por el arco u6 y llegar al nodo 5 pues el
arco u6 no está saturado. De esta manera marco el nodo 5 con + ; + pues llego con
sentido del arco y 2 indica de qué nodo estoy llegando.

Sintetizando:
No se puede mandar, sentido +, cuando el arco está saturado
No se puede dejar de mandar, sentido -, cuando no se envía nada.

Con estas marcaciones obtenemos una cadena que va del nodo inicial y al nodo
final
Esto nos dice que el flujo completo aún puede aumentar

1 5 +2
20
+ u2(30) u6(20)
10
10
2 u4(40) 3
10
-3 +1

4 20
u8(20)

10 u3(10)
+ 1 u5(10) 5 +2
20
u1(20) u2(30) u6(20)
20 10
20 u7(20)
10
2 u4(40) 3
10
-3 +1

Paso 3 : cálculo de residuos de los arcos de la cadena obtenida

En los arcos positivos se calcula el residuo


residuo de arcos entre nodos marcados con signo (+) : capacidad – lo que se envía
residuo de arcos entre nodos marcados con signo (-) : valor absoluto( 0 – lo que se
envía).
1 3 2 5
u2 u4 u6
residuo: 30 – 20 = 10 0 – 10 = 10 20 – 10 = 10
De los residuos calculados se debe elegir el menor: min(10,10,10) =10
Paso 4 : Hallar el nuevo flujo completo.

Los residuos se suman a los arcos cuando se toman en su mismo sentido (+) y se restan
cuando se toman en sentido contrario (-), luego el nuevo camino será:

u1 u2 u3 u4 u5 u6 u7 u8 Flujo
20 20 10 10 10 10 20 20 50
(+10) -10 (+10)
20 30 10 0 10 20 20 20 60

Resultando un nuevo flujo completo que está en la fila 3 del cuadro y que se refleja en el
grafo siguiente

4 20
u8(20)

10 u3(10)
1 u5(10) 5
30
u1(20) u2(30) u6(20)
20 10
20 20
2 u4(40) 3
0
Paso 5 : Repetir el proceso del paso 2 en adelante

Se trata de marcar los nodos de tal manera de hallar una cadena del nodo inicial al nodo
final.
En este ejemplo partiendo del nodo inicial no se puede marcar ningún vértice pues los 3
arcos están saturados. Queda únicamente marcado el nodo inicial con signo (+) y ningún
otro nodo.

Al No existir cadena posible entre el nodo inicial y el nodo final el camino completo = 60
es el óptimo

Paso 6: Hallar el corte de capacidad mínima:

El corte de capacidad mínima me permite verificar que el valor obtenido es el óptimo.


Tenemos por lado el conjunto
de los nodos marcados: 1

El conjunto de los nodos NO marcados 2; 3; 4; 5

Obtengo la suma de las capacidades de los arcos que van de los nodos marcados a los
NO marcados.
Arcos que van del nodo 1(nodo marcado) a nodos NO marcados son 2; 3; 4;5
Estos arcos son:
de 1 a 2 u1 capacidad = 20
de 1 a 3 u2 capacidad = 30
de 1 a 4 u3 capacidad = 10
suma = 60

También podría gustarte