Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

Algoritmo de Flujo Máximo

Descargar como docx, pdf o txt
Descargar como docx, pdf o txt
Está en la página 1de 1

Algoritmo de flujo máximo

El algoritmo de flujo máximo se basa en determinar rutas de irrupción que tengan flujo
neto positivo entre los nodos fuente y sumidero. Cada ruta comunica parte o todas las
capacidades de sus arcos al flujo total en la red.
Considérese el arco (i, j) con capacidades iniciales ( C´i j , C´ ji ). A medida que parte de esas
capacidades contribuyen al flujo en el arco, se actualizan los residuales (o capacidades
remanentes). La red con los residuales actualizados se llama red residual. Se usará la
notación ( C i j ,C j i ) para representar esos residuales.
Para un nodo j que recibe flujo del nodo i, se define una etiqueta [aj, i], donde aj es el flujo
del nodo i al nodo j. Los pasos del algoritmo se resumen como sigue:
Paso 1. Para todos los arcos (i, j) se iguala la capacidad residual con la capacidad inicial;
esto es, ( C i j ,C j i ) = ( C´i j , C´ ji ) . Sea a1 = ∞ y se etiqueta el nodo fuente 1 con [∞, -- ].
Se iguala i = 1 y se prosigue en el paso 2.
Paso 2. Determinar Si, el conjunto de nodos j no etiquetados que se pueden alcanzar
directamente desde el nodo i, con arcos con residuales positivos (esto es, Cij > 0 para toda j
perteneciente a Si ). Si Si ≠ Ø, ir al paso 3. En caso contrario ir al paso 4.
Paso 3. Determinar k perteneciente a Si tal que:
C ik=max { Cij } , con j perteneciente a S i
Igualar ak = Cik y etiquetar el nodo k con [ak , i]. Si k = n, el nodo de sumidero se ha
etiquetado, y se ha encontrado una ruta de irrupción; entonces ir al paso 5. En caso
contrario, igualar i = k y seguir en el paso 2.
Paso 4. (Retroceso). Si i = 1, no hay otras irrupciones posibles; entonces ir al paso 6. En
caso contrario, sea r el nodo que se ha etiquetado inmediatamente antes del nodo actual i y
quitar i del conjunto de nodos adyacentes a r. Igualar i = r y continuar en el paso 2.
Paso 5. (Determinación de la red residual). Sea Np = (1, k1, k2, ..., n); se definen los nodos
de la p-ésima ruta de irrupción del nodo fuente 1 al nodo sumidero n. Entonces el flujo
máximo por la ruta se calcula como:
fp=min { a1 , a2 , a3 ,… , a n }
La capacidad residual de cada arco a lo largo de la ruta de irrupción se disminuye en f p
unidades en la dirección del flujo y se aumenta en fp unidades en la dirección contraria;
esto es, para los nodos i y j en la ruta, el flujo residual se cambia del actual (Cij, Cji) a
a) (Cij – fp, Cji + fp) si el flujo va de i a j
b) (Cij + fp, Cji – fp) si el flujo va de j a i
Se reinstalan todos los nodos que se hayan eliminado en el paso 4. Poner i = 1 y regresar al
paso 2 para intentar una nueva ruta de irrupción.
Paso 6. (Solución)
a) Si se han determinado m rutas de irrupción, el flujo máximo en la red es:
F = f1 + f2 + f3 + … + fm

b) Como los residuales inicial y final del arco (i, j) se obtienen con ( C´i j , C´ ji ) y ( C ij , C j i ),
respectivamente, el flujo óptimo en el arco (i, j) se calcula como sigue:
sea ( α , β )=( C´i j−Cij ; C´ j i−C j i ). Si α > 0, el flujo óptimo de i a j es α. Si β > 0,
el flujo óptimo de i a j es β. (Es imposible que tanto α y β sean positivos.)*
Se invoca el proceso de retroceso del paso 4 cuando el algoritmo llega a un “punto ciego”
por descuido, en un nodo intermedio, antes de poder realizar una irrupción.

También podría gustarte