Академический Документы
Профессиональный Документы
Культура Документы
Notas de Clases
Prof. Jorge R. Vera
Dept. de Ingeniera Industrial y de Sistemas
Escuela de Ingeniera, Pontificia Universidad Catolica de Chile
Octubre 2014
2014
c Jorge Vera Andreo
Sin embargo, los problemas reales involucran tambien puntos intermedios y diversas estructuras de conexiones
y por eso el tema es estudiado en forma mucho mas general.
1
Esto corresponde a nuestra imagen habitual de lo que es una red, y esta puede ser una red de transportes,
de comunicaciones, de personas, una red social, los procesos dentro de una empresa, etc. El modelo de redes
es realmente muy poderos.
Definicion 8.1. Un grafo no dirigido es un par (N, A), donde N es el conjunto de nodos y A esta formado
por pares {i, j} no ordenados, i A, j A (el sentido importa).
Definicion 8.2. Un grafo dirigido es un par (N, A), donde N es el conjunto de nodos y A esta formado por
pares ordenados (i, j) , i A, j A.
Definicion 8.3. Un camino en un grafo es una secuencia consecutiva de nodos y arcos.
Un camino dirigido en un grafo dirigido es un camino en que todos los arcos tienen la misma orientacion.
La figura muestra dos caminos, el segundo es dirigido.
Definicion 8.5. Un arbol es un subgrafo de un grafo que no contiene circuitos. Un arbol generador es un
arbol que cubre todos los nodos de un grafo (a veces se le llama tambien arbol de envergadura maxima).
2
ht el costo de inventario en t. Se usan dos variables: xt , la produccion en t, y It el inventario que se acarrea
de t a t + 1. El modelo es:
PT
min {ct xt + ht It }
t=1
s.t. It = It1 + xt dt , t = 1, . . . , T
xt 0, It 0, t = 1, . . . , T
donde I0 es el inventario inicial en mano.
3
la estructura que vemos aca es precisamente la de un arbol generador. Como veremos a continuacion, esto no
es un accidente; es una propiedad fundamental de los problemas de Flujo a Costo Mnimo. Notemos tambien
que, dado un arbol, el calculo de la solucion es inmediato mediante sustitucion de los valores a partir de las
hojas.
E se llama matriz de incidencia arco-nodo del grafo. Notese que E tiene rango n 1 (sumando las columnas
se obtiene el vector nulo). Es facil ver que todo arbol generador tiene n 1 arcos y, por lo tanto, solo
n 1 columnas de E pueden ser linealmente independientes. Si agregamos un n-esimo arco al arbol nece-
sariamente se formara un ciclo. Dentro de un ciclo es facil ver que las columnas de la matriz de incidencia
son linealmente dependientes. Concluimos entonces, que para tener independencia lineal de las columnas
respectivas, no pueden haber ciclos y, por lo tanto, la estructura debe ser un arbol.
Teorema 8.1. Si el problema de flujo a costo mnimo tiene solucion optima, esa solucion corresponde a un
arbol generador de la red.
Teorema 8.2. Todo arbol generador define una solucion basica factible, inversamente, toda solucion basica
factible corresponde a un arbol generador de la red.
4
8.5 Problema dual y optimalidad
El dual del problema de flujo a costo mnimo es:
n
P
max di i
i=1
s.t. i j cij , (i, j) A
Supongamos se esta usando el SIMPLEX para resolver este problema. En una cierta etapa tenemos una
solucion basica factible correspondiente a un arbol generador. Sea T los arcos del arbol generador. Entonces,
como esos corresponden a las variables basicas:
i j = cij , (i, j) T
Estos son n 1 ecuaciones y n variables: se fija una de las duales a un valor arbitrario y se resuelve para
las otras. Supongamos que en la solucion actual las condiciones de optimalidad no se satisfacen. Entonces,
existe un arco no basico (i, j) tal que
cij = cij (i j ) < 0
Que pasa en el subgrafo T {(i, j)} resultante de agregar (i, j) al arbol? La figura muestra la situacion:
La variable xij (arco (i, j)) entra a la base, luego se enva flujo positivo a traves de (i, j). Como se forma un
ciclo, el flujo aumenta o disminuye en los otros arcos segun su sentido. En algun arco el flujo puede llegar a
0. Ese sera el que sale de la base.
Un nuevo arbol generador se forma, nuevos flujos y nuevas variables duales son calculadas, Y las iteraciones
continuan hasta que se cumpla la condicion de optimalidad.
Pregunta: Que pasa si en el circuito pudiera mandarse flujo sin lmite alguno?
Lo que hemos ilustrado sirve de base para el algoritmo SIMPLEX especializado a redes, en el cual se hace uso
excplcito de la estructura de red para el calculo de las soluciones, no recurriendose a la estructura algebraica
de las bases. El algoritmo SIMPLEX especializado a redes es mas eficiente que el SIMPLEX normal aplicado
al problema lineal equivalente. Pese a esta mayor eficiencia que tiene su origen en el uso de la estructura,
muchas de las preguntas tpicas del SIMPLEX se dan aqu. Por ejemplo, para obtener una solucion inicial
factible existe un procedimiento de Fase I para redes. Igualmente existen distintos criterios de seleccion de
variables, interpretaciones adecuadas de las variables duales, etc. La degenerancia de soluciones tambien
esta presente y, de hecho, se estima mas frecuente que en otros problemas.
5
8.6 Ejemplo
Mostramos a continuacion como se desarrolla el algoritmo en el grafo de la figura:
Junto a cada nodo indicamos la oferta o demanda y sobre los arcos indicamos el costo unitario de transporte.
Vamos a comenzar tomado una solucion basica factible al problema, dada por los arcos rezaltados de la
figura siguiente.
Lo primero que hay que hacer es calcular los valores de las variables duales, que se obtienen del sistema:
i j = cij , (i, j) T
En este caso particular, esto se traduce en las ecuaciones:
1 2 = c12
1 3 = c13
2 4 = c24
Fijando 1 = 0 se obtiene 2 = 3, 3 = 10, 4 = 9. Con estos valores se calculan los costos reducidos
de las arcos no basicos, que son (2, 3) y (3, 4):
c23 = c23 2 + 3 = 2 (3) + (10) = 5
c34 = c34 3 + 4 = 3 (10) + (9) = 4
Los costos reducidos son ambos negativos as que esta solucion no es optima. Debemos elegir una variable
(arco) para entrar a la base. En este caso, elegimos el arco (2, 3) (que equivale a la variable x23 ). Este forma
un circuito entre los nodos 1, 2 y 3. Si (2, 3) tomal valor g, entonces el flujo en los otros arcos del circuito
cambia en g segun cual sea el sentido de circulacion del arco. La situacion se muestra en la figura:
6
Podemos ver que el flujo en (2, 4) puede aumentar hasta en 4 unidades, y con ese valor el flujo en el arco
(1, 3) se hace nulo. Ese es el arco (variable) que sale de la base. La nueva solucion basica factible corresponde
ahora al arbol que se muestra en la figura:
Ahora tenemos que calcular nuevamente los valores de las variables duales, que se obtienen del sistema: En
este caso particular, esto se traduce en las ecuaciones:
1 2 = c12
2 3 = c23
2 4 = c24
Fijando 1 = 0 se obtiene 2 = 3, 3 = 5, 4 = 9. Con estos valores se calculan los costos reducidos de
las arcos no basicos, que ahora son (2, 3) y (3, 4):
c13 = c23 2 + 3 = 10 (0) + (5) = 5
c34 = c34 3 + 4 = 3 (5) + (9) = 1
Aun hay un costo reducido negativo as que esta solucion no es optima. Debemos elegir una variable (arco)
para entrar a la base. En este caso, elegimos el arco (3, 4) (que equivale a la variable x34 ). Este forma un
circuito en el que los flujos cambian como se muestra en la figura:
Podemos ver que el flujo en (3, 4) puede aumentar hasta en 3 unidades, y con ese valor el flujo en el arco
(2, 4) se hace nulo. Ese es el arco (variable) que sale de la base. La nueva solucion basica factible corresponde
ahora al arbol que se muestra en la figura:
Ahora tenemos que calcular nuevamente los valores de las variables duales, que se obtienen del sistema: En
este caso particular, esto se traduce en las ecuaciones:
1 2 = c12
2 3 = c23
3 4 = c34
7
Fijando 1 = 0 se obtiene 2 = 3, 3 = 5, 4 = 8. Con estos valores se calculan los costos reducidos de
las arcos no basicos, que ahora son (2, 3) y (3, 4):
Ahora los costos reducidos son todos no negativos y podemos asegurar que la solucion actual es optima.
N 0 = N
{t}
(i, t) si bi > 0
A0 = A
(t, i) si bi 0
Adicionalmente se redefinen los costos de los arcos de esta nueva red, c0ij , de la siguiente manera:
0 0 si (i, j) A
cij =
1 si i = t o j = t
La siguiente figura muestra graficamente la cosntruccion de la nueva red:
La logica del procedimiento de Fase I es la misma que la del general para un problema cualquiera: si al
final de la optimizacion, uno de los arcos artificiales permanece en el arbol optimo con flujo > 0, entonces el
problema original era infactible.
Ejemplo:
Cual es el maximo flujo en esta red?
8
Ejemplo: estructura de comisiones:
Una Universidad va a realizar un ejercicio de planificacion estrategica y se necesita estructurar una serie
de comisiones. Se deben formar p comisiones y hay q departamentos academicos. Ninguna comision puede
tener mas de un integrante del mismo departamento. Como modelamos esto como un problema de flujo
maximo?
Definicion: Un corte-(r, s) en una red dirigida (N, A) es una particion de N en dos subconjuntos disjuntos,
S y T tales r S, s T . Denotamos el corte por (S, T ).
Ejemplo:
Cuanto es el valor de los distintos cortes-(1, 6) que se pueden hacer en el ejemplo de la figura anterior?
Teorema 8.3 (Ford y Fulkerson). El maximo valor de flujo (si existe) que se puede enviar desde el origen
r al destino s es igual a la menor capacidad de entre todos los cortes-(r, s).
Este resultado se conoce como el Teorema de Ford-Fulkerson y fue demostrado en 1956 por L. Ford y R.
Fulkerson. Es uno de los resultados mas importantes de la Investigacion Operacional, no se solo por su uso
practico sino tambien por sus implicancias teoricas en Programacion Entera.
Vamos a desarrollar una demostracion constructiva que entrega un algoritmo explcito para resolver estos
problemas: El algoritmo de caminos de aumento de flujo.
Demostracion: La siguiente demostracion es ilustrativa del argumento general, y se apoya en el ejemplo,
pero provee al argumento fundamental. Es necesario suponer que las capacidades son numeros enteros.
Supongamos primero que disponemos de una asignacion de flujos factibles en la red. Sea f = {fe : e A}
un vector de flujos factibles, es decir
0 fa ua , a A,
y adicionalmente cumplen el equilibrio de flujo. Definamos un grafo auxiliar G0 de la siguiente forma:
el conjunto de nodos es V .
Para a = (i, j) A, si fa < ua , se pone el arco (i, j) con capacidad igual a ua fa .
9
El grafo de capacidades residuales es:
Es facil ver que en esta red resudial se pueden enviar 2 unidades de flujo por el camino que muestra la figura:
Siguiendo de esta manera se construyen mas grafos residuales. Los arcos saturados estan representando las
zonas mas restrictivas en capacidad de la red. Finalmente, la conclusion es que en el optimo no se pueden
encontrar mas caminos de aumento de flujo y al menos uno de los cortes esta saturado: aquel indicado por
los arcos saturados. Luego, el valor del flujo alcanzado debe ser igual a la capacidad del corte identificado (de
otro modo, aun se podra construir un grafo residual por el cual se podra mandar mas flujo) Este argumento
demuestra el teorema. QED.
La demostracion provee un algoritmo para resolver el problema: ese es el algoritmo de Ford y Fulkerson.
Este algoritmo, salvo ciertas sutilezas, converge en un numero finito de etapas y es bastante eficiente, pero
10
a lo largo de las decadas se han desarrollado extensiones y modificaciones mas eficientes.
El problema de Flujo Maximo puede formularse como uno de programacion lineal: Sea xij el flujo en el arco
(i, j). Sea F el flujo que se enva desde el nodo r.
max F
P P F i=r
s.t. xij xki = 0 i 6= r, s
(i,j)A (k,i)A F i=s
0 xij uij , (i, j) A
Ejercicio: Construya el dual de este problema y meustre que ese dual calcula el corte mnimo. Esto provee
otro argumento para el Teorema de Ford y Fulkerson.
Ejercicio: Muestre como resolver el problema de Flujo Maximo usando un problema de Flujo a Costo
Mnimo.
El problema se puede formular como uno de flujo a costo mnimo: tomemos dij como es el costo en los arcos.
Se pone una oferta igual a 1 en r, y una demanda 1 en s. Por estructura, el problema tiene lo que se conoce
como la propiedad de integralidad. Esto quiere decir que la solucion es entera sin que tenga que exigirse
a priori. Esto ocurre, en general, en problemas de Flujo a Costo Mnimo donde las ofertas y demandas son
numeros enteros. Luego, la solucion es entera, y como la oferta es 1, ese flujo llega no dividido a s. Sin
embargo, existe un algoritmo mas eficiente.
Este es el algoritmo en su forma base y puede implementarse muy eficientemente. Existen extensiones que,
de hecho, son incluso mas eficientes.
11
A continuacion se muestra la secuencia de iteraciones:
12
Lo que hemos encontrado es el arbol de rutas mnimas con raiz en el nodo 1.
Como decamos, el algoritmo se puede implementar de manera muy eficiente usando estructuras de datos
apropiadas. Esto permite obtener complejidades del orden de m + nlogn, donde m es el numero de arcos,
normalmente muy inferior a n2 . La implementacion eficiente es muy importante ya que en muchos problemas
se utiliza el calculo de rutas mnimas.
13