problemas de redes doc

57
PROBLEMAS de FLUJO en REDES

Upload: oscar-rey-vazquez

Post on 04-Jul-2015

938 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Problemas de Redes Doc

P R O B L E M A Sde

FLUJO en REDES

Page 2: Problemas de Redes Doc

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.

2

Page 3: Problemas de Redes Doc

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 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.

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

3

Page 4: Problemas de Redes Doc

problema del árbol de mínima expansión o también llamado problema de recorrido mínimo que se presentará).

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

4

Page 5: Problemas de Redes Doc

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) }.

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 io al nodo ip ) es una sucesión de arcos P = {(io,i1), (i1,i2), ..(ip-1,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. Así cada arco en la trayectoria está dirigido "hacia ip" y "hacia afuera de io ".

Una cadena es una estructura similar a una trayectoria excepto que no todos los arcos están necesariamente dirigidos hacia el nodo ip .

Un circuito es una trayectoria en la que io = ip . Por lo tanto, un circuito es una trayectoria cerrada.

5

Page 6: Problemas de Redes Doc

Un ciclo es una cadena cerrada. Estos conceptos se reflejan en la siguiente figura:

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

Page 7: Problemas de Redes Doc

Se puede decir también, que una trayectoria es una cadena, pero no 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 uij ) 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 xij (variable), mientras que el costo unitario de cada una de las variables por cij .

Una vez descrito los conceptos básicos para poder desarrollar la teoría de redes (aunque existen más conceptos que si son necesarios se describirán en su momento), se pasa a exponer ya los diferentes problemas propuestos anteriormente.

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

7

Page 8: Problemas de Redes Doc

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 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 d1j

para los restantes nodos j=2,….,11. Estas se recogen en la tabla:

Iteracióni 2 3 4 5 6

Nodos7 8 9 10 11

jmí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

96

4 7 10

1 11

5

6 9

13

12

11

12

15

8

18

7

95 6

78

144

12

Page 9: Problemas de Redes Doc

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óni 2 3 4 5 6

Nodos7 8 9 10 11

jmínimo

0 6 ¥ 5 ¥ ¥ ¥ ¥ ¥ ¥ ¥ 41 6 18 - ¥ ¥ 20 ¥ ¥ ¥ ¥ 2

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óni 2 3 4 5 6

Nodos7 8 9 10 11

jmínimo

0 6 ¥ 5 ¥ ¥ ¥ ¥ ¥ ¥ ¥ 41 6 18 - ¥ ¥ 20 ¥ ¥ ¥ ¥ 22 - 18 - 18 ¥ 20 ¥ ¥ ¥ ¥ 33 - - - 18 29 20 ¥ ¥ ¥ ¥ 54 - - - - 27 20 26 27 ¥ ¥ 75 - - - - 27 - 26 27 24 ¥ 106 - - - - 27 - 26 27 - 38 87 - - - - 27 - - 27 - 33 68 - - - - - - - 27 - 33 99 - - - - - - - - - 33 11

E(J) 6 18 5 18 27 20 26 27 24 33

que contiene la fila E(j) de etiquetas permanentes de cada nodo y constituyen las distancias mínimas del nodo origen a cada nodo j de la red. En particular, como E(11)= 33, ésta es la distancia mínima buscada. Falta determinar el camino asociado a esta longitud mínima. Para ello, se parte del nodo destino y se va formando hacia atrás el camino de arcos que cumplen la condición de que la diferencia entre sus etiquetas permanentes sea igual a la longitud del arco (arista) que los une. Así, se tienen

E(11)-E(8) = 33 - 26 = 7 = d8,11

E(8)-E(5) = 26 - 18 = 8 = d58

E(5)-E(2) = 18 - 6 = 12 = d25

9

Page 10: Problemas de Redes Doc

6

31

2

4

5

7

5

11

1814

10

6

3

4

2

7

3

3

54

2

E(2)-E(1) = 6 - 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.

El camino mínimo anterior es 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

10

1 2 5 9 11

1 2 5 8 11

6 18 26

2 5

3

8

96

4 7 10

1 11

5

6 9

13

12

11

12

15

8

18

7

95 6

78

144

33180

27 27

5 20 24

12

Page 11: Problemas de Redes Doc

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 } = 5e (3) = min { 11, 3+¥} = 11e (5) = min { ¥, 3+3 } = 6e (6) = min { 14, 3+¥ } = 14e (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.

Iteracióni 2 3

Nodos4 5 6 7

jmínimo

0 6 11 3 ¥ 14 18 41 5 11 - 6 14 18 22 - 9 - 6 14 18 53 - 8 - - 14 18 34 - - - - 12 18 65 - - - - - 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 = d67

E(6)- E(3) = 12 -8 = 6 = d36

E(3)- E(5) = 8 -6 = 2 = d53

E(5)- E(4) = 6 -3 = 3 = d45

E(4)- E(1) = 3 -0 = 3 = d41

11

Page 12: Problemas de Redes Doc

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 = d42

E(4)- E(1) = 3 -0 = 3 = d14

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).

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óni 2 3

Nodos4 5 6 7

jmínimo

0 6 11 3 ¥ 14 18 41 5 11 - 6 14 18 22 - 9 - 6 14 18 53 - 8 - - 13 16 3

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

6

31

2

4

5

7

515

12 6

800

3

5

3

2

42

3

3

Page 13: Problemas de Redes Doc

6

31

2

4

5

7

5

11

1814

10

6

3

4

2

7

3

3

54

2

4 - - - - 12 8 75 - - - - 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

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 tantoE(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:

13

1 4 2

1 4 1 4 5

1 4 7 6

1 4 5 3

1 4 7

1 4 5 3 x

1 4 5 3 x1 4 7 6 x

6

31

2

4

5

7

5

8

11 6

5

3

0

8

3

3

5

2

3

2

Page 14: Problemas de Redes Doc

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}} = 3e(3) = min {11, max {3, ¥}} = 11e(5) = min {¥, max {3, 3}} = 3e(6) = min {14, max {3, ¥}} = 14e(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óni 2 3

Nodos4 5 6 7

jmínimo

0 6 11 3 ¥ 14 18 41 3 11 - 3 14 18 22 - 4 - 3 14 18 53 - 3 - - 14 10 3

14

Page 15: Problemas de Redes Doc

4 - - - - 4 10 65 - - - - - 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).

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.

15

6

31

2

4

5

7

54

4 3

300

3

3

3

2

42

3

3

Page 16: Problemas de Redes Doc

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.

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

16

3

1

2

6

47

559

11

185

3

4

85

7

5

Page 17: Problemas de Redes Doc

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 nodosconectado

Longitud Lde la arista

elegida

Par denodos

conectados0 - -1 {1} 0 -2 {1, 2} 9 1-23 {1, 2, 4} 5 2-44 {1, 2, 4, 5} 5 4-55 {1, 2, 4, 5, 6} 3 5-66 {1, 2, 4, 5, 6, 7} 4 6-77 {1, 2, 3, 4, 5, 6, 7} 5 6-3

= 31

El árbol de máximo alcance es

17

3

1

2

6

47

559

5

3

4

55

3

1

2

6

47

559

Page 18: Problemas de Redes Doc

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 nodonodo 1 2 3 4 5 6 7

1 9 18 112 9 5 73 18 54 11 5 55 7 5 3 86 5 3 47 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 73 54 5 55 7 5 3 86 5 3 47 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.

3 4 5 6 7 1 18 11 2 5 7

3 54 55 5 3 86 5 3 47 8 4

Marcamos la fila del nodo 4 y prescindimos de su columna, quedando ahora conectados los nodos 2 y 4.

18

Page 19: Problemas de Redes Doc

3 5 6 7 1 18 2 7

3 5 4 5

5 3 86 5 3 47 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.

HastaDesde 1 2 3 4 5 6 7 8

1 - 28 26 41 30 17 19 522 28 - 21 17 26 31 18 403 26 21 - 27 21 25 26 184 41 17 27 - 15 52 36 615 30 26 21 15 - 70 81 776 17 31 25 52 70 - 66 697 19 18 26 36 81 66 - 128 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?

19

Page 20: Problemas de Redes Doc

SoluciónAplicamos el algoritmo de Kruskal, partiendo del nodo 1. La tabla muestra las iteraciones del método

Iter.

Conjunto de nodos

conectados

Longitud Ldel arcoelegido

Par de nodos

conectados0 - -1 {1} 0 -2 {1, 6} 17 1-63 {1, 6, 7} 19 1-74 {1, 6, 7, 8} 12 7-85 {1, 2, 6, 7, 8} 18 7-26 {1, 2, 4, 6, 7, 8} 17 2-47 {1, 2, 4,5 6, 7, 8} 15 4-58 {1, 2, 3,4,5 6, 7, 8} 18 8-3

= 116El á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 Distancia1 6 17 2 4 171 7 19 4 5 157 8 12 8 3 187 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 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:

20

Page 21: Problemas de Redes Doc

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 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 D aun arco i ®j en la red original, la capacidad residual del arco i ®j se disminuye en D, pero la capacidad residual del arco j ® i se aumenta en D. Así, la capacidad residual representa la capacidad del arco que no se usa en la red

21

Page 22: Problemas de Redes Doc

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áximo1

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.

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.

1 Se supone que las capacidades de los arcos son números enteros

22

Page 23: Problemas de Redes Doc

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 :

Iteración 2: se asigna un flujo de 3 a O®A®D®T. La red resultante es la red residual :

Iteración 3: se asigna un flujo de 1 a la trayectoria aumentada O®A®B®D®T.

23

Page 24: Problemas de Redes Doc

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:

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:

Iteración 7: se asigna un flujo de 1 a la trayectoria aumentada O®C®E®B®D®T. La red residual resultante es:

24

Page 25: Problemas de Redes Doc

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:

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 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,

25

Page 26: Problemas de Redes Doc

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:

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

Page 27: Problemas de Redes Doc

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

27

Page 28: Problemas de Redes Doc

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: Las variables de decisión son xij , donde representa el flujo a través del arco de i a j uij es la capacidad máxima de flujo permitido a través del arco de i a j cij costo de distribución de una unidad de i a j bi es el flujo neto generado en el nodo i. El valor de bi , depende de la naturaleza del

nodo i, es decir:bi 0 , si i es un nodo fuente (origen) o sea, el nodo i representa los recursos disponibles de un artículo.bi 0, si i es un nodo demanda (destino), o sea, la demanda requerida del artículo en el destino i.bi = 0 , si i es un nodo de transbordo ( intermedio), es decir, no se dispone ni demanda ningún artículo en el nodo iLuego “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 xij uij , 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 bi 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:

28

Page 29: Problemas de Redes Doc

PROPIEDAD DE SOLUCIONES FACTIBLES: una condición necesaria para que “ un problema de flujo con costo mínimo” tenga soluciones factibles es que

b= 0i

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 bm+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, 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 cij = 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 :

aij = ei - ej

donde ei y ej son vectores en un espacio euclidiano Em , 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 1A = -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

29

1 44

2

3

Page 30: Problemas de Redes Doc

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 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 = (a13 , a24 , a34 ) = 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 ca 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, em )

Luego la base de rango completo m:

30

1 44

2

3

raiz

1

2

3

44

Page 31: Problemas de Redes Doc

B = (a13 , a24 , a34 , e4 ) y las variables básicas son (x13 , x24 , x34 , x5 )t

x5 es la variable artificial.

TEOREMA.

Una base para “un problema de flujo con costo mínimo” está caracterizada por un árbol de expansión enraizado y todo árbol de expansión enraizado es una base triangular inferior, o sea toda base es triangular. Aunque lo damos sin demostración, en el ejemplo anterior se probó la certeza de este teorema.

Esta propiedad de la triangularidad permite resolver el sistema de ecuaciones asociado, B xB = 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 bi , entonces la solución es entera.

Por último, al estar formada la matriz A por componentes +1, -1 y 0, o sea es unimodular, luego, las componentes del vector yij está formado por +1, -1 ó 0, ya que yij = B-1 aij . Sin embargo los coeficientes se pueden determinar al formar el ciclo (un arco no básico en función de los arcos básicos que forman el ciclo), veamos el ejemplo siguiente:

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 :

a23 = a24 - a34 = (e2 - a4 ) - ( e3 - e4 )= e2 - e3

31

1 44

2

3

1 44

2

3

Page 32: Problemas de Redes Doc

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 zij - cij correspondientes a las variables no básicas, y si zij - cij 0 ( en un problema de minimización) , la solución básica actual será entonces óptima; en caso contrario entra en la base xij (la que tenga la mayor diferencia), y se determina la variable básica de bloqueo que saldrá de la base, pivoteándose a continuación, y así hasta que todos los sean zij - cij 0 . Veamos a continuación un ejemplo ilustrativo que nos va a mostrar los pasos a seguir. Sea el problema de flujo con costo mínimo de la siguiente figura:

Como se observa b= 0i

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 = (a12 , a13 , a15 , a23 , a34 , a42 , a45 , a53 )

Como el rango es m-1, entonces una base tiene m-1 = 5-1 = 4 variables legítimas, pero como se necesita una base de rango completo, se utiliza una variable artificial x5 con el vector asociado e5 en un espacio euclidiano E5 , para constituir la citada base de rango completo. Sea la siguiente base:

B = (a15 , a23 , a34 , a45 , e5 ) , luego

1 0 0 0 0 x15 b1 2 0 1 0 0 0 x23 b2 5 0 -1 1 0 0 x34 = b3 = 1 0 0 -1 1 0 x45 b4 -4-1 0 0 -1 1 x5 b5 -4

Como se puede observar la matriz básica es una matriz triangular inferior, que se resuelve fácilmente, obteniéndose el siguiente resultado:

32

b4=-4

1 44

2

3

55

b1=2

b2=5

b3=1

b5=-4

2

-2

56

0

34

-4

cij

Page 33: Problemas de Redes Doc

x15 = b1 = 2x23 = b2 = 5-x23 + x34 = b3 = 1 x34 = 1 + 5 = 6-x34 + x45 = b4 = -4 x45 = 6 - 4 = 2-x15 - x45 + x5 = b5 = -4 x5 = 0 ( la variable artificial x5 siempre va a ser

nula).

Supongamos ahora el árbol de expansión enraizado correspondiente a la base anterior

Se obtienen las siguientes soluciones: x15 = b1 = 2

x23 = b2 = 5

x34 - x23 = b3 = 1 x34 = 1 +x23 = 1+5 = 6

x45 - x34 = b4 = -4 x45 = -4 +x34 = -4+6 = 2

33

1b1=2x15

2

b2=5

x23

b3=13

x34

x23=5

b4=-4

44

x34=6

x45

1 44

2

3

55

b1=2

b2=5

b3=1

b5=-4

b4=-4

Page 34: Problemas de Redes Doc

x5 - x15 - x45 = b5 = -4 x5 = -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.

Cálculo de los zij - cij

Es necesario obtener los diferentes zij - cij , 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.

zij - cij = cBB-1 aij - cij = cB yij - cij

El vector columna yij 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 z53 - c53 , 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 : z53 - c53 = cB y53 - c53 = (- c34 - c45 ) - c53 = ( - 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.

34

55

b5=-4

x45=2x15=2

x5

1 44

2

3

55

Page 35: Problemas de Redes Doc

2º) Método de la variable dual.

zij - cij = cBB-1 aij - cij = w aij - cij

donde: w = cBB-1 , ó bien w B= cB .

Luego al existir cinco restricciones el problema dual tendrá 5 variables duales, o sea:

a15 a23 a34 a45 e5

1 0 0 0 0 0 1 0 0 0

w1 w2 w3 w4 w5 0 -1 1 0 0 = c15 c23 c34 c45 ca = 0 0 -1 1 0-1 0 0 -1 1

= ( 2, -4, 0 , 3 , 0 )

Resolviendo el citado sistema de ecuaciones, se obtiene los siguientes resultados:

w5 = 0 ( este valor se obtiene siempre)w4 - w5 = c45 ; w4 = 3 + 0 = 3w3 = 3; w2 = -1; w1 = 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 wi - wj = cij , a lo largo de los arcos básicos del árbol. Luego sobre celdas no básicas, se obtiene:

zij - cij = w aij - cij = w ( ei - ej ) - cij = ( wi - wj ) - cij

Si se hace directamente sobre la red:

35

1 44

2

3

55

w1=2

w2= -1

w3=3

w5=0

1

-2-2

-4

w4=3

-7

Page 36: Problemas de Redes Doc

Como se puede observar, la solución básica actual no es óptima, ya que:

z13 - c13 = 1 0

Luego en principio, entra en la base la variable no básica x13 . 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 zij - cij máximo para un arco no básico, esencialmente se identifica el proceso de pivoteo.

Como z13 - c13 = 1 0 es la mayor diferencia, y teniendo en cuenta que las componentes del vector y13 son +1 para los arcos básicos que tienen el sentido contrario al arco no básico (1,3) del ciclo , mientras que los que tienen el mismo sentido el componente es -1 ( 0 para los que están fuera del ciclo), entonces al incrementarse la variable no básica x13 desde su valor cero, las componentes básicas que tienen como componente +1 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 D

Donde D 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 x13 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 D, decir figuran en el ciclo con -D, o sea sólo x15 =2

D = mínimo 2 = 2

36

1 44

2

3

55

x15=2

x23=5

x45=2

+D x34=6+D

+D-D

No cambia

No cambia

Page 37: Problemas de Redes Doc

La única variable que disminuye es la variable básica x15 = 2 -D = 2-2= 0 (variable de bloqueo), x23 no cambia, mientras que las siguientes aumentan su valor, es decir, x34 = 6+D = 6+2= 8; x45 = 2 +2D = 2+2= 4, y x13 = D = 2 ( variable que entra). Luego la nueva solución básica son las anteriores componentes , excepto x15 que se cambia por x13 , es decir queda según el la gráfica siguiente:

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 = (a12 , a13 , a23 , a24 , a32 , a34 , a41 )

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 = ( a13 , a24 , a34 , e4 )

Vamos a utilizar el siguiente ordenamiento para ejecutar los pasos de realización del método simplex para redes:

37

2

1 44

2

3

4 -5

-1

2 4

6 -1

-5

7

3

cij

bi

1 44

2

3

55

x23=5

x45=4

x34=8x13=2

x5=0

Page 38: Problemas de Redes Doc

It. Solución Primal Solución Dual zij - cij Pivoteo

1

D = mínimo { 2}= 2

2 OPTIMO

Luego la solución óptima es:x13 = 4 ; x23 = 2 ; x34 = 5 ; y el resto de xij = 0 ; mientras que z* = -5.4+6.2+3.5=-7Determinación de una solución básica factible.

11

A . b.

10 1 1 . . 1 0

Se añade una columna artificial por cada fila de A, donde la i-ésima columna artificial es ei dependiendo del signo de bi (es decir, + ei si bi 0; - ei si bi 0 en caso contrario). Asimismo se añade una fila redundante dada por el negativo de la suma de las filas de la matriz A “extendida” ( la que se obtienen al añadir las columnas citadas).

Puesto que ahora cada columna de la matriz nueva, tiene exactamente un +1 y un -1, se puede considerar como una matriz de incidencia nodo-arco de una gráfica. Esta “nueva gráfica” tiene los nodos y arcos iguales que la gráfica original. Además tiene un nuevo nodo y m nuevos arcos ( un arco entre cada nodo original y el nuevo nodo ). Luego una base factible para este nuevo problema está dada por m variables (arcos) artificiales más una variable (raíz) artificial para la nueva fila (m+1).

Se puede aplicar entonces el método de penalización o el de dos fases, para eliminar las variables artificiales de la base y el nodo (m+1) y utilizar los arcos originales (variables) y una variable artificial (raíz) en el nodo m.

NOTA: si se utiliza el método d e de la fase I, los costos de las variables artificiales es igual a 1, mientras que para las restantes (legítimas) tienen un costo 0. En el método de penalización las variables artificiales tienen un costo M 0 y las restantes el costo real. El problema anterior se desarrolla de la siguiente forma:

x12 x13 x23 x24 x32 x34 x41 x1 x2 x3 x4 x5 b1 1 1 0 0 0 0 -1 1 0 0 0 0 4

38

4

2

5

0

3

2

-2

0

-5

-6 -2

-5

4

2

3

0

3

4

-2

0

-5

-8

2-7

D-D

D

Page 39: Problemas de Redes Doc

2 -1 0 1 1 -1 0 0 0 1 0 0 0 23 0 -1 -1 0 1 1 0 0 0 -1 0 0 -14 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:

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 zij - cij . Sin embargo, el criterio de optimalidad cuando existen cotas superiores e inferiores se alcanza cuando para todas las variables no básicas se cumple:

si para todo xij = uij . zij - cij 0 y para todo xij = lij . zij - cij 0

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

39

1 44

2

3

5

1 44

2

3

b1=41

0 0

0 0

0

b3=-1

5b2=2

b4=-5

1

1

1 cij

Page 40: Problemas de Redes Doc

puede ser candidata a entrar en la base, y lógicamente será aquella que tenga el mayor valor de entre las diferencia zij - cij 0 para las variables en el límite inferior y las diferencias cij - zij 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 D alrededor del ciclo en la dirección de la variable entrante, en cambio si la variable entrante es decreciente, se envía una cantidad D alrededor del ciclo en contra de la dirección de la variable entrante. Ver los dos casos en las siguientes figuras:

Para calcular el valor crítico de D, se examinan las variables básicas crecientes al igual que las decrecientes, y la posibilidad de que xij ( variable no básica entrante) pueda alcanzar su otra cota. Si ocurre la última posibilidad, la variable xij permanece no básica ( en su otra cota) y todas las variables básicas en el ciclo se ajustan de manera congruente. En caso contrario, la variable no básica entra y alguna variable básica sale en una u otra de sus cotas, y todas la variables del ciclo se ajustan de manera acorde, es decir , aumentan o disminuyen la citada cantidad . En clase desarrollaremos diferentes ejemplos ilustrativos para aclarar el procedimiento de resolución.

Aplicación del problema general de redes para resolver los casos particulares.

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

40

-D

D

-D

-D

D

D

(a)Cuando xij es creciente

D

D

D

-D

-DD

(b)Cuando xij es decreciente

Page 41: Problemas de Redes Doc

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.

41

Page 42: Problemas de Redes Doc

42