Universidad de Chile Facultad de Ciencias F´ısicas y Matemáticas

Anuncio
Universidad de Chile
Facultad de Ciencias Fı́sicas y Matemáticas
Departamento de Ingenierı́a Matemática
MA47A: Optimización Combinatorial
Profesor: Roberto Cominetti
Auxiliares: Raúl ALiaga Dı́az y Cristóbal Guzmán P.
Pauta Control 2 año 2007
P1 (a) Sol:
P Probemos previamente que dada cualquier configuración x = (xa )a∈A ,
v∈V div(x)i = 0
Por definición:
X
X
∀v ∈ V div(x)i =
xa −
xa
ia =v
ja =v
Es fácil ver entonces, que al sumar sobre todos los nodos, por cada
término que se suma, hay otro que se resta. En efecto:
P
v∈V
div(x)i
nP
o
P
P
=
v∈V
ia =v xa −
ja =v xa
P
P
P
P
=
x − v∈V ja =v xa
Pv∈V ia =v
Pa
=
a∈A xa −
a∈A xa = 0
Probemos ahora: [V + = ∅] ⇔ [V − = ∅]
Solo haremos ⇒ (el otro es análogo)
V + = ∅ ⇒ ∀i ∈ V div(x)i ≤ 0
P
Pero por lo visto antes: v∈V div(x)i = 0. Lo que implica:
∀i ∈ V div(x)i = 0 ⇒ V − = ∅
Ya probada la primera equivalencia, probemos [V + = ∅] ⇔ [x
es FCM]
⇐
x
es FCM ⇒ x
es flujo factible ⇒ ∀v ∈ V div(x)i = 0
Con lo cual, en particular, V + = ∅.
⇒
Por lo probado antes, tenemos ∀v ∈ V div(x)i = 0. Sea entonces C un
circuito no saturado de G (es decir, si recorremos un arco hacia adelante
no está en su cota superior; y si lo recorremos hacia atrás no está en su
cota inferior). Entonces
Si recorremos un arco a hacia adelante: xa < ua ⇒ cπa ≥ 0.
1
Si recorremos un arco a hacia atrás: xa > ua ⇒ cπa ≤ 0 ⇒ −cπa ≥ 0.
Ahora bien:
c(C) =
X
a∈C +
c(a) −
X
X
c(a) = =
a∈C −
a∈C
cπa +
|{z}
+
≥0
X
a∈C
−cπa ≥ 0
|{z}
−
≥0
con lo cual se concluye que no existen circuitos no saturados de costo
negativo. Notar que la igualdad entre la suma de costos usual y reducidos
se debe a que se produce una suma telescópica entre los potenciales, por
lo que en total suman 0.
(b) Sol: Como queremos enviar flujo de un punto de superavit a uno de
déficit, necesitamos que los arcos que ocupemos no estén saturados (en
el sentido que queremos hacer la aumentación), por lo que consideramos
sólo los arcos que no tengan holgura nula.
Claramente, lo que tendrá mayor complejidad aritmética será encontrar
el camino de largo mı́nimo a V + para todo nodo. Para hacer esto de
forma eficiente, construiremos el grafo (V, Â), que será idéntico a (V, Ã),
y que para cada v ∈ V + agregaremos un arco de costo nulo de v hacia
un nuevo nodo r; ası́, en vez de minimizar caminos a todos los nodos en
V + , minimizaremos el camino a r utilizando Dijkstra.
Veamos ahora el tiempo que nos toma realizar cada tarea pedida en (i)
y (ii):
1) Consturir el grafo: O(|A|) = O(|V |2 )
2) Aplicar Dijkstra a (V, Â): O(|V |2 )
3) Actualizar los potenciales, calcular y aumentar por el camino:
O(|A|) = O(|V |2 )
Por lo que toma en total O(|V |2 ).
(c) Sol: Primero notamos que al hacer la aumentación, nunca sobrepasamos la capacidad de algún arco, luego: ∀a ∈ Axa ∈ [la , ua ].
Ahora analicemos lo pedido según casos:
Si a pertenece al camino:
Dado que los largos son no negativos y el camino que une a s con
V + pasa por a: mı́n{li , ls } = li para i = ia y i = ja . Entonces:
2
cπ̃a = ca + π̃ia − π̃ja = cπa + lja − lia
Pero, como sabemos que los li definen un potencial y C s es camino
de largo mı́nimo: lia = lja + cπa . Luego:
cπ̃a = cπa − cπa = 0
Si a no pertenece al camino:
Probaremos sólo la implicancia x̃a < ua ⇒ ca π̃ ≥ 0 (la otra se hace
de manera análoga).
Notemos que:
x˜a < ua ⇒ xa < ua ⇒ cπa ≥ 0
además a ∈ Ã.
Estudiemos la situación según casos:
Si ls ≤ mı́n{lja , lia }:
En este caso ca π̃ = cπa ≥ 0.
Si ls ∈ [lja , lia ]:
ca π̃ = cπa + mı́n{lja , ls } − mı́n{lia , ls } = cπa + ls − lia
Ahora, por definición de potencial: lia ≤ lja + cπa ⇒ ls − lia ≥
ls − lja − cπa
Entonces:
ca π̃ ≥ cπa + ls − lja − cπa = ls − lja ≥ 0.
Si ls ≥ máx{lja , lia }:
En este caso
ca π̃ = cπa + lja − lia ≥ 0
Esta última desigualdad es por definión de potencial.
(d) Sol: Notemos que en cada iteración, enviamos al menos una unidad
de déficit a algún punto de superavit; por lo tanto, en cada iteración
disminuı́mos en 2 unidades la norma 1 de las divergencias. Entonces, en
menos de:
1X
1
|div(x)i |
||div(x)||1 =
2
2 i
3
iteraciones, logramos un flujo conservativo; que por la parte (c) además
resulta ser cuasisolución, y finalmente por la parte (a) es FCM.
P2 (a) Notemos que si (a, b) ∈ E, Gp = (A, E), entonces a y b se pueden realizar paralelamente. Luego, supongamos que una existe una programación
factible S y un matching M máximo tal que T < |A| − |M |. Entonces,
tenemos que o bien S no es factible o bien M no es matching máximo,
pues si es factible, con las tareas realizadas en paralelo se puede contruir
un matching de tamaño mayor con los nodos asociados a esas tareas.
(b) Sea M un matching máximo, tenemos que, si numeramos los arcos
del matching (ai , bi ), . . . , (aj , bj ), . . . , (am , bm ). Luego, para obtener una
programación factible, solo debemos procurar que sucede en el caso de
que ai deba ejecutarse antes que aj , y bj antes que bi , para i < j. En
ese caso, tenemos que en Gp existe un arco entre ai y bj , y aj y bi ,
pues si no lo hubiera, entonces por definición, eso contradiria el hecho
de que hay arcos que consideramos de un matching de Gp , (suponiendo
un matching no vacı́o, por supuesto).
Ası́, si tenemos tareas que deben realizarse antes que otras dentro de las
enumeraciones de podemos hacer de los nodos de los arcos del matching,
podemos intercambiar los arcos en su orden, o crear un nuevo matching
en virtud de los argumentos previos, y obtener una programación factible.
Luego, si sucediera que T > |A| − |M | para una programación óptima,
entonces esta programación ¡no será óptima !, pues con el matching podriamos hacer una programación que demore |A| − |M | (descontamos
del total de tareas, las que podemos hacer en dos máquinas), y esa serı́a
de menor tiempo.
4
Descargar