0% encontró este documento útil (0 votos)
1K vistas8 páginas

4.2 El Modelo de Flujo Maximo

El documento describe el algoritmo de flujo máximo para encontrar la cantidad máxima de flujo que puede pasar a través de una red desde un nodo origen hasta un nodo destino. Explica que el primer algoritmo eficiente fue desarrollado por Ford y Fulkerson y que desde entonces se han hecho mejoras. También describe cómo el algoritmo funciona iterativamente encontrando trayectorias de aumento con capacidad residual positiva y aumentando el flujo a lo largo de ellas hasta que no quedan más trayectorias disponibles.
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 PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
1K vistas8 páginas

4.2 El Modelo de Flujo Maximo

El documento describe el algoritmo de flujo máximo para encontrar la cantidad máxima de flujo que puede pasar a través de una red desde un nodo origen hasta un nodo destino. Explica que el primer algoritmo eficiente fue desarrollado por Ford y Fulkerson y que desde entonces se han hecho mejoras. También describe cómo el algoritmo funciona iterativamente encontrando trayectorias de aumento con capacidad residual positiva y aumentando el flujo a lo largo de ellas hasta que no quedan más trayectorias disponibles.
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 PDF, TXT o lee en línea desde Scribd

4.

2 El modelo de flujo máximo

El algoritmo de flujo máximo tiene como objetivo maximizar la cantidad del flujo del

origen al destino. Esta cantidad se mide en cualquiera de las dos maneras equivalentes, esto

es, la cantidad que sale del origen o la cantidad que entra al destino. El primer algoritmo

eficiente para encontrar el máximo flujo fue concebido por Ford y Fulkerson y es uno de los

algoritmos más famosos en el área de informática. En los últimos 50 años, se han hecho

muchas mejoras sobre este algoritmo, desde que se desarrolló se han descubierto muchas

aplicaciones, a continuación, mencionaremos algunas aplicaciones comunes:

1. Maximizar el flujo a través de la red de distribución de una compañía desde sus fábricas
hasta sus clientes.
2. Maximizar el flujo a través de la red de suministros de una compañía de proveedores a
las fábricas.
3. Maximizar el flujo de líquidos por un sistema de tuberías.
4. Maximizar el flujo de vehículos por una red de transporte.

En algunas de estas aplicaciones, el flujo a través de la red se puede originar en más de

un nodo y también puede terminar en más de uno, aunque el problema de flujo máximo debe

tener sólo un origen y un destino. Por ejemplo, una red de distribución de una compañía tiene

varias fábricas y múltiples clientes. En este caso se recurre a una reformulación ingeniosa

para ajustar esta situación al problema de flujo máximo. Se trata de aumentar la red original

para que incluya un origen ficticio, un destino ficticio y algunos arcos nuevos. El origen

ficticio se maneja como el nodo que a origen a todo flujo que en realidad se origina en algunos

otros nodos. En cada uno de estos otros nodos se inserta un nuevo arco que va desde el origen

ficticio hasta este nodo, donde la capacidad del arco es igual al flujo máximo que se puede

originar en este nodo. De manera similar, el destino ficticio se trata como el nodo que absorbe
todo el flujo, que en realidad, termina en algún otro nodo. Por lo tanto, se coloca un nuevo

arco desde cada uno de los otros nodos hasta el destino ficticio con capacidad igual al flujo

máximo que en realidad termina en este nodo. Debido a estos cambios, todos los nodos de la

red original se convierten en nodos de transbordo para que la red aumentada tenga un solo

origen (fuente ficticia) y un solo destino (destino ficticio) y se ajuste al problema de flujo

máximo.

Algoritmo de flujo máximo

Este algoritmo se fundamenta en el hallazgo de rutas de avance con flujo positivo

entre los nodos origen y destino. Cada ruta destina una parte de o todas las capacidades de

sus arcos al flujo total en la red. Como el problema del flujo máximo se puede formular como

un problema de programación lineal, se puede resolver con el método simplex. Sin embargo,

se dispone de un algoritmo de trayectorias aumentadas mucho más eficiente. Este algoritmo

se basa en dos conceptos intuitivos, el de una red residual y el de una trayectoria aumentada.

Una trayectoria de aumento es una trayectoria dirigida del nodo origen al nodo destino

en la red residual, tal que todos los arcos en esta trayectoria tienen capacidad residual

estrictamente positiva,

El mínimo de estas capacidades residuales se llama capacidad residual de la

trayectoria de aumento porque representa la cantidad de flujo que es factible agregar en toda

la trayectoria. Por lo tanto, cada trayectoria de aumento proporciona una oportunidad de

aumentar más el flujo a través de la red original.

El algoritmo de la trayectoria de aumento selecciona varias veces una trayectoria de

aumento y agrega un flujo igual a su capacidad residual a la trayectoria en la red original.

Este proceso continúa hasta que no hay trayectorias de aumento, con lo que el flujo del nodo
fuente al nodo destino no puede crecer. La clave para asegurar que la solución final es óptima

por necesidad es el hecho de que las trayectorias de aumento pueden cancelar flujos

asignados con anterioridad en la red original; así, una selección indiscriminada de

trayectorias para asignar flujos no puede evitar el uso de una combinación mejor de

asignación de flujos. Para resumir, cada iteración del algoritmo consiste en tres pasos, que a

continuación se describen.

1. Identificar una trayectoria de aumento, esto se logra cuando se encuentra una trayectoria
dirigida del origen al destino en la red residual, tal que cada arco sobre ella tenga
capacidad mayor a cero. (Si no existe una, los flujos netos asignados constituyen un
patrón de flujo óptimo).
2. Encontrar la rama con el mínimo de las capacidades residuales de los arcos sobre esta
trayectoria de aumento e identificar la capacidad residual cr de esta trayectoria.
3. Disminuir en cr la capacidad residual de cada arco en esta trayectoria de aumento y
aumentar en cr la capacidad residual de cada arco en la dirección opuesta en la
trayectoria. Una vez que se han asignado flujos a los arcos de la red original, la red
residual muestra las capacidades restantes – llamadas capacidades residuales – para
asignar flujos adicionales. Regresar al paso 1 y repetir hasta finalizar la red.

La parte más difícil de este algoritmo, es encontrar una trayectoria de aumento idónea.

Esta tarea se puede simplificar con un procedimiento sistemático. Se comienza por

determinar todos los nodos que se pueden alcanzar desde el origen con un solo arco con

capacidad residual estrictamente positiva. Después, en el caso de cada uno de estos nodos

alcanzados, se determinan todos los nuevos nodos – entre los que no han sido alcanzados – a

los que se puede llegar desde este nodo con un solo arco con capacidad residual estrictamente

positiva. Este procedimiento se repite con los nuevos nodos a medida que se llega a ellos. El

resultado será la identificación de un árbol con todos los nodos a los que se puede llegar

desde el origen, a lo largo de una trayectoria con capacidad de flujo residual estrictamente
positiva. Este procedimiento de abanico siempre identificará una trayectoria de aumento, si

existe. Aunque el procedimiento es relativamente directo, es útil poder reconocer cuándo se

tiene un patrón óptimo sin tener que buscar de manera exhaustiva una ruta que no existe. A

veces es posible reconocer esto con el resultado de un teorema importante de teoría de redes,

conocido como teorema del-flujo máximo-corte mínimo. Un corte define un conjunto de

arcos cuya eliminación de la red interrumpe el flujo entre los nodos fuente y destino. La

capacidad del corte es igual a la suma de las capacidades de su conjunto de arcos. En general

hay muchas formas de dividir una red para formar un corte que ayude a analizarla. El

teorema del-flujo máximo-corte mínimo establece que para cualquier red con un solo nodo

origen y un solo nodo destino, el flujo máximo factible del origen al destino es igual al valor

del corte mínimo de todos los cortes de la red, en otras palabras, entre todos los cortes posibles

en la red, el corte con la capacidad mínima es el cuello de botella que determina el flujo

máximo en la red.

A continuación, con ayuda de un ejercicio dirigido, se exponen las particularidades y

funcionamiento del algoritmo de flujo máximo.

Ejemplo 2. La red de drenaje de una pequeña comunidad ha ido creciendo conforme las

colonias se han conurbado. En tiempos de lluvia la capacidad del drenaje se ve sobrepasada

y la comuna sufre inundaciones. Se ha propuesto la ampliación del colector principal para

desalojar de manera más eficiente las precipitaciones.


0.7
2 4
1.0
0.5 0.4 1.4
1 ?
3 0.5 9
1.2 Colector Principal
1.0
6 8
1.2
1.0
5 0.5
7
Figura 1. Red de drenaje con gastos máximos (m3/seg)

La red muestra el gasto máximo em m3/seg de los colectores secundarios y la

dirección del flujo. Se desea determinar la capacidad del colector principal con base en el

flujo máximo de la red.

Solución. El algoritmo de flujo máximo requiere que exista un solo nodo origen y uno solo

de destino. Para nuestro ejemplo es necesario crear un nodo ficticio de origen, lo mismo

sucede cuando se tienen diversos destinos del flujo, se debe crear un nodo ficticio de destino

donde confluyan los flujos reales. El flujo de los arcos salientes del nodo ficticio origen

corresponden a la suma de los arcos salientes de los nodos de origen real.

0.7 4
2
1.0
0.5 0.4 1.4
1 ?
3 0.5 9
1.2 Colector Principal
1.0
1.0 8
6
0
1.2
1.7 1.0
5 0.5
7

Figura 2. Red modificada con nodo de origen ficticio

Primer paso. Identificar una trayectoria de aumento capaz de transportar algún flujo mayor

que cero desde el origen hasta el destino, probemos 0 → 1→ 2 → 4 → 9


Segundo paso. En esta ruta encontrar la rama con la menor capacidad, en este caso el arco 2

→ 4 cuya capacidad residual es de cr = 0.7 m3/seg. Este es el máximo flujo que puede

transportarse por esta trayectoria.

Tercer paso. Disminuir en cr la capacidad residual de cada arco en esta trayectoria y aumentar

en cr la capacidad residual de cada arco en la dirección opuesta en la trayectoria.


0 0.7
0.7 2 4
0.7
0.3
0.5 0.4 0.7
1 ?
0.7 3 0.5 9
1.2 Colector Principal
0.3 1.0 8
6
0
1.2
1.7 1.0
5 0.5
7
Figura 3. Red residual de 1ra trayectoria

Una vez que se han asignado flujos a los arcos de la red original, la red residual

muestra las capacidades restantes para asignar flujos adicionales. Regresar al paso 1 y repetir

hasta finalizar la red.

Ahora se busca otra trayectoria que tenga capacidad residual para transportar un flujo

del origen al destino. La trayectoria 0 → 1 → 2 → 3 → 4 → 9 cumple con esta condición y

el menor flujo residual es cr = 0.3 m3/seg. Se resta este valor a los flujos residuales de los

arcos involucrados y se le suma a su flujo transportado.


0 0.7
1.0 2 4
0.2 0.3 0.4
0
0.3 0.1 1.0
1 ?
1.0 3 0.5 9
1.2 Colector Principal
0 1.0
6 8
0
1.2
1.7 1.0
5 0.5
7

Figura 4. Análisis de flujo residual nodo 2-3 y 3-4 en 2da trayectoria


Podemos observar que los arcos 2→3 y 3→4 aún cuentan con flujo residual, pero

como se conectan al origen a través de los arcos 0→1 y 1→ 2 que están saturados, esta

capacidad residual no se aprovechará.

Buscando la tercera trayectoria se encuentra 0→5→6→8→4→9 con un flujo residual

mínimo en el arco 4→9 de magnitud cr = 0.4 m3/seg. Con este valor se calculan los nuevos

flujos residuales para los arcos de esta ruta.

0 0.7
1.0 2 4
0.2 0.3 0
0
0.3 0.1 0.4 1.4
1 ?
1.0 3 9
0.1 1.2 Colector Principal
0 0.4
6 8
0 0.4
1.3
0.6
0.4 0.8 1.0
5 0.5
7

Figura 5. Red residual de la 3era trayectoria

La cuarta trayectoria es 0 →5→6→8→9 con flujo residual de cr = 0.6 m3/seg. Se


calculan los flujos residuales y se registran en la red.

0 0.7
1.0 2 4
0.2 0.3 0
0
1 0.3 0.1 0.4 1.4
?
1.0 3 0.6 9
0.1 0.6 Colector Principal
0 0 1.0
6 8
0 0.7 1.0
1.0 0.2 1.0
5 0.5
7

Figura 6. Red residual de 4a trayectoria

Ahora solo queda una trayectoria con flujo residual, 0→5→7→8→9, el mínimo

corresponde al arco 5→7 por lo que se resta cr = 0.5 m3/seg a los flujos residuales de esta

trayectoria.
0 0.7
1.0 2 4
0.2 0.3 0
0
0.3 0.1 0.4 1.4
1 ?
1.0 3 1.1 9
0.1 0.1 Colector Principal
0 0 1.0
6 8
0 1.0
0.2 0.5
1.5 0.2
0.5
5 0 0.5
7

Figura 7. Red residual de 5a trayectoria

Si bien, aún existen arcos con capacidad residual de 0.2 m3/seg en los arcos que salen del

origen y de 0.1 m3/seg en los que desembocan en el destino, es imposible encontrar una ruta

que los transporte.

Con esto concluye el algoritmo del flujo máximo y se calcula su valor sumando los flujos

que entran en el destino, 1.1 m3/seg + 1.4 m3/seg = 2.5 m3/seg. Por lo tanto el colector

principal deberá ser diseñado para captar este flujo.

También podría gustarte