P R O B L E MA S

de
FLUJO en REDES
PROBLEMAS DE FLUJO EN REDES.
Introducción.
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.
En concreto, los problemas de transporte, asignación y de transbordo, así como
otros , como veremos posteriormente, son también casos particulares del problema de
flujo con coste mínimo, que es un problema general de redes, tienen un algoritmo
propio debido a las estructuras especiales de los mismos, debido a que son más
eficientes, no sólo ya respecto del método simplex general (al tratarse todos ellos de
problemas de programación lineal), sino también respecto al citado algoritmo del
problema de flujo con coste mínimo (del que son casos particulares).
La importancia de considerar el problema general de redes, es que debido a la
estructura especial, permite la simplificación del procedimiento simplex general hasta el
punto en el que se puede aplicar directamente a la red sin necesidad de un tabló
simplex.
Se van a presentar las bases de la metodología de redes, teniendo en cuenta para
ello los conceptos ya contemplados en el problema de transporte. Sin embargo, se dará
una introducción a cinco tipos importantes de problemas de redes y algunas ideas
básicas sobre cómo resolverlos. Los tres primeros tipos de problemas, el problema de la
ruta más corta, el problema del árbol de mínima expansión (o también llamado
problema de recorrido mínimo) y el problema del flujo máximo, tienen una estructura
específica que surge con frecuencia en la práctica.
El cuarto tipo, el problema de flujo de costo mínimo, proporciona un enfoque
unificador de muchas otras aplicaciones por su estructura mucho más general. De
hecho, esta estructura es tan general que incluye como casos especiales los problemas
de transporte, asignación, transbordo (ya vistos), el problema de la ruta más corta y el
problema de flujo máximo. Este cuarto tipo, es decir, el problema más general de flujo
de costo mínimo se va estudiar detenidamente, que aunque se puede resolver por el
método simplex general al ser un problema de programación lineal, sin embargo debido
a su estructura especial, se resolverá en forma más eficiente mediante una versión
simplificada del citado método simplex, llamada método simplex de redes.
La planificación y control de proyectos es el último tipo de problemas que se
resuelve por medio de las técnicas de redes, en especial el PERT ("Program Evaluation
and Review Technique" o técnica de evaluación y revisión de programas) y el CPM
("Critical Path Method" o método de la ruta crítica). Aunque limitados a su área de
aplicación el PERT y el CPM han sido (y probablemente seguirán siendo) las técnicas
más ampliamente usadas en investigación de operaciones.
Se va proponer un ejemplo prototipo, que servirá para ilustrar los fundamentos
de los tres primeros tipos de problemas, así como la descripción de la terminología
2
básica para redes, que en parte ya ha sido definida anteriormente en el problema de
transporte.
Ejemplo prototipo.
Se trata de un parque que tiene una serie de paseos y campamentos, en donde no
se permite la entrada de automóviles, pero existe un sistema de caminos angostos para
autobuses y vehículos todo terreno conducidos por los guardabosques. En la figura
siguiente se muestra este sistema de caminos (sin curvas), en donde O es la entrada al
parque; las otras letras representan la localización de las casetas de los guardabosques (y
otras instalaciones de servicio), y donde los números representan las distancias en
kilómetros de estos caminos sinuosos.
O
A
B D
T
C E
2
2
5
4
1
7
4
3
4
1
5
7
El parque tiene un mirador a un hermoso paisaje en la estación T. Unos cuantos
autobuses transportan a los visitantes desde la entrada a la estación T y de regreso.
En el momento actual, el administrador del parque se enfrenta a tres problemas.
Uno consiste en determinar qué ruta, desde la entrada del parque a la estación T, es la
que tiene la distancia total más corta para la circulación de los autobuses. (Este es un
ejemplo del problema de la ruta más corta que se presentará).
El segundo problema reside en que deben de instalarse líneas telefónicas
subterráneas para establecer comunicación entre todas las estaciones (inclusive la
entrada). Como la instalación es cara y además perturba la ecología, se instalarán líneas
que siguen sólo los caminos necesarios para obtener comunicación entre cualquier par
de estaciones. La pregunta es por dónde deben tenderse las líneas para lograr esto con el
mínimo número total de kilómetros de cable instalado. ( Este es un ejemplo del
problema del árbol de mínima expansión o también llamado problema de recorrido
mínimo que se presentará).
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.
Antes de comenzar a describir los problemas anteriores, es necesario, describir
la terminología existente de redes, que se pasa a definir.
Una gráfica consiste de un conjunto de puntos y un conjunto de líneas que unen
ciertos pares de puntos. Los puntos se llaman nodos ( ó vértices); por ejemplo, la red de
la figura anterior tiene 7 nodos representados por círculos. Las líneas se llaman arcos (o
ligaduras, aristas o ramas); por ejemplo la figura anterior tiene 12 arcos que
corresponden a los 12 caminos del parque.
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 trayectoria ( del nodo i
o
al nodo i
p
) es una sucesión de arcos P = {(i
o
,i
1
),
(i
1
,i
2
), ..(i
p-1
,i
p
) ¦ en los que el nodo inicial de cada arco es el mismo que el nodo
terminal del arco que le precede en la sucesión. Así cada arco en la trayectoria está
dirigido "hacia i
p
" y "hacia afuera de i
o
".
Una cadena es una estructura similar a una trayectoria excepto que no todos los
arcos están necesariamente dirigidos hacia el nodo i
p
.
Un circuito es una trayectoria en la que i
o
= i
p
. Por lo tanto, un circuito es una
trayectoria cerrada.
5
Un ciclo es una cadena cerrada. Estos conceptos se reflejan en la siguiente figura:
Se puede decir también, que una trayectoria es una cadena, pero no
6
1
3
2
4
a)una trayectoria
1
3
2
4
b) una cadena
1
3
2
4
c)un circuito
1
3
2
4
d) un ciclo
1
3
2
4
e)un árbol
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.
Un árbol de expansión es un árbol que incluye a todos los nodos de la gráfica.
Como se puede observar en la figura e anterior, se ilustra un árbol de expansión;
asimismo las figuras a y b también son árboles de expansión, mientras que las figuras c
y d no son árboles. Como se verá posteriormente, un árbol de expansión está formado
por una red conexa para los n nodos que no contiene ciclos no dirigidos, y que tiene
exactamente (n-1) arcos, ya que este es el mínimo número de arcos necesarios para tener
una red conexa y el máximo número posible para que no haya ciclos no dirigidos. Como
se observará, los árboles juegan un papel clave en el análisis de muchas redes, ya que
por ejemplo, forman la base del problema del árbol de mínima expansión, o también,
que los árboles de expansión (factibles) corresponden a las soluciones básicas factibles
en el método simplex de redes, para resolver el problema de flujo de costo mínimo, que
se tratará posteriormente.
Será necesario introducir también la terminología adicional sobre los flujos en
redes. La cantidad máxima de flujo que puede circular en un arco dirigido se conoce
como capacidad del arco (o sea u
ij
) Entre los nodos, se pueden distinguir aquellos que
son generadores de flujo, absorbedores netos o ninguno de los dos. Un nodo fuente (o
nodo origen) tiene la propiedad de que el flujo que sale del nodo excede el flujo que
entra a él. El caso inverso es un nodo demanda (o nodo destino), en el que el flujo que
llega excede del que sale del nodo. Un nodo de transbordo ( o nodo intermedio)
satisface la conservación del flujo, así el flujo que entra es igual al que sale.
Por último, a la cantidad de flujo que circulará por cada arco (i,j) se le
denominará por x
ij
(variable), mientras que el costo unitario de cada una de las variables
por c
ij
.
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.
El problema de la ruta más corta .
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.
Vamos a describir un algoritmo que nos permite obtener la ruta má corta,
utilizamos para ello diferentes ejemplos ilustrativos.
Algoritmo de Dijkstra.
Para el problema de la ruta más corta o también denominado problema del
camino mínimo, es decir, el camino de longitud mínima entre un nodo origen y otro de
destino de la red, vamos a exponer el algorítmo de Dijkstra, que es muy eficiente y
válido tanto para redes dirigidas o no dirigidas, que permite determinar los caminos de
longitud mínima de un nodo origen a “todos” los nodos de una red. Se obtiene una
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.
Se desea determinar el camino más corto de la ciudad 1 a la 11:
Solución:
A) Mediante la aplicación del algoritmo de Dijkstra.
El algoritmo consiste en determinar etiquetas ( que expresan distancias) en cada
nodo, las cuales son consideras inicialmente temporales, pero cuando se hacen
permanentes ya no varían su valor.
Se comienza asignando etiqueta permanente igual a 0 al nodo origen (1), ( es
decir, e(1)=0) y etiquetas temporales e(j) iguales a la distancia respectiva directa d
1j
para los restantes nodos j=2,….,11. Estas se recogen en la tabla:
Iteración
i 2 3 4 5 6
Nodos
7 8 9 10 11
j
mínimo
0 6

5
∞ ∞ ∞ ∞ ∞ ∞ ∞
4
La menor etiqueta temporal, e(4)=5, pasa a permanente y no vuelve a considerarse, ya
que ésa es la distancia mínima del nodo origen al nodo 4. A continuación se actualiza
las etiquetas temporales de los nodos j que no hayan recibido aún etiqueta permanente
según la fórmula siguiente:
8
2 5
3
8
9 6
4 7 10
1 11
5
6 9
13
12
11
12
15
8
18
7
9
5 6
7
8
14
4
12
e ( j ) = m i n i m o
A n t e r i o r
e t i q u e t a
t e m p o r a l
;
U l t i m a
e t i q u e t a
p e r m a n e n t e
+
D i s t a n c i a d e l n o d o
q u e p a s o a e t i q u e t a
p e r m a n e n t e a l j
|
.

`
,

¹
'
¹
¹
¹
|
.

`
,

|
.

`
,

¹
'
¹
¹
¹
Así,
e(2) = min{6;5+∞} = 6 e(8) = min{∞;5+∞} = ∞
e(3) = min{∞;5+13} = 18 e(9) = min{∞;5+∞} = ∞
e(10) = min{∞;5+∞} = ∞
e(5) = min{∞;5+∞} = ∞ e(11) = min{∞;5+∞} = ∞
e(6) = min{∞;5+15} = 20
(nota: obsérvese que la distancia entre dos nodos que no están conectados directamente,
se toma como su valor ∞)
lo que lleva a la tabla siguiente:
Iteración
i 2 3 4 5 6
Nodos
7 8 9 10 11
j
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
i 2 3 4 5 6
Nodos
7 8 9 10 11
j
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 = d
8,11
E(8)-E(5) = 26 - 18 = 8 = d
58
E(5)-E(2) = 18 - 6 = 12 = d
25
E(2)-E(1) = 6 - 0 = 6 = d
12
La siguiente figura muestra el camino mínimo y los etiquetados permanentes al
lado de cada nodo permitiendo comprobar fácilmente la rutina anterior.
El camino mínimo anterior es
10
1 2 5 8 11
6 18 26
2 5
3
8
9 6
4 7 10
1 11
5
6 9
13
12
11
12
15
8
18
7
9
5 6
7
8
14
4
33 18 0
27 27
5 20 24
12
6
3
1
2
4
5
7
5
11
18 14
10
6
3
4
2
7
3
3
5
4
2
Se puede observar que existe un camino mínimo alternativo determinado por
2. Camino más corto de una localidad a otras. La figura siguiente representa el
sistema de carreteras entre las diferentes localidades de una isla, con distancias en
km.
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
e (2) = 6, e (3) = 11, e (4) = 3, e (5) = ∞, e (6) = 14, e (7) = 18.
La menor, que corresponde al nodo 4, pasa a permanente y no se volverá a considerar,
ya que representa su distancia mínima desde el origen. Actualizamos las etiquetas
temporales que no hayan pasado a permanentes
e (2) = min { 6, 3+2 } = 5
e (3) = min { 11, 3+∞} = 11
e (5) = min { ∞, 3+3 } = 6
e (6) = min { 14, 3+∞ } = 14
e (7) = min { 18, 3+∞ } = 18
La menor vale 5 y corresponde al nodo 2. Esta pasa a ser permanente y no se volverá a
considerar. De nuevo, actualizamos las etiquetas temporales, teniendo
e (3) = 9, e (5) = 6, e (6) = 14, e (7) = 18
siendo la menor 6, que corresponde al nodo 5. Reiterando el procedimiento hasta
conseguir que todas las etiquetas sean permanentes, se obtiene en la siguiente tabla las
etiquetas temporales y permanentes (en negrita), de los nodos de la red.
11
1 2 5 9 11
Iteración
i 2 3
Nodos
4 5 6 7
j
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
E(7)- E(6) = 15 -12 = 3 = d
67
E(6)- E(3) = 12 -8 = 6 = d
36
E(3)- E(5) = 8 -6 = 2 = d
53
E(5)- E(4) = 6 -3 = 3 = d
45
E(4)- E(1) = 3 -0 = 3 = d
41
Se ha obtenido el camino mínimo , que
proporciona, además, los caminos mínimos a todas las localidades excepto a la 2. Para
determinar éste, se repite el proceso anterior partiendo de 2.
E(2)- E(4) = 5 -3 = 2 = d
42
E(4)- E(1) = 3 -0 = 3 = d
14
que proporciona el camino . Resumiendo, los caminos mínimos
desde 1 a cada nodo son
En la figura siguiente se muestra el árbol de caminos mínimos, en negrita, y al lado de
cada nodo aparece su etiqueta permanente ( distancia mínima de cada nodo al nodo 1).
12
1 4 5 3 6 7
1 4 2
1 4 5 3 6 7
1 4 2
1 4 1 4 5
1 4 5 3 6
1 4 5 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
i 2 3
Nodos
4 5 6 7
j
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
Los caminos mínimos desde el origen a cada nodo de la red son
El correspondiente árbol de caminos mínimos es
13
1 4 2
1 4 1 4 5
1 4 7 6
1 4 5 3
1 4 7
6
3
1
2
4
5
7
5
8
11 6
5
3
0
8
3
3
5
2
3
2
6
3
1
2
4
5
7
5
15
12 6
8
00
3
5
3
2
4
2
3
3
6
3
1
2
4
5
7
5
11
18 14
10
6
3
4
2
7
3
3
5
4
2
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
E(3) + 2.5 = 10,5 < 12.5 = E(6) + 1.5
la distancia mínima del nodo origen a x será 10,5 km, siendo el camino mínimo
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 , y
de igual longitud, 11.5 km.
3. Caminos de mínima altura. En la siguiente red los números representan máximas
alturas de montañas que se deben atravesar entre pares de localidades:
Se pide determinar los camino de mínima altura de la localidad 1 a las restantes
localidades.
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
e(2) = 6, e(3) =11, e(4) = 3, e(5) = ∞, e(6) = 14, e(7) = 18.
La menor, que corresponde al nodo 4, pasa a permanente y no se volverá a considerar,
ya que representa la altura mínima desde el origen. A continuación se actualizan las
etiquetas temporales que no hayan pasado a permanentes
e(2) = min {6, max {3, 2}} = 3
e(3) = min {11, max {3, ∞}} = 11
14
1 4 5 3 x
1 4 5 3 x
1 4 7 6 x
e(5) = min {∞, max {3, 3}} = 3
e(6) = min {14, max {3, ∞}} = 14
e(7) = min {18, max {3, ∞}} = 18
siendo la menor 3, que corresponde a los nodos 2 y 5. Se rompe el empate de forma
arbitraria ,tomando el 2, su etiqueta se pasa a permanente y no volverá a considerar. De
nuevo, se actualizan las restantes etiquetas temporales
e(3) =4, e(5) = 3, e(6) = 14, e(7) = 18.
Siendo la menor 3, que corresponde al nodo 5. Reiterando el procedimiento, se obtiene
la siguiente tabla donde se resumen las etiquetas temporales y permanente, en negrita,
de los nodos
Iteración
i 2 3
Nodos
4 5 6 7
j
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).
15
6
3
1
2
4
5
7
5
4
4 3
3
00
3
3
3
2
4
2
3
3
Otras aplicaciones
Antes de concluir la presentación del problema de la ruta más corta, es necesario
hacer hincapié en un punto. Hasta aquí, se ha descrito el problema en términos de
minimizar la distancia de un origen a un destino. Sin embargo, en realidad el problema
de redes que se estudia es el encontrar cuál es la ruta que conecta a dos nodos
específicos que minimiza la suma de los valores de las ligaduras sobre esta ruta. Por
ejemplo, las ramas pueden corresponder a actividades de algún tipo y los valores
asociados a cada una pueden representar el costo de esa actividad. Entonces, el
problema sería encontrar qué secuencia de actividades logra el objetivo específico de
minimizar el costo total relacionado. Otra posibilidad consiste en que el valor asociado
a cada ligadura sea el tiempo requerido en realizar esa actividad. En este caso se
desearía encontrar la secuencia de actividades que logra el objetivo específico de
minimizar el tiempo total requerido. Así, algunas de las aplicaciones más importantes
del problema de la ruta más corta nada tienen que ver con caminos en el sentido literal
de la palabra.
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.
Los algoritmos para una gran variedad de problemas de optimización de análisis
combinatorio- como los problemas de diseño de rutas de vehículos- con frecuencia
utilizan como parte de sus subrutinas, la solución de un gran número de problemas de la
ruta más corta. Puede decirse, que tal vez esta aplicación sea una de las más importantes
de este algoritmo.
Algoritmo de Kruskal.
Este algoritmo permite determinar el árbol de máximo alcance, o también llamado
problema de recorrido mínimo, es decir, el recorrido mínimo que permite comunicar a
todos los nodos de una red.
Se explicará el algoritmo a través de ejemplos de aplicación.
1. Arbol de máximo alcance. Determinar el árbol de máximo alcance para la
siguiente red de distribución en la que los números sobre las aristas representan
distancias.
16
3
1
2
6
4
7
55
9
11
18
5
3
4
8
5
7
5
a)Resolverlo utilizando el algoritmo de Kruskal, con el método gráfico.
b) Idem pero con el método tabular.
Solución:
a)Se consideran inicialmente el conjunto de nodos de la red que suponemos no
conectados o aislado y denominamos U = {1, 2, 3, 4, 5, 7}. Denotamos con C el
conjunto de nodos conectados, que inicialmente es vacio. Comenzamos tomando
arbitrariamente cualquier nodo de U, por ejemplo, el nodo 1, y lo incluimos dentro del
conjunto C excluyéndolo de U, es decir, C = {1} y U = {2, 3, 4, 5, 6, 7}. El nodo no
conectado más próximo a 1 es el 2, con distancia 9. Por tanto, actualizamos el conjunto
de nodos conectados a C = {1, 2} y el de no conectados a U = {3, 4, 5, 6, 7}. La figura
muestra estas dos primeras iteraciones
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
Iteración
Conjunto
de nodos
conectado
Longitud L
de la arista
elegida
Par de
nodos
conectados
0
φ
- -
1 {1} 0 -
2 {1, 2} 9 1-2
3 {1, 2, 4} 5 2-4
4 {1, 2, 4, 5} 5 4-5
5 {1, 2, 4, 5, 6} 3 5-6
6 {1, 2, 4, 5, 6, 7} 4 6-7
17
3
1
2
6
4
7
55
9
7 {1, 2, 3, 4, 5, 6, 7} 5 6-3
Σ = 31
El árbol de máximo alcance es
b) Para implementar el algoritmo en formato tabular, construimos la tabla de distancias
entre dos nodos, dejando vacías las posiciones de pares de nodos no conectados
mediante una arista.
Desde el Hasta el nodo
nodo 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
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
Tachamos a continuación la columna del nodo 2 y marcamos su fila. De nuevo, para la
tabla reducida en las columnas de los nodos 1y 2, determinamos el menor valor en
alguna de las filas marcadas. Corresponde al 5, negrita, de la columna 4.
18
3
1
2
6
4
7
55
9
5
3
4
5
5
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
Marcamos la fila del nodo 4 y prescindimos de su columna, quedando ahora conectados
los nodos 2 y 4.
3 5 6 7
1 18
2 7
3 5
4 5
5 3 8
6 5 3 4
7 8 4
De nuevo, para la tabla reducida de los nodos 1, 2 y 4, determinamos el menor valor en
alguna de la filas marcadas. Corresponde al 5, negrita, de la columna de nodo 5.
Marcamos la fila del nodo 5 y prescindimos de su columna, quedando ahora conectados
los nodos 4 y 5. Reiteramos el procedimiento y en siete iteraciones llegamos a la tabla
final
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
El coste total es C
*
= 9+5+5+3+5+4 = 31 y de la lectura a lo largo de las filas de la tabla
deducimos que conectamos (1,2), (2,4), (4,5), (5,6), (6,3) y (6,7).
2. Interconexión de nodos. Se desea comunicar mediante fibra óptica ocho centros de
investigación. El coste del sistema es función lineal de la longitud de la línea
tendida. La tabla siguiente recoge las distancias entre los centros.
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
Iter.
Conjunto
de nodos
conectados
Longitud L
del arco
elegido
Par de
nodos
conectados
0
φ
- -
1 {1} 0 -
2 {1, 6} 17 1-6
3 {1, 6, 7} 19 1-7
4 {1, 6, 7, 8} 12 7-8
5 {1, 2, 6, 7, 8} 18 7-2
6 {1, 2, 4, 6, 7, 8} 17 2-4
7 {1, 2, 4,5 6, 7, 8} 15 4-5
8 {1, 2, 3,4,5 6, 7, 8} 18 8-3
∑ = 116
El árbol de máximo alcance tiene una longitud 116 y las conexiones entre pares de
centros son
Del centro Al centro distancia Del centro Al centro Distancia
1 6 17 2 4 17
1 7 19 4 5 15
7 8 12 8 3 18
7 2 18
El problema del flujo máximo.
Recuérdese que el tercer problema que debe de resolver el administrador del
parque, durante la temporada alta es determinar las rutas de algunos viajes de autobús
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:
O
A
B D
T
C E
5
0
3
0 9
0
6
0
1
1
4 0
7 0
1
1
4
0
0
2
4 0
5
0
Como se observa los números próximos a los nodos (estaciones) indican el
límite máximo permitido desde el nodo hasta el próximo según el camino indicado. Así
por ejemplo, se permite un solo viaje al día desde la estación A a la estación B, pero
también un solo viaje al día desde la estación B hacia la estación A. Ahora teniendo en
cuenta los límites superiores se puede obtener, por ejemplo, una solución factible que
consiste en mandar 7 autobuses al día, 5 por la ruta O→B→E→T , 1 por la ruta
O→B→C→E→T y 1 por la ruta O→B→C→E→D→T . Sin embargo es susceptible
mejorar la solución anterior, considerando muchas combinaciones o rutas (y el número
de viajes asignados a cada una) para encontrar la o las que maximicen el número de
viajes al día. Este tipo de problemas se conoce como el problema del flujo máximo.
Pasemos a exponer formalmente el problema del flujo máximo. Considérese una
red dirigida y conexa que tiene un solo nodo origen y sólo un nodo destino, y el resto
son nodos de transbordo. Luego dada la capacidad en los arcos, el objetivo es
determinar el patrón factible que fluye a través de la red que maximiza el flujo total ,
desde el nodo origen al nodo destino.
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.
Como el problema del flujo máximo se puede formular como un problema de
programación lineal, entonces su resolución se puede realizar mediante el conocido
método simplex. Sin embargo, se dispone de un algoritmo de trayectorias aumentadas
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.
El algoritmo de la trayectoria aumentada selecciona repetidas veces alguna
trayectoria aumentada y agrega un flujo igual a su capacidad residual en la red original.
Este proceso continúa hasta que ya no hay trayectorias aumentadas, con lo que el flujo
del nodo origen al nodo destino no se puede aumentar. La clave para asegurar que la
solución final es necesariamente óptima es el hecho de que las trayectorias aumentadas
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 asignaciones de flujos.
Resumiendo , cada iteración del algoritmo consiste en los pasos siguientes:
Algoritmo para el problema del flujo máximo
1

1. Se identifica una trayectoria aumentada encontrando alguna trayectoria
dirigida del nodo origen al nodo destino en la red residual tal que cada arco
sobre esta trayectoria tiene capacidad residual estrictamente positiva. ( Si no
existe una, los flujos netos ya asignados constituyen un patrón de flujo
óptimo.)
2. Se identifica la capacidad residual c
*
de esta trayectoria aumentada
encontrando el mínimo de las capacidades residuales de los arcos sobre esta
trayectoria. Se aumenta en c
*
el flujo de esta trayectoria.
1
Se supone que las capacidades de los arcos son números enteros
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.
Al realizar el paso 1, con frecuencia habrá varias alternativa de trayectorias
aumentadas entre las cuales se podrá escoger. Posteriormente se describirá un
procedimiento sistemático para encontrar una trayectoria aumentadas. Sin embargo en
el problema que se va a resolver, la selección se hará en forma arbitraria.
Volviendo al problema del parque que se quiere resolver, se va mostrar cada
iteración la red residual después de completar los tres pasos, en donde se usa una sola
línea para representar el par de arcos dirigidos en direcciones opuestas entre cada par de
nodos. La capacidad residual del arco i →j se muestra junto al nodo i , mientras que la
capacidad residual del arco j →i se muestra junto al nodo j. Utilizando este formato, la
red que se muestra en la figura anterior es en realidad la red residual antes de asignar
ningún flujo. Después de algunas iteraciones, se muestran en negritas (junto a los
nodos O y T) la cantidad total de flujo que se logra.
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 :
O
A
B D
T
C E
5
0
3
0 9
0
1
5
1
1
4 0
2 5
1
1
4
0
0
2
4 0
0
5
5
5
Iteración 2: se asigna un flujo de 3 a O→A→D→T. La red resultante es la red residual :
23
O
A
B D
T
C E
2
3
0
3 6
3
1
5
1
1
4 0
2 5
1
1
4
0
0
2
4 0
0
5
8
8
Iteración 3: se asigna un flujo de 1 a la trayectoria aumentada O→A→B→D→T.
Iteración 4: se asigna un flujo de 2 a la trayectoria aumentada O→B→D→T. La red
residual de estas dos iteraciones resultante es:
O
A
B D
T
C E
1
4
0
3 3
6
1
5
1
1
1 3
0 7
0
2
4
0
0
2
4 0
0
5
11
11
Iteración 5: se asigna un flujo de 1 a la trayectoria aumentada O→C→E→D→T.
Iteración 6: se asigna un flujo de 1 a la trayectoria aumentada O→C→E→T. La red
residual resultante es:
O
A
B D
T
C E
1
4
0
3 2
7
0
6
0
2
1 3
0 7
0
2
2
2
0
2
2 2
0
5
13
13
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:
O
A
B D
T
C E
1
4
0
3 1
8
0
6
0
2
0 4
0 7
0
2
1
3
0
2
1 3
1
4
14
14
Como se puede observar, ya no existen trayectorias aumentadas y entonces el
patrón actual es óptimo.
El patrón de flujo actual se puede identificar al comparar las capacidades
residuales con las capacidades de flujo originales. Luego existe un flujo a través de un
arco si la capacidad residual final es menor que la capacidad original. La magnitud de
este flujo es igual a la diferencia entre estas capacidades. Luego se obtiene la siguiente
figura por la comparación de la red de la figura obtenida en la última iteración con la
figura inicial del problema. O sea la solución óptima para el tercer problema del parque:
O
A
B D
T
C E
4 3
8
6
4 7
3
3
4
14
14
1
1
Como se puede observar a lo largo de las iteraciones efectuadas, que
asignaciones en una iteración se cancelan en la siguiente.
En este problema se hicieron las selecciones de las diferentes trayectorias
aumentadas de una forma arbitraria. Sin embargo, este algoritmo, cuando se trabaja con
redes muy grandes, la parte más difícil es encontrar una trayectoria aumentada. 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 sólo arco con
capacidad residual positiva. Después, para cada uno de estos nodos alcanzados, se
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:
O
A
B D
T
C E
1
4
0
3 2
7
0
6
0
2
1 3
0 7
0
2
2
2
0
2
2 2
0
5
Aunque el procedimiento de la figura anterior es relativamente sencillo, será útil
poder reconocer cuándo se tiene un patrón (solución) óptimo sin tener que buscar de
manera exhaustiva una ruta que no existe. A veces es posible esto con el resultado de
un teorema importante de la teoría de redes, conocido como el teorema del flujo
máximo cortadura mínima. Una cortadura se puede definir como cualquier conjunto
de arcos dirigidos que contienen al menos un arco de cada trayectoria dirigida que va
del nodo origen al nodo destino. El valor de la cortadura es la suma de las
capacidades de los arcos (en la dirección específica) de la cortadura. El teorema del
flujo máximo-cortadura mínima 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 de la cortadura mínima para todas las cortaduras de la red. Así, si F denota la
cantidad de flujo del origen al destino para cualquier patrón de flujo factible, el valor de
cualquier cortadura proporciona una cota superior para F, y el menor de los valores de
las cortaduras es igual al máximo valor de F. Entonces, si se puede encontrar, en la red
original, una cortadura cuyo valor sea igual al valor actual de F encontrado en el
procedimiento de solución, el patrón de flujo actual debe ser óptimo. Eventualmente se
alcanza la optimalidad siempre que exista una cortadura cuyo valor se cero en la red
residual.
Para ilustrar esto, consideremos en la figura inicial del problema la cortadura
que se refleja en la siguiente figura:
26
O
A
B D
T
C E
5
0
3
0 9
0
6
0
1
1
4 0
7 0
1
1
4
0
0
2
4 0
5
0
Como se puede observar, el valor de la cortadura es (3+4+1+6) = 14, que según
se había encontrado, corresponde al máximo valor de F, por lo que se trata de una
cortadura mínima. También se puede observar que en la red residual obtenida en la
iteración 7, en donde F=14, la cortadura correspondiente tiene valor cero. Si esto se
hubiera observado, no habría sido necesario buscar trayectorias aumentadas adicionales.
El problema del flujo de costo mínimo.
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 x
ij
, donde representa el flujo a través del arco de i a j
• u
ij
es la capacidad máxima de flujo permitido a través del arco de i a j
• c
ij
costo de distribución de una unidad de i a j
• b
i
es el flujo neto generado en el nodo i. El valor de b
i
, depende de la naturaleza del
nodo i, es decir:
b
i
>0 , si i es un nodo fuente (origen) o sea, el nodo i representa los recursos
disponibles de un artículo.
b
i
< 0, si i es un nodo demanda (destino), o sea, la demanda requerida del
artículo en el destino i.
b
i
= 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.
Matemáticamente, resulta ( teniendo en cuenta que los siguientes sumatorios se
efectúan sobre arcos existentes) :
Min c x
Sujeto a x - x = b
x 0
ij
j=1
m
ij
i=1
m
ij
j=1
m
ki
k=1
m
i ; i = 1, . . . , m
ij 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 l
ij
≤ x
ij
≤ u
ij
, es decir los
arcos pueden tener una capacidad mínima y máxima ( ambas positivas).
Las restricciones se denominan “ecuaciones de conservación de flujo “ o “
ecuaciones de Kirchoff”, e indican que, en la red, no se puede crear ni destruir flujo.
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 b
i
generado en este nodo.
Obviamente, “ el problema del flujo con costo mínimo “ es un problema lineal y
como tal se puede resolver aplicando el método simplex ordinario ( ya visto), pero
vamos a ver que su estructura especial permite una simplificación sin necesidad de
utilizar el tabló simplex. Cabe señalar, que no se garantiza que el problema posea
“soluciones factibles”, ya que esto dependerá en parte, de qué arcos se tengan en la
red, y de sus capacidades. De cualquier manera, para una red diseñada razonablemente,
la condición necesaria más importante para que si exista una solución factible es la
siguiente:
PROPIEDAD DE SOLUCIONES FACTIBLES: una condición necesaria para
que “ un problema de flujo con costo mínimo” tenga soluciones factibles es que
28
b= 0 i
i=1
m

( O sea que la oferta total debe ser igual a la demanda total)
En caso de vulnerarse esta condición, es que habrá recursos o demandas en
exceso. Luego, como se hacia en el problema de transporte, se añade un nodo demanda
(m+1) ficticio si existe exceso de recursos, con b
m+1
, igual a la diferencia (exceso) y se
establecen unos arcos orientados desde los nodos “orígenes” hasta el citado nodo
demanda m+1, con costos c
ij
= 0, mientras que si el exceso es debido a una mayor
demanda se crea un nodo origen m+1 ficticio para generar un flujo equivalente al
exceso de demanda, agregando arcos con c
ij
= 0, desde este nodo hasta todos los nodos
demanda.
Propiedades de la matriz de restricciones A
Consideremos por ejemplo la red siguiente:
La matriz A de coeficientes asociada al conjunto de restricciones de la figura,
tiene una fila para cada nodo ( es decir 4 filas ) y una columna para cada arco ( o sea 7
columnas). Cada columna de A contiene exactamente dos coeficientes distintos de cero:
un +1 y un -1. La columna asociada con el arco (i,j) contiene un “+1” en la fila i y un “
-1” en la fila j, y todos los elementos restantes son cero. Por lo tanto, la columna de A,
esta dada por :
a
ij
= e
i
- e
j

donde e
i
y e
j
son vectores en un espacio euclidiano E
m
, o sea, con unos en la i-ésima y
j-ésima posiciones, respectivamente. Luego la matriz A, se llama “matriz de
incidencia nodo-arco” , entonces para la gráfica anterior se tiene:
(1,2) (1,3) (2,3) (2,4) (3,2) (3,4) (4,1
)
1 1 0 0 0 0 -1 1
A = -1 0 1 1 -1 0 0 2
0 -1 -1 0 1 1 0 3
0 0 0 -1 0 -1 1 4
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
1
4
4
2
3
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:
(1,3) (2,4) (3,4)
1 0 0 1 0 0
B = (a
13
, a
24
, a
34
) = 0 1 0 = 0 1 0
-1 0 1 -1 0 1
0 -1 -1
Obsérvese que al suprimir la fila 4ª de la matriz B se obtiene una matriz triangular
inferior, o lo que es lo mismo el árbol de mínima expansión m-1 = 4-1 = 3 arcos,
siguiente
Como se ha comentado anteriormente la base obtenida no es de rango completo,
pero de la misma forma como se hacia en el problema de transporte es conveniente
utilizar una de rango completo , lo cual se logra añadiendo una variable artificial, que
como veremos va a ser siempre cero (el coste correspondiente c
a
no va a influir al ser la
variable artificial cero, y lo vamos hacer igual a cero también, aunque podría ser
cualquier valor). A la citada variable artificial la simbolizamos mediante un arco raíz,
luego la nueva matriz de restricciones está formada por (A, e
m
)
Luego la base de rango completo m:
B = (a
13
, a
24
, a
34
, e
4
) y las variables básicas son (x
13
, x
24
, x
34
, x
5
)
t
30
1
4
4
2
3
raiz
1
2
3
4
4
1 4
4
2
3
x
5
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.
Esta propiedad de la triangularidad permite resolver el sistema de ecuaciones
asociado, B x
B
= b , de una forma sencilla y eficiente (como ya se vio en el problema
de transporte) pero que aquí se permite además obtenerla de forma gráfica muy
sencilla, lo mismo con respecto de las variables duales asociadas.
Además como los coeficientes de la matriz B son +1, -1 ó 0, luego si son enteros
los b
i
, 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 y
ij
está formado por +1, -1 ó 0,
ya que y
ij
= B
-1
a
ij
. 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:
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 :
a
23
= a
24
- a
34
= (e
2
- a
4
) - ( e
3
- e
4
)= e
2
- e
3

NOTA La matriz A tiene las propiedades de triangularidad, enterabilidad y
unimodularidad total , como se ha observado anteriormente
EL METODO SIMPLEX PARA PROBLEMAS DE FLUJO EN REDES
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 z
ij
- c
ij
correspondientes a las
variables no básicas, y si z
ij
- c
ij
≤ 0 ( en un problema de minimización) , la solución
31
1 4
4
2
3
básica actual será entonces óptima; en caso contrario entra en la base x
ij
(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 z
ij
- c
ij
≤ 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:
Como se observa b= 0 i
i=1
5

⇒∃ una solución básica factible, condición
establecida anteriormente para la existencia de una solución factible. (que la demanda
total sea igual a la oferta total). Luego si la matriz A es:
A = (a
12
, a
13
, a
15
, a
23
, a
34
, a
42
, a
45
, a
53
)
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 x
5
con el vector asociado e
5
en un espacio euclidiano E
5
, para constituir la
citada base de rango completo. Sea la siguiente base:
B = (a
15
, a
23
, a
34
, a
45
, e
5
) , luego
1 0 0 0 0 x
15
b
1
2
0 1 0 0 0 x
23
b
2
5
0 -1 1 0 0 x
34
= b
3
= 1
0 0 -1 1 0 x
45
b
4
-4
-1 0 0 -1 1 x
5
b
5
-4
Como se puede observar la matriz básica es una matriz triangular inferior, que se
resuelve fácilmente, obteniéndose el siguiente resultado:
x
15
= b
1
= 2
x
23
= b
2
= 5
-x
23
+ x
34
= b
3
= 1 ⇒ x
34
= 1 + 5 = 6
-x
34
+ x
45
= b
4
= -4 ⇒ x
45
= 6 - 4 = 2
-x
15
- x
45
+ x
5
= b
5
= -4 ⇒ x
5
= 0 ( la variable artificial x
5
siempre va a ser
nula).
Supongamos ahora el árbol de expansión enraizado correspondiente a la base anterior
32
b
4
=-4
1
4
4
2
3
5
5
b
1
=2
b
2
=5
b
3
=1
b
5
=-4
2
-2
5
6
0
3
4
-4
c
ij
1
4
4
2
3
5
5
b
1
=2
b
2
=5
b
3
=1
b
5
=-4
b
4
=-4
Se obtienen las siguientes soluciones:
⇒ x
15
= b
1
= 2

⇒ x
23
= b
2
= 5
⇒ x
34
- x
23
= b
3
= 1 ⇒ x
34
= 1 +x
23
= 1+5 = 6
x
45
- x
34
= b
4
= -4 ⇒ x
45
= -4 +x
34
= -4+6 = 2
x
5
- x
15
- x
45
= b
5
= -4 ⇒ x
5
= -4 +2+2

= 0 ( siempre)

Se obtiene el mismo resultado anterior, es decir, se obtiene la solución ( valores)
básica resolviendo desde los terminales del árbol hacia la raíz del mismo.. En cambio,
como se verá posteriormente, el proceso de obtener las variables duales asociadas se
invierte el proceso, es decir, desde la raíz hacia los terminales.
33
1
b
1
=2
x
15
2
b
2
=5
x
23
b
3
=1
3
x
34
x
23
=5
b
4
=-4
4
4
x
34
=6
x
45
5
5
b
5
=-4
x
45
=2 x
15
=2
x
5
Cálculo de los z
ij
- c
ij
Es necesario obtener los diferentes z
ij
- c
ij
, correspondientes de las variables no
básicas para saber si la solución básica actual es óptima. Para ello existen dos
procedimientos como ocurría en el problema de transporte.
1º) El método del ciclo.
z
ij
- c
ij
= c
B
B
-1
a
ij
- c
ij
= c
B
y
ij
- c
ij
El vector columna y
ij
tiene como coeficientes de representación +1, -1 , ó 0, según el
arco básico del ciclo que forma con el arco no básico (i,j) tenga sentido contrario, igual,
o no pertenezca al citado ciclo, respectivamente. Así por ejemplo, si se quiere calcular
el valor de z
53
- c
53
, es decir, para el arco no básico (5,3), se forma el ciclo
correspondiente con los arcos básicos, dando el sentido de giro el correspondiente al
citado arco no básico, como se puede observar en la siguiente figura:
Es decir : z
53
- c
53
= c
B
y
53
- c
53
= (- c
34
- c
45
) - c
53
= ( - 0 -3 ) - 4 = -7
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.
2º) Método de la variable dual.
z
ij
- c
ij
= c
B
B
-1
a
ij
- c
ij
= w a
ij
- c
ij
donde: w

= c
B
B
-1
, ó bien w
B
= c
B
.
Luego al existir cinco restricciones el problema dual tendrá 5 variables duales, o sea:
a
15
a
23
a
34
a
45
e
5
1 0 0 0 0
0 1 0 0 0
w
1
w
2
w
3
w
4
w
5
0 -1 1 0 0 = c
15
c
23
c
34
c
45
c
a
=
0 0 -1 1 0
-1 0 0 -1 1
34
1
4
4
2
3
5
5

= ( 2, -4, 0 , 3 , 0 )
Resolviendo el citado sistema de ecuaciones, se obtiene los siguientes
resultados:
w
5
= 0 ( este valor se obtiene siempre)
w
4
- w
5
= c
45
; ⇒ w
4
= 3 + 0 = 3
w
3
= 3; w
2
= -1; w
1
= 2;
Este mismo resultado se puede obtener, poniendo en el nudo de la raíz, la
variable dual igual a cero y procediendo hacia los terminales del árbol, utilizando la
relación w
i
- w
j
= c
ij
, a lo largo de los arcos básicos del árbol. Luego sobre celdas no
básicas, se obtiene:
z
ij
- c
ij
= w a
ij
- c
ij
= w ( e
i
- e
j
) - c
ij
= ( w
i
- w
j
) - c
ij
Si se hace directamente sobre la red:
Como se puede observar, la solución básica actual no es óptima, ya que:
z
13
- c
13
= 1 > 0
Luego en principio, entra en la base la variable no básica x
13
. Ahora es necesario
conocer que variable básica (variable de bloqueo) va a ser reemplazada por la anterior.
Determinación de la variable de bloqueo ( v. básica que va a salir de la base)
Cuando se determina el z
ij
- c
ij
máximo para un arco no básico, esencialmente se
identifica el proceso de pivoteo.
Como z
13
- c
13
= 1 > 0 es la mayor diferencia, y teniendo en cuenta que las componentes
del vector y
13
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
x
13
desde su valor cero, las componentes básicas que tienen como componente +1
35
1
4
4
2
3
5
5
w
1
=2
w
2
= -1
w
3
=3
w
5
=0
1
-2
-2
-4
w
4
=3
-7
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:
{ ¦ x = x y . B ij 13 − ∆
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:
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 x
15
=2
∆ = mínimo ' 2 ' = 2
La única variable que disminuye es la variable básica x
15
= 2 -∆ = 2-2= 0 (variable de
bloqueo), x
23
no cambia, mientras que las siguientes aumentan su valor, es decir,
x
34
= 6+∆ = 6+2= 8; x
45
= 2 +2∆ = 2+2= 4, y x
13
= ∆ = 2 ( variable que entra). Luego la
nueva solución básica son las anteriores componentes , excepto x
15
que se cambia por
x
13
, es decir queda según el la gráfica siguiente:
36
1
4
4
2
3
5
5
x
15
=2
x
23
=5
x
45
=2
+∆
x
34
=6
+∆
+∆
-∆
No cambia
No cambia
1
4
4
2
3
5
5
x
23
=5
x
45
=4
x
34
=8
x
13
=2
x
5
=0
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
Vamos a mostrar ahora el procedimiento operativo seguido para resolver el
problema siguiente. Sea la red de la figura siguiente:
La matriz de restricciones es:
A = (a
12
, a
13
, a
23
, a
24
, a
32
, a
34
, a
41
)
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:
B = ( a
13
, a
24
, a
34
, e
4
)
Vamos a utilizar el siguiente ordenamiento para ejecutar los pasos de realización del
método simplex para redes:
It. Solución Primal Solución Dual z
ij
- c
ij
Pivoteo
1
∆ = mínimo { 2¦= 2
2 OPTIMO
Luego la solución óptima es:
x
13
= 4 ; x
23
= 2 ; x
34
= 5 ; y el resto de x
ij
= 0 ; mientras que z
*
= -5.4+6.2+3.5=-7
Determinación de una solución básica factible.
37
2
1
4
4
2
3
4 -5
-1
2 4
6 -1
-5
7
3
c
ij
b
i
4
2
5
0
3
2
-2
0
-5
-6 -2
-5
4
2
3
0
3
4
-2
0
-5
-8
2
-7

-∆

t
1
t 1
A . b
.
t
1
0
t
1
t 1 . .
t
1
0
Se añade una columna artificial por cada fila de A, donde la i-ésima columna
artificial es t e
i
dependiendo del signo de b
i
(es decir, + e
i
si b
i
> 0; - e
i
si b
i
< 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:
x
12
x
13
x
23
x
24
x
32
x
34
x
41
x
1
x
2
x
3
x
4
x
5
b
1 1 1 0 0 0 0 -1 1 0 0 0 0 4
2 -1 0 1 1 -1 0 0 0 1 0 0 0 2
3 0 -1 -1 0 1 1 0 0 0 -1 0 0 -1
4 0 0 0 -1 0 -1 1 0 0 0 -1 0 -5
0 0 0 0 0 0 0 -1 -1 1 1 1 0
O si se hace sobre la gráfica:
38
1
4
4
2
3
b
1
=4
1
0 0
0 0
0
b
3
=-1
5
b
2
=2
b
4
=-5
1
1
1
c
ij
O sea el problema en la fase I, mientras que una solución factible se muestra en
la siguiente figura:
El problema de flujo con costo mínimo con cotas inferiores y superiores.
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 z
ij
- c
ij
. 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 x
ij
= u
ij
.⇒z
ij
- c
ij
≥ 0 y para todo x
ij
= l
ij
.⇒z
ij
- c
ij
≤ 0
En el caso de que no se cumplan las relaciones anteriores para todas la variables
no básicas según estén en el límite inferior o superior, entonces la variable no básica
puede ser candidata a entrar en la base, y lógicamente será aquella que tenga el mayor
valor de entre las diferencia z
ij
- c
ij
≥ 0 para las variables en el límite inferior y las
diferencias c
ij
- z
ij
≥ 0 para las variables en el limite superior. Ahora para elegir la
variable básica que va a salir ( variable de bloqueo), se hace lo siguiente.
Independientemente de que la variable sea creciente o decreciente, se añade el arco no
básico entrante al árbol básico y se determina e ciclo único formado. Después, si la
variable entrante es creciente, se envía una cantidad ∆ alrededor del ciclo en la dirección
de la variable entrante, en cambio si la variable entrante es decreciente, se envía una
cantidad ∆ alrededor del ciclo en contra de la dirección de la variable entrante. Ver los
dos casos en las siguientes figuras:
39
1
4
4
2
3
5
-∆

-∆
-∆





-∆
-∆

(b)Cuando x
ij
es
decreciente
Para calcular el valor crítico de ∆, se examinan las variables básicas crecientes al igual
que las decrecientes, y la posibilidad de que x
ij
( variable no básica entrante) pueda
alcanzar su otra cota. Si ocurre la última posibilidad, la variable x
ij
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.
Se han tratado diferentes tipos de problemas de redes, con sus correspondientes
algoritmos, que permiten resolverlos tal como se ha visto. Sin embargo, el problema de
flujo con costo mínimo se considera el problema general de redes, ya que una red
conexa es un conjunto de nodos que están enlazados, directa o indirectamente entre si, y
por cuyos arcos pasa un flujo determinado y como los nodos pueden ser fuentes y/o
destinos, transbordo, entonces la red trata de distribuir las unidades demandadas desde
los destinos a las fuentes, es decir, estableciendo un flujo en la red de forma que tal
distribución sea lo más económica. Es decir, por la red fluye un flujo y la distribución
tiene un coste, de ahí la terminología del problema, problema con flujo con costo
mínimo.
Los demás problemas se pueden considerar casos particulares de este. Si al
problema de transporte si le damos a las capacidades de demandas un valor negativo,
entonces aplicando al problema de transporte las ecuaciones de Kirchoff, el problema se
resuelve como el general de redes. Obviamente en el problema de asignación es lo
mismo, donde las capacidades de demanda son -1. En cuanto al problema de
transbordo, que entre los orígenes y los destinos existen nodos intermedios, el
tratamiento es el mismo que el de transporte, la capacidades de demanda son negativas,
mientras que las capacidades de los nodos intermedios son nulas, y la aplicación
entonces de las ecuaciones de Kirchoff en los nodos. Respecto al problema de la ruta
más corta, se considera al nodo de origen como un nodo fuente con capacidad 1 y el
nodo destino con capacidad -1, mientras que el resto de los nodos de la red tienen
capacidad 0, considerando las distancias entre los diferentes nodos como si fueses
costos. El problema de flujo máximo, se considera a todos nodos intermedios con
capacidades 0, en la aplicación de las ecuaciones de Kirchoff (sólo se aplican en esos
nodos), teniendo en cuenta que el flujo máximos de cada arco es la capaciadad uij y que
la función objetivo se considera el flujo saliente del nodo origen, o del flujo del nodo
destino, estableciendo una restricción más ( aparte de las citadas ecuaciones de
Kirchoff, descritas anterioremente) que establezca que el nodo saliente del nodo origen
es igual al flujo del nodo de llegada, o lo que es lo mismo, la diferencia entre los
mismos es 0 teniendo en cuenta que las restricciones figuran en el mismo lado de la
ecuación las variables. Todos estos casos, particularizando el problema general para
contemplar estos casos sin necesidad de aplicar los algoritmos descritos anteriormente,
se verán en las prácticas de laboratorio.

40
(a)Cuando x
ij
es creciente
41

Introducción. 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. En concreto, los problemas de transporte, asignación y de transbordo, así como otros , como veremos posteriormente, son también casos particulares del problema de flujo con coste mínimo, que es un problema general de redes, tienen un algoritmo propio debido a las estructuras especiales de los mismos, debido a que son más eficientes, no sólo ya respecto del método simplex general (al tratarse todos ellos de problemas de programación lineal), sino también respecto al citado algoritmo del problema de flujo con coste mínimo (del que son casos particulares). La importancia de considerar el problema general de redes, es que debido a la estructura especial, permite la simplificación del procedimiento simplex general hasta el punto en el que se puede aplicar directamente a la red sin necesidad de un tabló simplex. Se van a presentar las bases de la metodología de redes, teniendo en cuenta para ello los conceptos ya contemplados en el problema de transporte. Sin embargo, se dará una introducción a cinco tipos importantes de problemas de redes y algunas ideas básicas sobre cómo resolverlos. Los tres primeros tipos de problemas, el problema de la ruta más corta, el problema del árbol de mínima expansión (o también llamado problema de recorrido mínimo) y el problema del flujo máximo, tienen una estructura específica que surge con frecuencia en la práctica. El cuarto tipo, el problema de flujo de costo mínimo, proporciona un enfoque unificador de muchas otras aplicaciones por su estructura mucho más general. De hecho, esta estructura es tan general que incluye como casos especiales los problemas de transporte, asignación, transbordo (ya vistos), el problema de la ruta más corta y el problema de flujo máximo. Este cuarto tipo, es decir, el problema más general de flujo de costo mínimo se va estudiar detenidamente, que aunque se puede resolver por el método simplex general al ser un problema de programación lineal, sin embargo debido a su estructura especial, se resolverá en forma más eficiente mediante una versión simplificada del citado método simplex, llamada método simplex de redes. La planificación y control de proyectos es el último tipo de problemas que se resuelve por medio de las técnicas de redes, en especial el PERT ("Program Evaluation and Review Technique" o técnica de evaluación y revisión de programas) y el CPM ("Critical Path Method" o método de la ruta crítica). Aunque limitados a su área de aplicación el PERT y el CPM han sido (y probablemente seguirán siendo) las técnicas más ampliamente usadas en investigación de operaciones. Se va proponer un ejemplo prototipo, que servirá para ilustrar los fundamentos de los tres primeros tipos de problemas, así como la descripción de la terminología

2

básica para redes, que en parte ya ha sido definida anteriormente en el problema de transporte.

Ejemplo prototipo. Se trata de un parque que tiene una serie de paseos y campamentos, en donde no se permite la entrada de automóviles, pero existe un sistema de caminos angostos para autobuses y vehículos todo terreno conducidos por los guardabosques. En la figura siguiente se muestra este sistema de caminos (sin curvas), en donde O es la entrada al parque; las otras letras representan la localización de las casetas de los guardabosques (y otras instalaciones de servicio), y donde los números representan las distancias en kilómetros de estos caminos sinuosos.

2 O 4

A 5 2 1 C

7 B 4 3 4 D 1 E

5

T

7

El parque tiene un mirador a un hermoso paisaje en la estación T. Unos cuantos autobuses transportan a los visitantes desde la entrada a la estación T y de regreso. En el momento actual, el administrador del parque se enfrenta a tres problemas. Uno consiste en determinar qué ruta, desde la entrada del parque a la estación T, es la que tiene la distancia total más corta para la circulación de los autobuses. (Este es un ejemplo del problema de la ruta más corta que se presentará). El segundo problema reside en que deben de instalarse líneas telefónicas subterráneas para establecer comunicación entre todas las estaciones (inclusive la entrada). Como la instalación es cara y además perturba la ecología, se instalarán líneas que siguen sólo los caminos necesarios para obtener comunicación entre cualquier par de estaciones. La pregunta es por dónde deben tenderse las líneas para lograr esto con el mínimo número total de kilómetros de cable instalado. ( Este es un ejemplo del problema del árbol de mínima expansión o también llamado problema de recorrido mínimo que se presentará).

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. Antes de comenzar a describir los problemas anteriores, es necesario, describir la terminología existente de redes, que se pasa a definir. Una gráfica consiste de un conjunto de puntos y un conjunto de líneas que unen ciertos pares de puntos. Los puntos se llaman nodos ( ó vértices); por ejemplo, la red de la figura anterior tiene 7 nodos representados por círculos. Las líneas se llaman arcos (o ligaduras, aristas o ramas); por ejemplo la figura anterior tiene 12 arcos que corresponden a los 12 caminos del parque. 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

5 . Un circuito es una trayectoria en la que io = ip . Así cada arco en la trayectoria está dirigido "hacia ip" y "hacia afuera de io ". Una trayectoria ( del nodo io al nodo ip ) es una sucesión de arcos P = {(io.i1). un circuito es una trayectoria cerrada. (i1.ip) } en los que el nodo inicial de cada arco es el mismo que el nodo terminal del arco que le precede en la sucesión. . Por lo tanto..(ip-1. 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.i2). Esta consideración nos lleva a establecer los conceptos siguientes.Cabe preguntarse ahora que ocurre cuando dos nodos no están unidos directamente mediante un arco. Una cadena es una estructura similar a una trayectoria excepto que no todos los arcos están necesariamente dirigidos hacia el nodo ip .

Estos conceptos se reflejan en la siguiente figura: 2 2 1 4 1 4 3 3 a)una trayectoria b) una cadena 2 2 1 4 1 4 3 3 c)un circuito d) un ciclo 2 1 4 3 e)un árbol Se puede decir también. que una trayectoria es una cadena. pero no 6 .Un ciclo es una cadena cerrada.

El objetivo es encontrar la ruta más corta (es decir. pero no inversamente.j) se le denominará por xij (variable). que permite determinar los caminos de longitud mínima de un nodo origen a “todos” los nodos de una red. se pueden distinguir aquellos que son generadores de flujo. en el que el flujo que llega excede del que sale del nodo. un árbol de expansión está formado por una red conexa para los n nodos que no contiene ciclos no dirigidos. o también. La cantidad máxima de flujo que puede circular en un arco dirigido se conoce como capacidad del arco (o sea uij ) Entre los nodos. Un nodo de transbordo ( o nodo intermedio) satisface la conservación del flujo. Un nodo fuente (o nodo origen) tiene la propiedad de que el flujo que sale del nodo excede el flujo que entra a él. Se obtiene una 7 . absorbedores netos o ninguno de los dos. utilizamos para ello diferentes ejemplos ilustrativos. ya que por ejemplo. así el flujo que entra es igual al que sale. el camino de longitud mínima entre un nodo origen y otro de destino de la red. se pasa a exponer ya los diferentes problemas propuestos anteriormente. Será necesario introducir también la terminología adicional sobre los flujos en redes. la trayectoria con la mínima distancia total) que va desde el origen al destino. que es muy eficiente y válido tanto para redes dirigidas o no dirigidas. Para el problema de la ruta más corta o también denominado problema del camino mínimo. Como se puede observar en la figura e anterior. ya que este es el mínimo número de arcos necesarios para tener una red conexa y el máximo número posible para que no haya ciclos no dirigidos. mientras que el costo unitario de cada una de las variables por cij . Vamos a describir un algoritmo que nos permite obtener la ruta má corta. Como se observará. para resolver el problema de flujo de costo mínimo. El caso inverso es un nodo demanda (o nodo destino).recíprocamente. 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). forman la base del problema del árbol de mínima expansión. y que tiene exactamente (n-1) arcos. vamos a exponer el algorítmo de Dijkstra. a la cantidad de flujo que circulará por cada arco (i. mientras que las figuras c y d no son árboles. A cada una de las ligaduras (arcos no dirigidos) se asocia una distancia no negativa. es decir. es conexa si existe una cadena de cada nodo de G a cualquier otro nodo de G. Considérese una red conexa y no dirigida con dos nodos especiales llamados origen y destino. o que cada circuito es un ciclo. asimismo las figuras a y b también son árboles de expansión. que se tratará posteriormente. se ilustra un árbol de expansión. que los árboles de expansión (factibles) corresponden a las soluciones básicas factibles en el método simplex de redes. Algoritmo de Dijkstra. Un árbol de expansión es un árbol que incluye a todos los nodos de la gráfica. Como se verá posteriormente. El problema de la ruta más corta. Por último. los árboles juegan un papel clave en el análisis de muchas redes. También se puede decir que una red dirigida G.

A continuación se actualiza las etiquetas temporales de los nodos j que no hayan recibido aún etiqueta permanente según la fórmula siguiente: 8 . Estas se recogen en la tabla: Iteración i 0 2 6 3 ∞ 4 5 5 ∞ 6 ∞ Nodos 7 8 ∞ ∞ 9 ∞ 10 ∞ 11 ∞ j mínimo 4 La menor etiqueta temporal. e(4)=5..…. 12 2 6 1 5 4 3 13 15 7 12 4 18 11 6 7 10 9 5 9 8 14 5 8 8 9 7 12 6 11 Se desea determinar el camino más corto de la ciudad 1 a la 11: Solución: A) Mediante la aplicación del algoritmo de Dijkstra.variante del algoritmo de Dijkstra asociando a los arcos de la red alturas en vez de distancias. Para la exposición del citado algoritmo. ya que ésa es la distancia mínima del nodo origen al nodo 4. El algoritmo consiste en determinar etiquetas ( que expresan distancias) en cada nodo. Camino de longitud mínima (o ruta más corta entre dos puntos de la red). lo que permite determinar los caminos de mínima altura. pasa a permanente y no vuelve a considerarse. La red no dirigida de la figura representa un sistema de carreteras entre ciudades de una región. e(1)=0) y etiquetas temporales e(j) iguales a la distancia respectiva directa d 1j para los restantes nodos j=2. Se comienza asignando etiqueta permanente igual a 0 al nodo origen (1).11. pero cuando se hacen permanentes ya no varían su valor. lo efectuaremos a través de diferentes ejercicios: 1. las cuales son consideras inicialmente temporales. ( es decir.

5+∞} = ∞ e(9) = min{∞.5+∞} = ∞ e(11) = min{∞.5+∞} = 6 e(3) = min{∞.5+∞} = ∞ (nota: obsérvese que la distancia entre dos nodos que no están conectados directamente.5+∞} = ∞ e(10) = min{∞.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 .5+15} = 20 e(8) = min{∞. se toma como su valor ∞) lo que lleva a la tabla siguiente: Iteración i 0 1 2 6 6 3 ∞ 18 4 5 5 ∞ ∞ 6 ∞ ∞ Nodos 7 8 ∞ ∞ ∞ 20 9 ∞ ∞ 10 ∞ ∞ 11 ∞ ∞ j mínimo 4 2 9 . e(2) = min{6.+tjq 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í.5+13} = 18 e(5) = min{∞.5+∞} = ∞ e(6) = min{∞.

Así. ésta es la distancia mínima buscada.11 E(8)-E(5) = 26 . y se reitera el procedimiento hasta que se asigna como etiqueta permanente al nodo destino.0 = 6 = d12 La siguiente figura muestra el camino mínimo y los etiquetados permanentes al lado de cada nodo permitiendo comprobar fácilmente la rutina anterior. 6 18 26 12 8 5 2 8 7 9 6 12 18 9 27 27 11 5 6 0 1 18 3 6 9 11 33 13 5 4 5 El camino mínimo anterior es 1 2 10 12 15 7 20 5 8 4 7 10 8 14 24 11 .26 = 7 = d8.donde ahora la última etiqueta permanente es la 2ª. Después de nueve iteraciones se obtiene la tabla final siguiente: Iteración i 0 1 2 3 4 5 6 7 8 9 E(J) 2 6 6 6 3 ∞ 18 18 18 4 5 5 5 ∞ ∞ 18 18 18 6 ∞ ∞ ∞ 29 27 27 27 27 27 Nodos 7 ∞ 20 20 20 20 20 8 ∞ ∞ ∞ ∞ 26 26 26 26 9 ∞ ∞ ∞ ∞ 27 27 27 27 27 27 10 ∞ ∞ ∞ ∞ ∞ 24 24 11 ∞ ∞ ∞ ∞ ∞ ∞ 38 33 33 33 33 j mínimo 4 2 3 5 7 10 8 6 9 11 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. iteración 2. 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. marcada en negrita. que pasa a permanente. Para ello. Falta determinar el camino asociado a esta longitud mínima. se tienen E(11)-E(8) = 33 . En particular. Se actualizan ahora las etiquetas temporales de los restantes nodos. como E(11)= 33.6 = 12 = d25 E(2)-E(1) = 6 .18 = 8 = d58 E(5)-E(2) = 18 . y no vuelve a considerarse.La menor etiqueta temporal corresponde al valor 6 del nodo 2.

etiquetas temporales iguales a la distancia directa del nodo 1 a j. 3+3 } = 6 e (6) = min { 14. 3+∞ } = 18 La menor vale 5 y corresponde al nodo 2. e (7) = 18 siendo la menor 6. e (5) = 6. con distancias en km. 3+∞ } = 14 e (7) = min { 18. pero suponiendo que los arcos de la red son aristas. se obtiene en la siguiente tabla las etiquetas temporales y permanentes (en negrita). que corresponde al nodo 5. Esta pasa a ser permanente y no se volverá a considerar. e (6) = 14. La menor.5 km de 3. b) Idem. actualizamos las etiquetas temporales. Camino más corto de una localidad a otras. e (4) = 3. La figura siguiente representa el sistema de carreteras entre las diferentes localidades de una isla. teniendo e (3) = 9. c) Determinar en b) el camino mínimo de la localidad 1 a un punto x situado a 2. ya que representa su distancia mínima desde el origen. pasa a permanente y no se volverá a considerar. ya al resto de nodos j. 11 . Se comienza asignando al origen (1) etiqueta permanente igual a 0. Actualizamos las etiquetas temporales que no hayan pasado a permanentes e (2) = min { 6. se designa con e(j) la etiqueta temporal del nodo j. Resolverlo utilizando el algoritmo de Dajkstra.5 km de 3 en la carretera de 3 a 6. e (6) = 14. e (5) = ∞. 11 3 1 3 4 4 2 6 7 5 3 10 2 3 7 5 14 6 18 2 4 Se desea: a) Determinar los caminos mínimos de la localidad 1 a las restantes localidades.Se puede observar que existe un camino mínimo alternativo determinado por 1 2 5 9 11 2. Estas vienen dadas por e (2) = 6. 3+2 } = 5 e (3) = min { 11. si x estuviera a 3. de los nodos de la red. 3+∞} = 11 e (5) = min { ∞. Reiterando el procedimiento hasta conseguir que todas las etiquetas sean permanentes. De nuevo. Idem. Solución: a) Aplicando el algoritmo de Dijkstra. e (7) = 18. e (3) = 11. que corresponde al nodo 4.

las distancias mínimas del nodo origen a cada nodo j de la red. E(2). para el nodo 7 se tiene E(7).E(1) = 3 -0 = 3 = d41 Se ha obtenido el camino mínimo 1 .E(1) = 3 -0 = 3 = d14 que proporciona el camino desde 1 a cada nodo son 1 1 1 4 4 4 5 3 6 2 1 4 2 1 1 1 . Resumiendo.E(5) = 8 -6 = 2 = d53 E(5).E(6) = 15 -12 = 3 = d67 E(6).E(4) = 5 -3 = 2 = d42 E(4). los caminos mínimos a todas las localidades excepto a la 2. además. Para determinar el camino mínimo del nodo origen a los restantes nudos. Así. y al lado de cada nodo aparece su etiqueta permanente ( distancia mínima de cada nodo al nodo 1).E(3) = 12 -8 = 6 = d36 E(3).Iteración i 0 1 2 3 4 5 E(j) 2 6 5 5 3 11 11 9 8 8 Nodos 4 3 3 5 ∞ 6 6 6 6 14 14 14 14 12 12 7 18 18 18 18 18 15 15 j mínimo 4 2 5 3 6 7 La fila E(j) contiene las etiquetas permanentes de cada nodo y. que 4 5 3 6 7 proporciona. se repite el proceso anterior partiendo de 2.E(4) = 6 -3 = 3 = d45 E(4). por tanto. en negrita. 12 . los caminos mínimos 4 4 4 5 5 5 3 3 6 7 En la figura siguiente se muestra el árbol de caminos mínimos. 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. Para determinar éste.

0 8 1 3 4 2 12 6 5 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 6 5 2 3 15 7 2 3 4 3 Iteración i 0 1 2 3 4 5 E(j) 2 6 5 5 3 11 11 9 8 8 Nodos 4 3 3 5 ∞ 6 6 6 6 14 14 14 13 12 11 11 7 18 18 18 16 8 8 j mínimo 4 2 5 3 7 6 Los caminos mínimos desde el origen a cada nodo de la red son 1 1 1 4 4 4 7 6 2 1 1 1 4 4 4 5 5 7 3 El correspondiente árbol de caminos mínimos es 0 8 1 3 2 2 5 11 6 5 3 6 2 3 7 8 5 3 4 3 13 .

Caminos de mínima altura. e(4) = 3. se ha obtenido las etiquetas permanentes E(3) = 8 y E(6) = 11.5 < 12. e(5) = ∞.5 siendo los caminos 4 5 3 x . es decir e(2) = 6. siendo el camino mínimo 1 4 5 3 x Si ahora x estuviera a 3. como E(3) + 2.5 km de la 6. ∞}} = 11 14 . la altura de cualquier ruta será el máximo de los números de esa ruta. e(7) = 18. para la actualización de las etiquetas temporales. se reemplaza la suma de pares de números por el máximo.y 1 de igual longitud. pasa a permanente y no se volverá a considerar. salvo que aquí.5 = 11. ya que representa la altura mínima desde el origen. Evidentemente un punto x situado a 2. El problema es similar al considerado en el problema del camino mínimo.5 km.5 la distancia mínima del nodo origen a x será 10. e(6) = 14.c) Para la red no dirigida. e(3) =11. La menor.5 km.5 km de la localidad 3 estará a 1. que corresponde al nodo 4. max {3. Entonces. Solución: Se desea determinar el camino desde el nodo 1 a cada uno de los restantes nodos.5 = E(6) + 0. El algoritmo comienza asignando etiqueta permanente igual a 0 al nodo origen (1) y el resto de nodos j. Formalmente. max {3. x 1 4 7 6 3.5 km de la localidad 3.5 = E(6) + 1. por tanto E(3) + 3.5 km de 6 y. de modo que la máxima altura sea la menor posible. 11. 2}} = 3 e(3) = min {11. x estará a 0. etiquetas temporales iguales a la altura máxima entre el nodo 1 y el j. En la siguiente red los números representan máximas alturas de montañas que se deben atravesar entre pares de localidades: 11 3 4 4 2 6 7 5 3 10 2 3 7 5 14 1 6 18 3 2 4 Se pide determinar los camino de mínima altura de la localidad 1 a las restantes localidades.5 = 10. A continuación se actualizan las etiquetas temporales que no hayan pasado a permanentes e(2) = min {6.

e(5) = min {∞. de los nodos Iteración i 0 1 2 3 4 5 E(j) 2 6 3 3 3 11 11 4 3 3 Nodos 4 3 3 5 ∞ 3 3 3 6 14 14 14 14 4 4 7 18 18 18 10 10 4 4 j mínimo 4 2 5 3 6 7 La fila E(j) contiene las etiquetas permanentes de cada nodo y. 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). se actualizan las restantes etiquetas temporales e(3) =4.tomando el 2. 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. en negrita. 0 3 1 3 4 2 4 6 5 3 3 3 2 3 4 7 2 3 4 3 15 . que corresponde al nodo 5. Se rompe el empate de forma arbitraria . e(5) = 3. De nuevo. 3}} = 3 e(6) = min {14. e(6) = 14. Para determinar el camino de mínima altura del nodo origen a los restantes nodos. que corresponde a los nodos 2 y 5. max {3. ∞}} = 18 siendo la menor 3. max {3. las mínimas alturas máximas del nodo origen a cada nodo j de la red. ∞}} = 14 e(7) = min {18. Reiterando el procedimiento. max {3. su etiqueta se pasa a permanente y no volverá a considerar. por tanto. Siendo la menor 3. se obtiene la siguiente tabla donde se resumen las etiquetas temporales y permanente. e(7) = 18.

1. Se pueden poner también restricciones sobre las trayectorias que se pueden seguir. Así. Entonces. Otra posibilidad consiste en que el valor asociado a cada ligadura sea el tiempo requerido en realizar esa actividad. se ha descrito el problema en términos de minimizar la distancia de un origen a un destino. el recorrido mínimo que permite comunicar a todos los nodos de una red. si todos los nodos son destinos potenciales. Otra opción es eliminar la restricción de que las "distancias" (valores de los arcos) sean no negativas.Otras aplicaciones Antes de concluir la presentación del problema de la ruta más corta. Por ejemplo.como los problemas de diseño de rutas de vehículos. Sin embargo. el problema sería encontrar qué secuencia de actividades logra el objetivo específico de minimizar el costo total relacionado. Se explicará el algoritmo a través de ejemplos de aplicación. algunas de las aplicaciones más importantes del problema de la ruta más corta nada tienen que ver con caminos en el sentido literal de la palabra. Este algoritmo permite determinar el árbol de máximo alcance. Todas estas variaciones surgen en ocasiones en la práctica y por esto han sido estudiadas por los investigadores. hasta que todos los nodos se hayan resuelto. que tal vez esta aplicación sea una de las más importantes de este algoritmo. Arbol de máximo alcance. Entonces. Nótese que el algoritmo obtiene las rutas más cortas a cada nodo que está más cerca del origen que del destino. la solución de un gran número de problemas de la ruta más corta. o también llamado problema de recorrido mínimo. la única modificación que se necesita es que el algoritmo no se detenga. Algoritmo de Kruskal. 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. 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. Puede decirse. Hasta aquí. En este caso se desearía encontrar la secuencia de actividades que logra el objetivo específico de minimizar el tiempo total requerido. Determinar el árbol de máximo alcance para la siguiente red de distribución en la que los números sobre las aristas representan distancias. es decir. 7 2 9 5 5 8 5 11 1 4 7 3 18 16 5 4 6 3 .con frecuencia utilizan como parte de sus subrutinas. Los algoritmos para una gran variedad de problemas de optimización de análisis combinatorio. en realidad el problema de redes que se estudia es el encontrar cuál es la ruta que conecta a dos nodos específicos que minimiza la suma de los valores de las ligaduras sobre esta ruta. es necesario hacer hincapié en un punto. las ramas pueden corresponder a actividades de algún tipo y los valores asociados a cada una pueden representar el costo de esa actividad.

Solución: a)Se consideran inicialmente el conjunto de nodos de la red que suponemos no conectados o aislado y denominamos U = {1. 2. 4. con el método gráfico. 5. 4. 7} Longitud L de la arista elegida 0 9 5 5 3 4 Par de nodos conectados 1-2 2-4 4-5 5-6 6-7 17 . el nodo 1. 3. 2. 7}. 4. Denotamos con C el conjunto de nodos conectados. Por tanto. 6. 6. por ejemplo. 2} {1. actualizamos el conjunto de nodos conectados a C = {1. 7}. b) Idem pero con el método tabular. C = {1} y U = {2. La figura muestra estas dos primeras iteraciones 9 2 5 1 4 7 6 3 Reiterando el procedimiento llegamos. 2} y el de no conectados a U = {3. con distancia 9. 2. El nodo no conectado más próximo a 1 es el 2. 6} {1. 2. 4. en siete iteraciones. y lo incluimos dentro del conjunto C excluyéndolo de U. 4. que inicialmente es vacio. 2. 5. 4} {1. 5. Comenzamos tomando arbitrariamente cualquier nodo de U. 6. 4.a)Resolverlo utilizando el algoritmo de Kruskal. 7}. La tabla siguiente recoge las iteraciones del algoritmo Iteración 0 1 2 3 4 5 6 Conjunto de nodos conectado φ {1} {1. es decir. a determinar el árbol de máximo alcance cuya longitud L* = 31. 5. 5. 3. 5} {1.

dejando vacías las posiciones de pares de nodos no conectados mediante una arista. para la tabla reducida en las columnas de los nodos 1y 2. 4. negrita. De nuevo. Desde el nodo 1 2 3 4 5 6 7 1 9 18 11 2 9 5 7 5 Hasta 3 18 el 4 11 5 5 3 8 nodo 5 7 5 5 3 4 8 4 6 7 Elegimos arbitrariamente un nodo. determinamos el menor valor en alguna de las filas marcadas. 2. construimos la tabla de distancias entre dos nodos. 18 . negrita. de la columna 4. 7} 5 Σ = 31 6-3 El árbol de máximo alcance es 2 5 5 1 4 3 4 6 5 7 9 5 3 b) Para implementar el algoritmo en formato tabular. y aparecen así conectados los nodos 1 y 2. que incluimos dentro del conjunto de nodos conectados. Marcamos el valor 9. 6. por ejemplo 1. Corresponde al 5. que corresponde al valor 9 bajo la columna del nodo 2. 1 2 3 4 5 6 7 2 9 5 7 5 3 18 4 11 5 5 3 8 5 7 5 5 3 4 8 4 6 7 Tachamos a continuación la columna del nodo 2 y marcamos su fila. y lo indicamos marcando su fila ( ). Tachamos su columna y determinamos el menor valor de la fila del nodo 1. 3.7 {1. 5.

para la tabla reducida de los nodos 1. quedando ahora conectados los nodos 2 y 4.6). Corresponde al 5. Reiteramos el procedimiento y en siete iteraciones llegamos a la tabla final 1 1 2 3 4 5 6 7 9 18 11 2 9 5 7 5 3 18 4 11 5 5 3 8 5 7 5 5 3 4 8 4 6 7 El coste total es C* = 9+5+5+3+5+4 = 31 y de la lectura a lo largo de las filas de la tabla deducimos que conectamos (1.2). quedando ahora conectados los nodos 4 y 5. (2.5). Desde 1 2 3 Hasta 4 5 6 7 8 19 .1 2 3 4 5 6 7 3 18 4 11 5 5 5 7 6 5 7 5 3 3 8 4 5 8 4 Marcamos la fila del nodo 4 y prescindimos de su columna. 1 2 3 4 5 6 7 3 18 5 7 5 5 3 5 3 8 4 8 4 6 7 De nuevo. 2 y 4. negrita. de la columna de nodo 5.4). Interconexión de nodos. El coste del sistema es función lineal de la longitud de la línea tendida. Marcamos la fila del nodo 5 y prescindimos de su columna. (6. La tabla siguiente recoge las distancias entre los centros. (4.3) y (6.7). (5. 2. Se desea comunicar mediante fibra óptica ocho centros de investigación. determinamos el menor valor en alguna de la filas marcadas.

1 2 3 4 5 6 7 8 28 26 41 30 17 19 52 28 21 17 26 31 18 40 26 21 27 21 25 26 18 41 17 27 15 52 36 61 30 26 21 15 70 81 77 17 31 25 52 70 66 69 19 18 26 36 81 66 12 52 40 18 61 77 69 12 - S desea tender la línea de manera que haya una conexión con cada centro. 8} {1. 2. 7. pero sin ciclos. 7. 7. 4. durante la temporada alta es determinar las rutas de algunos viajes de autobús 20 . 8} {1.4. 6} {1. partiendo del nodo 1. 7. 4. 2. 3. 6. 8} {1. 6. La tabla muestra las iteraciones del método Longitud L Par de del arco nodos Iter. 6. 2.5 6. 7} {1. 7. ¿Cuál es el tendido de línea entre los centros más económico? Solución Aplicamos el algoritmo de Kruskal. 6. elegido conectados 0 1 0 2 17 1-6 3 19 1-7 4 12 7-8 5 18 7-2 6 17 2-4 7 15 4-5 8 18 8-3 ∑ = 116 El árbol de máximo alcance tiene una longitud 116 y las conexiones entre pares de centros son Del centro 1 1 7 7 Al centro distancia 6 17 7 19 8 12 2 18 Del centro Al centro 2 4 4 5 8 3 Distancia 17 15 18 Conjunto de nodos conectados φ {1} {1. 2. 8} {1.5 6. 8} El problema del flujo máximo. Recuérdese que el tercer problema que debe de resolver el administrador del parque.

y el resto son nodos de transbordo. Este tipo de problemas se conoce como el problema del flujo máximo. Así por ejemplo. Los límites superiores impuestos estrictos sobre el número de viajes de ida permitidos en cada dirección para cada ruta individual. Sin embargo es susceptible mejorar la solución anterior. entonces su resolución se puede realizar mediante el conocido método simplex. desde el nodo origen al nodo destino. pero también un solo viaje al día desde la estación B hacia la estación A. Para que el problema propuesto del parque se ajuste al formato de red dirigida. Sin embargo. por lo que el análisis se hará sólo sobre los viajes de ida). se dispone de un algoritmo de trayectorias aumentadas 21 . 5 por la ruta O→B→E→T . Como el problema del flujo máximo se puede formular como un problema de programación lineal. Considérese una red dirigida y conexa que tiene un solo nodo origen y sólo un nodo destino. mientras que las ligaduras con 1 en los extremos (AB. 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. se reflejan en la siguiente figura: 0 5 O 4 7 A 3 1 0 1 2 0 0 C 4 B 4 5 0 0 0 D 9 T 0 1 1 0 6 E 0 Como se observa los números próximos a los nodos (estaciones) indican el límite máximo permitido desde el nodo hasta el próximo según el camino indicado. una solución factible que consiste en mandar 7 autobuses al día. Luego dada la capacidad en los arcos. DE) se sustituyen por un par de arcos dirigidos en direcciones opuestas. 1 por la ruta O→B→C→E→T y 1 por la ruta O→B→C→E→D→T . En el resto de las ligaduras se realizan los cambios de igual forma. de manera que el número de viajes diarios sea máximo. se permite un solo viaje al día desde la estación A a la estación B.(Cada autobús regresará por la misma ruta que tomó de ida. Pasemos a exponer formalmente el problema del flujo máximo. Por ejemplo. Ahora teniendo en cuenta los límites superiores se puede obtener.desde la entrada del parque ( nodo O) al mirador ( nodo T). cada uno con capacidad de 1. considerando muchas combinaciones o rutas (y el número de viajes asignados a cada una) para encontrar la o las que maximicen el número de viajes al día. cada ligadura de la figura anterior con 0 en un punto terminal se sustituirá por un arco dirigido en la dirección factible. el objetivo es determinar el patrón factible que fluye a través de la red que maximiza el flujo total .

( Si no existe una. con lo que el flujo del nodo origen al nodo destino no se puede aumentar. una selección indiscriminada de trayectorias para asignar flujos no puede evitar el uso de una combinación mejor de asignaciones de flujos. pero la capacidad residual del arco j → i se aumenta en ∆. Así. Se aumenta en c* el flujo de esta trayectoria. las capacidades de los arcos en la red residual (llamadas capacidades residuales )se ajustan de la siguiente forma.) 2. tal que todos los arcos en esta trayectoria tienen capacidad residual estrictamente positiva. Así. cada iteración del algoritmo consiste en los pasos siguientes: Algoritmo para el problema del flujo máximo 1 1. 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. 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. El algoritmo de la trayectoria aumentada selecciona repetidas veces alguna trayectoria aumentada y agrega un flujo igual a su capacidad residual en la red original. Resumiendo . Por lo tanto. Este algoritmo se basa en dos conceptos intuitivos. La clave para asegurar que la solución final es necesariamente óptima es el hecho de que las trayectorias aumentadas pueden cancelar flujos asignados con anterioridad en la red original. los flujos netos ya asignados constituyen un patrón de flujo óptimo. así. Se identifica la capacidad residual c* de esta trayectoria aumentada encontrando el mínimo de las capacidades residuales de los arcos sobre esta trayectoria. cada trayectoria aumentada proporciona una oportunidad de aumentar más el flujo a través de la red original. Este proceso continúa hasta que ya no hay trayectorias aumentadas. Se identifica una trayectoria aumentada encontrando alguna trayectoria dirigida del nodo origen al nodo destino en la red residual tal que cada arco sobre esta trayectoria tiene capacidad residual estrictamente positiva. la capacidad residual del arco i →j se disminuye en ∆. En principio. Después. 1 Se supone que las capacidades de los arcos son números enteros 22 . Una trayectoria aumentada es una trayectoria dirigida del nodo fuente al nodo destino en la red residual. si la red original tiene arcos en las dos direcciones). después de asignar los diferentes flujos a la red original. el de una red residual y el de una trayectoria aumentada. 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. 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.que es mucho más eficiente que el anterior. Cada vez que se agrega una cantidad de flujo ∆ aun arco i →j en la red original.

se muestran en negritas (junto a los nodos O y T) la cantidad total de flujo que se logra. Posteriormente se describirá un procedimiento sistemático para encontrar una trayectoria aumentadas. Si se asigna un flujo de 5 a esta trayectoria. mientras que la capacidad residual del arco j →i se muestra junto al nodo j. La capacidad residual del arco i →j se muestra junto al nodo i . Sin embargo en el problema que se va a resolver. Volviendo al problema del parque que se quiere resolver. La red resultante es la red residual : 23 . Iteración 1: con respecto a la última figura. con frecuencia habrá varias alternativa de trayectorias aumentadas entre las cuales se podrá escoger. Se disminuye en c* la capacidad residual de cada arco en esta trayectoria aumentada. Al realizar el paso 1. la red residual que resulta es : 0 5 5 O 4 2 A 3 1 5 1 2 0 0 C 4 B 4 0 0 0 0 D 9 T 5 5 1 1 5 1 E 0 Iteración 2: se asigna un flujo de 3 a O→A→D→T. en donde se usa una sola línea para representar el par de arcos dirigidos en direcciones opuestas entre cada par de nodos.3. Después de algunas iteraciones. una de las trayectorias posibles aumentadas es O→B→E→T que tiene la capacidad residual igual al mínimo {7. Utilizando este formato. se va mostrar cada iteración la red residual después de completar los tres pasos. la selección se hará en forma arbitraria. la red que se muestra en la figura anterior es en realidad la red residual antes de asignar ningún flujo. Se regresa al paso 1. Se aumenta en c* la capacidad residual de cada arco en la dirección opuesta en esta trayectoria. 6} = 5. 5.

3 2 8 O 4 2 A 0 1 5 1 2 0 0 C 4 B 4 0 0 3 3 D 6 T 5 8 1 1 5 1 E 0 Iteración 3: se asigna un flujo de 1 a la trayectoria aumentada O→A→B→D→T. Iteración 6: se asigna un flujo de 1 a la trayectoria aumentada O→C→E→T. Iteración 4: se asigna un flujo de 2 a la trayectoria aumentada O→B→D→T. La red residual resultante es: 4 1 13 O 2 0 A 0 0 7 2 2 0 2 C 2 B 1 0 5 E 2 3 7 3 D 2 0 0 2 T 6 13 24 . La red residual de estas dos iteraciones resultante es: 4 1 11 O 4 0 A 0 0 7 2 2 0 0 C 4 B 1 0 3 6 3 D 3 T 5 11 1 1 5 1 E 0 Iteración 5: se asigna un flujo de 1 a la trayectoria aumentada O→C→E→D→T.

El patrón de flujo actual se puede identificar al comparar las capacidades residuales con las capacidades de flujo originales. O sea la solución óptima para el tercer problema del parque: 4 14 O 3 A 7 1 B 3 4 4 D 1 E 8 T 14 6 C 3 Como se puede observar a lo largo de las iteraciones efectuadas. ya no existen trayectorias aumentadas y entonces el patrón actual es óptimo. En este problema se hicieron las selecciones de las diferentes trayectorias aumentadas de una forma arbitraria. este algoritmo. La magnitud de este flujo es igual a la diferencia entre estas capacidades. que asignaciones en una iteración se cancelan en la siguiente. cuando se trabaja con redes muy grandes. La red residual resultante es: 4 1 14 O 1 0 A 0 0 7 2 2 0 3 C 1 B 0 1 4 E 3 4 8 3 D 2 0 0 1 T 6 14 Como se puede observar. Luego existe un flujo a través de un arco si la capacidad residual final es menor que la capacidad original. Se comienza por determinar todos los nodos que se pueden alcanzar desde el origen con un sólo arco con capacidad residual positiva. se 25 .Iteración 7: se asigna un flujo de 1 a la trayectoria aumentada O→C→E→B→D→T. Luego se obtiene la siguiente figura por la comparación de la red de la figura obtenida en la última iteración con la figura inicial del problema. Esta tarea se puede simplificar con un procedimiento sistemático. Después. Sin embargo. la parte más difícil es encontrar una trayectoria aumentada. para cada uno de estos nodos alcanzados.

Entonces. el patrón de flujo actual debe ser óptimo. y el menor de los valores de las cortaduras es igual al máximo valor de F. será útil poder reconocer cuándo se tiene un patrón (solución) óptimo sin tener que buscar de manera exhaustiva una ruta que no existe. que se indica en la siguiente figura: 4 1 O 2 0 A 0 0 7 2 2 0 2 C 2 B 1 0 5 E 2 3 7 3 D 2 0 0 2 T 6 Aunque el procedimiento de la figura anterior es relativamente sencillo. El teorema del flujo máximo-cortadura mínima establece que para cualquier red con un solo nodo origen y un solo nodo destino. Este procedimiento de abanico siempre identificará una trayectoria aumentada. Así. el flujo máximo factible del origen al destino es igual al valor de la cortadura mínima para todas las cortaduras de la red. desde el origen al destino. si F denota la cantidad de flujo del origen al destino para cualquier patrón de flujo factible. a lo largo de una trayectoria con capacidad de flujo residual positiva. una cortadura cuyo valor sea igual al valor actual de F encontrado en el procedimiento de solución. El resultado será la identificación de un árbol con todos los nodos a los que se puede llegar desde el origen. si se puede encontrar. A veces es posible esto con el resultado de un teorema importante de la teoría de redes. Una cortadura se puede definir como cualquier conjunto de arcos dirigidos que contienen al menos un arco de cada trayectoria dirigida que va del nodo origen al nodo destino. Supongamos ahora la red residual obtenida después de la iteración 6. conocido como el teorema del flujo máximo cortadura mínima. si existe. Esto se repite con los nuevos nodos conforme se van alcanzando.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. consideremos en la figura inicial del problema la cortadura que se refleja en la siguiente figura: 26 . Eventualmente se alcanza la optimalidad siempre que exista una cortadura cuyo valor se cero en la red residual. en la red original. el valor de cualquier cortadura proporciona una cota superior para F. Para ilustrar esto. El valor de la cortadura es la suma de las capacidades de los arcos (en la dirección específica) de la cortadura. y utilizando el procedimiento de abanico se encuentra una nueva trayectoria aumentada. con capacidad de flujo positiva.

Se trata del cuarto tipo de problema señalado anteriormente. varios nodos intermedios ( o nodos de transbordo). con costos asociados ( como en el problema de transporte o en el de asignación). el valor de la cortadura es (3+4+1+6) = 14. 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. la segunda porque el algoritmo simplex en redes que emplea es muy eficiente. 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). asignación. También se puede observar que en la red residual obtenida en la iteración 7. la primera porque abarca una clase amplia de aplicaciones ( además son casos particulares del mismo. 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). la cortadura correspondiente tiene valor cero.0 5 O 4 7 A 3 1 0 1 2 0 0 C 4 B 4 5 0 0 0 D 9 T 0 1 1 0 6 E 0 Como se puede observar. que los citados problemas sean casos especiales del problema del flujo de costo mínimo. al igual que el problema de transbordo. ruta más corta y el del flujo máximo). en donde F=14. los problemas de transporte. Si esto se hubiera observado. no habría sido necesario buscar trayectorias aumentadas adicionales. El problema del flujo de costo mínimo. De ahí. que según se había encontrado. puede considerar. problema que se va a analizar a continuación. por lo que se trata de una cortadura mínima. y por último. Se trata entonces de un problema general. Luego tenemos los siguientes conceptos: 27 . por dos razones. el cual presenta una posición medular entre los modelos de óptimización de redes. corresponde al máximo valor de F. también considera varios orígenes y varios destinos para el flujo. transbordo.

m . m . e indican que. y de sus capacidades. Cabe señalar. si i es un nodo de transbordo ( intermedio). - x ∑ k =1 k i xij ≥ 0 ∀i. • • • • Matemáticamente. es decir los arcos pueden tener una capacidad mínima y máxima ( ambas positivas). es decir.. j = i = 1 .. De cualquier manera. que no se garantiza que el problema posea “soluciones factibles”. bi < 0. El valor de bi . el nodo i representa los recursos disponibles de un artículo. la demanda requerida del artículo en el destino i.Las variables de decisión son xij . Las restricciones se denominan “ecuaciones de conservación de flujo “ o “ ecuaciones de Kirchoff”... consideremos que son lij ≤ xij ≤ uij . así. es decir: bi >0 . minimizar el costo total de distribución de los recursos disponibles a través de la red para satisfacer la demanda dada.. depende de la naturaleza del nodo i. NOTA: Vamos a considerar en principio que los flujos son simplemente no negativos. pero vamos a ver que su estructura especial permite una simplificación sin necesidad de utilizar el tabló simplex. la diferencia es el flujo neto bi generado en este nodo. o sea. si i es un nodo fuente (origen) o sea. no se puede crear ni destruir flujo. mientras que la segunda suma representa “ el flujo total que entra en el nodo i. o sea. “ el problema del flujo con costo mínimo “ es un problema lineal y como tal se puede resolver aplicando el método simplex ordinario ( ya visto). en la red. bi = 0 . 1 . 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.. si i es un nodo demanda (destino). de qué arcos se tengan en la red. Obviamente. para una red diseñada razonablemente. resulta ( teniendo en cuenta que los siguientes sumatorios se efectúan sobre arcos existentes) : M in S je a u to x ∑ j=1 m ∑ c ∑ i=1 j=1 m ij m m ij x ij = b i... La primera suma en las restricciones de los nodos representa “ el flujo total que sale” del nodo i. ya que esto dependerá en parte. la condición necesaria más importante para que si exista una solución factible es la siguiente: PROPIEDAD DE SOLUCIONES FACTIBLES: una condición necesaria para que “ un problema de flujo con costo mínimo” tenga soluciones factibles es que 28 . Posteriormente se generalizará. 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.

3) 1 0 -1 0 (2. La columna asociada con el arco (i. Propiedades de la matriz de restricciones A Consideremos por ejemplo la red siguiente: 2 1 4 4 3 La matriz A de coeficientes asociada al conjunto de restricciones de la figura. tiene una fila para cada nodo ( es decir 4 filas ) y una columna para cada arco ( o sea 7 columnas). las variables básicas son m-1. agregando arcos con cij = 0. es decir. Luego.2) 0 -1 1 0 (3.1 ) 0 -1 0 0 1 0 -1 1 1 2 3 4 a) Rango de la matriz A Como la suma de todas las filas dan lugar a un vector nulo. Luego la matriz A. respectivamente. con bm+1 .4) 0 1 0 -1 (3. como se hacia en el problema de transporte.4) (4. Luego teniendo en cuenta los 29 . la columna de A. lo que indica que el rango de la matriz A es m-1.2) A= 1 -1 0 0 (1. Por lo tanto. se añade un nodo demanda (m+1) ficticio si existe exceso de recursos. esta dada por : aij = ei .ej donde ei y ej son vectores en un espacio euclidiano E m . desde este nodo hasta todos los nodos demanda.3) 0 1 -1 0 (2. esto indica que la matriz A no es de rango completo. y todos los elementos restantes son cero. Cada columna de A contiene exactamente dos coeficientes distintos de cero: un +1 y un -1. es que habrá recursos o demandas en exceso. entonces para la gráfica anterior se tiene: (1. igual a la diferencia (exceso) y se establecen unos arcos orientados desde los nodos “orígenes” hasta el citado nodo demanda m+1. con costos cij = 0. con unos en la i-ésima y j-ésima posiciones.∑b = i i=1 m 0 ( O sea que la oferta total debe ser igual a la demanda total) En caso de vulnerarse esta condición. mientras que si el exceso es debido a una mayor demanda se crea un nodo origen m+1 ficticio para generar un flujo equivalente al exceso de demanda.j) contiene un “+1” en la fila i y un “ -1” en la fila j. o sea. se llama “matriz de incidencia nodo-arco” . pudiendo encontrarse una matriz cuadrada de dimensión ( m-1)(m-1) con determinante no nulo.

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. a24 . em ) 1 2 raiz 1 4 4 3 Luego la base de rango completo m: B = (a13 . x34 . a24 . x24 .4) 0 1 0 -1 (3. lo cual se logra añadiendo una variable artificial. A la citada variable artificial la simbolizamos mediante un arco raíz. e4 ) y las variables básicas son (x13 . 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.3) 1 0 -1 0 (2. que como veremos va a ser siempre cero (el coste correspondiente ca no va a influir al ser la variable artificial cero. a34 ) = = 1 0 -1 0 1 0 0 0 1 Obsérvese que al suprimir la fila 4ª de la matriz B se obtiene una matriz triangular inferior. aunque podría ser cualquier valor). siguiente 2 4 4 Como se ha comentado anteriormente la base obtenida no es de rango completo. se puede obtener de la misma forma un árbol de mínima expansión que tiene m-1 arcos. Por ejemplo sea una base B: (1. 3 pero de la misma forma como se hacia en el problema de transporte es conveniente utilizar una de rango completo . a34 . y viceversa.conceptos vistos anteriormente en el problema de transporte. es decir. o lo que es lo mismo el árbol de mínima expansión m-1 = 4-1 = 3 arcos.4) 0 0 1 -1 B = (a13 . Sin embargo el hecho que exista una solución básica no nos asegura que la misma sea factible. luego la nueva matriz de restricciones está formada por (A. x5 )t 2 1 3 30 4 4 . y lo vamos hacer igual a cero también.

( e3 . o sea toda base es triangular. -1 ó 0. dada una solución básica factible inicial. al estar formada la matriz A por componentes +1. luego. se comprueba si la misma es la solución óptima.e3 NOTA La matriz A tiene las propiedades de triangularidad. las componentes del vector yij está formado por +1.a4 ) . es decir. Aunque lo damos sin demostración. la solución 31 .cij correspondientes a las variables no básicas. veamos el ejemplo siguiente: 2 1 3 4 4 Los arcos que están en sentido contrario al arco no básico tienen como coeficiente de representación un +1. ya que: Por ejemplo : a23 = a24 . en el ejemplo anterior se probó la certeza de este teorema.cij ≤ 0 ( en un problema de minimización) . enterabilidad y unimodularidad total . de una forma sencilla y eficiente (como ya se vio en el problema de transporte) pero que aquí se permite además obtenerla de forma gráfica muy sencilla. Además como los coeficientes de la matriz B son +1. como se ha observado anteriormente EL METODO SIMPLEX PARA PROBLEMAS DE FLUJO EN REDES Los pasos a desarrollar son los mismos que se efectúan en el método simplex ordinario. lo mismo con respecto de las variables duales asociadas. ya que yij = B-1 aij . -1 ó 0. para lo cuál se determinan los zij . -1 y 0. Por último. 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).x5 es la variable artificial. 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.e4 )= e2 . o sea es unimodular. luego si son enteros los bi . entonces la solución es entera. mientras que los del mismo sentido tienen un -1. Esta propiedad de la triangularidad permite resolver el sistema de ecuaciones asociado. y si zij . TEOREMA.a34 = (e2 . B xB = b .

básica actual será entonces óptima. a45 . para constituir la citada base de rango completo. entonces una base tiene m-1 = 5-1 = 4 variables legítimas. y se determina la variable básica de bloqueo que saldrá de la base. a53 ) Como el rango es m-1. pivoteándose a continuación. pero como se necesita una base de rango completo. a34 . 2 Supongamos ahora el árbol de expansión enraizado correspondiente a la base anterior b4=-4 b1=2 1 b3=1 3 4 4 32 5 5 b5=-4 . a15 . a34 . en caso contrario entra en la base xij (la que tenga la mayor diferencia). Sea el problema de flujo con costo mínimo de la siguiente figura: b2=5 2 5 -4 b1=2 1 -2 3 4 b3=1 0 3 6 cij b4=-4 4 4 5 Como se observa ⇒ ∃ una solución básica factible. a23 . Sea la siguiente base: B = (a15 .cij ≤ 0 . 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 . Luego si la matriz A es: A = (a12 . a13 . a23 . e5 ) . condición 5 i=1 establecida anteriormente para la existencia de una solución factible. luego 1 0 0 0 0 1 0 0 0 -1 1 0 0 0 -1 1 -1 0 0 -1 0 0 0 0 1 x15 x23 x34 x45 x5 b1 b2 b3 b4 b5 2 5 1 -4 -4 2 ∑bi= 0 5 = = Como se puede observar la matriz básica es una matriz triangular inferior. se utiliza una variable artificial x5 con el vector asociado e5 en un espacio euclidiano E5 . que se resuelve fácilmente. a42 .4 = 2 b =5 -x15 . Veamos a continuación un ejemplo ilustrativo que nos va a mostrar los pasos a seguir.x45 + x5 = b5 = -4 ⇒ x5 = 0 2( la variable artificial x5 siempre va a ser nula). (que la demanda b5=-4 total sea igual a la oferta total). y así hasta que todos los sean zij . a45 .

es decir.x23 = b3 = 1 ⇒ x34 = 1 +x23 = 1+5 = 6 x34 =6 4 4 x45 .x34 = b4 = -4 ⇒ x45 = -4 +x34 = -4+6 = 2 x45 x15 =2 5 5 x5 x45 =2 b5=-4 x5 .x45 = b5 = -4 ⇒ x5 = -4 +2+2 = 0 ( siempre) Se obtiene el mismo resultado anterior. es decir. 33 . En cambio. como se verá posteriormente.b1=2 1 x Se obtienen las siguientes15soluciones: ⇒ x15 = b1 = 2 b2=5 2 x23 ⇒ x23 = b2 = 5 x23 =5 b3=1 3 x34 b4=-4 ⇒ x34 . el proceso de obtener las variables duales asociadas se invierte el proceso.x15 . se obtiene la solución ( valores) básica resolviendo desde los terminales del árbol hacia la raíz del mismo.. desde la raíz hacia los terminales.

es decir del nodo 5 al nodo 3.cij = w aij . igual. como se puede observar en la siguiente figura: 2 1 3 4 4 5 5 Es decir : z53 . según el arco básico del ciclo que forma con el arco no básico (i.cij donde: w = cBB-1 .cij = cBB-1 aij . 1º) El método del ciclo. para el arco no básico (5. se forma el ciclo correspondiente con los arcos básicos. correspondientes de las variables no básicas para saber si la solución básica actual es óptima. Para ello existen dos procedimientos como ocurría en el problema de transporte. ó bien w B= cB .Cálculo de los zij .cij . respectivamente. ó 0.cij = cBB-1 aij . zij .3).cij = cB yij . dando el sentido de giro el correspondiente al citado arco no básico.j) tenga sentido contrario. Luego al existir cinco restricciones el problema dual tendrá 5 variables duales. 2º) Método de la variable dual.cij Es necesario obtener los diferentes zij .cij El vector columna yij tiene como coeficientes de representación +1.4 = -7 NOTA.c45 ) . Así por ejemplo.c53 = cB y53 . -1 .3). o no pertenezca al citado ciclo. o sea: a15 a23 1 0 0 1 0 -1 0 0 -1 0 a34 0 0 1 -1 0 a45 0 0 0 1 -1 34 w1 w2 w3 w4 w5 e5 0 0 0 0 1 = c15 c23 c34 c45 ca = .c53 = (.c53 . si se quiere calcular el valor de z53 .c53 = ( .0 -3 ) . zij . El arco no básico se establece con el sentido del arco que inicialmente estaba establecido en el esquema inicial (5. es decir.c34 .

cij = w aij . 0 . poniendo en el nudo de la raíz. 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. esencialmente se identifica el proceso de pivoteo. a lo largo de los arcos básicos del árbol. Determinación de la variable de bloqueo ( v. se obtiene: zij .3) del ciclo . la solución básica actual no es óptima. -4.wj ) .w5 = c45 . entonces al incrementarse la variable no básica x13 desde su valor cero. las componentes básicas que tienen como componente +1 35 . w2 = -1. ya que: z13 .cij = ( wi . Ahora es necesario conocer que variable básica (variable de bloqueo) va a ser reemplazada por la anterior. se obtiene los siguientes resultados: w5 = 0 ( este valor se obtiene siempre) w4 .ej ) . entra en la base la variable no básica x13 . w1 = 2. Este mismo resultado se puede obtener. Luego sobre celdas no básicas.c13 = 1 > 0 Luego en principio. básica que va a salir de la base) Cuando se determina el zij .wj = cij . 0 ) Resolviendo el citado sistema de ecuaciones. la variable dual igual a cero y procediendo hacia los terminales del árbol.cij Si se hace directamente sobre la red: w2= -1 2 -2 -4 w1=2 1 1 3 -7 w5=0 5 5 w3=3 -2 4 4 w4=3 Como se puede observar.c13 = 1 > 0 es la mayor diferencia. Como z13 .cij = w ( ei .cij máximo para un arco no básico.= ( 2. utilizando la relación wi . ⇒ w4 = 3 + 0 = 3 w3 = 3. 3 . mientras que los que tienen el mismo sentido el componente es -1 ( 0 para los que están fuera del ciclo).

las componentes de la variable básica se modificarán según la conocida ecuación siguiente: xB = { xij} − y13 . El proceso anterior se ilustra en la siguiente figura: 2 No cambia 1 x15 =2 +∆ -∆ x23 =5 x34 =6 4 3 4 +∆ +∆ x45 =2 5 5 No cambia Como se puede observar los vectores básicos del ciclo con componente +1 . decir figuran en el ciclo con -∆. con valor 0. es decir saliendo de la base. mientras que disminuirá a las con coeficiente +1. ∆ Donde ∆ es el mínimo valor de las variables básicas que tienen como coeficiente +1. excepto x15 que se cambia por x13 . es decir queda según el la gráfica siguiente: 2 x13 =2 x23 =5 3 x34 =8 x45 =4 4 4 1 5 5 x5=0 36 . es decir. quedando por último la variable de bloqueo ( la que sale). Luego la nueva solución básica son las anteriores componentes .disminuirán . es decir. o sea sólo x15 =2 ∆ = mínimo  2  = 2 La única variable que disminuye es la variable básica x15 = 2 -∆ = 2-2= 0 (variable de bloqueo). mientras que las que las que tienen el valor 0. x34 = 6+∆ = 6+2= 8. permanecerán con el valor actual. mientras que las siguientes aumentan su valor. cantidad que va a tomar la nueva variable básica x 13 y cantidad que incrementará a las variables básicas con coeficiente -1 . las que tienen la componente -1 se incrementarán . x45 = 2 +2∆ = 2+2= 4. x23 no cambia. restaran de la correspondiente variable básica ∆. y x13 = ∆ = 2 ( variable que entra).

a23 . e4 ) Vamos a utilizar el siguiente ordenamiento para ejecutar los pasos de realización del método simplex para redes: It.cij Pivoteo ∆ -∆ ∆ 1 -7 4 3 -5 2 ∆ = mínimo { 2}= 2 2 -6 -5 5 3 0 -5 -2 2 4 2 0 -2 OPTIMO Luego la solución óptima es: x13 = 4 . a24 . mientras que z* = -5. a34 . Sea la red de la figura siguiente: 2 cij 4 6 -5 -1 3 2 2 bi 4 1 4 4 -5 3 7 -1 La matriz de restricciones es: A = (a12 . x23 = 2 . a24 . 37 . y el resto de xij = 0 .5=-7 Determinación de una solución básica factible. a13 . luego para que sea de rango completo debe de elegirse una variable artificial para lograrlo. Solución Primal 2 0 Solución Dual 4 -2 0 3 -8 zij . como se ha visto anteriormente ) de la siguiente forma: B = ( a13 .Ahora habría que comprobar si la solución presente es óptima. Ejemplo ilustrativo del método simplex para redes Vamos a mostrar ahora el procedimiento operativo seguido para resolver el problema siguiente.2+3. a34 . a41 ) Sea una matriz básica de rango completo ( recordar que el rango de A es m-1. a32 .4+6. En caso contrario el proceso se continuaría del mismo modo señalado anteriormente. x34 = 5 .

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). NOTA: si se utiliza el método d e de la fase I. En el método de penalización las variables artificiales tienen un costo M >> 0 y las restantes el costo real. + ei si bi > 0. se puede considerar como una matriz de incidencia nodo-arco de una gráfica. los costos de las variables artificiales es igual a 1. mientras que para las restantes (legítimas) tienen un costo 0. Se puede aplicar entonces el método de penalización o el de dos fases. Además tiene un nuevo nodo y m nuevos arcos ( un arco entre cada nodo original y el nuevo nodo ). . tiene exactamente un +1 y un -1. 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. . Puesto que ahora cada columna de la matriz nueva. El problema anterior se desarrolla de la siguiente forma: 1 2 3 4 x12 1 -1 0 0 0 x13 1 0 -1 0 0 x23 0 1 -1 0 0 x24 0 1 0 -1 0 x32 0 -1 1 0 0 x34 0 0 1 -1 0 x41 -1 0 0 1 0 x1 1 0 0 0 -1 x2 0 1 0 0 -1 x3 0 0 -1 0 1 x4 0 0 0 -1 1 x5 0 0 0 0 1 b 4 2 -1 -5 0 O si se hace sobre la gráfica: 1 b2=2 0 5 2 0 1 1 cij 1 b1=4 1 0 0 0 4 4 b4=-5 b3=-1 3 38 . 0 Se añade una columna artificial por cada fila de A. ± 1 ± 1 b 0 ± 1 ±1 . 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). donde la i-ésima columna artificial es ± ei dependiendo del signo de bi (es decir.± 1 A ±1 . Esta “nueva gráfica” tiene los nodos y arcos iguales que la gráfica original. .

Ahora para elegir la variable básica que va a salir ( variable de bloqueo).⇒ zij .cij ≥ 0 y para todo xij = lij . se envía una cantidad ∆ alrededor del ciclo en la dirección de la variable entrante. Sin embargo. 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 ). mientras que una solución factible se muestra en la siguiente figura: 5 2 1 4 4 3 El problema de flujo con costo mínimo con cotas inferiores y superiores.cij ≥ 0 para las variables en el límite inferior y las diferencias cij . Ver los dos casos en las siguientes figuras: ∆ ∆ -∆ -∆ ∆ -∆ ∆ ∆ ∆ -∆ -∆ ∆ (b)Cuando xij es 39 decreciente . se envía una cantidad ∆ alrededor del ciclo en contra de la dirección de la variable entrante. Después.zij ≥ 0 para las variables en el limite superior. Conviene decir que las cotas inferiores y superiores no tienen efecto sobre el cálculo de las variables duales y de los valores zij . se hace lo siguiente. Independientemente de que la variable sea creciente o decreciente. Para ello se tiene que una solución básica factible.cij ≤ 0 En el caso de que no se cumplan las relaciones anteriores para todas la variables no básicas según estén en el límite inferior o superior. entonces la variable no básica puede ser candidata a entrar en la base. 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 . y lógicamente será aquella que tenga el mayor valor de entre las diferencia zij .⇒ zij . La resolución se efectúa de una forma similar a cuando se tiene que una variable es no negativa. el valor de las componentes básicas tiene que estar comprendido entre sus límites superiores e inferiores. si la variable entrante es creciente. en cambio si la variable entrante es decreciente.O sea el problema en la fase I. se añade el arco no básico entrante al árbol básico y se determina e ciclo único formado.cij .

En cuanto al problema de transbordo. o del flujo del nodo destino. mientras que el resto de los nodos de la red tienen capacidad 0. se verán en las prácticas de laboratorio. donde las capacidades de demanda son -1. por la red fluye un flujo y la distribución tiene un coste. Obviamente en el problema de asignación es lo mismo. el problema de flujo con costo mínimo se considera el problema general de redes. Se han tratado diferentes tipos de problemas de redes. Sin embargo. ya que una red conexa es un conjunto de nodos que están enlazados.(a)Cuando xij es creciente Para calcular el valor crítico de ∆. 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. 40 . la capacidades de demanda son negativas. Respecto al problema de la ruta más corta. particularizando el problema general para contemplar estos casos sin necesidad de aplicar los algoritmos descritos anteriormente. la diferencia entre los mismos es 0 teniendo en cuenta que las restricciones figuran en el mismo lado de la ecuación las variables. directa o indirectamente entre si. transbordo. Si al problema de transporte si le damos a las capacidades de demandas un valor negativo. En clase desarrollaremos diferentes ejemplos ilustrativos para aclarar el procedimiento de resolución. la variable no básica entra y alguna variable básica sale en una u otra de sus cotas. El problema de flujo máximo. el tratamiento es el mismo que el de transporte. teniendo en cuenta que el flujo máximos de cada arco es la capaciadad uij y que la función objetivo se considera el flujo saliente del nodo origen. y por cuyos arcos pasa un flujo determinado y como los nodos pueden ser fuentes y/o destinos. estableciendo una restricción más ( aparte de las citadas ecuaciones de Kirchoff. que permiten resolverlos tal como se ha visto. y la aplicación entonces de las ecuaciones de Kirchoff en los nodos. es decir . mientras que las capacidades de los nodos intermedios son nulas. Todos estos casos. con sus correspondientes algoritmos. de ahí la terminología del problema. se considera al nodo de origen como un nodo fuente con capacidad 1 y el nodo destino con capacidad -1. considerando las distancias entre los diferentes nodos como si fueses costos. aumentan o disminuyen la citada cantidad . o lo que es lo mismo. se considera a todos nodos intermedios con capacidades 0. En caso contrario. Es decir. Los demás problemas se pueden considerar casos particulares de este. y la posibilidad de que xij ( variable no básica entrante) pueda alcanzar su otra cota. entonces aplicando al problema de transporte las ecuaciones de Kirchoff. entonces la red trata de distribuir las unidades demandadas desde los destinos a las fuentes. problema con flujo con costo mínimo. Aplicación del problema general de redes para resolver los casos particulares. que entre los orígenes y los destinos existen nodos intermedios. Si ocurre la última posibilidad. en la aplicación de las ecuaciones de Kirchoff (sólo se aplican en esos nodos). descritas anterioremente) que establezca que el nodo saliente del nodo origen es igual al flujo del nodo de llegada. es decir. estableciendo un flujo en la red de forma que tal distribución sea lo más económica. el problema se resuelve como el general de redes. se examinan las variables básicas crecientes al igual que las decrecientes. y todas la variables del ciclo se ajustan de manera acorde.

41 .

Sign up to vote on this title
UsefulNot useful