Documente Academic
Documente Profesional
Documente Cultură
de
FLUJO en REDES
Los problemas de redes surgen en una gran variedad de situaciones. Así las
redes de transporte, eléctricas y de comunicaciones predominan en nuestra vida diaria.
La representación se utiliza ampliamente en áreas tan diversas como producción,
distribución, planificación de proyectos, localización de instalaciones, administración
de recursos, planificación financiera, por nombrar sólo algunos ejemplos. Se puede
decir que los modelos de redes consiguen un gran éxito rotundo en la solución de
problemas del mundo real, ya que no en vano, según algunos estudios recientes indican
que el 70% de los problemas de programación matemática reales pueden tratarse como
redes o como problemas relacionados con redes.
2
básica para redes, que en parte ya ha sido definida anteriormente en el problema de
transporte.
Ejemplo prototipo.
A
2 7 5 T
2
5 4
O B D
1 7
3 1
4
C E
4
3
El tercer problema es que durante la temporada alta, hay más personas que
quieran tomar el autobús a la estación T de las que se pueden acomodar. Para evitar la
perturbación indebida de la ecología y de la vida silvestre de la región, se ha impuesto
un racionamiento estricto en el número de viajes al día que pueden hacer los autobuses
en cada camino. (Estos límites difieren de un camino a otro, como veremos
posteriormente). Así, durante la temporada alta, se pueden seguir varias rutas sin tomar
en cuenta la distancia, para aumentar el número de viajes diarios de los autobuses. La
pregunta es cómo planificar las rutas para los distintos viajes, de manera que se
máximice el número total de viajes que se pueden hacer cada día, sin violar los límites
individuales impuestos sobre cada camino. ( Este es un ejemplo del problema del flujo
máximo que se presentará).
Terminología de redes.
Los arcos de una red pueden tener un flujo de algún tipo que pasa por ellos, por
ejemplo, el flujo de autobuses sobre los caminos del parque. Si el flujo a través de un
arco se permite sólo en un sentido (como si se tratase de una calle en un sentido), se
dice que el arco es un arco dirigido. Existen diferente anotaciones para indicar el
sentido de un arco, pero que todas ellas indican el sentido del primer nodo hacia el
segundo nodo. Así por ejemplo si tenemos letras en los nodos, AB ó A→B, indica que
el flujo es del nodo A hacia el nodo B (y viceversa, BA ó B→A, sería de B hacia A).
Sin embargo, en general, los nodos se representan por números diferentes, donde la
representación del arco (i, j), indica que el arco es dirigido del nodo i al nodo j, y que
en la gráfica se indica mediante una flecha al final del arco o línea que une ambos
nodos del arco. Al arco dirigido (i,j) se le suele llamar también arco incidente con los
nodos i y j ( nótese que el arco ( j,i) indicaría el sentido contrario del anterior, es decir,
de j hacia i ). En el caso de que el flujo en un arco esté permitido en ambos sentidos
(como en calles de dos sentidos), se dice que el arco es un arco no dirigido. Este caso,
el arco sobre la gráfica se puede indicar con dos flechas, una hacia cada nodo del arco,
o bien simplemente con sólo la línea que une los nodos del arco, de ahí que se
denomine como ligadura a un arco cuando no es dirigido.
Entonces, una red que sólo tiene arcos dirigidos se llama red dirigida. De igual
manera, si todos sus arcos son no dirigidos, se dice que se trata de una red no dirigida.
Una red con una mezcla de arcos dirigidos y no dirigidos ( o incluso una con todos sus
arcos no dirigidos) se puede convertir en una red dirigida, si se desea, sustituyendo
cada arco no dirigido por un par de arcos dirigidos en sentidos opuestas. En resumen, se
puede definir una red dirigida G, como la formada por un conjunto finito de nodos
(puntos) N = {1,...m } y un conjunto de arcos dirigidos (líneas) S = {(i,j), (f,k), ..(r,s) }.
4
Cabe preguntarse ahora que ocurre cuando dos nodos no están unidos
directamente mediante un arco. La respuesta es que dichos nodos pueden estar unidos
por un conjunto de arcos distintos correspondientes a otros nodos que si tienen un arco
con ellos. Esta consideración nos lleva a establecer los conceptos siguientes.
Una cadena es una estructura similar a una trayectoria excepto que no todos los
arcos están necesariamente dirigidos hacia el nodo ip .
5
Un ciclo es una cadena cerrada. Estos conceptos se reflejan en la siguiente figura:
2 2
1 4 1 4
3 3
2
2
1 4
1 4
3
3
d) un ciclo
c)un circuito
1 4
e)un árbol
6
recíprocamente, o que cada circuito es un ciclo, pero no inversamente. También se
puede decir que una red dirigida G, es conexa si existe una cadena de cada nodo de G a
cualquier otro nodo de G.
Por último, a la cantidad de flujo que circulará por cada arco (i,j) se le
denominará por xij (variable), mientras que el costo unitario de cada una de las variables
por cij .
Una vez descrito los conceptos básicos para poder desarrollar la teoría de redes
(aunque existen más conceptos que si son necesarios se describirán en su momento), se
pasa a exponer ya los diferentes problemas propuestos anteriormente.
Considérese una red conexa y no dirigida con dos nodos especiales llamados
origen y destino. A cada una de las ligaduras (arcos no dirigidos) se asocia una
distancia no negativa. El objetivo es encontrar la ruta más corta (es decir, la trayectoria
con la mínima distancia total) que va desde el origen al destino.
7
variante del algoritmo de Dijkstra asociando a los arcos de la red alturas en vez de
distancias, lo que permite determinar los caminos de mínima altura.
Para la exposición del citado algoritmo, lo efectuaremos a través de diferentes
ejercicios:
1. Camino de longitud mínima (o ruta más corta entre dos puntos de la red).
La red no dirigida de la figura representa un sistema de carreteras entre
ciudades de una región.
12 8
2 5 8
7
6 9
18 12
9
11 5 6
1 3 6 9 11
7
13 12 8
5 14
15
4
4 7 10
Solución:
Iteración Nodos j
i 2 3 4 5 6 7 8 9 10 11 mínimo
0 6 ∞ 5 ∞ ∞ ∞ ∞ ∞ ∞ ∞ 4
8
A U D d n l eti ies l m t r na i ao no r c d i o
e = e m( e ;+tjq t )i ie qu n q t ue i u mq e pe tu tao ea s t o a
t p e p em a e r l r mp m j o a r a n a n e l e n
Así,
(nota: obsérvese que la distancia entre dos nodos que no están conectados directamente,
se toma como su valor ∞)
Iteración Nodos j
i 2 3 4 5 6 7 8 9 10 11 mínimo
0 6 ∞ 5 ∞ ∞ ∞ ∞ ∞ ∞ ∞ 4
1 6 18 - ∞ ∞ 20 ∞ ∞ ∞ ∞ 2
9
La menor etiqueta temporal corresponde al valor 6 del nodo 2, que pasa a permanente,
marcada en negrita, y no vuelve a considerarse. Se actualizan ahora las etiquetas
temporales de los restantes nodos, iteración 2,donde ahora la última etiqueta
permanente es la 2ª, y se reitera el procedimiento hasta que se asigna como etiqueta
permanente al nodo destino. Después de nueve iteraciones se obtiene la tabla final
siguiente:
Iteración Nodos j
i 2 3 4 5 6 7 8 9 10 11 mínimo
0 6 ∞ 5 ∞ ∞ ∞ ∞ ∞ ∞ ∞ 4
1 6 18 - ∞ ∞ 20 ∞ ∞ ∞ ∞ 2
2 - 18 - 18 ∞ 20 ∞ ∞ ∞ ∞ 3
3 - - - 18 29 20 ∞ ∞ ∞ ∞ 5
4 - - - - 27 20 26 27 ∞ ∞ 7
5 - - - - 27 - 26 27 24 ∞ 10
6 - - - - 27 - 26 27 - 38 8
7 - - - - 27 - - 27 - 33 6
8 - - - - - - - 27 - 33 9
9 - - - - - - - - - 33 11
E(J) 6 18 5 18 27 20 26 27 24 33
que contiene la fila E(j) de etiquetas permanentes de cada nodo y constituyen las
distancias mínimas del nodo origen a cada nodo j de la red. En particular, como E(11)=
33, ésta es la distancia mínima buscada. Falta determinar el camino asociado a esta
longitud mínima. Para ello, se parte del nodo destino y se va formando hacia atrás el
camino de arcos que cumplen la condición de que la diferencia entre sus etiquetas
permanentes sea igual a la longitud del arco (arista) que los une. Así, se tienen
E(11)-E(8) = 33 - 26 = 7 = d8,11
E(8)-E(5) = 26 - 18 = 8 = d58
E(5)-E(2) = 18 - 6 = 12 = d25
E(2)-E(1) = 6 - 0 = 6 = d12
10
Se puede observar que existe un camino mínimo alternativo determinado por
1 2 5 9 11
6 7 3
10
5
7
3
Se desea:
a) Determinar los caminos mínimos de la localidad 1 a las restantes
localidades. Resolverlo utilizando el algoritmo de Dajkstra.
b) Idem, pero suponiendo que los arcos de la red son aristas.
c) Determinar en b) el camino mínimo de la localidad 1 a un punto x situado a
2.5 km de 3 en la carretera de 3 a 6, Idem, si x estuviera a 3.5 km de 3.
Solución:
a) Aplicando el algoritmo de Dijkstra, se designa con e(j) la etiqueta temporal del nodo
j. Se comienza asignando al origen (1) etiqueta permanente igual a 0, ya al resto de
nodos j, etiquetas temporales iguales a la distancia directa del nodo 1 a j. Estas
vienen dadas por
11
Iteración Nodos j
i 2 3 4 5 6 7 mínimo
0 6 11 3 ∞ 14 18 4
1 5 11 - 6 14 18 2
2 - 9 - 6 14 18 5
3 - 8 - - 14 18 3
4 - - - - 12 18 6
5 - - - - - 15 7
E(j) 5 8 3 6 12 15
La fila E(j) contiene las etiquetas permanentes de cada nodo y, por tanto, las distancias
mínimas del nodo origen a cada nodo j de la red. Para determinar el camino mínimo del
nodo origen a los restantes nudos, se parte de cada uno de los nodos destinos y se forma
los respectivos caminos con arcos que cumplen la condición de que la diferencia entre
sus etiquetas permanentes sea igual a la longitud del arco que los une. Así, para el nodo
7 se tiene
1 4 2 1 4 5 3
1 4 1 4 5
1 4 5 3 6 1 4 5 3 6 7
12
0
8
3 3
1
3
4
2
4
2 5 2
12 6 6
3 15
5
7
3
b) Para la misma red, pero suponiéndola con aristas en vez de arcos, la aplicación del
algoritmo de Dijkstra conduce a la tabla siguiente
Iteración Nodos j
i 2 3 4 5 6 7 mínimo
0 6 11 3 ∞ 14 18 4
1 5 11 - 6 14 18 2
2 - 9 - 6 14 18 5
3 - 8 - - 13 16 3
4 - - - - 12 8 7
5 - - - - 11 - 6
E(j) 5 8 3 6 11 8
1 4 2 1 4 5 3
1 4 1 4 5
1 4 7 6 1 4 7
13
c) Para la red no dirigida, se ha obtenido las etiquetas permanentes E(3) = 8 y E(6) =
11. Evidentemente un punto x situado a 2.5 km de la localidad 3 estará a 1.5 km de
la 6. Entonces, como
la distancia mínima del nodo origen a x será 10,5 km, siendo el camino mínimo
1 4 5 3 x
Si ahora x estuviera a 3.5 km de la localidad 3, x estará a 0.5 km de 6 y, por tanto
E(3) + 3.5 = 11.5 = E(6) + 0.5
siendo los caminos 1 4 5 3 x ,y
1 4 7 6 x de igual longitud, 11.5 km.
11 1 3
3 14 18
6 2 4
4
4
2 2 5
6 7 3
10
5
7
3
Solución:
Se desea determinar el camino desde el nodo 1 a cada uno de los restantes nodos, de
modo que la máxima altura sea la menor posible. Formalmente, la altura de cualquier
ruta será el máximo de los números de esa ruta. El problema es similar al considerado
en el problema del camino mínimo, salvo que aquí, para la actualización de las etiquetas
temporales, se reemplaza la suma de pares de números por el máximo.
El algoritmo comienza asignando etiqueta permanente igual a 0 al nodo origen
(1) y el resto de nodos j, etiquetas temporales iguales a la altura máxima entre el nodo
1 y el j, es decir
14
e(5) = min {∞, max {3, 3}} = 3
e(6) = min {14, max {3, ∞}} = 14
e(7) = min {18, max {3, ∞}} = 18
Iteración Nodos j
i 2 3 4 5 6 7 mínimo
0 6 11 3 ∞ 14 18 4
1 3 11 - 3 14 18 2
2 - 4 - 3 14 18 5
3 - 3 - - 14 10 3
4 - - - - 4 10 6
5 - - - - - 4 7
E(j) 3 3 3 3 4 4
La fila E(j) contiene las etiquetas permanentes de cada nodo y, por tanto, las mínimas
alturas máximas del nodo origen a cada nodo j de la red. Para determinar el camino de
mínima altura del nodo origen a los restantes nodos, se parte de cada uno de los nodos
destino y se forman hacia atrás los respectivos caminos con arcos que cumplen la
condición de que la etiqueta permanente del nodo del extremo inicial del arco y su
medida sean menores o iguales que la etiqueta permanente del extremo final. Aplicando
este procedimiento obtenemos el árbol de alturas mínimas que se muestra en la figura y
que también contiene la etiqueta permanente de cada nodo (en negrita).
0
3
3 3
1
3
4
2
4
2 3 2
4 6 3
3 4
5
7
3
15
Otras aplicaciones
Otra versión del problema de la ruta más corta es encontrar las rutas más cortas
del origen a todos demás nodos. Nótese que el algoritmo obtiene las rutas más cortas a
cada nodo que está más cerca del origen que del destino. Entonces, si todos los nodos
son destinos potenciales, la única modificación que se necesita es que el algoritmo no se
detenga, hasta que todos los nodos se hayan resuelto.
Otra versión aún más general del problema de la ruta más corta es encontrar la
ruta más corta desde todos los nodos a todos los demás nodos. Otra opción es eliminar
la restricción de que las "distancias" (valores de los arcos) sean no negativas. Se pueden
poner también restricciones sobre las trayectorias que se pueden seguir. Todas estas
variaciones surgen en ocasiones en la práctica y por esto han sido estudiadas por los
investigadores.
Solución:
9 2
5
1
4
7
6
3
Reiterando el procedimiento llegamos, en siete iteraciones, a determinar el árbol de
máximo alcance cuya longitud L* = 31. La tabla siguiente recoge las iteraciones del
algoritmo
17
7 {1, 2, 3, 4, 5, 6, 7} 5 6-3
Σ = 31
9 2
5 5
5
1
4
3 7
4
5
6
3
Elegimos arbitrariamente un nodo, por ejemplo 1, que incluimos dentro del conjunto de
nodos conectados, y lo indicamos marcando su fila ( ). Tachamos su columna y
determinamos el menor valor de la fila del nodo 1, que corresponde al valor 9 bajo la
columna del nodo 2. Marcamos el valor 9, negrita, y aparecen así conectados los nodos
1 y 2.
2 3 4 5 6 7
1 9 18 11
2 5 7
3 5
4 5 5
5 7 5 3 8
6 5 3 4
7 8 4
18
3 4 5 6 7
1 18 11
2 5 7
3 5
4 5
5 5 3 8
6 5 3 4
7 8 4
3 5 6 7
1 18
2 7
3 5
4 5
5 3 8
6 5 3 4
7 8 4
1 2 3 4 5 6 7
1 9 18 11
2 9 5 7
3 18 5
4 11 5 5
5 7 5 3 8
6 5 3 4
7 8 4
Hasta
Desde 1 2 3 4 5 6 7 8
19
1 - 28 26 41 30 17 19 52
2 28 - 21 17 26 31 18 40
3 26 21 - 27 21 25 26 18
4 41 17 27 - 15 52 36 61
5 30 26 21 15 - 70 81 77
6 17 31 25 52 70 - 66 69
7 19 18 26 36 81 66 - 12
8 52 40 18 61 77 69 12 -
S desea tender la línea de manera que haya una conexión con cada centro, pero sin
ciclos. ¿Cuál es el tendido de línea entre los centros más económico?
Solución
Aplicamos el algoritmo de Kruskal, partiendo del nodo 1. La tabla muestra las
iteraciones del método
20
desde la entrada del parque ( nodo O) al mirador ( nodo T), de manera que el número
de viajes diarios sea máximo.(Cada autobús regresará por la misma ruta que tomó de
ida, por lo que el análisis se hará sólo sobre los viajes de ida). Los límites superiores
impuestos estrictos sobre el número de viajes de ida permitidos en cada dirección para
cada ruta individual, se reflejan en la siguiente figura:
3
0 A 0
1 T
5 0 9
1 0
7 0 4 0
O B D
2
4 5 1
0 1
0
0 C E 6
4 0
Para que el problema propuesto del parque se ajuste al formato de red dirigida,
cada ligadura de la figura anterior con 0 en un punto terminal se sustituirá por un arco
dirigido en la dirección factible. Por ejemplo, la ligadura entre los nodos O y B se
sustituye por un arco dirigido del nodo O al nodo B con una capacidad de 7, mientras
que las ligaduras con 1 en los extremos (AB, DE) se sustituyen por un par de arcos
dirigidos en direcciones opuestas, cada uno con capacidad de 1. En el resto de las
ligaduras se realizan los cambios de igual forma.
21
que es mucho más eficiente que el anterior. Este algoritmo se basa en dos conceptos
intuitivos, el de una red residual y el de una trayectoria aumentada.
En principio, la red residual difiere de la red original sólo en que cada arco
dirigido (i →j) que no tiene un arco dirigido en la dirección opuesta (j →i) ahora se le
agrega con capacidad cero. Después, las capacidades de los arcos en la red residual
(llamadas capacidades residuales )se ajustan de la siguiente forma. Cada vez que se
agrega una cantidad de flujo ∆ aun arco i →j en la red original, la capacidad residual
del arco i →j se disminuye en ∆, pero la capacidad residual del arco j → i se aumenta en
∆. Así, la capacidad residual representa la capacidad del arco que no se usa en la red
original o la cantidad de flujo en la dirección opuesta en esta red que se puede cancelar
( o una combinación de ambas, si la red original tiene arcos en las dos direcciones).
Así, después de asignar los diferentes flujos a la red original, la red residual muestra
qué tanto más se puede hacer ya sea aumentando más los flujos o cancelando los que se
asignaron antes.
Una trayectoria aumentada es una trayectoria dirigida del nodo fuente 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 aumentada porque representa la cantidad de flujo
que es factible aumentar en toda la trayectoria. Por lo tanto, cada trayectoria aumentada
proporciona una oportunidad de aumentar más el flujo a través de la red original.
22
3. Se disminuye en c* la capacidad residual de cada arco en esta trayectoria
aumentada. Se aumenta en c* la capacidad residual de cada arco en la dirección
opuesta en esta trayectoria. Se regresa al paso 1.
Iteración 1: con respecto a la última figura, una de las trayectorias posibles aumentadas
es O→B→E→T que tiene la capacidad residual igual al mínimo {7, 5, 6} = 5. Si se
asigna un flujo de 5 a esta trayectoria, la red residual que resulta es :
3
0 A 0 5
1 T
5 0 9
1 5
2 5
5 4 0
O B D
2
4 0 1
0 1
5
0 C E 1
4 0
23
0
3 A 3 8
1 T
2 3 6
1 5
2 5
8 4 0
O B D
2
4 0 1
0 1
5
0 C E 1
4 0
0
4 A 6 11
0 T
1 3 3
2 5
0 7
11 1 3
O B D
2
4 0 1
0 1
5
0 C E 1
4 0
0
4 A
0 7 T 13
1 3 2
0 7 2 6
13 O B 1 3 D
2
2 0 2
0 0
5
2 C E 0
2 2
24
Iteración 7: se asigna un flujo de 1 a la trayectoria aumentada O→C→E→B→D→T. La
red residual resultante es:
0
4 A 8 14
0 T
1 2 3 1 6
14 0 7 0 4
O B D
1 2 1 2
0 0
3 C 4 0
E
1 3
A
14
4 3 8 T
1
14 7 4
O B D
6
4 1
3
C E
3
25
determinan todos 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 positiva. Esto se
repite con los nuevos nodos conforme se van alcanzando. 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 positiva. Este
procedimiento de abanico siempre identificará una trayectoria aumentada, si existe,
desde el origen al destino, con capacidad de flujo positiva. Supongamos ahora la red
residual obtenida después de la iteración 6, y utilizando el procedimiento de abanico se
encuentra una nueva trayectoria aumentada, que se indica en la siguiente figura:
0
4 A
0 7 T
1 3 2
0 7 2 6
O B 1 3 D
2
2 0 2
0 0
5
2 C E 0
2 2
26
3
0 A 0
1 T
5 0 9
1 0
7 0 4 0
O B D
2
4 5 1
0 1
0
0 C E 6
4 0
Se trata del cuarto tipo de problema señalado anteriormente, el cual presenta una
posición medular entre los modelos de óptimización de redes, por dos razones; la
primera porque abarca una clase amplia de aplicaciones ( además son casos particulares
del mismo, los problemas de transporte, asignación, transbordo, ruta más corta y el del
flujo máximo); la segunda porque el algoritmo simplex en redes que emplea es muy
eficiente. Se trata entonces de un problema general, en el cual se considera el flujo a
través de una red con capacidades limitadas en sus arcos ( como ocurría en el problema
del flujo máximo); se considera también un costo (o distancia) para el flujo a través de
un arco (como en el problema de la ruta más corta); también considera varios orígenes y
varios destinos para el flujo, con costos asociados ( como en el problema de transporte o
en el de asignación); y por último, puede considerar, al igual que el problema de
transbordo, varios nodos intermedios ( o nodos de transbordo). De ahí, que los citados
problemas sean casos especiales del problema del flujo de costo mínimo, problema que
se va a analizar a continuación.
FORMULACION
Considérese una red conexa dirigida con m nodos ( con al menos un nodo origen
y al menos un nodo destino) y n arcos dirigidos. Luego tenemos los siguientes
conceptos:
27
• Las variables de decisión son xij , donde representa el flujo a través del arco de i a j
• uij es la capacidad máxima de flujo permitido a través del arco de i a j
• cij costo de distribución de una unidad de i a j
• bi es el flujo neto generado en el nodo i. El valor de bi , depende de la naturaleza del
nodo i, es decir:
bi >0 , si i es un nodo fuente (origen) o sea, el nodo i representa los recursos
disponibles de un artículo.
bi < 0, si i es un nodo demanda (destino), o sea, la demanda requerida del
artículo en el destino i.
bi = 0 , si i es un nodo de transbordo ( intermedio), es decir, no se dispone ni
demanda ningún artículo en el nodo i
Luego “el problema del flujo con costo mínimo” se puede enunciar como,
minimizar el costo total de distribución de los recursos disponibles a través de la red
para satisfacer la demanda dada.
m m
Min ∑∑c i=1 j=1
ij x ij
m m
Sujetoa ∑x
j=1
ij - ∑x
k =1
ki = b i; i = 1, . . . , m
xij ≥ 0 ∀i, j = 1, . . . . . . m
NOTA: Vamos a considerar en principio que los flujos son simplemente no negativos.
Posteriormente se generalizará, o sea, consideremos que son lij ≤ xij ≤ uij , es decir los
arcos pueden tener una capacidad mínima y máxima ( ambas positivas).
La primera suma en las restricciones de los nodos representa “ el flujo total que
sale” del nodo i, mientras que la segunda suma representa “ el flujo total que entra en el
nodo i, así, la diferencia es el flujo neto bi generado en este nodo.
28
m
∑b =
i=1
i 0 ( O sea que la oferta total debe ser igual a la demanda total)
4
1
4
aij = ei - ej
a) Rango de la matriz A
Como la suma de todas las filas dan lugar a un vector nulo, esto indica que la
matriz A no es de rango completo, pudiendo encontrarse una matriz cuadrada de
dimensión ( m-1)(m-1) con determinante no nulo, lo que indica que el rango de la
matriz A es m-1, es decir, las variables básicas son m-1. Luego teniendo en cuenta los
29
conceptos vistos anteriormente en el problema de transporte, se puede obtener de la
misma forma un árbol de mínima expansión que tiene m-1 arcos, es decir, es una
gráfica conexa donde no existen ciclos y donde en cada fila y en cada columna existe al
menos una celda básica, entonces de la misma forma como se demostró en el problema
de transporte implica que existe una solución básica, ya que la existencia de una árbol
de mínima expansión implica la existencia de una solución básica, y viceversa. Sin
embargo el hecho que exista una solución básica no nos asegura que la misma sea
factible. Por ejemplo sea una base B:
raiz
4
1
4
B = (a13 , a24 , a34 , e4 ) y las variables básicas son (x13 , x24 , x34 , x5 )t
2
1 4
4
3
30
x5 es la variable artificial.
TEOREMA.
Una base para “un problema de flujo con costo mínimo” está caracterizada por un
árbol de expansión enraizado y todo árbol de expansión enraizado es una base
triangular inferior, o sea toda base es triangular. Aunque lo damos sin demostración,
en el ejemplo anterior se probó la certeza de este teorema.
Además como los coeficientes de la matriz B son +1, -1 ó 0, luego si son enteros
los bi , entonces la solución es entera.
Por último, al estar formada la matriz A por componentes +1, -1 y 0, o
sea es unimodular, luego, las componentes del vector yij está formado por +1, -1 ó 0,
ya que yij = B-1 aij . Sin embargo los coeficientes se pueden determinar al formar el
ciclo (un arco no básico en función de los arcos básicos que forman el ciclo), veamos
el ejemplo siguiente:
2
1 4
4
3
Los arcos que están en sentido contrario al arco no básico tienen como
coeficiente de representación un +1, mientras que los del mismo sentido tienen un -1,
ya que:
Por ejemplo :
Los pasos a desarrollar son los mismos que se efectúan en el método simplex
ordinario, es decir, dada una solución básica factible inicial, se comprueba si la misma
es la solución óptima, para lo cuál se determinan los zij - cij correspondientes a las
variables no básicas, y si zij - cij ≤ 0 ( en un problema de minimización) , la solución
31
básica actual será entonces óptima; en caso contrario entra en la base xij (la que tenga la
mayor diferencia), y se determina la variable básica de bloqueo que saldrá de la base,
pivoteándose a continuación, y así hasta que todos los sean zij - cij ≤ 0 . Veamos a
continuación un ejemplo ilustrativo que nos va a mostrar los pasos a seguir. Sea el
problema de flujo con costo mínimo de la siguiente figura:
b2=5
cij
2 b4=-4
6
5
-4 b3=1
b1=2 -2 4
1
3 0 4
4
5 2 3
5
Como se observa ∑bi= 0
i=1
⇒ ∃ una solución básica factible, condición
5
establecida anteriormente para la existenciab de =-4una solución factible. (que la demanda
5
total sea igual a la oferta total). Luego si la matriz A es:
Como el rango es m-1, entonces una base tiene m-1 = 5-1 = 4 variables
legítimas, pero como se necesita una base de rango completo, se utiliza una variable
artificial x5 con el vector asociado e5 en un espacio euclidiano E5 , para constituir la
citada base de rango completo. Sea la siguiente base:
1 0 0 0 0 x15 b1 2
0 1 0 0 0 x23 b2 5
0 -1 1 0 0 x34 = b3 = 1
0 0 -1 1 0 x45 b4 -4
-1 0 0 -1 1 x5 b5 -4
Como se puede observar la matriz básica es una matriz triangular inferior, que se
resuelve fácilmente, obteniéndose el siguiente resultado:
x15 = b1 = 2
x23 = b2 = 5
-x23 + x34 = b3 = 1 ⇒ x34 = 1 + 5 = 6
-x34 + x45 = b4 = -4 ⇒ x45 = 6 - 4 = 2
-x15 - x45 + x5 = b5 = -4 ⇒ x5 = 0b2(=5la variable artificial x5 siempre va a ser
nula).
2
Supongamos ahora el árbol de expansión enraizado correspondiente a la base anterior
b4=-4
b1=2 b3=1 4
1
3 4
5
32 b5=-4
5
b1=2 1
x15soluciones:
Se obtienen las siguientes
⇒ x15 = b1 = 2
b2=5
2
⇒ x23 = b2 = 5
x23
x23 =5
⇒ x34 - x23 = b3 = 1 ⇒ x34 = 1 +x23 = 1+5 = 6
b3=1 3 x34
b4=-4
x34 =6
4 x45 - x34 = b4 = -4 ⇒ x45 = -4 +x34 = -4+6 = 2
4
x45
x15 =2 x45 =2
33
Cálculo de los zij - cij
4
1
3 4
5
5
NOTA. El arco no básico se establece con el sentido del arco que inicialmente estaba
establecido en el esquema inicial (5,3), es decir del nodo 5 al nodo 3.
Luego al existir cinco restricciones el problema dual tendrá 5 variables duales, o sea:
34
= ( 2, -4, 0 , 3 , 0 )
2
-2
-2
-4 w3=3
w1=2 1 4 w4=3
1
3 4
-7
5
w5=0 5
Como z13 - c13 = 1 > 0 es la mayor diferencia, y teniendo en cuenta que las componentes
del vector y13 son +1 para los arcos básicos que tienen el sentido contrario al arco no
básico (1,3) del ciclo , mientras que los que tienen el mismo sentido el componente es
-1 ( 0 para los que están fuera del ciclo), entonces al incrementarse la variable no básica
x13 desde su valor cero, las componentes básicas que tienen como componente +1
35
disminuirán , las que tienen la componente -1 se incrementarán , mientras que las que
las que tienen el valor 0, permanecerán con el valor actual, es decir, las componentes de
la variable básica se modificarán según la conocida ecuación siguiente:
xB = { xij} − y13 . ∆
Donde ∆ es el mínimo valor de las variables básicas que tienen como coeficiente
+1, cantidad que va a tomar la nueva variable básica x 13 y cantidad que incrementará a
las variables básicas con coeficiente -1 , mientras que disminuirá a las con coeficiente
+1, quedando por último la variable de bloqueo ( la que sale), con valor 0, es decir
saliendo de la base. El proceso anterior se ilustra en la siguiente figura:
2
No cambia
x23 =5
+∆ x34 =6 4
1 3
+∆ 4
+∆
-∆ x45 =2
x15 =2
5
5
No cambia
Como se puede observar los vectores básicos del ciclo con componente +1 , restaran de
la correspondiente variable básica ∆, decir figuran en el ciclo con -∆, o sea sólo x15 =2
∆ = mínimo 2 = 2
x45 =4
5
5
x5=0
36
Ahora habría que comprobar si la solución presente es óptima. En caso contrario
el proceso se continuaría del mismo modo señalado anteriormente.
Ejemplo ilustrativo del método simplex para redes
-5 3
3
-1
7
Sea una matriz básica de rango completo ( recordar que el rango de A es m-1, luego
para que sea de rango completo debe de elegirse una variable artificial para lograrlo,
como se ha visto anteriormente ) de la siguiente forma:
Vamos a utilizar el siguiente ordenamiento para ejecutar los pasos de realización del
método simplex para redes:
2
-6 -2
0 -2
2 2 OPTIMO
-5
4 0
5
3 -5
Luego la solución óptima es:
x13 = 4 ; x23 = 2 ; x34 = 5 ; y el resto de xij = 0 ; mientras que z* = -5.4+6.2+3.5=-7
Determinación de una solución básica factible.
37
±
1
±1
A . b
.
±
1
0 ± ±1 . . ± 0
1 1
Se añade una columna artificial por cada fila de A, donde la i-ésima columna
artificial es ± ei dependiendo del signo de bi (es decir, + ei si bi > 0; - ei si bi < 0 en
caso contrario). Asimismo se añade una fila redundante dada por el negativo de la suma
de las filas de la matriz A “extendida” ( la que se obtienen al añadir las columnas
citadas).
Puesto que ahora cada columna de la matriz nueva, tiene exactamente un +1 y
un -1, se puede considerar como una matriz de incidencia nodo-arco de una gráfica.
Esta “nueva gráfica” tiene los nodos y arcos iguales que la gráfica original. Además
tiene un nuevo nodo y m nuevos arcos ( un arco entre cada nodo original y el nuevo
nodo ). Luego una base factible para este nuevo problema está dada por m variables
(arcos) artificiales más una variable (raíz) artificial para la nueva fila (m+1).
Se puede aplicar entonces el método de penalización o el de dos fases, para
eliminar las variables artificiales de la base y el nodo (m+1) y utilizar los arcos
originales (variables) y una variable artificial (raíz) en el nodo m.
NOTA: si se utiliza el método d e de la fase I, los costos de las variables
artificiales es igual a 1, mientras que para las restantes (legítimas) tienen un costo 0. En
el método de penalización las variables artificiales tienen un costo M >> 0 y las
restantes el costo real. El problema anterior se desarrolla de la siguiente forma:
1
b1=4 4
1 0 0
4
b4=-5
0
b3=-1 3
38
O sea el problema en la fase I, mientras que una solución factible se muestra en
la siguiente figura:
4
1
4
La resolución se efectúa de una forma similar a cuando se tiene que una variable
es no negativa. Para ello se tiene que una solución básica factible, el valor de las
componentes básicas tiene que estar comprendido entre sus límites superiores e
inferiores, mientras que las variables no básicas tienen asignado el valor o bien en su
límite inferior o bien en su limite superior ( recordar el método simplex para variables
acotadas ). Conviene decir que las cotas inferiores y superiores no tienen efecto sobre el
cálculo de las variables duales y de los valores zij - cij . Sin embargo, el criterio de
optimalidad cuando existen cotas superiores e inferiores se alcanza cuando para todas
las variables no básicas se cumple:
si para todo xij = uij .⇒ zij - cij ≥ 0 y para todo xij = lij .⇒ zij - cij ≤ 0
-∆ -∆
∆ ∆
∆ ∆
∆ -∆
-∆ ∆
-∆ ∆
(b)Cuando xij es
39
decreciente
(a)Cuando xij es creciente
Para calcular el valor crítico de ∆, se examinan las variables básicas crecientes al igual
que las decrecientes, y la posibilidad de que xij ( variable no básica entrante) pueda
alcanzar su otra cota. Si ocurre la última posibilidad, la variable xij permanece no básica
( en su otra cota) y todas las variables básicas en el ciclo se ajustan de manera
congruente. En caso contrario, la variable no básica entra y alguna variable básica sale
en una u otra de sus cotas, y todas la variables del ciclo se ajustan de manera acorde, es
decir , aumentan o disminuyen la citada cantidad . En clase desarrollaremos diferentes
ejemplos ilustrativos para aclarar el procedimiento de resolución.
Aplicación del problema general de redes para resolver los casos particulares.
40
41