Unidad 4
Unidad 4
Unidad 4
mandar cierta cantidad de flujo. Cuanto? Pues todo lo que quepa. Por ejemplo, si
en el grafo G de la figura 5.33 tomamos el camino (s, a, b, t), vemos que las
aristas por las que pasa tienen pesos: 5, 2, 4. El mximo flujo que podemos
mandar por ese camino est limitado por el mnimo de las capacidades por las que
pasa el camino; en este caso 2. De esta forma, el algoritmo ira encontrando
caminos en G, aadiendo los flujos correspondientes al grafo F y quitndolos de
G. Y
As seguira hasta que no queden ms caminos para enviar flujo.
La estructura del algoritmo que lleva a cabo esta idea sera la siguiente:
1. Sea G = (V, A, CG) el grafo de capacidades mximas. Inicializar el grafo de
flujos
Reales, F, con los mismos nodos y aristas de G, pero con pesos 0. Es decir, CF (v,
w) = 0; <Vw> A. Este grafo guardar a el resultado del algoritmo.
2. Buscar un camino en G, desde s hasta t, pasando por aristas cuyo peso sea
mayor que 0. Este camino es denominado camino creciente. Supongamos que el
camino es (s, v1, v2,..., Vm, t). Tomamos m = min {CG(s, v1), CG (v1, v2),..., CG
(Vm, t)}. Es decir, por este camino pueden fluir hasta m unidades de flujo, como
mximo.
3. Para cada arista <Vw> del camino anterior, aadir m al coste de la arista
correspondiente en F y quitarlo en G. Es decir, CF (v, w) = CF (v, w) + m; CG (v, w)
= CG (v, w) m; para todo <Vw> del camino del paso 2.
4. Volver al paso 2 mientras siga existiendo algn camino creciente entre s y t en
G. Todava nos queda por determinar la forma de encontrar el camino creciente
del
Paso
2. Una vez ms, la bsqueda primero en profundidad puede sernos de utilidad.
Para encontrar un camino creciente, podramos iniciar una bsqueda en
profundidad en G a partir del nodo s. Cuando la bsqueda llegue a t ya tenemos
un camino de s a t 12. Adems, el procedimiento bps debera ser modificado para
tener en cuenta solo las aristas con peso
Mayor que cero. Por otro lado, est claro que entre s y t puede haber ms de un
camino creciente. Esta primera versin del algoritmo indica que se encuentre un
camino cualquiera. El algoritmo ser a optimo si, independientemente de los
caminos elegidos en el paso 2, siempre encuentra el flujo mximo. Vamos a ver
que no siempre ocurre as. Ejemplo 5.6 Vamos a aplicar la primera versin del
algoritmo del flujo mximo sobre el grafo G de la figura 5.33a). En la figura 5.34 se
muestra una ejecucin posible del algoritmo, donde no se alcanza la solucin
optima.
En la primera ejecucin del paso 2, se encuentra el camino (s, c, b, t). Los costes
de las aristas son: 4, 4, 4; as que m = 4. Esta cantidad se aade en F (figura
5.34d) y se quita de G (figura 5.34c). Si intentamos buscar otro camino entre s y t,
en el grafo de la figura 5.34c), que pase por aristas con peso mayor que cero,
vemos que no existe ninguno. Por 12El camino estara en la pila de llamadas
recursivas. Lo ms adecuado sera ir almacenando en un arraya los nodos que
estn en la rama actual de la llamada a bpp.246 Capitulo 5. Grafos lo tanto, el
algoritmo acabara. El resultado del algoritmo es que el flujo total encontrado es 4.
En consecuencia, el algoritmo no encuentra el optimo, que como vimos en la
figura
5.33 es 6 unidades de flujo. No obstante, si los caminos hubieran sido elegidos en
otro orden s que se habra obtenido el optimo. En concreto, se puede comprobar
que el resultado de la figura 5.33 se alcanzara si seleccionamos los siguientes
caminos, por orden: (s, a, b, t)
Con peso 2; (s, c, d, t) con peso 2; (s, c, d, b, t) con peso 1; (s, c, b, t) con peso 1.
Algoritmo de flujo mximo deshaciendo caminos
La primera versin del algoritmo es no determinista: en el paso 2 se pueden elegir
Varios caminos y, dependiendo de cul se coja, el algoritmo alcanza la solucin
optima o no. Para solucionar el problema podemos hacer una pequea
modificacin en el algoritmo. El sentido de esta modificacin es que si se coge un
camino, pero que luego resulta ser una mala decisin, se pueda deshacer el flujo
enviado por ese camino.
En particular, la modificacin afecta a la forma de actualizar CG dentro del paso 3.
Cada vez que encontramos un camino creciente, quitamos m unidades de flujo de
G y las ponemos en F. Ahora, adems, vamos a indicar en G que se pueden
deshacer m unidades de flujo a travs de las aristas del camino. El flujo que se
deshace tendr el sentido opuesto al de aadir; es decir, si se aade m unidades
en <Vw> en F, entonces se quitan m de <Vw> en G y se aaden m unidades de
deshacer para la arista <x, y> en G.
En definitiva, este cambio solo implica modificaciones dentro del paso 3 del
algoritmo, que ahora debera decir:
3 Para cada arista <Vw> del camino anterior, aadir m al coste de la arista
correspondiente en F, quitarlo en G y ponerlo en G en sentido contrario. Es decir,
CF (v, w) = CF (v, w) + m; CG (v, w) = CG (v, w) m; CG (w, v) = CG (w, v) + m
Para todo <Vw> del camino del paso 2.
Hay que tener en cuenta que aqu estamos suponiendo que el peso de una arista
Inexistente es 0. De esta forma, cuando sumamos m a CG (w, v), pero <Vw> no
est en G, sera equivalente a crear una nueva arista con peso m.
Esta nueva versin del algoritmo no deja de ser no determinista, pero garantiza
siempre la solucin optima. Aunque no lo vamos a demostrar, vamos a ver que se
resuelve correctamente el problema que vimos en el ejemplo 5.6.
Ejemplo 5.7 Vamos a aplicar la segunda versin del algoritmo del flujo mximo la
que permite deshacer caminos sobre el grafo G de la figura 5.33a). Un posible
resultado del algoritmo se muestra en la figura 5.35.
Igual que en el ejemplo 5.6, consideramos que en la primera ejecucin del paso 2
se encuentra el camino (s, c, b, t), con m = 4. Esta cantidad se aade en F (figura
5.35d). Ahora, en G se quita esa cantidad en sentido directo y se aade en sentido
contrario (figura 5.35c).
A continuacin podemos encontrar un nuevo camino, que pasa por la arista de
deshacer <x, y>. El camino es (s, a, b, c, d, t), con pesos: 5, 2, 4, 3, 2. Por lo
tanto,
ahora solo se encuentra el nodo 1 (es decir que se debe de encontrar un nodo que
tenga el arco de menor longitud enlazado al nodo 1).
Los arcos o ramales de color naranja representan los arcos que enlazan
el conjunto K-1(es decir del conjunto del paso 1, recordemos que K en este paso
es igual a 2, por ende K-1= 1) con los nodos de enlace permanente del conjunto
Ck-1 en el cual ahora solo se encuentra el nodo 1, por ende ahora solo falta
escoger el de menor longitud, que en este caso es el arco cuya longitud es 2, que
enlaza de forma permanente ahora el nodo 2.
Al actualizar los conjuntos quedan as:
C2 = {1,2} y 2 = {3, 4, 5, 6, 7,8}
Ahora se procede a actualizar k ya que se procede a efectuar la siguiente
iteracin. Ahora se seleccionar un nuevo nodo j del conjunto 2que presente el
enlace (ramal o arco) de menor longitud con los nodos que se encuentran en el
conjunto C2.
Los arcos de color naranja representan los enlaces posibles y dado que existe
empate entre las menores longitudes se elige de manera arbitraria, en este caso
se representa nuestra eleccin con un arco de color verde, enlazando de forma
permanente ahora el nodo 4.
Al actualizar los conjuntos quedan as:
C3 = {1, 2,4} y 3 = {3, 5, 6, 7,8}
Ahora se procede a actualizar k ya que se procede a efectuar la siguiente
iteracin.
Lo que representan los arcos naranja y verde es ya conocido, ahora la lnea azul
interrumpida ir trazando nuestro rbol de expansin final. Dado a que el arco
menor es el de longitud 3, ahora se enlazar de manera permanente el nodo 5.
Al actualizar los conjuntos quedan as:
C4 = {1, 2, 4,5} y 4 = {3, 6, 7,8}
Ahora se procede a actualizar k ya que se procede a efectuar la siguiente
iteracin.
www.in
genieriaindustrialonline.com
Ahora se enlazar de manera permanente el nodo 6.
Al actualizar los conjuntos quedan as:
C6 = {1, 2, 4, 5, 7,6} y 6 = {3,8}
Ahora se procede a actualizar k ya que se procede a efectuar la siguiente
iteracin.
www.in
genieriaindustrialonline.com
Se rompen los empates de forma arbitraria, ahora se enlazar de manera
permanente el nodo 3.
Al actualizar los conjuntos quedan as:
C7 = {1, 2, 4, 5, 7, 6,3} y 7 = {8}
Ahora se procede a actualizar k ya que se procede a efectuar la ltima iteracin.
INGRESANDO A WINQSB
El primer paso para resolver un problema de transporte mediante Wons es
ingresar al mdulo Network Modelan.
En esta matriz se deben de consignar los valores de los ramales que unen las
conexiones entre los nodos correspondientes, segn el contexto de nuestro
problema se deben de consignar las distancias entre los nodos si es que dichas
conexiones existen de lo contrario en caso que la conexin no exista se debe dejar
la celda en blanco. Hay que tener en cuenta que las distancias entre los nodos en
este caso son exactamente conmutativas, es decir que si el nodo fuente es 2 y el
destino es 4 la distancia existente entre estos es exactamente igual a la distancia
existente entre un nodo fuente 4 y un nodo destino 2, sin embargo esta propiedad
debe de especificarse en la matriz consignando los valores correspondientes a
una conexin dos veces, es decir en la celda [Fromm 1 - To 4] se debe de
consignar la distancia 6, adems debe de consignarse la misma distancia en la
celda [Fromm 4 - To 1].
Luego damos clic en Salve and Analice y tendremos la siguiente ventana solucin
inmediatamente.
PASO A PASO
Primero se debe ingresar al mdulo Network Modelan del paquete Wons, una vez
nos encontremos en este aparecer el men que se muestra en la siguiente
grfica, men en el cual tendremos que seleccionar la opcin Shorts Pat
Problema (Problema de la ruta ms corta).