Está en la página 1de 54

1

Captulo 1
Programacion lineal
1. Introducci on.
En general, un problema de programacion lineal consiste en maximizar o minimizar el valor de una funci on
lineal c.x = c
1
x
1
+ + c
n
x
n
(a la que llamaremos el funcional) para (x
1
, . . . , x
n
) satisfaciendo un n umero
nito de igualdades o desigualdades (a las que llamaremos restricciones) de alguno de los siguientes tipos:
a
1
x
1
+ + a
n
x
n
= b, a
1
x
1
+ + a
n
x
n
b o a
1
x
1
+ + a
n
x
n
b
Cuando todas las ecuaciones sean del tipo a
i1
x
1
+ + a
in
x
n
= b
i
(1 i m) usaremos la notaci on
matricial Ax = b, donde A es la matriz de coecientes a
ij
(1 i m, 1 j n), x = (x
1
, . . . , x
n
),
b = (b
1
, . . . , b
m
) y por abuso de notaci on estamos identicando IR
n
con IR
n1
. An alogamente, en lugar de
a
i1
x
1
+ + a
in
x
n
b
i
1 i m escribiremos Ax b, etc. De esta manera, x 0 signicar a x
j
0
1 j n.
Veamos algunos ejemplos.
i) El problema del transporte.
Una empresa tiene dos plantas elaboradoras de tubos de acero, y tres centros de distribuci on. Una planta
elabora 100 toneladas por da y la otra 200. Cada centro demanda 75, 125 y 100 toneladas por da respec-
tivamente. Se estima que el costo c
ij
de llevar una tonelada de la planta i al centro j esta dado por la
matriz
_
10 14 20
12 20 17
_
Queremos determinar la cantidad x
ij
de toneladas a despachar por da de la planta i al centro j de manera
tal que el costo total del transporte sea mnimo. Es decir, queremos minimizar la funci on lineal
c.x = 10x
11
+ 14x
12
+ 20x
13
+ 12x
21
+ 20x
22
+ 17x
23
con las restricciones
x
11
+ x
12
+ x
13
= 100
x
21
+ x
22
+ x
23
= 200
x
11
+ x
21
= 75
x
12
+ x
22
= 125
x
13
+ x
23
= 100
x
ij
0 i, j
Escrito matricialmente el problema es
min cx
Ax = b
x 0
donde A y b son las matrices
A =
_
_
_
_
_
1 1 1 0 0 0
0 0 0 1 1 1
1 0 0 1 0 0
0 1 0 0 1 0
0 0 1 0 0 1
_
_
_
_
_
y b =
_
_
_
_
_
100
200
75
125
100
_
_
_
_
_
2 Optimizaci on Combinatoria
ii) El problema de la mezcla optima de producci on.
Una panadera elabora pan de 4 tipos, utilizando 6 ingredientes. Sea a
ij
la cantidad de kilos del ingrediente
i que se necesitan para elaborar un kilo de pan del tipo j y sea c
j
la ganancia de vender un kilo de pan del
tipo j (1 i 6, 1 j 4). Sabiendo que, en total, no pueden elaborarse mas de 100 kilos de pan al
da, y que diariamente se dispone de b
i
kilos del ingrediente i, se desea saber cu antos kilos de cada tipo de
pan se deben elaborar por da para obtener la mayor ganancia.
Llamemos x
j
la cantidad de kg de pan del tipo j que se elaboraran por da. Queremos maximizar la funci on
lineal c.x = c
1
x
1
+ c
2
x
2
+ c
3
x
3
+ c
4
x
4
, con las restricciones
a
11
x
1
+ a
12
x
2
+ a
13
x
3
+ a
14
x
4
b
1
a
21
x
1
+ a
22
x
2
+ a
23
x
3
+ a
24
x
4
b
2
a
31
x
1
+ a
32
x
2
+ a
33
x
3
+ a
34
x
4
b
3
a
41
x
1
+ a
42
x
2
+ a
43
x
3
+ a
44
x
4
b
4
a
51
x
1
+ a
52
x
2
+ a
53
x
3
+ a
54
x
4
b
5
a
61
x
1
+ a
62
x
2
+ a
63
x
3
+ a
64
x
4
b
6
x
1
+x
2
+ x
3
+ x
4
100
x
j
0 j
es decir, queremos resolver el problema de programacion lineal
max cx
Ax b
x 0
donde c = (c
1
, c
2
, c
3
, c
4
), A =
_
_
_
_
_
_
_
_
_
a
11
a
12
a
13
a
14
a
21
a
22
a
23
a
24
a
31
a
32
a
33
a
34
a
41
a
42
a
43
a
44
a
51
a
52
a
53
a
54
a
61
a
62
a
63
a
64
1 1 1 1
_
_
_
_
_
_
_
_
_
y b =
_
_
_
_
_
_
_
_
_
b
1
b
2
b
3
b
4
b
5
b
6
100
_
_
_
_
_
_
_
_
_
.
iii) El problema de la dieta.
Supongamos que queremos confeccionar una dieta con seis tipos de alimento, cada uno de ellos conteniendo
cuatro clases de vitaminas. Sea a
ij
la cantidad de vitamina i contenida en el alimento j y sea c
j
el precio de un
kilo de alimento j. Queremos saber cu antos kilos x
j
de cada alimento j debemos inclur para garantizar que
la dieta contenga por lo menos b
i
unidades de vitamina i de manera tal que el costo total de los alimentos
sea mnimo. Es decir, queremos minimizar la funci on lineal c
1
x
1
+ + c
6
x
6
sujeta a las restricciones
a
i1
x
1
+ + a
i6
x
6
b
i
(1 i 4) y x
j
0 (1 j 6). En otras palabras, queremos resolver el problema
de programacion lineal
min cx
Ax b
x 0
donde c = (c
1
, c
2
, c
3
, c
4
, c
5
, c
6
), A = ||a
ij
|| y b =
_
_
_
b
1
b
2
b
3
b
4
_
_
_.
Programaci on lineal 3
2. Forma standard.
Observemos que una desigualdad del tipo
a
i1
x
1
+ + a
in
x
n
b
i
es equivalente a
_
a
i1
x
1
+ + a
in
x
n
+ s
i
= b
i
s
i
0
La variable s
i
introducida se llama variable de holgura. De la misma manera, una desigualdad del tipo
a
i1
x
1
+ + a
in
x
n
b
i
puede ser reemplazada por
_
a
i1
x
1
+ + a
in
x
n
s
i
= b
i
s
i
0
Tambien observemos que si para alg un j no se pide la condici on x
j
0 entonces podemos reemplazar la
variable x
j
por y
j
z
j
agregando las condiciones y
j
0 y z
j
0.
Por ultimo, max cx = min (c) x.
Todas estas observaciones muestran que cualquier problema de programacion lineal puede ser planteado en
la forma
min cx
Ax = b
x 0
Esta forma de planteo del problema se denomina forma standard.
3. Teorema fundamental de la programaci on lineal.
Denici on 3.1. Un hiperplano en IR
n
es una variedad lineal de codimension 1, es decir, {x IR
n
/ a.x = k},
donde a = (a
1
, . . . , a
n
) IR
n
, k IR y a.x = a
1
x
1
+ + a
n
x
n
.
Cada hiperplano determina dos semiespacios: {x IR
n
/ a.x k} y {x IR
n
/ a.x k}.
Un poliedro es la interseccion de un n umero nito de semiespacios.
Observaci on 3.2. Notemos que el conjunto {x IR
n
/ ax = k} es un poliedro ya que puede escribirse
como interseccion de los semiespacios {x IR
n
/ ax k} y {x IR
n
/ ax k}. Ademas, es claro que la
interseccion de un n umero nito de poliedros es un poliedro. Esto muestra que el conjunto de todos los x
que satisfacen las restricciones de un problema de programacion lineal es un poliedro. Luego, un problema
de programacion lineal consiste en maximizar o minimizar el valor de una funci on lineal sobre un poliedro.
Dado un problema de programacion lineal, si el problema tiene una soluci on optima entonces tiene una
soluci on optima en un punto extremo del poliedro. Antes de dar la denici on rigurosa de punto extremo,
veamos esto en un ejemplo.
Dado el problema de programacion lineal
max 2x
1
x
2
x
1
+ 2x
2
3
(x
1
, x
2
) 0
graquemos el poliedro {(x
1
, x
2
) IR
2
/ x
1
+ 2x
2
3 x
1
0 x
2
0} y las distintas rectas
2x
1
x
2
= k
4 Optimizaci on Combinatoria
2
1
1
2 3
x + 2 x = 3
1
x x = 0
1
1
1
1
1
1
1 2
x x = 6 2
x x = 4 2

x x = 2 2
x x = 1 2
x x = 3 2
x x = 5 2

2
2
2
2
2
2
2
2
En este caso, los puntos extremos del poliedro son (0, 0), (3, 0) y (0,
3
2
). Como se observa en la gura, la
soluci on optima (x
1
, x
2
) = (3, 0) es un punto extremo del poliedro.
Denici on 3.3. Un subconjunto K de IR
n
se dice convexo sii y + (1 )z K y, z K, 0 1.
Dejamos a cargo del lector demostrar que un poliedro en IR
n
es un conjunto convexo.
Denici on 3.4. Sea K un conjunto convexo en IR
n
. Diremos que x K es un punto extremo si y s olo si no
existen y, z K, IR, con y = z, 0 < < 1 tales que x = y + (1 )z. En otras palabras, un punto
de K es un punto extremo si, cualesquiera sean y, z K, y = z, la unica forma en que x puede estar en el
segmento que une y con z es que x sea alguno de los extremos del segmento, es decir, x = y o x = z.
Para lo que sigue necesitaremos denir los conceptos de soluci on b asica y de soluci on factible de un problema
de programacion lineal que utilizaremos en las demostraciones.
Sea A IR
mn
una matriz de rango m y sea b IR
m
.
Denici on 3.5. Diremos que x IR
n
es una soluci on b asica de Ax = b sii Ax = b y existen m ndices
i
1
, . . . , i
m
entre 1 y n tales que x
j
= 0 j = i
1
, . . . , i
m
y las columnas i
1
, . . . , i
m
de A (que llamaremos la
base) son linealmente independientes. Si Ax = b es el sistema lineal que aparece en las restricciones de un
problema de programacion lineal, diremos que x es una soluci on b asica del problema si x es una soluci on
b asica de Ax = b.
Observaci on 3.6. En la denici on anterior hemos utilizado la misma letra x para representar tanto a la
variable como a la soluci on del sistema lineal Ax = b. El lector atento sabra distinguirlas en cada caso.
Observaci on 3.7. Si A

IR
mn
es otra matriz de rango m, b

IR
m
y los sistemas Ax = b y A

x = b

son
equivalentes entonces x es una soluci on b asica de Ax = b si y solo si es una soluci on b asica de A

x = b

.
Proposici on 3.8. Dado x tal que Ax = b, si {j / x
j
= 0} = {j
1
, . . . , j
r
} entonces se verica:
x es una soluci on b asica de Ax = b sii el conjunto formado por las columnas j
1
, . . . , j
r
de A es linealmente
independiente.
Demostraci on: (=) Sean i
1
, . . . , i
m
tales que x
j
= 0 para todo j = i
1
, . . . , i
m
y las columnas i
1
, . . . , i
m
de A son linealmente independientes. Entonces {j
1
, . . . , j
r
} {i
1
, . . . , i
m
} de donde el conjunto formado por
las columnas j
1
, . . . , j
r
de A esta contenido en el conjunto formado por las columnas i
1
, . . . , i
m
de A y por
lo tanto es linealmente independiente.
(=) Si las columnas j
1
, . . . , j
r
de A son linealmente independientes entonces r m.
Si r = m basta tomar {i
1
, . . . , i
m
} = {j
1
, . . . , j
m
}.
Si fuese r < m, como A tiene rango m entonces existen j
r+1
, . . . , j
m
tales que las columnas j
1
, . . . , j
m
de
A son linealmente independientes y vale que x
j
= 0 para todo j = j
1
, . . . , j
m
. Luego tambien en este caso
resulta que x es una soluci on b asica.
Programaci on lineal 5
Denici on 3.9. Una soluci on b asica x de Ax = b se dice degenerada sii #{j / x
j
= 0} < m (es decir, si
x
i
k
= 0 para alg un 1 k m).
Observaci on 3.10. Sea x una soluci on b asica de Ax = b y sean i
1
, . . . , i
m
tales que x
j
= 0 j = i
1
, . . . , i
m
y las columnas i
1
, . . . , i
m
de A son linealmente independientes Entonces, si B es la submatriz de A formada
por las columnas i
1
, . . . , i
m
, resulta que B es inversible, x
j
= 0 j = i
1
, . . . , i
m
y
_
_
_
_
x
i1
x
i2
.
.
.
x
im
_
_
_
_
= B
1
.
_
_
_
_
b
1
b
2
.
.
.
b
m
_
_
_
_
Proposici on 3.11. El sistema lineal Ax = b tiene a lo sumo
_
n
m
_
soluciones b asicas.
Demostraci on: Para cada soluci on b asica x de Ax = b, jemos i
1
, . . . , i
m
tales que x
j
= 0 j = i
1
, . . . , i
m
y las columnas i
1
, . . . , i
m
de A son linealmente independientes.
Sea B la matriz formada por las columnas i
1
, . . . , i
m
de A y sea b = B
1
b. Entonces, por la observaci on
3.10,
x
j
=
_
0 si j = i
1
, . . . , i
m
b
k
si j = i
k
(1 k m)
Esto dice que la aplicaci on del conjunto de soluciones b asicas de Ax = b en el conjunto de los subconjuntos
de m elementos del conjunto {1, 2, . . . , n} dada por
(x) = {i
1
, . . . , i
m
}
es inyectiva. En efecto, si (x) = (x

) = {i
1
, . . . , i
m
} entonces
x
j
=
_
0 si j = i
1
, . . . , i
m
b
k
si j = i
k
(1 k m)
y tambien
x

j
=
_
0 si j = i
1
, . . . , i
m
b
k
si j = i
k
(1 k m)
pues b no depende de x sino solo de A, b y de i
1
, . . . , i
m
. Luego x = x

.
Denici on 3.12. Dado un problema de programacion lineal diremos que x es una soluci on factible sii x
satisface las restricciones del problema.
Notemos que no siempre existen soluciones factibles porque, por ejemplo, el sistema lineal podra no tener
soluci on. Pero tambien porque aunque las tuviera, podra ocurrir que ninguna de estas soluciones vericara
el resto de las restricciones, situaci on que por ejemplo se da en el problema
max 3x
1
x
2
+ 2x
3
x
1
+ x
2
x
3
= 2
x
1
+ x
2
= 1
x 0
Por las observaciones hechas en la seccion 2. vamos a restringirnos al estudio de problemas planteados en
forma standard.
Sean A IR
mn
, b IR
m
y c IR
n
y consideremos el problema de programacion lineal en forma standard
6 Optimizaci on Combinatoria
min cx
Ax = b (1)
x 0
Probaremos que si (1) tiene una soluci on optima entonces tiene una soluci on optima en un punto extremo
del poliedro {x IR
n
/ Ax = b x 0}.
Veamos que podemos suponer que rg A = m. En efecto, si (1) tiene una soluci on optima entonces el sistema
Ax = b debe ser compatible. Luego, el rango de A debe ser igual al rango de la matriz ampliada [A| b]. Si
rg A < m entonces rg [A| b] < m. Sean F
1
, . . . , F
m
las las de [A| b]. Sea {F
j1
, . . . , F
jr
} {F
1
, . . . , F
m
} una
base del subespacio generado por F
1
, . . . , F
m
y sea [A

| b

] la matriz cuyas las son F


j1
, . . . , F
jr
. Entonces
los sistemas Ax = b y A

x = b

son equivalentes. Luego podemos reemplazar Ax = b por A

x = b

en (1)
donde ahora A

IR
rn
tiene rango r. Por lo tanto, de ahora en adelante supondremos que A tiene rango
m.
Teorema 3.13. Sea K el poliedro K = {x IR
n
/ Ax = b x 0}. Entonces x IR
n
es una soluci on
b asica y factible de (1) si y solo si x es un punto extremo de K.
Demostraci on:
(=) Sea x una soluci on b asica y factible de (1) que es combinaci on convexa de dos soluciones factibles
(notemos que K es el conjunto de soluciones factibles de (1)), es decir, x = y + (1 )z, con y, z K y
0 < < 1 y probemos que entonces y = z.
Sean i
1
, . . . , i
m
tales que x
j
= 0 para todo j = i
1
, . . . , i
m
y las columnas i
1
, . . . , i
m
de A son linealmente
independientes.
Entonces la submatriz B formada por las columnas i
1
, . . . , i
m
de A es una matriz inversible.
Veamos que y = z, es decir que y
j
= z
j
para todo j.
Si j = i
1
, . . . , i
m
entonces 0 = x
j
= y
j
+ (1 )z
j
y como y 0, z 0, > 0 y (1 ) > 0 entonces debe
ser y
j
= 0 = z
j
.
Ahora, como Ay = b = Az y como y
j
= 0 = z
j
para todo j = i
1
, . . . , i
m
entonces
B.
_
_
_
_
y
i1
y
i2
.
.
.
y
im
_
_
_
_
= b = B.
_
_
_
_
z
i1
z
i2
.
.
.
z
im
_
_
_
_
de donde resulta que
_
_
_
_
y
i1
y
i2
.
.
.
y
im
_
_
_
_
= B
1
.b =
_
_
_
_
z
i1
z
i2
.
.
.
z
im
_
_
_
_
Luego y
i
= z
i
para todo i, es decir, y = z. Esto muestra que x es un punto extremo de K.
(=) Sea x K un punto extremo. Probaremos que x es una soluci on b asica. Sean i
1
, . . . , i
r
tales que
x
j
= 0 j = i
1
, . . . , i
r
y x
i1
, . . . , x
ir
= 0. Luego x
i
k
> 0 para todo k tal que 1 k r.
Si B es la submatriz de A formada por las columnas i
1
, . . . , i
r
entonces, por la proposici on 3.8., basta ver
que las columnas de B son linealmente independientes.
Supongamos que las columnas de B son linealmente dependientes. Entonces existe w IR
r
tal que w = 0 y
B.w = 0. Sea v IR
n
denido por
v
j
=
_
w
s
si j = i
s
(1 s r)
0 si j = i
1
, . . . , i
r
Programaci on lineal 7
Entonces Av = 0 y v = 0. Sea k tal que 0 < k min
1sr
_
x
is
|w
s
|
/ w
s
= 0
_
. Notemos que un tal k existe pues
x
is
> 0 (1 s r) y w = 0.
Sean y = x + k.v y z = x k.v. Entonces x =
1
2
y +
1
2
z, y = z y ademas y, z K. En efecto, es claro que
Ay = b = Az. Veamos que y, z 0. Si j = i
1
, . . . , i
r
entonces y
j
= 0 = z
j
. Sea entonces s tal que 1 s r.
Como k min
1sr
_
x
is
|w
s
|
/ w
s
= 0
_
, dado s = 1, . . . , r se tiene
i) si w
s
> 0 entonces k
xis
ws
. Luego k.w
s
x
is
de donde x
is
k.w
s
0 y ademas x
is
+ k.w
s
0 ya que
x
is
> 0, k > 0 y w
s
> 0
ii) si w
s
< 0 entonces k
xis
ws
. Luego k.w
s
x
is
de donde x
is
+ k.w
s
0 y ademas x
is
k.w
s
0 ya
que x
is
> 0, k > 0 y w
s
< 0
Luego y
is
= x
is
+ k.w
s
0 y z
is
= x
is
k.w
s
0 para todo 1 s r.
Hemos probado entonces que existen y, z K, y = z tal que x =
1
2
y +
1
2
z. Absurdo, pues esto contradice
que x sea un punto extremo de K. Por lo tanto, las columnas de B son linealmente independientes.
Ahora estamos en condiciones de probar el teorema fundamental de la programacion lineal.
Teorema 3.14. Consideremos el problema de programacion lineal en forma standard
min cx
Ax = b
x 0
donde A IR
mn
tiene rango m, b IR
m
y c IR
n
.
Entonces se verican las dos condiciones siguientes
i) si el problema tiene una soluci on factible entonces tiene una soluci on b asica y factible.
ii) si el problema tiene una soluci on optima entonces tiene una soluci on optima que es b asica.
Demostraci on:
i) Para cada x soluci on factible sea r(x) = #{j / x
j
= 0}. Sea r = min{r(x) / x es factible } y sea x una
soluci on factible tal que r(x) = r. Probaremos que x es una soluci on b asica. Si {j / x
j
= 0} = {i
1
, . . . , i
r
}
se tiene que x
j
= 0 j = i
1
, . . . , i
r
y x
j
> 0 si j = i
1
, . . . , i
r
.
Por la proposici on 3.8., basta probar que las correspondientes columnas i
1
, . . . , i
r
de A son linealmente
independientes. Supongamos que no. Sea B la submatriz de A formada por estas columnas y sea w IR
r
,
w = 0 tal que Bw = 0.
Como x
is
> 0 (1 s r) podemos elegir IR tal que x
is
+.w
s
0 para todo 1 s r y x
is
+.w
s
= 0
para al menos un valor de s = 1, . . . , r. En efecto, dado que cuando w
s
= 0 la desigualdad vale pues x
is
0,
basta tomar vericando

x
is
w
s
para todo s / w
s
> 0
y

x
is
w
s
para todo s / w
s
< 0
de manera tal que para alg un valor de s valga la igualdad. Luego basta tomar
=
_

_
max
_
xis
ws
/ w
s
> 0
_
si w
s
> 0
min
_
xis
ws
/ w
s
< 0
_
si w
s
0 para todo s
Sea v IR
n
denido por
v
j
=
_
0 si j = i
1
, . . . , i
r
w
s
si j = i
s
, 1 s r
8 Optimizaci on Combinatoria
Entonces Av = 0 de donde y = x + .v verica Ay = b y como
y
j
=
_
0 si j = i
1
, . . . , i
r
x
is
+ .w
s
si j = i
s
, 1 s r
entonces y 0.
Pero y
j
= 0 para j = i
1
, . . . , i
r
y para alg un i
s
. Esto muestra que y es una soluci on factible tal que r(y) < r.
Absurdo pues esto contradice la eleccion de r.
ii) Sea ahora r = min{r(x) / x es una soluci on optima } y sea x optimo tal que r(x) = r. Probaremos que
x es una soluci on b asica. Si {j / x
j
= 0} = {i
1
, . . . , i
r
} se tiene que x
j
= 0 j = i
1
, . . . , i
r
y x
j
> 0
si j = i
1
, . . . , i
r
. Como antes, basta ver que las columnas i
1
, . . . , i
r
de A son linealmente independientes.
Supongamos que no. Sea B la submatriz de A formadas por esas columnas y sea w IR
r
, w = 0 tal que
Bw = 0. Sea v IR
n
como en i), es decir,
v
j
=
_
0 si j = i
1
, . . . , i
r
w
s
si j = i
s
, 1 s r
Luego Av = 0.
Veamos ahora que cv = 0. En efecto, supongamos que cv = 0.
Primer caso: si cv > 0
Sea
=
_
max
_
xis
ws
/ w
s
> 0
_
si w
s
> 0
1 si w
s
0 para todo s
Sea y = x + .v. Entonces Ay = b y cy = cx + .cv < cx pues < 0. Ademas y 0 pues y
j
= 0 para
j = i
1
, . . . , i
r
y para 1 s r y
is
= x
is
+ .w
s
0 (para s tal que w
s
> 0 por la denici on de y para s
tal que w
s
< 0 porque < 0). Absurdo pues esto contradice el hecho de que x es una soluci on optima.
Segundo caso: si cv < 0
Sea ahora
=
_
min
_
xis
ws
/ w
s
< 0
_
si w
s
< 0
1 si w
s
0 para todo s
Tomando y = x + .v resulta que Ay = b y cy = cx + .cv < cx pues > 0 y ademas y 0. Nuevamente
esto es un absurdo pues x era optimo.
Luego, cv = 0. Sea ahora como en i) y sea tambien y = x + .v. Entonces resulta que Ay = b, y 0,
r(y) < r y cy = cx. Luego, y es una soluci on optima tal que r(y) < r. Absurdo, esto contradice la elecci on
de r.
Corolario 3.15. Si (1) tiene una soluci on optima entonces tiene una soluci on optima en un punto extremo
del poliedro {x IR
n
/ Ax = b x 0}.
4. Dualidad.
Consideremos los problemas de programacion lineal
min cx max yb
Ax b (P) yA = c (D)
y 0
(primal)
(dual)
Programaci on lineal 9
donde A IR
mn
, c IR
n
y b IR
m
. En esta seccion probaremos que si (P) tiene una soluci on optima x
0
entonces (D) tiene una soluci on y
0
optima y ademas se verica que cx
0
= y
0
b. En este sentido, diremos que
(P) y (D) son problemas duales. Para poder probar esto necesitaremos antes algunos resultados.
Teorema 4.1. (Teorema del hiperplano separador) Sea Z un conjunto convexo y cerrado en IR
n
y sea
c IR
n
tal que c / Z. Entonces existe un hiperplano H = {x IR
n
/ ax = b} (donde a IR
n
, b IR y ax
denota el producto escalar < a, x >= a
1
x
1
+ + a
n
x
n
) que satisface
i) c H
ii) az > b para todo z Z
Demostraci on:
Sea z
0
Z tal que d(z
0
, c) = d(Z, c). Sea a = z
0
c y sea b = a.c = a
1
c
1
+ +a
n
c
n
. Veremos que a.z = b
para todo z Z. Supongamos que no. Sea entonces z Z tal que a.z = b.
Notando que para x, y IR
n
el producto que hemos denido como x.y = x
1
y
1
x
n
y
n
no es otra cosa que
el producto escalar usual < x, y >, se tiene que
< z
0
c, z >=< a, z >= a.z = b = a.c =< a, c >=< z
0
c, c >
de donde < z
0
c, z >=< z
0
c, c >. Esto signica que < z
0
c, z c >= 0, es decir z
0
c y z c son
ortogonales.
Veremos ahora que entonces hay un punto en el segmento que une z y z
0
que esta mas cerca de c que z
0
, es
decir, mostraremos que existe , 0 < < 1 tal que z + (1 )z
0
esta mas cerca de c que z
0
.
La siguiente gura ilustra esta situaci on.
z
z
c
z + (1

) z
0
0
El segmento que une z
0
con c es ortogonal al segmento que une z con c.
Sea =
||z
0
c||
2
||z c||
2
+||z
0
c||
2
. Como z
0
c y z c son no nulos pues c / Z entonces 0 < < 1 y vale
<
2||z
0
c||
2
||z c||
2
+ ||z
0
c||
2
Entonces
(||z c||
2
+||z
0
c||
2
) < 2||z
0
c||
2
de donde

2
(||z c||
2
+||z
0
c||
2
) < 2||z
0
c||
2
lo que implica

2
(||z c||
2
+||z
0
c||
2
) 2||z
0
c||
2
< 0
con lo cual

2
||z c||
2
2||z
0
c||
2
+
2
||z
0
c||
2
< 0
10 Optimizaci on Combinatoria
y as

2
||z c||
2
+ (1 )
2
||z
0
c||
2
< ||z
0
c||
2
Como
||z + (1 )z
0
c||
2
= ||(z c) + (1 )(z
0
c)||
2
=
2
||z c||
2
+ (1 )
2
||z
0
c||
2
pues z
0
c y z c son ortogonales, entonces se tiene que ||z + (1 )z
0
c||
2
< ||z
0
c||
2
, de donde
d(z + (1 )z
0
, c) < d(z, c).
Siendo Z convexo, z, z
0
Z y 0 < < 1 entonces z = z + (1 )z
0
Z y vale d(z, c) < d(z
0
, c) = d(Z, c)
lo que es un absurdo. Luego debe ser a.z = b para todo z Z.
Veamos ahora que a.z > b para todo z Z o az < b para todo z Z. Supongamos que no. Sean z
1
, z
2
Z
tales que a.z
1
> b y a.z
2
< b. Probaremos que entonces existe z Z tal que a.z = b, cosa que vimos que no
puede ocurrir.
Sea =
b a.z
2
a.z
1
a.z
2
. (Notar que a.z
1
= a.z
2
pues a.z
1
> b y a.z
2
< b).
Dejamos a cargo del lector vericar que 0 < < 1. Luego z = z
1
+ (1 )z
2
Z y adem as vale
a.z = a.(z
1
+ (1 )z
2
) = (a.z
1
a.z
2
) + a.z
2
= b. Luego az > b para todo z Z o az < b para todo
z Z.
Si ocurre lo primero se obtiene el hiperplano buscado. Si ocurre lo segundo, entonces az > b para todo
z Z y el hiperplano buscado es H = {x IR
n
/ (a)x = (b)}.
Ahora estamos en condiciones de probar el lema que necesitaremos para demostrar el teorema de dualidad.
Lema 4.2. (Lema de Farkas) Sean U IR
kn
, c IR
n
. Entonces son equivalentes:
i) U.x 0 = c.x 0
ii) y IR
k
, y 0 tal que c = y.U
Demostraci on:
ii) = i) es trivial
i) = ii) Sea Z = {z IR
n
/ z = y.U para alg un y 0}.
Supongamos que ii) no vale. Entonces para todo y 0 vale y.U = c, es decir, c / Z.
Como el conjunto Z es convexo y cerrado en IR
n
entonces por el teorema anterior existe un hiperplano
H = {x IR
n
/ ax = b} tal que ac = b y az > b para todo z Z. Por lo tanto ac < az para todo z Z. En
particular, como 0 Z resulta que ca = ac < 0.
Por otra parte, para todo y 0, y.U Z. Luego, b < a.y.U = y.U.a para todo y 0.
Veamos que U.a 0:
si U.a = (d
1
, . . . , d
k
), para todo (y
1
, . . . , y
k
) 0 vale b < y
1
d
1
+ + y
k
d
k
. Supongamos que d
r
< 0 para
alg un r. Como b = a.c < 0 entonces
b
d
r
> 0.
Sea y denido por
y
j
=
_
0 si j = r
b
dr
si j=r
Entonces y 0 y vale y.U.a = b, cosa que no puede ocurrir. Luego debe ser U.a 0. Por lo tanto a IR
n
satisface c.a < 0 y U.a 0, lo que contradice i).
Antes de demostrar el teorema de dualidad necesitaremos un ultimo resultado que nos permitir a dar una
caracterizacion de los puntos optimos de (P).
Consideremos el problema
Programaci on lineal 11
min cx
Ax b (P)
Denici on 4.3. Dado x
0
IR
n
tal que Ax
0
b, denimos el conjunto de ndices de las restricciones activas
en el punto factible x
0
como el conjunto I(x
0
) = {i / (Ax
0
)
i
= b
i
} (donde (Ax
0
)
i
denota la i-esima la de la
matriz Ax
0
).
Denici on 4.4. Dado x
0
IR
n
tal que Ax
0
b, diremos que IR
n
es una direcci on factible para x
0
si
existe IR, > 0 tal que A(x
0
+ ) b.
Proposici on 4.5. Sea x
0
IR
n
tal que Ax
0
b (es decir, una soluci on factible de (P)). Entonces se verican
las condiciones siguientes:
i) cualquiera sea IR
n
existe > 0 tal que i / I(x
0
) vale (A(x
0
+ ))
i
b
i
ii) si i I(x
0
), cualquiera sea > 0 se satisface
(A(x
0
+ ))
i
b
i
si y solo si (A)
i
0
iii) es una direccion factible para x
0
si y solo si (A)
i
0 para todo i I(x
0
)
iv) x
0
es un optimo de (P) si y solo si c 0 para toda direccion factible
v) x
0
es un optimo de (P) si y solo si vale la implicacion
(A)
i
0 para todo i I(x
0
) = c 0
Demostraci on:
i) Para cada i / I(x
0
) vale (Ax
0
)
i
> b
i
, es decir (Ax
0
)
i
b
i
> 0. Sea > 0 tal que

(Ax
0
)
i
b
i
(A)
i
para todo i / I(x
0
) / (A)
i
< 0.
Entonces para todo i / I(x
0
) es .(A)
i
(Ax
0
)
i
b
i
(para los i tales que (A)
i
< 0 por la elecci on de
y para los i tales que (A)
i
0 porque (Ax
0
)
i
b
i
> 0). Luego
b
i
(Ax
0
)
i
+ (A)
i
= (A(x
0
+ ))
i
ii) Basta notar que (A(x
0
+ ))
i
= (Ax
0
)
i
+ (A)
i
iii) (=) es inmediato a partir de ii). Veamos la otra implicacion. Supongamos que (A)
i
0 para todo
i I(x
0
). Sea > 0 tal que i / I(x
0
) vale (A(x
0
+))
i
b
i
(su existencia esta garantizada por i)). Como
ademas (A(x
0
+ ))
i
b
i
para todo i I(x
0
) por ii) entonces es una direccion factible.
iv) Supongamos que x
0
es un optimo de (P). Si es una direccion factible entonces existe > 0 tal que
A(x
0
+ ) b. Luego debe ser c(x
0
+ ) cx
0
de donde resulta que c 0.
Recprocamente, si c 0 para toda direccion factible , sea x tal que Ax b. Veremos que cx cx
0
.
Sea = x x
0
. Entonces A(x
0
+ ) = Ax b. Luego es una direccion factible (con = 1). Por lo tanto
c(x x
0
) = c 0 y as cx cx
0
.
v) (=) Supongamos que x
0
es un optimo de (P). Si (A)
i
0 para todo i I(x
0
) entonces es una
direccion factible por iii) y en consecuencia c 0 por iv).
(=) Por iii), para toda direccion factible es (A)
i
0 para todo i I(x
0
). Luego, para toda direcci on
factible vale c 0. Entonces x
0
es un optimo de (P) por iv).
Ahora s estamos en condiciones de demostrar el teorema.
12 Optimizaci on Combinatoria
Teorema 4.6. (Teorema de dualidad). Consideremos los siguientes problemas de programacion lineal
min cx max yb
Ax b (P) yA = c (D)
y 0
(primal)
(dual)
donde A IR
mn
, c IR
n
y b IR
m
. Supongamos que existe un x
0
que es soluci on optima del problema
(P) (es decir, Ax
0
b y el mnimo de cx sobre el poliedro {Ax b} es cx
0
). Entonces existe y
0
0 tal que
y
0
A = c y el maximo de yb sobre el poliedro {yA = c y 0} es igual a y
0
b (es decir, y
0
es una soluci on
optima del problema (D)) y ademas se verica que cx
0
= y
0
b.
Demostraci on: Sea x
0
un punto optimo de (P). Entonces
(A)
i
0 para todo i I(x
0
) = c 0
Si I(x
0
) = {i
1
, . . . , i
k
}, sea U IR
kn
la submatriz formada por las las i
1
, . . . , i
k
de A. Entonces se tiene
que
U 0 (A)
i
0 para todo i I(x
0
)
Por lo tanto
U 0 = c 0
Entonces, por el lema de Farkas existe y

IR
k
, y

0, tal que c = y

.U. Sea y IR
m
denido por
y
j
=
_
0 si j = i
1
, . . . , i
k
y

s
si j = i
s
(1 s k)
Se tiene entonces que y 0 y que c = y.A. Esto muestra que y es una soluci on factible de (D).
Ademas, y.A.x
0
= y.b. En efecto, si i I(x
0
) entonces (A.x
0
)
i
= b
i
de donde y
i
.(A.x
0
)
i
= y
i
.b
i
y si i / I(x
0
)
entonces y
i
= 0 de donde y
i
.(A.x
0
)
i
= 0 = y
i
.b
i
. Luego, c.x
0
= y.Ax
0
= y.b.
Por ultimo, veamos que y.b es un maximo de (D). Sea z una soluci on factible de (D). Entonces z 0 y
c = z.A. Como b A.x
0
y z 0 resulta que z.b z.A.x
0
= c.x
0
= y.b. Por lo tanto z.b y.b
Corolario 4.7. Los siguientes problemas son duales
min cx max yb
Ax = b (P

) yA c (D

)
x 0
Demostraci on: Transformemos (P) de manera tal que tenga la forma de (P) y apliquemos el teorema de
dualidad
min cx
Ax b
(A)x (b)
x 0
es decir,
min cx
_
_
A
A
I
_
_
x
_
_
b
b
0
_
_
cuyo dual es
max y
_
_
b
b
0
_
_
y.
_
_
A
A
I
_
_
= c
y 0
Programaci on lineal 13
Tomando y = (u, v, s) resulta
max ub vb
uAvA + Is = c
u, v, s 0
y tomando y = u v es
max yb
yA + Is = c
s 0
es decir,
max yb
yA c
tal como queramos probar.
Observaci on 4.8. Si x es una soluci on factible de (P) e y es una soluci on factible de (D) entonces yb cx.
Teorema 4.9. (Teorema de la holgura complementaria). Consideremos los problemas duales
min cx max yb
Ax = b (P

) yA c (D

)
x 0
Entonces x e y son soluciones optimas de (P) y (D) respectivamente si y solo si son factibles y para cada
1 j n se verica
_
c
j

m

i=1
y
i
a
ij
_
.x
j
= 0
Demostraci on: Supongamos que x e y son soluciones optimas de (P) y (D) respectivamente. Entonces
son factibles y satisfacen cx = yb. Como Ax = b entonces yAx = yb = cx de donde (c yA)x = 0. Luego,
como (c yA)
j
0, x
j
0 y (c yA)
1
x
1
+ + (c yA)
n
x
n
= (c yA).x = 0 entonces
0 = (c yA)
j
.x
j
=
_
c
j

m

i=1
y
i
a
ij
_
.x
j
(1 j n)
Recprocamente, si x e y son factibles y para cada 1 j n se verica
_
c
j

m

i=1
y
i
a
ij
_
.x
j
= 0
entonces (c yA)
j
.x
j
= 0 para todo j, de donde (c yA).x = (c yA)
1
x
1
+ + (c yA)
n
x
n
= 0. Luego
yAx = cx y Ax = b. Luego, cx = yAx = yb.
Falta ver que x es un mnimo y que y es un maximo. Para toda soluci on factible u de (P) es Au = b y
u 0. Luego, yAu cu pues yA c de donde cx = yb = yAu cu.
An alogamente, para toda soluci on factible z de (D) se tiene que zAx cx para todo x 0 pues zA c.
Luego, como Ax = b resulta que yb = cx zAx = zb.
Observaci on 4.10. Hemos probado que si x
0
e y
0
son soluciones factibles de (P) y (D) respectivamente
y satisfacen cx
0
= y
0
b entonces x
0
e y
0
son optimos.
5. Transformaci on pivote.
Sean A IR
mn
, c IR
n
, b IR
m
y z
0
IR.
14 Optimizaci on Combinatoria
Consideremos el problema de programacion lineal
min z
z+cx = z
0
Ax = b (2)
x 0
donde las variables z y x toman valores en IR y IR
n
respectivamente.
Escribiendo matricialmente a (2) en la forma
min z
_
1 c
0 A
_
.
_
z
x
_
=
_
z
0
b
_
x 0
consideremos la matriz ampliada
_
1 c | z
0
0 A | b
_
(a la que llamaremos tableau) donde llamaremos la cero a la la (1 c
1
c
2
c
n
z
0
) y las 1, 2, . . . , m
a las restantes las contadas de arriba hacia abajo. An alogamente llamaremos columna cero a la columna
_
1
0
_
y columnas 1, 2, . . . , n a las restantes columnas contadas de izquierda a derecha. Las soluciones del
sistema seran vectores (z, x) donde z es un n umero real y x = (x
1
, . . . , x
n
) es un vector de IR
n
.
El algoritmo simplex que vamos a describir resolvera este problema. Esto nos permitira resolver cualquier
problema de programacion lineal en forma standard
min cx
Ax = b
x 0
resolviendo el problema equivalente
min z
z+cx = 0
Ax = b
x 0
que tiene la forma de (2) para z
0
= 0.
Notar que (z, x) es una soluci on factible del segundo problema si y solo si x es una soluci on factible del
primero y el valor del funcional en ella es z (es decir, cx = z). Luego, si (z, x) es una soluci on optima del
segundo problema entonces x es una soluci on optima del primero y el valor del funcional en ella es cx = z.
El algoritmo realizara, en cada iteracion, una transformacion en el tableau
(| ) =
_
1 c | z
0
0 A | b
_
correspondiente a (2) que llamaremos transformaci on pivote. El pivote sera elegido convenientemente entre
los coecientes de A.
Sea (| ) la matriz ampliada de un sistema lineal, donde = (
ij
) 0im
0jn
es una matriz de (m+1) (n+1)
a coecientes reales y = (
0
,
1
, . . . ,
m
) es un vector de IR
m+1
.
Programaci on lineal 15
Denici on 5.1. Sea
rs
un coeciente no nulo de . Llamaremos transformaci on de la matriz (| ) con
pivote
rs
a la sucesion de las operaciones elementales siguientes:
i) dividir la la r por
rs
, es decir
F

r
=
1

rs
.F
r
ii) restar a cada la i = r la la r multiplicada por

is

rs
, es decir
F

i
= F
i


is

rs
.F
r
(i = r)
Observaci on 5.2. Si (

) es la matriz obtenida mediante una transformacion con pivote


rs
, es decir, la
matriz cuyas las son F

0
, . . . , F

m
entonces existe U IR
(m+1)(m+1)
inversible tal que (

) = U.(| ).
Luego, los sistemas x = y

x =

son equivalentes. Ademas, la columna s de la matriz

tiene un uno
en la la r y ceros en las restantes las.
En efecto, basta observar que (

) es la matriz
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
columna s

00

0s
rs

r0
. . .
0s

0s
rs

rs
. . .
0n

0s
rs

rn
|
0

0s
rs

10

1s
rs

r0
. . .
1s

1s
rs

rs
. . .
1n

1s
rs

rn
|
1

1s
rs

r
.
.
. . . .
.
.
. . . .
.
.
. |
.
.
.
r0
rs
. . .
rs
rs
. . .
rn
rs
|
1
rs

r
.
.
. . . .
.
.
. . . .
.
.
. |
.
.
.

m0

ms
rs

r0
. . .
ms

ms
rs

rs
. . .
mn

ms
rs

rn
|
m

ms
rs

r
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
Observaci on 5.3. Haciendo una transformacion pivote en la matriz
_
1 c | z
0
0 A | b
_
eligiendo un coeciente a
rs
de A como pivote entonces la columna cero no se modica. Luego, la matriz
obtenida es de la forma
_
1 c

| z

0
0 A

| b

_
Por la observaci on 5.2., la columna s de esta matriz tiene un uno en la la r y ceros en las restantes las,
incluyendo la la cero. Esto signica que c

s
= 0 y que la columna s de A

es el vector e
r
(donde e
r
IR
m
es el r-esimo vector de la base can onica, es decir, el que tiene un uno en el lugar r y ceros en los restantes
lugares). Ademas, (z, x) es una soluci on de
_
1 c
0 A
_
.
_
z
x
_
=
_
z
0
b
_
si y solo si lo es de
_
1 c

0 A

_
.
_
z
x
_
=
_
z

0
b

_
Veamos un ejemplo.
16 Optimizaci on Combinatoria
Ejemplo 5.4. Consideremos el problema de la forma
min z
z+cx = z
0
Ax = b
x 0
dado por
min z
z + 2x
1
+ x
2
x
4
= 2
3x
1
+ x
2
2x
3
+ 2x
4
= 1
2x
1
+ 3x
2
+ x
3
+ x
4
= 2
x
1
+ x
2
+ x
4
= 1
x
1
, x
2
, x
3
, x
4
0
cuyo tableau es
_
1 c | z
0
0 A | b
_
=
_
_
_
1 2 1 0 1 | 2
0 3 1 2 2 | 1
0 2 3 1 1 | 2
0 1 1 0 1 | 1
_
_
_
Hacemos primero una transformacion con pivote en un coeciente a
rs
de A, por ejemplo, a
rs
= a
11
= 3. En
la matriz se nalaremos el pivote marcandolo con un asterisco.
Las operaciones de la son:
F

0
= F
0

2
3
.F
1
F

1
=
1
3
.F
1
F

2
= F
2

2
3
.F
1
F

3
= F
3

1
3
.F
1
Por lo tanto
_
_
_
1 2 1 0 1 | 2
0 3

1 2 2 | 1
0 2 3 1 1 | 2
0 1 1 0 1 | 1
_
_
_
_
_
_
1 0 1/3 4/3 7/3 | 4/3
0 1 1/3 2/3 2/3 | 1/3
0 0 7/3 7/3 1/3 | 4/3
0 0 4/3 2/3 5/3 | 4/3
_
_
_
Notemos que en esta ultima matriz a la que, para confundir al lector, volvemos a llamar
_
1 c | z
0
0 A | b
_
,
la columna uno de A es el vector e
1
y c
1
= 0. Ahora hacemos en ella una transformacion con pivote en un
coeciente a
rs
de A, por ejemplo, a
rs
= a
24
= 1/3. Las operaciones de la ahora son:
F

0
= F
0

7/3
1/3
F
2
F

1
= F
1

2/3
1/3
.F
2
F

2
=
1
1/3
.F
2
F

3
= F
3

5/3
1/3
.F
2
Programaci on lineal 17
Luego,
_
_
_
1 0 1/3 4/3 7/3 | 4/3
0 1 1/3 2/3 2/3 | 1/3
0 0 7/3 7/3 1/3

| 4/3
0 0 4/3 2/3 5/3 | 4/3
_
_
_
_
_
_
1 0 16 15 0 | 8
0 1 5 4 0 | 3
0 0 7 7 1 | 4
0 0 13 11 0 | 8
_
_
_
As obtenemos una nueva matriz, a la que volvemos a llamar
_
1 c | z
0
0 A | b
_
tal que las columnas 1 y 4
de A son e
1
y a e
2
respectivamente y c
1
= c
4
= 0. Finalmente hacemos una transformacion con pivote en
un coeciente a
rs
de A, por ejemplo, a
rs
= a
33
= 11. Las operaciones de la seran
F

0
= F
0

15
11
.F
3
F

1
= F
1

4
11
.F
3
F

2
= F
2

7
11
.F
3
F

3
=
1
11
.F
3
Luego,
_
_
_
1 0 16 15 0 | 8
0 1 5 4 0 | 3
0 0 7 7 1 | 4
0 0 13 11

0 | 8
_
_
_
_
_
_
1 0 19/11 0 0 | 32/11
0 1 3/11 0 0 | 1/11
0 0 14/11 0 1 | 12/11
0 0 13/11 1 0 | 8/11
_
_
_
Si ahora llamamos
_
1 c

| z

0
0 A

| b

_
a la ultima matriz obtenida se tiene que
A

=
_
_
1 3/11 0 0
0 14/11 0 1
0 13/11 1 0
_
_
, z

0
= 32/11, b

= (1/11, 12/11, 8/11) y c

= (0, 19/11, 0, 0)
y se verica que las columnas 1, 4 y 3 de A

son los vectores e


1
, e
2
y e
3
respectivamente y las correspondientes
coordenadas c

1
, c

4
y c

3
de c

son nulas.
Notando que en cada paso hemos obtenido un sistema equivalente al anterior, resulta que el ultimo es
equivalente al original, de donde las soluciones de
_
_
_
1 2 1 0 1
0 3 1 2 2
0 2 3 1 1
0 1 1 0 1
_
_
_.
_
_
_
_
_
z
x
1
x
2
x
3
x
4
_
_
_
_
_
=
_
_
_
2
1
2
1
_
_
_
son las soluciones de
z + 19/11x
2
= 32/11
x
1
+ 3/11x
2
= 1/11
14/11x
2
+ x
4
= 12/11
13/11x
2
+ x
3
= 8/11
Ahora, tomando x
2
= 0 y (x
1
, x
4
, x
3
) = b

= (1/11, 12/11, 8/11) y el valor del funcional z que queremos


minimizar como z = z

0
= 32/11 se obtiene una soluci on del sistema original. La matriz
_
1 c

| z

0
0 A

| b

_
18 Optimizaci on Combinatoria
se obtuvo haciendo una sucesion de transformaciones pivote en el tableau original. Luego, por la observaci on
5.2., existe una matriz inversible U IR
44
tal que
U.
_
_
_
1 2 1 0 1 | 2
0 3 1 2 2 | 1
0 2 3 1 1 | 2
0 1 1 0 1 | 1
_
_
_ =
_
1 c

| z

0
0 A

| b

_
Como la columna cero permanecio constante, las columnas 1, 4 y 3 de A

resultaron e
1
, e
2
y e
3
respectivamente
y como c

1
= c

4
= c

3
= 0, entonces las columnas 0, 1, 4 y 3 de
_
1 c

| z

0
0 A

| b

_
forman la matriz identidad.
Luego, las columnas 0,1,4 y 3 de la matriz
_
1 c
0 A
_
son linealmente independientes, ya que si B es la matriz
formada por ellas entonces U.B = I
4
(donde I
4
es la matriz identidad de 4 4).
Esto muestra que la soluci on (z, x) = (z, x
1
, . . . , x
4
) = (z

0
, b

1
, 0, b

3
, b

2
) = (32/11, 1/11, 0, 8/11, 12/11) es
una soluci on b asica y para esta soluci on el valor del funcional z a minimizar es z = z

0
= 32/11. Adem as,
en este caso esta soluci on tambien es factible ya que x = (b

1
, 0, b

3
, b

2
) y b

0.
Observemos ademas que como los pivotes fueron elegidos entre los coecientes de A entonces (A

| b

) es la
matriz que se obtendra si hicieramos en (A| b) las mismas transformaciones pivote que hicimos en todo el
tableau. Por lo tanto los sistemas Ax = b y A

x = b

tambien son equivalentes. Mas a un, como las columnas


1, 4 y 3 de A

forman la matriz identidad de 3 3 y b

0 entonces x = (b

1
, 0, b

3
, b

2
) es una soluci on b asica
de Ax = b que satisface x 0 y vale z

0
= cx + z
0
ya que (z

0
, x) es soluci on del sistema original.
Ejemplo 5.5. Consideremos ahora el problema
min z
z + 3x
1
+ 5x
2
+ 7x
3
+ 2x
4
= 10
x
1
+ 2x
3
+ x
4
= 0
2x
1
+ x
2
x
3
+ x
4
= 1
x
1
+ 2x
2
+ 2x
3
x
4
= 3
x
1
, x
2
, x
3
, x
4
0
cuyo tableau es
_
1 c | z
0
0 A | b
_
=
_
_
_
1 3 5 7 2 | 10
0 1 0 2 1 | 0
0 2 1 1 1 | 1
0 1 2 2 1 | 3
_
_
_
Hacemos primero una transformacion con pivote en a
rs
= a
31
= 1. Las operaciones de la seran
F

0
= F
0
3.F
3
F

1
= F
1
F
3
F

2
= F
2
2.F
3
F

3
= F
3
Por lo tanto
_
_
_
1 3 5 7 2 | 10
0 1 0 2 1 | 0
0 2 1 1 1 | 1
0 1

2 2 1 | 3
_
_
_
_
_
_
1 0 1 1 5 | 1
0 0 2 0 2 | 3
0 0 3 5 3 | 5
0 1 2 2 1 | 3
_
_
_
Programaci on lineal 19
Ahora hacemos una transformacion con pivote en a
rs
= a
12
= 2. Las operaciones de la seran
F

0
= F
0

1
2
.F
1
F

1
=
1
2
.F
1
F

2
= F
2

3
2
.F
1
F

3
= F
3
+ F
1
Por lo tanto
_
_
_
1 0 1 1 5 | 1
0 0 2

0 2 | 3
0 0 3 5 3 | 5
0 1 2 2 1 | 3
_
_
_
_
_
_
1 0 0 1 4 | 5/2
0 0 1 0 1 | 3/2
0 0 0 5 0 | 1/2
0 1 0 2 1 | 0
_
_
_
Finalmente hacemos una transformacion con pivote en a
rs
= a
23
= 5. Las operaciones de la ser an
F

0
= F
0
+
1
5
.F
2
F

1
= F
1
F

2
=
1
5
.F
2
F

3
= F
3
+
2
5
.F
2
Por lo tanto
_
_
_
1 0 0 1 4 | 5/2
0 0 1 0 1 | 3/2
0 0 0 5

0 | 1/2
0 1 0 2 1 | 0
_
_
_
_
_
_
1 0 0 0 4 | 24/10
0 0 1 0 1 | 3/2
0 0 0 1 0 | 1/10
0 1 0 0 1 | 1/5
_
_
_
Luego el sistema
_
1 c
0 A
_
.
_
z
x
_
=
_
z
0
b
_
es equivalente al sistema
_
1 c

0 A

_
.
_
z
x
_
=
_
z

0
b

_
donde
A

=
_
_
0 1 0 1
0 0 1 0
1 0 0 1
_
_
, b

=
_
_
3/2
1/10
1/5
_
_
, z

0
= 24/10 y c

= (0, 0, 0, 4)
es decir, al sistema
z + 4x
4
= 24/10
x
2
x
4
= 3/2
x
3
= 1/10
x
1
+ x
4
= 1/5
Como la matriz formada por las columnas 2, 3 y 1 de A

es I
3
y c

2
= c

3
= c

1
= 0, tomando ahora x
4
= 0 y
(x
2
, x
3
, x
1
) = b

= (3/2, 1/10, 1/5) y z = z

0
= 24/10 obtenemos una soluci on b asica (z, x) del problema
dado, pero esta soluci on no es factible ya que b

tiene una coordenada negativa.


20 Optimizaci on Combinatoria
En general, consideremos el problema (2), es decir, el problema
min z
z+cx = z
0
Ax = b (2)
x 0
Supongamos que haciendo en el tableau
_
1 c | z
0
0 A | b
_
una sucesion de transformaciones pivote donde en cada una el pivote es alguno de los coecientes de las las
entre 1 y m y las columnas entre 1 y n de la matriz obtenida con la transformacion anterior, obtenemos el
tableau
_
1 c

| z

0
0 A

| b

_
y supongamos ademas que A

contiene m columnas (llamadas unitarias) que permutadas convenientemente


forman la matriz identidad I
m
de mm, que las coordenadas de c

correspondientes a esas columnas unitarias


son nulas y que b

0. Entonces, si el vector e
k
se encuentra en la columna i
k
de A

, tomando x

denido
por x

j
= 0 para j = i
1
, . . . , i
m
y (x

i1
, . . . , x

im
) = b

se tiene que c

= 0 (pues c

i1
= 0, . . . , c

im
= 0 y x

j
= 0
para j = i
1
, . . . , i
m
). Ademas, si B

es la submatriz de A

formada por las columnas i


1
, . . . i
m
de A

entonces,
como x

j
= 0 para j = i
1
, . . . , i
m
,
A

= B

.
_
_
_
x

i1
.
.
.
x

im
_
_
_ = B

.b

= b

ya que B

= I
m
, pues la columna j de B

es la columna i
j
de A

que es el vector e
j
(1 j m).
Luego, c

= 0 y A

= b

, de donde resulta que (z

0
, x

) es soluci on de
_
1 c

0 A

_
.
_
z
x
_
=
_
z

0
b

_
y por lo tanto es soluci on del sistema equivalente
_
1 c
0 A
_
.
_
z
x
_
=
_
z
0
b
_
Ademas, como b

0, entonces x

0.
Por ultimo, como las columnas 0, i
1
, . . . , i
m
de
_
1 c

0 A

_
forman la matriz identidad I
m+1
entonces las
columnas 0, i
1
, . . . , i
m
de
_
1 c
0 A
_
son linealmente independientes. Esto muestra que (z

0
, x

) es una soluci on
b asica y factible de (2) y el valor del funcional en ella es z

0
. Mas a un, x

es una soluci on b asica de Ax = b


(pues las columnas i
1
, . . . , i
m
de A

forman la matriz identidad I


m
y A

se obtuvo de A mediante una sucesi on


de transformaciones pivote) que satisface x

0 y z

0
= cx

+ z
0
pues (z

0
, x

) es una soluci on factible de (2).


Si
_
1 c

| z

0
0 A

| b

_
fuese el tableau obtenido por el algoritmo en una iteracion, entonces el tableau co-
rrespondiente a la iteracion siguiente se obtendr a a partir de el haciendo una transformacion con el pivote
elegido entre los coecientes de A

.
Programaci on lineal 21
Si
_
1 c | z
0
0 A | b
_
es el tableau as obtenido, es f acil ver que entonces A contiene m columnas unitarias y
que las coordenadas de c correspondientes a esas columnas unitarias son nulas. Si ahora el vector e
k
se en-
cuentra en la columna i

k
de A entonces tomando x denido por x
j
= 0 para j = i

1
, . . . , i

m
y (x
i

1
, . . . , x
i

m
) = b
resulta que (z
0
, x) es una soluci on b asica de (2), el valor del funcional en ella es z
0
, y que es factible si y s olo
si b 0. Luego, si elegimos el pivote para que resulte b 0 y z
0
z

0
resulta que (z
0
, x) es una soluci on
b asica y factible de (2) y el valor del funcional en ella es menor o igual que el valor del funcional en la
soluci on b asica y factible (z

0
, x

) que tenamos presente en la iteracion anterior. Ademas, x es una soluci on


b asica de Ax = b que satisface x 0 t z
0
= cx + z
0
. Luego, cualquiera sea z
0
, x es una soluci on b asica y
factible del problema en forma standard
min cx
Ax = b
x 0
que satisface cx = z
0
z
0
z

0
z
0
= cx

. Mas a un, si (z
0
, x) fuese una soluci on optima de (2) entonces,
cualquiera sea z
0
, x sera una soluci on optima del problema en forma standard y el valor del funcional en
ella sera cx = z
0
z
0
. En efecto, si x es una soluci on factible del problema en forma standard entonces
tomando z = cx + z
0
resulta que (z, x) es una soluci on factible de (2). Luego debe ser z
0
z, de donde
cx = z
0
z
0
z z
0
= cx.
Veamos ahora como debemos elegir el pivote a

rs
para que valga b 0 y z
0
z

0
. Como
b
i
=
_
_
_
b

i

a

is
a

rs
b

r
para i = r
b

r
a

rs
para i = r
y b

0, entonces debe ser a

rs
> 0 para que resulte b
r
0 y debe valer b

i

a

is
a

rs
b

r
para todo i = r, es decir,
b

i
a

is

r
a

rs
para todo i tal que a

is
> 0 (ya que como a

rs
> 0 y b

0 entonces para i tal que a

is
< 0 la
desigualdad que queremos vale trivialmente). Luego, cualquiera sea s, r debe satisfacer
b

r
a

rs
= min
_
b

i
a

is
/ a

is
> 0
_
Notemos que para poder elegir r debemos conocer s. Veamos entonces como elegir s para que valga z
0
z

0
.
Como z
0
= z

s
a

rs
b

r
, es decir, z
0
= z

0
+
c

s
a

rs
b

r
entonces z
0
z

0
si y solo si
c

s
a

rs
b

r
0, si y s olo si c

s
0
(pues a

rs
> 0 y b

r
0). Pero cuando c

s
= 0 entonces z
0
= z

0
. Como nuestra intenci on es disminuir el valor
del funcional, pediremos entonces que s sea elegido vericando c

s
< 0.
En denitiva, primero elegiremos s tal que c

s
< 0 y luego r tal que
b

r
a

rs
= min
_
b

i
a

is
/ a

is
> 0
_
Observaci on 5.6. No siempre se puede lograr transformar mediante operaciones pivote un sistema
_
1 c
0 A
_
.
_
z
x
_
=
_
z
0
b
_
en uno equivalente
_
1 c

0 A

_
.
_
z
x
_
=
_
z

0
b

_
22 Optimizaci on Combinatoria
con A

conteniendo una submatriz permutaci on, las correspondientes coordenadas de c

nulas y b

0. Esto
se debe a que hay problemas que no tienen soluciones factibles. Por ejemplo:
min z
z + 2x
1
+ x
3
= 2
x
1
+ x
2
x
3
= 1
x
1
+ x
2
= 0
x 0
no tiene ninguna soluci on factible.
Mas a un, hay sistemas que no tienen soluci on:
x
1
+ x
2
+ x
3
= 2
x
1
x
2
= 0
2x
2
+ x
3
= 1
Pero esto siempre es posible si el tableau de partida
_
1 c | z
0
0 A | b
_
satisface que A tiene m columnas
que permutadas convenientemente forman la matriz identidad de m m, que las coordenadas de c corres-
pondientes a esas columnas son nulas y que b 0. Es por esta razon que pediremos que el tableau inicial
tenga estas propiedades.
6. Estructura general del algoritmo simplex.
Sean A IR
mn
una matriz de rango m, c IR
n
y sea b IR
m
. Denotaremos con I
k
a la matriz identidad
de k k.
Denici on 6.1. Diremos que A contiene una matriz permutaci on de I
m
sii tiene m columnas que permutadas
convenientemente forman la matriz identidad de mm, es decir, si existen m columnas i
1
, . . . , i
m
de A tales
que la columna i
k
es el vector e
k
. En tal caso llamaremos a las columnas i
1
, . . . , i
m
de A columnas unitarias.
Denici on 6.2. Diremos que el sistema lineal
_
1 c
0 A
_
.
_
z
x
_
=
_
z
0
b
_
o tambien que el tableau
_
1 c | z
0
0 A | b
_
esta en forma can onica si valen las dos condiciones siguientes:
i) A contiene una matriz permutaci on de I
m
, es decir, contiene m columnas unitarias i
1
, . . . , i
m
, , que forman
la mantriz identidad de mm.
ii) Las coordenadas de c correspondientes a las columnas unitarias i
1
, . . . , i
m
de A son nulas, es decir,
c
i1
= 0, . . . , c
im
= 0.
Notemos que estas dos condiciones son equivalentes a pedir que la matriz
_
1 c
0 A
_
contenga una matriz
permutaci on de I
m+1
.
Ejemplo 6.3. Si
A =
_
_
1 0 1 0 1 1
1 1 1 0 0 1
1 0 0 1 0 2
_
_
c = (2, 0, 1, 0, 0, 1) b = (2, 1, 1/2) y z
0
= 1
Programaci on lineal 23
entonces el sistema
_
1 c
0 A
_
.
_
z
x
_
=
_
z
0
b
_
esta en forma can onica. En efecto, reemplazando en
_
1 c
0 A
_
.
_
z
x
_
=
_
z
0
b
_
queda
_
_
_
1 2 0 1 0 0 1
0 1 0 1 0 1 1
0 1 1 1 0 0 1
0 1 0 0 1 0 2
_
_
_.
_
z
x
_
=
_
_
_
1
2
1
1/2
_
_
_
En este caso las columnas i
1
= 5, i
2
= 2 e i
3
= 4 de A forman la matriz identidad de 3 3. Las coordenadas
de c correspondientes a estas columnas, c
5
, c
2
y c
4
, son nulas.
Para cada sistema
_
1 c
0 A
_
.
_
z
x
_
=
_
z
0
b
_
que este en forma can onica, tomando x
i1
= b
1
, x
i2
= b
2
, ..., x
im
= b
m
y las restantes coordenadas de x
iguales a cero, se obtiene un x que satisface Ax = b y cx = 0 (pues x
j
= 0 si j = i
1
, . . . , i
m
y c
j
= 0 si
j = i
1
, . . . , i
m
). Luego, (z
0
, x) es una soluci on b asica de (2) pues las columnas 0, i
1
, . . . , i
m
de
_
1 c
0 A
_
forman la matriz identidad I
m+1
y la coordenada j-esima de (z
0
, x) es nula para j = 0, i
1
, . . . , i
m
y, por
razones an alogas, x es una soluci on b asica de Ax = b. Ademas, si b 0 resulta x 0. En tal caso, (z
0
, x)
es una soluci on b asica y factible de (2). El valor del funcional en esta soluci on es z = z
0
pues cx = 0.
Observaci on 6.4. Es f acil ver que si hacemos una transformacion pivote en un sistema can onico obtenemos
otro sistema can onico. La la r y la columna s correspondientes al pivote elegido determinan cu ales son las
columnas unitarias del nuevo sistema en la forma
i

j
=
_
i
j
si j = r
s si j = r
Decimos entonces que la columna i
r
sale de la base y que la columna s entra en la base.
A continuaci on daremos una idea de la estructura del algoritmo.
En cada iteracion, partiremos de un sistema lineal
_
1 c
0 A
_
.
_
z
x
_
=
_
z
0
b
_
que este en forma can onica y tal que b 0 y obtendremos, mediante una transformacion pivote en la matriz
_
1 c | z
0
0 A | b
_
otro sistema equivalente
_
1 c

0 A

_
.
_
z
x
_
=
_
z

0
b

_
que tambien estara en forma can onica (ver observaci on 6.4), tal que b

0 y de manera que z

0
z
0
. El
pivote sera un cierto coeciente a
rs
de A, donde r y s seran elegidos para que valgan b

0 y z

0
z
0
. De
esta manera el algoritmo encontrara, en cada iteracion, una soluci on b asica (z

0
, x

) con el valor del funcional


en ella menor o igual que el valor del funcional en la soluci on anterior (z
0
, x). El algoritmo solo se podr a
24 Optimizaci on Combinatoria
aplicar cuando el sistema de partida este en forma can onica y valga b 0. En los casos en que esto no
ocurriera recurriremos a un proceso previo llamado FASE 1 que nos permitira estar en condiciones de aplicar
el algoritmo.
Al nalizar el algoritmo, si el problema tena soluci on optima, entonces la soluci on b asica obtenida a partir
del ultimo sistema can onico
_
1 c | z
0
0 A | b
_
construdo sera una soluci on optima del problema. Para determinar esta soluci on (z
0
, x) debemos conocer
cu ales columnas i
1
, . . . , i
m
de la matriz A son las columnas unitarias (donde i
k
es la columna de A donde
esta el vector e
k
), ya que x es el vector denido por
x
j
=
_
0 si j = i
1
, . . . , i
m
b
k
si j = i
k
(1 k m)
Luego, en cada iteracion actualizaremos los valores de i
1
, . . . , i
m
. Para ello, en cada paso escribiremos a la
izquierda de cada la k de la matriz del sistema el valor de i
k
correspondiente en la forma
i
1
i
2
.
.
.
i
m
_
_
_
_
_
_
1 c
1
. . . c
n
| z
0
0 a
11
. . . a
1n
| b
1
0 a
21
. . . a
2n
| b
2
.
.
.
.
.
.
.
.
. |
.
.
.
0 a
m1
. . . a
mn
| b
m
_
_
_
_
_
_
Cada vez que se efect ua una operacion con pivote en un coeciente a
rs
de A, los nuevos valores de i
k
se
pueden calcular a partir de los anteriores en la forma descripta en la observaci on 6.4.
7. El algoritmo simplex en el caso can onico.
Consideremos el problema
min z
z+cx = z
0
Ax = b
x 0
y supongamos que el sistema
_
1 c
0 A
_
.
_
z
x
_
=
_
z
0
b
_
esta en forma can onica y que b 0.
Recordemos que en la matriz ampliada del sistema
_
1 c | z
0
0 A | b
_
hemos llamado la cero a la la (1 c
1
c
2
c
n
z
0
) y columna cero a la columna
_
1
0
_
.
Sean F
1
, . . . , F
m
las restantes las. Luego, si A
i
denota la i-esima la de A entonces F
i
= (0 A
i
b
i
). De este
modo una transformacion con pivote en un coeciente de la la r y la columna s (1 r m, 1 s n)
es una transformacion con pivote en el coeciente a
rs
de A. Notemos que si hacemos una transformaci on
con pivote en un coeciente de A en un sistema can onico el sistema que obtendremos volvera a ser can onico
Programaci on lineal 25
(ver observaci on 6.4.) y como los pivotes se eligen entre los coecientes de A entonces la columna cero
permanecera invariante (i.e., la nueva columna cero sera el vector e
1
). En efecto, como las operaciones son
F

0
= F
0

c
s
a
rs
F
r
F

i
= F
i

a
is
a
rs
F
r
si i = r
F

r
=
1
a
rs
F
r
se tiene que la columna cero permanece invariante y la matriz resultante
_
1 c

| z

0
0 A

| b

_
satisface
c

j
= c
j

c
s
a
rs
a
rj
z

0
= z
0

c
s
a
rs
b
r
A

i
= A
i

a
is
a
rs
A
r
si i = r
A

r
=
1
a
rs
A
r
b

i
= b
i

a
is
a
rs
b
r
si i = r
b

r
=
1
a
rs
b
r
Los pivotes seran elegidos de manera tal que valgan b

0 y z

0
z
0
. Para ello, tal como vimos en la secci on
5., basta elegir un valor de s tal que c
s
< 0 y luego un valor de r tal que
br
ars
= min
_
bi
ais
/ a
is
> 0
_
.
Veremos a continuaci on que sucede si no es posible elegir s o r en esta forma, es decir, si no existe s tal que
c
s
< 0 o si para s tal que c
s
< 0 el conjunto
_
bi
ais
/ a
is
> 0
_
es vaco, es decir, no existe i tal que a
is
> 0.
Proposici on 7.1. Si s tal que c
s
< 0 entonces (z
0
, x) es una soluci on optima de
min z
z+cx = z
0
Ax = b
x 0
donde x esta denido por
x
j
=
_
0 si j = i
1
, . . . , i
m
b
k
si j = i
k
(1 k m)
siendo i
k
la columna unitaria de A que corresponde al vector e
k
, que verica ademas c
i
k
= 0
Demostraci on: Como cx = 0 (pues x
j
= 0 para todo j = i
1
, . . . , i
m
y c
i1
, . . . , c
im
= 0) entonces (z
0
, x) es
soluci on de
z + cx = z
0
Ax = b
x 0
Supongamos que (z

, x

) tambien sea soluci on. Entonces z

= z
0
+ cx

z
0
pues x

0 y, por hip otesis,


c 0. Esto muestra que (z
0
, x) es una soluci on optima.
26 Optimizaci on Combinatoria
Proposici on 7.2. Sea s tal que c
s
< 0. Si no existe i, (1 i m) tal que a
is
> 0 entonces
min z
z+cx = z
0
Ax = b
x 0
no tiene ninguna soluci on factible que sea optima.
Demostraci on: Supongamos que a
is
0 para todo 1 i m y que existe una soluci on factible optima
(z, x).
El sistema lineal es
_
1 c
0 A
_
.
_
z
x
_
=
_
z
0
b
_
donde la columna i
j
de A es el vector e
j
(1 i m), c
i1
= 0, . . . c
im
= 0 y b 0. Como (z, x) es soluci on
entonces z = z
0
+ cx. Ademas, s = i
1
, . . . i
m
pues c
s
< 0.
Sea y 0 denido por
y
j
=
_
1 si j = s
a
ks
si j = i
k
(1 k m)
0 en otro caso
Notemos que como c
i1
= 0, . . . , c
im
= 0 entonces cy = c
s
y
s
= c
s
. Ademas, como la columna i
j
de A es el
vector e
j
entonces
a
kij
=
_
0 si k = j
1 si k = j
Luego, teniendo en cuenta que y
s
= 1 resulta que, 1 k m,
(Ay)
k
=a
k1
y
1
+ + a
kn
y
n
=
=a
ki1
y
i1
+ + a
kim
y
im
+ a
ks
y
s
=
=y
i
k
+ a
ks
= a
ks
+ a
ks
= 0
de donde Ay = 0. Tomando x

= x + y se tiene que x

0 y Ax

= b. Luego, si z

= z
0
+ cx

resulta que
(z

, x

) es una soluci on del sistema lineal y x

0.
Pero z

= z
0
+ cx

= z
0
+ cx + cy = z + c
s
< z, cosa que contradice el hecho de que (z, x) era una soluci on
optima.
Descripci on del algoritmo.
Dado un sistema lineal
_
1 c
0 A
_
.
_
z
x
_
=
_
z
0
b
_
que esta en forma can onica y que satisface b 0, el algoritmo realiza los siguientes pasos a partir de la
matriz
i
1
i
2
.
.
.
i
m
_
_
_
_
_
_
1 c
1
. . . c
n
| z
0
0 a
11
. . . a
1n
| b
1
0 a
21
. . . a
2n
| b
2
.
.
.
.
.
.
.
.
. |
.
.
.
0 a
m1
. . . a
mn
| b
m
_
_
_
_
_
_
donde i
k
es la columna de A donde esta el vector e
k
.
Programaci on lineal 27
1. Elegir una columna s de A tal que c
s
< 0. Si no existe, stop (la presente soluci on b asica (z
0
, x) es optima).
2. Elegir una la r de A tal que
b
r
a
rs
= min
_
b
i
a
is
/ a
is
> 0
_
Si el conjunto fuera vaco, es decir, i tal que a
is
> 0, stop (el problema no tiene soluci on optima).
3. Hacer una transformacion con pivote en a
rs
y poner
i

k
=
_
i
k
si k = r
s si k = r
4. Si
_
1 c

| z

0
0 A

| b

_
es la matriz obtenida en el paso 3., actualizar en la forma c = c

, A = A

, z
0
= z

0
, b = b

, i
k
= i

k
.
5. Ir a 1.
Ejemplo 7.3.
Apliquemos el algoritmo simplex para resolver el problema en forma standard
min x
2
3x
3
+ 2x
5
x
1
+ 3x
2
x
3
+ 2x
5
= 7
2x
2
+ 4x
3
+ x
4
= 12
4x
2
+ 3x
3
+ 8x
5
+ x
6
= 10
x 0
Para ello, lo escribimos en la forma equivalente
min z
z+cx = z
0
Ax = b
x 0
donde c = (0, 1, 3, 0, 2, 0), b = (7, 12, 10), z
0
= 0 y
A =
_
_
1 3 1 0 2 0
0 2 4 1 0 0
0 4 3 0 8 1
_
_
En este caso, el vector e
1
esta en la columna 1 de A, el vector e
2
en la columna 4 y el vector e
3
en la columna
6. Es decir, i
1
= 1, i
2
= 4, i
3
= 6. Luego, la matriz a la que aplicaremos el algoritmo es
1
4
6
_
_
_
1 0 1 3 0 2 0 | 0
0 1 3 1 0 2 0 | 7
0 0 2 4 1 0 0 | 12
0 0 4 3 0 8 1 | 10
_
_
_
Observemos que este sistema esta en forma can onica y que b 0, por lo tanto estamos en condiciones de
aplicar el algoritmo.
Ahora debemos determinar la la r y la columna s del pivote. La columna s debe elegirse tal que c
s
< 0,
luego debe ser s = 3 (recordemos que la primera la y la primera columna de la matriz
_
1 c | z
0
0 A | b
_
28 Optimizaci on Combinatoria
son la la cero y la columna cero).
Ahora determinemos el r correspondiente a s = 3: la la r se elige tal que
b
r
a
rs
= min
_
b
i
a
is
/ a
is
> 0
_
=
= min
_
b
i
a
i3
/ a
i3
> 0
_
=
= min
_
b
2
a
23
,
b
3
a
33
_
=
b
2
a
23
pues
b
2
a
23
= 12/4 y
b
3
a
33
= 10/3. Luego, r = 2 de donde a
rs
= a
23
= 4. Indicaremos el pivote en la matriz
con un asterisco.
Mediante la transformacion pivote el sistema
1
4
6
_
_
_
1 0 1 3 0 2 0 | 0
0 1 3 1 0 2 0 | 7
0 0 2 4

1 0 0 | 12
0 0 4 3 0 8 1 | 10
_
_
_
se transforma en
1
3
6
_
_
_
1 0 1/2 0 3/4 2 0 | 9
0 1 5/2 0 1/4 2 0 | 10
0 0 1/2 1 1/4 0 0 | 3
0 0 5/2 0 3/4 8 1 | 1
_
_
_
ya que las operaciones de la son:
F

0
= F
0

c
3
4
F
2
F

i
= F
i

a
i3
4
F
2
(i = 1, 3)
F

2
=
F
2
4
y las nuevas las unitarias son
i

j
=
_
i
j
si j = r
s si j = r
=
_
i
j
si j = 2
3 si j = 2
La soluci on (z
0
, x) correspondiente es (9, 10, 0, 3, 0, 0, 1) con un valor del funcional z = 9.
Luego, x = (10, 0, 3, 0, 0, 1) es una soluci on b asica y factible del problema en forma standard dado y el valor
del funcional en x es z
0
= 9, es decir, x
2
3x
3
+ 2x
5
= 9.
Como existe s tal que c
s
< 0, debemos hacer otra iteracion del algoritmo para obtener una nueva soluci on
con menor valor del funcional.
Con el mismo criterio usado anteriormente, elegimos s = 2 y r = 1 y hacemos las correspondientes operaciones
de la y las actualizaciones de los ndices de las columnas unitarias en
1
3
6
_
_
_
1 0 1/2 0 3/4 2 0 | 9
0 1 5/2

0 1/4 2 0 | 10
0 0 1/2 1 1/4 0 0 | 3
0 0 5/2 0 3/4 8 1 | 1
_
_
_
obteniendo
Programaci on lineal 29
2
3
6
_
_
_
1 1/5 0 0 4/5 12/5 0 | 11
0 2/5 1 0 1/10 4/5 0 | 4
0 1/5 0 1 3/10 2/5 0 | 5
0 1 0 0 1/2 10 1 | 11
_
_
_
Ahora se tiene que c
s
0 para todo s. Luego, (z
0
, x) = (11, 0, 4, 5, 0, 0, 11) es una soluci on b asica optima
de
min z
z+cx = z
0
Ax = b
x 0
donde c = (0, 1, 3, 0, 2, 0), b = (7, 12, 10), z
0
= 0 y
A =
_
_
1 3 1 0 2 0
0 2 4 1 0 0
0 4 3 0 8 1
_
_
de donde resulta que x = (0, 4, 5, 0, 0, 11) es una soluci on b asica optima de
min x
2
3x
3
+ 2x
5
x
1
+ 3x
2
x
3
+ 2x
5
= 7
x
2
+ 4x
3
+ x
4
= 12
4x
2
+ 3x
3
+ 8x
5
+ x
6
= 10
x 0
y en esa soluci on el valor del funcional es z
0
= 11, es decir, x
2
3x
3
+ 2x
5
= 11.
Ejemplo 7.4.
Veamos que si cambiamos ligeramente el sistema del ejemplo anterior los resultados son completamente
diferentes. Consideremos el sistema
min x
2
3x
3
+ 2x
5
x
1
x
3
+ 2x
5
= 7
2x
2
+ 4x
3
+ x
4
= 12
4x
2
+ 3x
3
+ 8x
5
+ x
6
= 10
x 0
Ahora la matriz a la que debemos aplicar el algoritmo es
1
4
6
_
_
_
1 0 1 3 0 2 0 | 0
0 1 0 1 0 2 0 | 7
0 0 2 4 1 0 0 | 12
0 0 4 3 0 8 1 | 10
_
_
_
Haciendo la correspondiente transformacion pivote, el tableau
1
4
6
_
_
_
1 0 1 3 0 2 0 | 0
0 1 0 1 0 2 0 | 7
0 0 2 4

1 0 0 | 12
0 0 4 3 0 8 1 | 10
_
_
_
30 Optimizaci on Combinatoria
se transforma en
1
3
6
_
_
_
1 0 1/2 0 3/4 2 0 | 9
0 1 1/2 0 1/4 2 0 | 10
0 0 1/2 1 1/4 0 0 | 3
0 0 5/2 0 3/4 8 1 | 1
_
_
_
Ahora debemos elegir s = 2, pero a
is
= a
i2
0 para todo i. Esto signica que el problema no tiene una
soluci on optima.
8. El algoritmo simplex en el caso general.
Consideremos ahora el problema
min z
z+cx = z
0
Ax = b
x 0
en general. Para poder aplicar el algoritmo simplex necesitamos que se veriquen las siguientes tres condi-
ciones:
i) A contiene una matriz permutaci on de I
m
.
ii) Las coordenadas c
i1
, . . . , c
im
de c correspondientes a las columnas unitarias i
1
, . . . , i
m
de A son nulas.
iii) b 0
Observaci on 8.1. Si iii) no valiera podemos utilizar, en lugar del tableau original
_
1 c | z
0
0 A | b
_
el equivalente obtenido multiplicando por -1 cada la i para la que b
i
< 0. Por lo tanto siempre podemos
suponer que b 0.
Observaci on 8.2. Supongamos que tenemos un tableau
_
1 c | z
0
0 A | b
_
para el cual valen i) y iii). Si ii) no valiera, entonces podemos utilizar en su lugar el equivalente que resulta
de la siguiente operacion de las
F

0
= F
0
(c
i1
F
1
+ + c
im
F
m
)
para el cual ahora valen i), ii) y iii).
En general, si el sistema dado no esta en forma can onica, encontrar un sistema equivalente que verique i),
ii) y iii) no es tan sencillo. Describiremos ahora una forma de proceder en esta situaci on que nos permitir a
resolver el problema conocida como FASE 1.
Dado el problema
min z
z+cx = z
0
Ax = b (2)
x 0
Programaci on lineal 31
donde (tal como vimos en la observaci on 8.1., podemos suponer que) b 0, si este sistema no estuviera en
forma can onica consideremos entonces el problema auxiliar
min w
w + s
1
+ + s
m
= 0
Ax + I
m
s = b (3)
x, s 0
cuyas soluciones seran vectores (w, x, s), donde w IR, x IR
n
y s IR
m
. A las variables s
1
, . . . , s
m
que
no estaban en el problema original las llamaremos variables articiales.
El sistema (3) siempre es factible: (w, x, s) = (b
1
+ + b
m
, 0, b) es una soluci on del sistema lineal con
x, s 0. Ademas, su tableau es
_
1 0
n
1
m
| 0
0 A I
m
| b
_
=
_
_
_
_
_
_
1 0 0 . . . 0 1 1 . . . 1 | 0
0 a
11
a
12
. . . a
1n
1 0 . . . 0 | b
1
0 a
21
a
22
. . . a
2n
0 1 . . . 0 | b
2
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. |
.
.
.
0 a
m1
a
m2
. . . a
mn
0 0 . . . 1 | b
m
_
_
_
_
_
_
Notemos que este tableau satisface i) y iii). La FASE 1 consiste en resolver (3) aplicando el algoritmo simplex
al tableau equivalente
_
1 d 0
m
| u
0
0 A I
m
| b
_
=
=
_
_
_
_
_
_
1

m
i=1
a
i1

m
i=1
a
i2
. . .

m
i=1
a
in
0 0 . . . 0 |

m
i=1
b
i
0 a
11
a
12
. . . a
1n
1 0 . . . 0 | b
1
0 a
21
a
22
. . . a
2n
0 1 . . . 0 | b
2
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. |
.
.
.
0 a
m1
a
m2
. . . a
mn
0 0 . . . 1 | b
m
_
_
_
_
_
_
que esta en forma can onica y que resulta de hacer la operacion de las
F

0
= F
0
(F
1
+ + F
m
)
(ver observaci on 8.2.). Veremos a continuaci on que una vez resuelto (3) con el algoritmo simplex (es decir,
nalizada la FASE 1) podremos determinar si (2) es factible o no y, en el caso en que lo sea, podremos
obtener un tableau que vericara i), ii) y iii). La FASE 2 consistira aplicar el simplex a este tableau.
Proposici on 8.3. Las siguientes condiciones son equivalentes
a) (2) es factible
b) (3) tiene una soluci on optima (w, x, s) que satisface w = 0
Demostraci on: Veamos primero que a) implica b). Sea (z, x) una soluci on factible de (2) y sean w = 0,
x = x y s = 0. Entonces (w, x, s) es una soluci on factible de (3) que satisface w = 0. Veamos que es
optima: si (w

, x

, s

) es una soluci on factible de (3) entonces w

= s

1
+ +s

m
y s

i
0 para todo i. Luego
w

0 = w.
Veamos ahora que b) implica a). Supongamos que (3) tiene una soluci on optima de la forma (0, x, s).
Entonces s 0 y s
1
+ +s
m
= 0 de donde s = 0 y por lo tanto Ax = Ax +Is = b. Ademas, x 0. Luego
tomando z = z
0
+ cx y x = x resulta que (z, x) es una soluci on factible de (2).
Veamos ahora la FASE 2.
32 Optimizaci on Combinatoria
Por la proposici on 8.3., si (3) no tiene soluciones optimas o el valor del funcional en cualquier soluci on optima
es no nulo entonces (2) no es factible. Luego, si (2) es factible, entonces al nalizar la FASE 1 el ultimo
tableau obtenido al aplicar el simplex al tableau inicial
_
1 d 0
m
| u
0
0 A I
m
| b
_
debe ser un tableau de la forma
_
1 d

| 0
0 A

| b

_
que este en forma can onica y satisfaga b

0, d

0 y f

0.
Sean j
1
, . . . , j
r
los ndices j tales que d

j
> 0, donde d

j
es la j-esima coordenada de d

y sean k
1
, . . . , k
t
los ndices j tales que la columna j de I

no sea una columna unitaria. Notar que entonces d

j
= 0 para
j = j
1
, . . . , j
r
pues d

0 y f

j
= 0 para j = k
1
, . . . , k
t
pues si la columna j de I

es unitaria entonces f

j
= 0
ya que
_
1 d

| 0
0 A

| b

_
esta en forma can onica.
Consideremos los problemas
A

x + I

s = b

x
j
= 0 j = j
1
, . . . , j
r
(4)
s
j
= 0 j = k
1
, . . . , k
t
x, s 0
y
Ax = b (5)
x 0
Veremos que (x

, s

) es una soluci on de (4) si y solo si s

= 0 y x

es una soluci on de (5).


Sea (x

, s

) una soluci on de (4). Entonces (0, x

, s

) es una soluci on de
w + d

x + f

s = 0
A

x + I

s = b

x, s 0
ya que d

+ f

= 0. En efecto, si j = j
1
, . . . , j
r
entonces x

j
= 0 y si j = j
1
, . . . , j
r
entonces d

j
= 0, por
lo tanto d

= 0. An alogamente, si j = k
1
, . . . , k
t
entonces s

j
= 0 y si j = k
1
, . . . , k
t
entonces f

j
= 0, por lo
tanto f

= 0. Pero los sistemas


w + d

x + f

s = 0
A

x + I

s = b

y
w + s
1
+ + s
m
= 0
Ax + Is = b
son equivalentes pues la matriz
_
1 d

| 0
0 A

| b

_
Programaci on lineal 33
fue obtenida haciendo operaciones elementales de la en la matriz
_
1 0
n
1
m
| 0
0 A I
m
| b
_
Luego (0, x

, s

) es soluci on de
w + s
1
+ + s
m
= 0
Ax + Is = b
x, s 0
de donde
s

1
+ + s

m
= 0
Ax

+ Is

= b
x

, s

0
Entonces debe ser s

= 0, y por lo tanto Ax

= b. Luego s

= 0 y y x

es soluci on de (5).
Recprocamente, si s

= 0 y x

es una soluci on de (5) entonces Ax

= b y x

0, de donde (0, x

, 0) es una
soluci on de
w + s
1
+ + s
m
= 0
Ax + Is = b
x, s 0
Luego es soluci on del problema equivalente
w + d

x + f

s = 0
A

x + I

s = b

x, s 0
Por lo tanto d

= 0, de donde x

j
= 0 para j = j
1
, . . . , j
r
(ya que para j = j
1
, . . . , j
r
es d

j
= 0 y para
j = j
1
, . . . , j
r
es d

j
> 0 y x

j
0) y se tiene entonces que (x

, s

) = (x

, 0) es una soluci on de (4) .


Hemos probado entonces que (x

, s

) es una soluci on de
A

x + I

s = b

x
j
= 0 j = j
1
, . . . , j
r
s
j
= 0 j = k
1
, . . . , k
t
x, s 0
si y solo si s

= 0 y x

es una soluci on de
Ax = b (5)
x 0
Sea
: {x IR
n
/ x
j
= 0 j = j
1
, . . . , j
r
} IR
nr
la biyeccion denida por
(x
1
, . . . , x
n
) = (x
1
, . . . , x
j
l
, . . . , x
n
)
donde (x
1
, . . . , x
j
l
, . . . , x
n
) es el vector que resulta de eliminar en (x
1
, . . . , x
n
) las coordenadas j
1
, . . . , j
r
y
sea
: {s IR
m
/ s
j
= 0 j = k
1
, . . . , k
t
} IR
mt
34 Optimizaci on Combinatoria
la biyeccion denida por
(s
1
, . . . , s
m
) = (s
1
, . . . , s
k
l
, . . . , s
m
)
donde (s
1
, . . . , s
k
l
, . . . , s
m
) es el vector que resulta de eliminar en (s
1
, . . . , s
m
) las coordenadas k
1
, . . . , k
t
.
Consideremos el tableau
_
1 c 0 | z
0
0 A I | b

_
que resulta de eliminar en
_
1 c 0 | z
0
0 A

| b

_
las columnas j
1
, . . . , j
r
, n + k
1
, . . . n + k
r
, es decir, el que resulta de la matriz
_
_
1 d

| 0
1 c 0 | z
0
0 A

| b

_
_
eliminando las columnas correspondientes a las coordenadas no nulas de d

y las columnas correspondientes


a columnas no unitarias de I

(recordemos que a la primera columna siempre la contamos como columna


cero y A tiene n columnas) y luego eliminando lo que quede de la la (1 d

0)
Observemos que c(x) = cx para todo x tal que x
j
= 0 j = j
1
, . . . , j
r
pues c resulta de eliminar en c las
coordenadas j
1
, . . . , j
r
.
Consideremos ahora el problema
min z
z + cx = z
0
A

x + I

s = b

(6)
x
j
= 0 j = j
1
, . . . , j
r
s
j
= 0 j = k
1
, . . . , k
t
x, s 0
y notemos que (z

, x

, s

) es una soluci on optima de (6) si y solo si s

= 0 y (z

, x

) es una soluci on optima de


(2) ya que (x

, s

) es una soluci on de (4) si y solo si s

= 0 y x

es una soluci on de (5). Dejamos a cargo del


lector vericar que (z

, x

, s

) es una soluci on optima de (6) si y solo si (x

, s

) = (
1
(u

),
1
(v

) y (z

, u

, v

)
es una soluci on optima de
min z
z + cu = z
0
(7)
Au + Iv = b

u, v 0
Ahora aplicamos el simplex al tableau
_
1 c 0 | z
0
0 A I | b

_
o al equivalente que este en forma can onica mencionado en la observaci on 8.2. si este no estuviera en forma
can onica. Esto es posible pues b

0 y (A I) contiene una matriz permutaci on ya que


_
1 d

0 A

_
.
_
_
w
x
s
_
_
=
_
0
b

_
era un sistema can onico, las coordenadas d

j
correspondientes a vectores unitarios eran nulas, con lo cual
estas columnas no fueron eliminadas y las columnas unitarias de I

tampoco fueron eliminadas.


Programaci on lineal 35
Esto resuelve el problema (7). Si (7) no tiene soluci on optima, entonces (6), y por lo tanto (2), tampoco. En
caso contrario, sea (z

, u

, v

) la soluci on b asica optima de (7) hallada por el algoritmo. Entonces tomando


x

=
1
(u

) y s

=
1
(v

) resulta que (z

, x

, s

) es una soluci on b asica optima de (6) y por lo tanto s

= 0
y (z

, x

) es una soluci on b asica optima de (2).


Ejemplo 8.4. Resolvamos el problema
min 2x
1
+3x
2
+ 2x
3
x
4
+ x
5
3x
1
3x
2
+4x
3
+ 2x
4
x
5
= 1
x
1
+ x
2
+x
3
+ 3x
4
+ x
5
= 2
x 0
Primero lo escribimos en la forma equivalente
min z
z+cx = z
0
Ax = b
x 0
donde c = (2, 3, 2, 1, 1), z
0
= 0, A =
_
3 3 4 2 1
1 1 1 3 1
_
y b = (1, 2), es decir,
min z
z + 2x
1
+3x
2
+ 2x
3
x
4
+ x
5
= 0
3x
1
3x
2
+4x
3
+ 2x
4
x
5
= 1
x
1
+ x
2
+x
3
+ 3x
4
+ x
5
= 2
x 0
FASE 1: consideremos el problema auxiliar
min w
w + s
1
+ + s
m
= 0
Ax + I
m
s = b
x, s 0
con A =
_
3 3 4 2 1
1 1 1 3 1
_
, I
m
= I
2
=
_
1 0
0 1
_
y b = (1, , 2), cuyo tableau es
_
_
1 0 0 0 0 0 1 1 | 0
0 3 3 4 2 1 1 0 | 1
0 1 1 1 3 1 0 1 | 2
_
_
y hagamos la transformacion de las F

0
= F
0
(F
1
+ + F
m
) que nos da el tableau equivalente que est a
en forma can onica
_
1 d 0
m
| z
0
0 A I
m
| b
_
=
_
_
1 4 2 5 5 0 0 0 | 3
0 3 3 4 2 1 1 0 | 1
0 1 1 1 3 1 0 1 | 2
_
_
36 Optimizaci on Combinatoria
donde d = (4, 2, 5, 5, 0) y z
0
= 3. Ahora aplicamos el simplex
6
7
_
_
1 4 2 5 5 0 0 0 | 3
0 3 3 4

2 1 1 0 | 1
0 1 1 1 3 1 0 1 | 2
_
_

3
7
_
_
1 1/4 7/4 0 5/2 5/4 5/4 0 | 7/4
0 3/4 3/4 1 1/2

1/4 1/4 0 | 1/4


0 1/4 7/4 0 5/2 5/4 1/4 1 | 7/4
_
_

4
7
_
_
1 7/2 11/2 5 0 5/2 5/2 0 | 1/2
0 3/2 3/2 2 1 1/2 1/2 0 | 1/2
0 7/2 11/2

5 0 5/2 3/2 1 | 1/2


_
_

4
2
_
_
1 0 0 0 0 0 1 1 | 0
0 6/11 0 7/11 1 2/11 1/11 3/11 | 7/11
0 7/11 1 10/11 0 5/11 3/11 2/11 | 1/11
_
_
=
=
_
1 d

| 0
0 A

| b

_
donde se tiene d

= (0, 0, 0, 0, 0), f

= (1, 1), A

=
_
6/11 0 7/11 1 2/11
7/11 1 10/11 0 5/11
_
, I

=
_
1/11 3/11
3/11 2/11
_
y b

= (7/11, 1/11).
FASE 2: Consideremos el tableau
_
_
1 d

| 0
1 c 0 | 0
0 A

| b

_
_
es decir,
4
2
_
_
_
1 0 0 0 0 0 1 1 | 0
1 2 3 2 1 1 0 0 | 0
0 6/11 0 7/11 1 2/11 1/11 3/11 | 7/11
0 7/11 1 10/11 0 5/11 3/11 2/11 | 1/11
_
_
_
y eliminemos las columnas correspondientes a los ndices j tales que d

j
> 0 y las columnas articiales que
no son unitarias y luego descartemos la primera la que es nula, obteniendo
4
2
_
_
1 2 3 2 1 1 | 0
0 6/11 0 7/11 1 2/11 | 7/11
0 7/11 1 10/11 0 5/11 | 1/11
_
_
Este tableau satisface i) y iii) pero no ii). Por lo tanto hacemos la transformacion de las
F

0
= F
0
c
i1
F
1
c
i2
F
2
= F
0
c
4
F
1
c
2
F
2
= F
0
(1)F
1
3F
2
obteniendo el tableau equivalente
4
2
_
_
1 49/11 0 59/11 0 2/11 | 4/11
0 6/11 0 7/11 1 2/11 | 7/11
0 7/11 1 10/11 0 5/11 | 1/11
_
_
que esta en forma can onica y volvemos a aplicar el simplex.
4
2
_
_
1 49/11 0 59/11 0 2/11 | 4/11
0 6/11 0 7/11 1 2/11 | 7/11
0 7/11 1 10/11 0 5/11

| 1/11
_
_

Programaci on lineal 37
4
5
_
_
1 231/55 2/5 275/55 0 0 | 2/5
0 44/55 2/5 1 1 0 | 3/5
0 7/5 11/5 2 0 1 | 1/5
_
_
Luego, tomando z

= 2/5, u

= (0, 0, 0, 3/5, 1/5) resulta que (z

, u

) es el optimo de
min z
z + cu = z
0
Au + Iv = b

u, v 0
y ahora tomando x

=
1
(u

) = (0, 0, 0, 3/5, 1/5) y s

= (0, 0) se tiene que s

= 0 y (z

, x

) es la soluci on
optima de
min z
z + cx = 0
Ax = b
x 0
con un valor del funcional z

= 2/5, y por lo tanto x = (0, 0, 0, 3/5, 1/5) es el optimo de


min 2x
1
+3x
2
+ 2x
3
x
4
+ x
5
3x
1
3x
2
+4x
3
+ 2x
4
x
5
= 1
x
1
+ x
2
+x
3
+ 3x
4
+ x
5
= 2
x 0
con un valor del funcional cx = 2x
1
+ 3x
2
+ 2x
3
x
4
+ x
5
= 2/5.
Ejemplo 8.5. Resolvamos ahora el problema
min x
1
+
1
2
x
2
+ 3x
3
x
4
x
1
+x
2
x
4
= 1
x
2
+2x
3
+ 2x
4
= 2
2x
1
+x
2
4x
3
4x
4
= 0
x 0
FASE 1
5
6
7
_
_
_
1 0 0 0 0 1 1 1 | 0
0 1 1 0 1 1 0 0 | 1
0 0 1 2 2 0 1 0 | 2
0 2 1 4 4 0 0 1 | 0
_
_
_
F

0
= F
0
(F
1
+ F
2
+ F
3
)
5
6
7
_
_
_
1 3 3 2 3 0 0 0 | 3
0 1 1 0 1 1 0 0 | 1
0 0 1 2 2 0 1 0 | 2
0 2 1

4 4 0 0 1 | 0
_
_
_
F

0
= F
0
+ 3F
3
, F

1
= F
1
F
3
, F

2
= F
2
F
3
, F

3
= F
3
38 Optimizaci on Combinatoria
5
6
2
_
_
_
1 3 0 10 9 0 0 3 | 3
0 1 0 4 3

1 0 1 | 1
0 2 0 6 6 0 1 1 | 2
0 2 1 4 4 0 0 1 | 0
_
_
_
F

0
= F
0
+ 3F
1
, F

1
=
1
3
F
1
, F

2
= F
2
2F
1
, F

3
= F
3
+
4
3
F
1
4
6
2
_
_
_
1 0 0 2 0 3 0 0 | 0
0 1/3 0 4/3 1 1/3 0 1/3 | 1/3
0 0 0 2 0 2 1 1 | 0
0 2/3 1 4/3 0 4/3 0 1/3 | 4/3
_
_
_
FASE 2:
4
6
2
_
_
_
_
_
1 0 0 2 0 3 0 0 | 0
1 1 1/2 3 1 0 0 0 | 0
0 1/3 0 4/3 1 1/3 0 1/3 | 1/3
0 0 0 2 0 2 1 1 | 0
0 2/3 1 4/3 0 4/3 0 1/3 | 4/3
_
_
_
_
_
Suprimimos la columna 3 pues d

3
> 0 y las columnas 5 y 7 por ser las columnas no unitarias de I

y
eliminamos la primera la obteniendo
_
_
_
1 1 1/2 1 0 | 0
0 1/3 0 1 0 | 1/3
0 0 0 0 1 | 0
0 2/3 1 0 0 | 4/3
_
_
_
Este tableau satisface i) y iii) pero no ii). Por lo tanto hacemos la transformacion de las
F

0
= F
0
((1)F
1
+ 0F
2
+ 1/2F
3
)
y actualizamos los valores de i
j
a la nueva situaci on obteniendo
3
4
2
_
_
_
1 5/3 0 0 0 | 1/3
0 1/3 0 1 0 | 1/3
0 0 0 0 1 | 0
0 2/3 1 0 0 | 4/3
_
_
_
y volvemos a aplicar el simplex a este ultimo tableau:
3
4
2
_
_
_
1 5/3 0 0 0 | 1/3
0 1/3 0 1 0 | 1/3
0 0 0 0 1 | 0
0 2/3

1 0 0 | 4/3
_
_
_
3
4
1
_
_
_
1 0 5/2 0 0 | 3
0 0 1/2 1 0 | 1
0 0 0 0 1 | 0
0 1 3/2 0 0 | 2
_
_
_
Soluci on auxiliar: z

= 3, (u

, v

) = (2, 0, 1, 0).
Ahora tomando x

=
1
(u

) = (2, 0, 0, 1) y s

=
1
(v

) = (0, 0, 0) resulta que s

= 0 y (z

, x

) es una
soluci on de
min z
z x
1
+
1
2
x
2
+ 3x
3
x
4
= 0
x
1
+x
2
x
4
= 1
x
2
+2x
3
+ 2x
4
= 2
2x
1
+x
2
4x
3
4x
4
= 0
x 0
Programaci on lineal 39
es decir, x

= (2, 0, 0, 1) es una soluci on optima del problema


min x
1
+
1
2
x
2
+ 3x
3
x
4
x
1
+x
2
x
4
= 1
x
2
+2x
3
+ 2x
4
= 2
2x
1
+ x
2
4x
3
4x
4
= 0
x 0
con un valor del funcional x

1
+
1
2
x

2
+ 3x

3
x

4
= z

= 3.
Esta soluci on es degenerada (ver denici on 3.9.) porque #{j / x

j
= 0} = 2 < 3 = rg A, donde
A =
_
_
1 1 0 1
0 1 2 2
2 1 4 4
_
_
es la matriz del sistema.
9. El algoritmo dual.
Dado un tableau en forma can onica
_
1 c | z
0
0 A | b
_
, con b 0, veamos que sucede cuando le aplicamos
el algoritmo simplex.
Supongamos que
_
1 c | z
0
0 A | b
_
es el tableau obtenido en alguna iteracion del algoritmo. Entonces
existe una matriz inversible U IR
(m+1)(m+1)
tal que
_
1 c | z
0
0 A | b
_
= U.
_
1 c | z
0
0 A | b
_
. Si
U = ||u
ij
|| 0im
0jm
entonces
_
_
_
_
u
00
u
01
. . . u
0m
u
10
u
11
. . . u
1m
.
.
.
.
.
.
.
.
.
u
m0
u
m1
. . . u
mm
_
_
_
_
.
_
_
_
_
1 c
1
. . . c
n
0 a
11
. . . a
1m
.
.
.
.
.
.
.
.
.
0 a
m1
. . . a
mm
_
_
_
_
=
_
_
_
_
1 c
1
. . . c
n
0 a
11
. . . a
1m
.
.
.
.
.
.
.
.
.
0 a
m1
. . . a
mm
_
_
_
_
Luego, u
00
= 1, u
10
= 0, ... , u
m0
= 0. Tomando y = (u
01
, . . . , u
0m
) y U

=
_
_
u
11
. . . u
1m
.
.
.
.
.
.
u
m1
. . . u
mm
_
_
resulta
que U =
_
1 y
0 U

_
, por lo tanto c = c y.A y z
0
= z
0
y.b. El vector c se llama vector de costos
originales y el vextor c vector de costos reducidos. Ademas, si i
1
, . . . , i
m
son las columnas unitarias de A
entonces c
i1
= 0, . . ., c
im
= 0. Luego, el vector x denido por
x
j
=
_
0 si j = i
1
, . . . , i
m
b
k
si j = i
k
(1 k m)
satisface A.x = b, x 0 y c.x = 0, de donde (z
0
, x) es una soluci on del sistema
_
1 c
0 A
_
.
_
z
x
_
=
_
z
0
b
_
.
Luego, (z
0
, x) es soluci on del sistema equivalente
_
1 c
0 A
_
.
_
z
x
_
=
_
z
0
b
_
. Por lo tanto z
0
+c.x = z
0
y Ax = b.
40 Optimizaci on Combinatoria
Se tiene entonces que Ax = b, x 0 y c.x = z
0
+ z
0
= y.b pues z
0
= z
0
y.b.
Consideremos los problemas primal y dual
min cx max yb
Ax = b (P

) yA c (D

)
x 0
Entonces, en cada iteracion del algoritmo tenemos dos vectores x IR
n
e y IR
m
, donde x es una soluci on
factible de (P), que satisfacen c.x = z
0
z
0
, y.b = c.x y c = c y.A.
Notemos que el tableau inicial
_
1 c | z
0
0 A | b
_
es el tableau correspondiente al problema
min z
z+cx = z
0
Ax = b
x 0
y que (z

0
, x

) es una soluci on factible (respectivamente optima) de este problema si y solo si x

es una soluci on
factible (respectivamente optima) de (P) y c.x

= z

0
z
0
. En otras palabras, lo que estamos haciendo al
aplicar el simplex al tableau
_
1 c | z
0
0 A | b
_
es resolver (P) teniendo en cuenta que si x es la soluci on
factible de (P) correspondiente al tableau
_
1 c | z
0
0 A | b
_
de una iteracion, entonces c.x = z
0
z
0
.
Luego, en cada iteracion tenemos una soluci on factible x IR
n
de (P) y un vector y IR
m
tales que
c.x = z
0
z
0
, y.b = c.x y c = c y.A.
Supongamos que
_
1 c | z
0
0 A | b
_
sea el ultimo tableau obtenido por el algoritmo. Si alguna coordenada
de c es negativa entonces (P) no tiene optimo. Dejamos como tarea al lector vericar que eso implica que
(D) no es factible. Veamos ahora que sucede si c 0. Como 0 c = c y.A, entonces y.A c. Luego, en
este caso, x es una soluci on factible de (P), y es una soluci on factible de (D) y vale c.x = y.b de donde, por
la observaci on 4.10, se tiene que x es el optimo de (P) e y es el optimo de (D).
Recprocamente, supongamos ahora que en cada iteracion partimos de un tableau
_
1 c

| z

0
0 A

| b

_
que esta en forma can onica y tal que c

0, y hacemos una transformacion con el pivote elegido para que el


nuevo tableau (que estara en forma can onica)
_
1 c | z
0
0

A |

b
_
satisfaga c 0 y z
0
z

0
. Sea
_
1 c | z
0
0 A | b
_
el tableau obtenido luego de varias iteraciones a partir del tableau inicial
_
1 c | z
0
0 A | b
_
y supongamos que este tableau inicial esta en forma can onica y que c 0.
Programaci on lineal 41
Entonces, tomando y como antes, se tiene que c = c y.A y z
0
= z
0
y.b. Como c 0 entonces y es una
soluci on factible de (D). Sea x la soluci on b asica correspondiente al tableau
_
1 c | z
0
0 A | b
_
, es decir, la
denida por
x
j
=
_
0 si j = i
1
, . . . , i
m
b
k
si j = i
k
(1 k m)
donde i
1
, . . . , i
m
son las columnas unitarias de A. Entonces x satisface A.x = b y c.x = 0, de donde A.x = b
y c.x = z
0
z
0
= y.b. Ademas, x 0 si y solo si b 0. Luego, cuando sea b 0 entonces x sera una soluci on
factible de (P) y como y es una soluci on factible de (D) y vale c.x = y.b entonces x sera una soluci on optima
de (P) e y una soluci on optima de (D).
En resumen, en cada iteracion de este algoritmo obtendremos una soluci on factible y de (D), tal que el
valor del funcional en ella sea mayor o igual que el valor del funcional en la soluci on obtenida en la iteraci on
anterior, y un vector x que satisface A.x = b y c.x = y.b. El optimo de (P) y de (D) se alcanza cuando x
es una soluci on factible de (P), es decir, cuando b 0.
Descripci on del algoritmo dual
Este algoritmo solo se podr a aplicar si el tableau inicial esta en forma can onica y el vector de costos originales
es no negativo. En cada iteracion queremos, mediante una transformacion pivote en un tableau
_
1 c

| z

0
0 A

| b

_
obtener un tableau equivalente
_
1 c | z
0
0 A | b
_
que tambien estara en forma can onica y tal que c 0 y z
0
z

0
, hasta lograr que b sea no negativo. Veamos
como hacer esto.
Supongamos que el tableau obtenido en una iteracion sea
_
1 c

| z

0
0 A

| b

_
y que este en forma can onica y satisfaga c

0.
Si b

0 entonces este es el tableau correspondiente al optimo y el algoritmo termina. En caso contrario,


b

r
< 0 para alg un r. Entonces elegimos como la del pivote la la r. Ahora veamos como elegimos la
columna s del pivote.
Si haciendo una transformacion con pivote en a

rs
obtenemos el tableau
_
1 c | z
0
0 A | b
_
, queremos que
valgan c 0 y z
0
z

0
. Como c
j
= c

s
a

rs
a

rj
y z
0
= z

s
a

rs
b

r
entonces debe ser c

j

c

s
a

rs
a

rj
para todo
j y
c

s
a

rs
b

r
0. Luego deben valer a

rs
< 0 y c

j

c

s
a

rs
a

rj
para todo j tal que a

rj
< 0, pues c

s
0, b

r
< 0 y
a

rs
= 0. Por lo tanto s debe elegirse tal que
c

s
a

rs
= max
_
c

j
a

rj
/ a

rj
< 0
_
Si no existe j tal que a

rj
< 0 entonces (P) no tiene ninguna soluci on factible y en ese caso el algoritmo
termina. En efecto, si x fuese una soluci on factible de (P) entonces x 0 y A.x = b, de donde A

.x = b

y
42 Optimizaci on Combinatoria
x 0. Luego, a

r1
x
1
+ + a

rn
x
n
= b

r
, lo que no puede ocurrir pues b

r
< 0, a

rj
0 para todo j y x 0.
Dejamos a cargo del lector mostrar que si (P) no tiene soluciones factibles entonces (D) no tiene ninguna
soluci on optima.
Ejemplo 9.1. Resolvamos el problema
min 3x
2
+x
3
x
2
+ 2x
3
+x
4
= 1
x
1
+ x
2
3x
3
= 2
x 0
utilizando el algoritmo dual.
El correspondiente tableau es
4
1
_
_
1 0 3 1 0 | 0
0 0 1 2 1 | 1
0 1 1 3 0 | 2
_
_
Elegimos r = 2 pues b
2
< 0. Ahora elegimos s = 3 ya que
c
3
a
23
= max
_
c
j
a
2j
/ a
2j
< 0
_
y hacemos una transformacion con pivote en a
23
. Las operaciones de la son:
F

0
= F
0
+ 1/3F
2
F

1
= F
1
+ 2/3F
2
F

2
= 1/3F
2
Luego
4
1
_
_
1 0 3 1 0 | 0
0 0 1 2 1 | 1
0 1 1 3

0 | 2
_
_
4
3
_
_
1 1/3 10/3 0 0 | 2/3
0 2/3 1/3 0 1 | 7/3
0 1/3 1/3 1 0 | 2/3
_
_
Ahora elegimos r = 1 pues b
1
< 0 y s = 2 ya que
c
2
a
12
= max
_
c
j
a
1j
/ a
1j
< 0
_
y hacemos una transformacion con pivote en a
12
. Las operaciones de la son:
F

0
= F
0
+ 10F
1
F

1
= (3)F
1
F

2
= F
2
F
1
y se tiene
4
3
_
_
1 1/3 10/3 0 0 | 2/3
0 2/3 1/3

0 1 | 7/3
0 1/3 1/3 1 0 | 2/3
_
_
2
3
_
_
1 7 0 0 10 | 24
0 2 1 0 3 | 7
0 1 0 1 1 | 3
_
_
Luego, x = (0, 7, 3, 0) es la soluci on optima y el valor del funcional en esta soluci on es 3x
2
+ x
3
= 24.
Programaci on lineal 43
Ejemplo 9.2. Supongamos que queremos resolver
min cx
Ax b
x 0
donde c 0.
Observando que, agregando variables de holgura, este problema es equivalente a
min cx
Ax + Is = b
x, s 0
entonces el tableau inicial sera
_
1 c 0 | 0
0 A I | b
_
con c 0, resulta que lo podemos resolver aplicando el algoritmo dual.
Ejemplo 9.3. Evitar la FASE 1.
Cualquier problema de programacion lineal puede plantearse en la forma
min cx
Ax b
x 0
Agregando variables de holgura se tiene el tableau
_
1 c 0 | 0
0 A I | b
_
Si b 0 se puede iniciar el algoritmo simplex con este tableau. Si c 0, el dual. Si no pasa ninguna de estas
cosas, supongamos que las x
j
se pueden acotar (esto, en los problemas reales, siempre es posible). Entonces
agregamos la condici on x
1
+ + x
n
b
0
. Con la correspondiente variable de holgura el tableau ser a
_
_
1 c 0 0
m
| 0
0 1 1 0
m
| b
0
0 A 0 I
m
| b
_
_
=
_
1 c 0
m+1
| 0
0 A

I
m+1
| b

_
Sea c
s
la mnima componente de c. Luego c
s
< 0. Ahora hacemos una transformacion con pivote en la la
uno, columna s. As obtenemos un nuevo sistema que es can onico pues resulto de aplicar una transformaci on
pivote a un sistema que era can onico.
La nueva la cero sera F

0
= F
0
c
s
F
1
= (1, c
1
c
s
, . . . , c
s
c
s
, . . . , c
n
c
s
, c
s
, 0, . . . , 0, c
s
b
0
).
Como c
s
era la mnima componente de c y c
s
< 0 entonces todos los coecientes de la nueva la cero son no
negativos y por lo tanto estamos en condiciones de aplicar el algoritmo dual.
Ejemplo 9.4. Agregar una restriccion.
Supongamos que hemos resuelto un problema de programacion lineal. Haciendo un cambio de variables si
es necesario, podemos suponer que el tableau que da el optimo es
_
1 c 0
m
| z
0
0 A I
m
| b
_
44 Optimizaci on Combinatoria
Como z
0
es optimo entonces c 0 y b 0. Supongamos que ahora queremos agregar la restricci on
d
1
x
1
+ + d
n
x
n
b
0
al problema original. Si la presente soluci on b asica satisface esta desigualdad, no hay nada mas que hacer.
Pero si no, agregando la restriccion con su correspondiente variable de holgura y teniendo en cuenta los
cambios de variables que hayamos realizado, obtenemos el tableau
_
_
1 c 0
m
0 | z
0
0 A I
m
0 | b
0 f g 1 | b
0
_
_
donde g = (d
i1
, . . . , d
im
) y f es el vector formado por las restantes componentes de d.
Ahora, cambiando la ultima la por ella menos una combinaci on lineal de las demas de modo que las
componentes de g se transformen en ceros, es decir, haciendo la operacion de las
F

m+1
= F
m+1
g
1
F
1
g
m
F
m
obtenemos el tableau equivalente
_
_
1 c 0
m
0 | z
0
0 A I
m
0 | b
0 f

0 1 | b

0
_
_
que esta en forma can onica y, como c 0, podemos aplicar el algoritmo dual.
10. El algoritmo simplex revisado.
Supongamos que queremos encontrar un algoritmo que calcule, dado n, el valor de 5
2
n
. Uno posible sera
Paso 1 x
1
= 5
Paso 2 x
2
= 5x
1
Paso 3 x
3
= 5x
2
.
.
.
.
.
.
Paso 2
n
x
2
n = 5x
2
n
1
Este algoritmo tiene 2
n
pasos, guarda en la memoria el valor de 2
n
variables y realiza 2
n
operaciones.
En cambio el algoritmo
1. x = 5
2. x = x
2
3. Repetir n 1 veces el paso 2.
requiere de poca memoria (solo guarda el ultimo valor de x), hace n operaciones y termina en n pasos. Este
algoritmo es, por lo tanto, mas eciente que el anterior.
En el caso del simplex, la matriz A del tableau es de mn donde, en general, m es del orden de los cientos
y n del orden de las decenas de mil. Por lo tanto, nos convendra que la cantidad de pasos, la cantidad de
espacio en memoria requerido y la cantidad de operaciones tuviesen cotas que dependieran de m en lugar de
n y que estas cotas fuesen lo mas chicas que fuera posible.
Lo que haremos es revisar el algoritmo en detalle, eliminando todo calculo que no sea indispensable y s olo
conservando en la memoria la informacion que sea estrictamente necesaria. De esta manera ahorraremos
tiempo y espacio.
Programaci on lineal 45
Observemos que dado un tableau
_
1 c | z
0
0 A | b
_
en forma can onica, el siguiente tableau se obtiene haciendo una transformacion con pivote en cierto coeciente
a
rs
de A. Esto equivale a multiplicar a izquierda el tableau dado por la matriz inversible U
rs
IR
(m+1)(m+1)
U
rs
=
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
columna r
1 0 0 . . . 0 0 c
s
/a
r s
0 0 . . . 0 0
0 1 0 . . . 0 0 a
1 s
/a
r s
0 0 . . . 0 0
.
.
.
.
.
.
.
.
.
.
.
.
0 0 0 . . . 0 1 a
r1 s
/a
r s
0 0 . . . 0 0
0 0 0 . . . 0 0 1/a
r s
0 0 . . . 0 0
0 0 0 . . . 0 0 a
r+1 s
/a
r s
1 0 . . . 0 0
.
.
.
.
.
.
.
.
.
.
.
.
0 0 0 . . . 0 0 a
ms
/a
r s
0 0 . . . 0 1
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
la r
Tambien aqu llamamos columna cero a la primera columna de la izquierda y la cero a la primera la de
arriba.
Como s se elige tal que c
s
< 0, necesitamos conocer c. Una vez elegido s, para elegir r necesitamos conocer
b y la columna s de A pues r se elige tal que
b
r
a
rs
= min
_
b
i
a
is
/ a
is
> 0
_
Debemos guardar, ademas, el ultimo valor de (i
1
, . . . , i
m
) para poder conocer la soluci on b asica optima al
terminar el algoritmo.
Dado el tableau T
k
de un paso k
T
k
=
i
1
i
2
.
.
.
i
m
_
_
_
_
_
_
1 c
1
. . . c
n
| z
0
0 a
11
. . . a
1n
| b
1
0 a
21
. . . a
2n
| b
2
.
.
.
.
.
.
.
.
. |
.
.
.
0 a
m1
. . . a
mn
| b
m
_
_
_
_
_
_
sean F
0
(k) la la cero (es decir, F
0
(k) = (1, c, z
0
), C
s
(k) la columna s, B(k) la columna
_
z
0
b
_
y sea
I(k) = (i
1
, . . . , i
m
).
Supongamos que el algoritmo ha realizado k pasos. Veamos como es el paso k + 1. A partir del tableau
T
k
obtenido en el paso k, se calculan los valores de r y s que determinan el pivote. Llamemos P
k+1
a la
matriz U
rs
correspondiente a estos valores de r y s calculados en el paso k +1. Multiplicando T
k
a izquierda
por la matriz P
k+1
se obtiene el tableau T
k+1
del paso k + 1, es decir, T
k+1
= P
k+1
.T
k
. Los valores de
I(k + 1) = (i

1
, . . . , i

m
) se calculan a partir de los valores de I(k) = (i
1
, . . . , i
m
) en la forma
i

j
=
_
i
j
si j = r
s si j = r
Observemos que para calcular la matriz P
k+1
no se necesitan conocer todos los coecientes de la matriz T
k
sino que solo se necesitan los datos F
0
(k), C
s
(k) y B(k). Luego, conociendo F
0
(k), C
s
(k), B(k) e I(k) se
puede calcular T
k+1
.
46 Optimizaci on Combinatoria
Sea T
0
el tableau inicial. Entonces
T
k+1
= P
k+1
.T
k
= P
k+1
.P
k
.T
k1
= = P
k+1
. . . P
1
.T
0
Sea E
k+1
= P
k+1
. . . P
1
. Entonces E
k+1
= P
k+1
.E
k
y ademas E
k+1
.T
0
= T
k+1
. Luego E
k+1
es la matriz
que multiplicada a izquierda por el tableau inicial nos da el tableau del paso k +1. Ademas, conociendo E
k
podemos calcular la la cero F
0
(k) de T
k
= E
k
.T
0
, la columna s C
s
(k) y tambien la columna B(k). Esto
signica que no es necesario guardar el tableau del paso k, solo necesitamos conocer E
k
y el vector I(k).
Observaci on 10.1 Para todo k, la columna cero de E
k
es el vector e
1
. En efecto, como el pivote nunca se
elige en la la cero entonces la columna cero de P
k
siempre es el vector e
1
. Pero el producto de dos matrices
cuya primera columna de la izquierda es el vector e
1
es una matriz del mismo tipo. Luego, la columna cero
de E
k
es el vector e
1
como queramos ver.
Descripci on del algoritmo simplex revisado.
Sea T
0
el tableau inicial que esta en forma can onica y tal que b 0.
1. Ponemos I = I(0), E = I, k = 0
2. Calculamos F
0
(k) y B(k) como la la cero y la ultima columna de E.T
0
respectivamente.
3. Elegimos s. Si no es posible, stop (la presente soluci on es optima).
4. Calculamos C
s
(k) = columna s de E.T
0
.
5. Determinamos r. Si no es posible, stop (no existe soluci on optima).
6. Calculamos la matriz P
k+1
que corresponde a nuestra eleccion de r y s, E
k+1
= P
k+1
.E y calculamos
tambien I(k + 1) a partir de I y de r y s.
7. Ponemos E = E
k+1
, I = I(k + 1), k = k + 1
8. Ir a 2.
Notemos que ahora no trabajamos con matrices de (m + 1) (n + 1) sino de (m + 1) (m + 1) y que s olo
hacemos las operaciones indispensables y guardamos la menor cantidad de informacion en la memoria.
Observaci on 10.2. Errores de redondeo.
Como E
k
se obtiene multiplicando P
k
por E
k1
, en cada iteracion se producen errores de redondeo que se
arrastran. Para evitar que el error crezca demasiado conviene recalcular cada tanto la matriz E
k
. Veamos
como hacer esto.
Si I(k) = (i
1
, . . . , i
m
) y C
ij
(T
0
) y C
ij
(T
k
) denotan la columna i
j
del tableau inicial y del tableau del paso k
respectivamente, como E
k
.T
0
= T
k
entonces
E
k
.C
ij
(T
0
) = C
ij
(T
k
) =
_
0
e
j
_
Luego,
E
k
.
_
_
_
_
_
_
1
0
.
.
. C
i1
(T
0
) C
im
(T
0
)
0
0
_
_
_
_
_
_
=
_
_
_
_
_
_
1 0 0 0
0
.
.
. e
1
e
2
e
m
0
0
_
_
_
_
_
_
=
=
_
_
_
_
_
_
1 0 0 0
0 1 0 0
.
.
.
.
.
.
.
.
.
0 0 1 0
0 0 0 1
_
_
_
_
_
_
= I
m+1
Programaci on lineal 47
Por lo tanto
E
k
=
_
_
_
_
_
_
1
0
.
.
. C
i1
(T
0
) C
im
(T
0
)
0
0
_
_
_
_
_
_
1
puede calcularse conociendo I(k) = (i
1
, . . . , i
m
) como la inversa de la matriz cuya columna cero es (1, 0, . . . , 0)
y las restantes columnas son las columnas i
1
, . . . , i
m
del tableau inicial.
Observaci on 10.3. Si
T
0
=
_
1 c | z
0
0 A | b
_
y T
k
=
_
1 c | z
0
0 A | b
_
son el tableau inicial y el tableau del paso k respectivamente y si I(k) = (i
1
, . . . , i
m
) entonces
E
k
=
_
1 y
0 B
1
_
donde B es la submatriz de A formada por las columnas i
1
, . . . , i
m
e y = c
B
.B
1
, con c
B
= (c
i1
, . . . , c
im
).
En efecto, como
T
0
=
_
1 c | z
0
0 A | b
_
entonces
E
k
=
_
_
_
_
_
_
1
0
.
.
. C
i1
(T
0
) C
im
(T
0
)
0
0
_
_
_
_
_
_
1
=
_
_
_
_
1 c
i1
. . . c
im
0
.
.
. C
i1
(A) C
im
(A)
0
_
_
_
_
1
=
=
_
1 c
B
0 B
_
1
=
_
1 c
B
.B
1
0 B
1
_
=
_
1 y
0 B
1
_
ya que
_
1 c
B
0 B
_
.
_
1 c
B
.B
1
0 B
1
_
=
_
1 0
0 I
m
_
= I
m+1
Esto muestra que si el problema tiene soluci on optima y E =
_
1 y
0 U

_
es el valor de E que est a presente
cuando el algoritmo para, entonces y es el optimo de
max yb
y.A c
pues E es la matriz que multiplicada a izquierda por T
0
da el tableau correspondiente al optimo (ver 9.) y
valen y = c
B
.B
1
y U

= B
1
, donde c
B
= (c
i1
, . . . , c
im
) y B es la submatriz de A formada por las columnas
i
1
, . . . , i
m
de A, siendo (i
1
, . . . , i
m
) el valor de I presente en ese momento.
11. Convergencia del algoritmo simplex.
Queremos ver si podemos asegurar que el algoritmo termina en un n umero nito de pasos. En cada iteraci on
del algoritmo obtenemos una soluci on b asica con el correspondiente valor del funcional menor o igual que
el valor del funcional en la soluci on b asica del paso anterior. Sabemos, por la proposici on 3.11., que la
48 Optimizaci on Combinatoria
cantidad de soluciones b asicas es nita. Luego, si en cada paso se redujera estrictamente el valor del
funcional entonces todas las soluciones b asicas que se fueran obteniendo seran distintas. Esto asegurara
que el algoritmo termina en un n umero nito de pasos. Veamos que pasara si el valor de z
0
no cambiara en
una iteracion. Si z
0
fue obtenido haciendo una transformacion con pivote en a
rs
entonces
z
0
= z
0

c
s
a
rs
b
r
Luego, z
0
= z
0
sii b
r
= 0 sii la componente x
ir
= x
s
de la nueva soluci on b asica x es nula, donde i
r
= s es la
columna en la que se encuentra el vector e
r
despues de hacer la transformacion con pivote en a
rs
con la que
obtuvimos z
0
. Luego, la soluci on b asica x es degenerada (ver denici on 3.9.). Por lo tanto, si ninguna de las
soluciones b asicas que se van obteniendo fuese degenerada entonces el valor de z
0
se reducira estrictamente.
Sin embargo, no podemos asegurar que no existan soluciones degeneradas. Por ejemplo, si al elegir el pivote
se tuviera que
b
r
a
rs
=
b
t
a
ts
= min
_
b
i
a
is
/ a
is
> 0
_
entonces haciendo una transformacion con pivote a
rs
resulta
b
t
= b
t
a
ts
b
r
a
rs
= 0
y esto podra dar lugar a una soluci on b asica degenerada si el pr oximo pivote se eligiera en la la t.
Luego podra ocurrir que el valor de z
0
no cambiara durante k iteraciones. Supongamos que para alg un h
fuera I(h + k) = I(h), es decir, que luego de k iteraciones se repita el valor de (i
1
, . . . , i
m
). Entonces la
soluci on b asica se repetira y por lo tanto el valor de z
0
(luego, z
0
debi o haber sido constante a lo largo de
las k iteraciones). En este caso el algoritmo entrara en un loop:
Si I(h) = (i
1
, . . . , i
m
) = I(h + k) entonces
E
h
=
_
_
_
_
1
0
.
.
. C
i1
(T
0
) C
im
(T
0
)
0
_
_
_
_
1
= E
h+k
de donde T
h
= E
h
.T
0
= E
h+k
.T
0
= T
h+k
y por lo tanto el tableau se repite cada k iteraciones.
Ejemplo 11.1. Consideremos el problema
min
3
4
x
1
+ 150x
2

1
50
x
3
+ 6x
4
1
4
x
1
60x
2

1
25
x
3
+ 9x
4
+ x
5
= 0
1
2
x
1
90x
2

1
50
x
3
+ 3x
4
+ x
6
= 0
x
3
+ x
7
= 1
x 0
Usando como criterio elegir el menor r cuando hay empate resulta que, a partir de un cierto paso, I toma
los valores
(5, 6, 7) (1, 6, 7) (1, 2, 7) (3, 2, 7)
(3, 4, 7) (5, 4, 7) (5, 6, 7)
Programaci on lineal 49
Esto muestra que en este caso el algoritmo entra en un loop.
Veamos ahora como cambiar ligeramente el criterio usado para elegir la la del pivote de manera de garantizar
que el algoritmo no entre en un loop. Supongamos que el valor actual de I es (i
1
, . . . , i
m
). Una vez elegido
s, elegimos r tal que
1
a
rs
(b
r
,
r1
, . . . ,
rm
) = min
_
1
a
ls
(b
l
,
l1
, . . . ,
lm
) / a
ls
> 0
_
siendo
lj
los coecientes de la matriz B
1
, donde
B = (C
i1
(A) C
im
(A))
es la submatriz de A formada por las columnas i
1
, . . . , i
m
. El mnimo se toma con respecto al orden lexi-
cograco.
Observemos que si l = r entonces
1
ars
(b
r
,
r1
, . . . ,
rm
) =
1
a
ls
(b
l
,
l1
, . . . ,
lm
). En efecto, si ocurriera que
1
ars
(b
r
,
r1
, . . . ,
rm
) =
1
a
ls
(b
l
,
l1
, . . . ,
lm
) entonces B
1
tendra dos las linealmente dependientes.
Observemos ademas que si elegimos r de esa manera entonces
b
r
a
rs
= min
_
b
l
a
ls
/ a
ls
> 0
_
Veamos que ahora podemos asegurar que el algoritmo termina en un n umero nito de pasos.
Teorema 11.2. Si en cada iteracion del algoritmo simplex se elige la la r del pivote con el criterio
1
a
rs
(b
r
,
r1
, . . . ,
rm
) = min
_
1
a
ls
(b
l
,
l1
, . . . ,
lm
) / a
ls
> 0
_
entonces el algoritmo termina en a lo sumo
_
n
m
_
iteraciones.
Demostraci on: Probaremos que I(k) = I(k

) si k = k

. Como hay a lo sumo


_
n
m
_
posibles valores de I(k)
entonces habr a a lo sumo
_
n
m
_
iteraciones.
Veremos primero que el vector (z
0
, y), donde y = c
B
.B
1
siendo B la submatriz formada por las columnas
i
1
, . . . , i
m
de A (ver observaci on 10.3.), crece estrictamente en el orden lexicogr aco en cada iteraci on del
algoritmo.
Sea
T
h
=
_
1 c | z
0
0 A | b
_
el tableau de un cierto paso h y sea
T
h+1
=
_
1 c | z
0
0 A | b
_
el tableau correspondiente al paso h + 1 obtenido de T
h
haciendo una transformacion con pivote en a
rs
,
donde r fue elegido seg un el criterio
1
a
rs
(b
r
,
r1
, . . . ,
rm
) = min
_
1
a
ls
(b
l
,
l1
, . . . ,
lm
) / a
ls
> 0
_
Sea B la submatriz de A formada por las columnas (i
1
, . . . , i
m
) = I(h) y sea B la formada por las columnas
(i

1
, . . . , i

m
) = I(h + 1). Entonces
z
0
= z
0

c
s
a
rs
b
r
y = y
c
s
a
rs
(
r1
, . . . ,
rm
)
50 Optimizaci on Combinatoria
ya que
_
1 y
0 B
1
_
= E
h+1
= U
rs
.E
h
= U
rs
.
_
1 y
0 B
1
_
y T
h+1
= U
rs
.T
h
(ver seccion 10.). Luego,
(z
0
, y) = (z
0
, y)
c
s
a
rs
(b
r
,
r1
, . . . ,
rm
)
y como
cs
ars
> 0, bastara probar que (b
r
,
r1
, . . . ,
rm
) > (0, . . . , 0) (con respecto al orden lexicogr aco).
Probaremos que para todo paso k y para todo j vale (b
j
,
j1
, . . . ,
jm
) > (0, . . . , 0) por inducci on en k.
Si k = 0 vale pues b
j
0 j y E
k
= E
0
= I
m+1
, de donde B
1
= I
m
y por lo tanto (
j1
, . . . ,
jm
) = e
j
.
Supongamos que vale para k. Como antes, notemos con barra los valores correspondientes al paso k + 1 y
sin barra los correspondientes al paso k. Si a
rs
es el pivote que da el paso k + 1 entonces
(b
j
,
j1
, . . . ,
jm
) =
_
_
_
1
ars
(b
r
,
r1
, . . . ,
rm
) si j = r
(b
j
,
j1
, . . . ,
jm
)
ajs
ars
(b
r
,
r1
, . . . ,
rm
) si no
pues
_
1 y
0 B
1
_
= E
k+1
= U
rs
.E
k
= U
rs
.
_
1 y
0 B
1
_
Como a
rs
> 0 y como (b
j
,
j1
, . . . ,
jm
) > (0, . . . , 0) j entonces (b
j
,
j1
, . . . ,
jm
) > (0, . . . , 0) si j = r.
Lo mismo ocurre para j tal que j = r y a
js
0.
Finalmente, si j = r y a
js
> 0, por la forma en que elegimos r resulta que
1
a
rs
(b
r
,
r1
, . . . ,
rm
)
1
a
js
(b
j
,
j1
, . . . ,
jm
)
Pero ya vimos antes que nunca vale la igualdad y como a
js
> 0 entonces
a
js
a
rs
(b
r
,
r1
, . . . ,
rm
) < (b
j
,
j1
, . . . ,
jm
)
de donde (b
j
,
j1
, . . . ,
jm
) > (0, . . . , 0).
Hemos probado que el vector (z
0
, y) crece estrictamente en el orden lexicogr aco en cada iteraci on del
algoritmo. Veamos ahora que si k = k

entonces I(k) = I(k

). Supongamos que k = k

.
Si fuese I(k) = I(k

) entonces E
k
= E
k
(pues E
k
solo depende de I(k): si I(k) = (i
1
, . . . , i
m
) entonces
E
k
= (e
1
, C
i1
(T
0
), , C
im
(T
0
))
1
). Indicando con barra los valores correspondientes al paso k

y sin barra
los correspondientes al paso k resulta que z
0
= z
0
pues T
k
= E
k
.T
0
= E
k
.T
0
= T
k
y que y = y pues
_
1 y
0 B
1
_
= E
k
= E
k
=
_
1 y
0 B
1
_
Luego, (z
0
, y) = (z
0
, y), cosa que contradice lo que probamos antes.
12. Consideraciones nales.
Consideremos el problema de programacion lineal
min z
z + cx = z
0
Ax = b
x 0
Programaci on lineal 51
Analisis de sensibilidad.
Supongamos que lo hemos resuelto y queremos ahora resolver el mismo problema para otro valor de b,
digamos b

. Consideremos los tableau iniciales


T
0
=
_
1 c | z
0
0 A | b
_
y T

0
=
_
1 c | z
0
0 A | b

_
Si el optimo del problema que resolvimos se obtuvo en el paso k entonces
T
k
= E
k
.T
0
=
_
1 c | z
0
0 A | b
_
Luego,
E
k
.T

0
=
_
1 c | z

0
0 A | b

_
con c 0. Si b

0 entonces hemos encontrado el optimo de


min z
z + cx = z
0
Ax = b

x 0
Si no, podemos aplicar el algoritmo dual a este ultimo tableau.
Supongamos ahora que lo que queremos cambiar es el valor de c por, digamos, c

. Ahora
T
0
=
_
1 c | z
0
0 A | b
_
y T

0
=
_
1 c

| z
0
0 A | b
_
y si
T
k
= E
k
.T
0
=
_
1 c | z
0
0 A | b
_
entonces
E
k
.T

0
=
_
1 c

| z
0
0 A | b
_
con b 0. Si c

0 entonces tenemos el optimo y si no, podemos aplicar el simplex a este tableau.


Intervalo de factibilidad de b
l
.
Sea b
l
una componente de b y sea B = {C
i1
(A), , C
im
(A)} la base para la cual se obtuvo el optimo en el
paso k. Nos preguntamos dentro de que intervalo puede variar b
l
sin cambiar la base B.
Cambiemos b
l
por b
l
+ y sea b

= (b
1
, . . . , b
l1
, b
l
+ , b
l+1
, . . . , b
m
). Si
E
k
=
_
1 y
0 B
1
_
, B
1
= ||
ij
||
T
0
=
_
1 c | z
0
0 A | b
_
y T

0
=
_
1 c | z
0
0 A | b

_
entonces
E
k
= (e
1
, C
i1
(T
0
), . . . , C
im
(T
0
))
1
= (e
1
, C
i1
(T

0
), . . . , C
im
(T

0
))
1
= E

k
52 Optimizaci on Combinatoria
Luego,
T
k
= E
k
.T
0
=
_
1 y
0 B
1
_
.
_
1 c | z
0
0 A | b
_
=
_
1 c | z
0
0 A | b
_
y
T

k
= E

k
.T

0
= E
k
.T

0
=
_
1 y
0 B
1
__
1 c | z
0
0 A | b

_
Luego, la base B sera la misma si
0.(z
0
) +
j1
b

1
+ +
jl1
b

l1
+
jl
b

l
+
jl+1
b

l+1
+ +
jm
b

m
0
para todo j. Pero
0.(z
0
) +
j1
b

1
+ +
jl1
b

l1
+
jl
b

l
+
jl+1
b

l+1
+ +
jm
b

m
0 =
= 0.(z
0
) +
j1
b
1
+ +
jl1
b
l1
+
jl
(b
l
+ ) +
jl+1
b
l+1
+ +
jm
b
m
=
= b
j
+
jl
Por lo tanto la base B sera la misma si y solo si b
j
+
jl
0 para todo j.
Luego, si
l
= (
1l
, . . . ,
ml
) 0 cualquier no negativo es factible y si
l
0 lo es cualquiera no positivo.
En cualquier otro caso, para que valga b
j
+
jl
0 para todo j basta tomar
max
_
b
j

jl
/
jl
> 0
_
min
_
b
j

jl
/
jl
< 0
_
Intervalo de factibilidad de c
l
.
Sea c
l
una componente de c y sea B = {C
i1
(A), , C
im
(A)} la base para la cual se obtuvo el optimo en el
paso k. Ahora nos preguntamos dentro de que intervalo puede variar c
l
sin cambiar la base B.
Cambiemos c
l
por c
l
+ . Si
E
k
=
_
1 y
0 B
1
_
, B
1
= ||
ij
||
y
T
k
= E
k
.T
0
= E
k
.
_
1 c | z
0
0 A | b
_
=
_
1 c | z
0
0 A | b
_
entonces, por la observaci on 10.3. se tiene que y = c
B
.B
1
, donde c
B
= (c
i1
, . . . , c
im
) y c = c yA. Luego,
c
j
= c
j
(yA)
j
. Pero c 0 y c
j
= 0 para j = i
1
, . . . , i
m
, es decir, c
j
(yA)
j
j y c
j
= (yA)
j
para
j = i
1
, . . . , i
m
.
Sea c

= (c
1
, . . . , c
l1
, c
l
+ , c
l+1
, . . . , c
n
). Como
E
k
=
_
1 y
0 B
1
_
y T

0
=
_
1 c

| z
0
0 A | b
_
queremos que el tableau correspondiente al optimo sea
E

k
.T

0
=
_
1 y

0 B
1
__
1 c

| z
0
0 A | b
_
=
_
1 c

| z

0
0 A | b
_
y por lo tanto debe ser c

0 y c

j
= 0 para j = i
1
, . . . , i
m
Notemos que c

= c

A, donde y

= c

B
.B
1
y
c

B
= (c

i1
, . . . , c

im
) y que A = B
1
.A
Primer caso: Si l = i
1
, . . . , i
m
.
Programaci on lineal 53
En este caso c

B
= c
B
de donde y

= y. Para todo j = l es c

j
= c

j
(y

A)
j
= c
j
(yA)
j
y para j = l es
c

l
= c
l
+ (yA)
l
. Luego c

j
= 0 para j = i
1
, . . . , i
m
. Ademas c

0 sii c
l
+ (yA)
l
0 sii c
l
+ 0.
Segundo caso: Si l = i
r
para alg un 1 r m.
Dada una matriz U denotaremos por F
j
(U) y C
j
(U) a la la y a la columna j de U respectivamente.
En este caso c

B
= (c
i1
, . . . , c
ir
+ , . . . , c
im
) = c
B
+ e
r
. Entonces
y

= c

B
.B
1
= (c
B
+ e
r
)B
1
= c
B
B
1
+ e
r
B
1
= c
B
B
1
+ F
r
(B
1
)
Como y

= c

B
.B
1
y c

= c

A = c

B
.B
1
A = c

B
.A entonces c

j
= c

j
c

B
.C
j
(A).
Luego, para todo 1 k m es c

i
k
= c

i
k
c

B
.C
i
k
(A) = c

i
k
c

B
.e
k
= c

i
k
c

i
k
= 0.
Veamos ahora la condici on c

j
0 para todo j = i
1
, . . . , i
m
.
c

= c

A = c + e
l
[y + .F
ir
(B
1
)].A =
= c yA + e
l
.F
ir
(B
1
).A =
= c + e
l
.F
ir
(B
1
.A) =
= c + e
l
.F
ir
(A) =
= c + e
l
.(a
ir1
, . . . , a
irn
)
Por lo tanto c

j
0 para todo j = i
1
, . . . , i
m
sii (como l = i
r
) c
j
.a
irj
0 para todo j = i
1
, . . . , i
m
sii
max
_
c
j
a
irj
/ a
irj
< 0
_
min
_
c
j
a
irj
/ a
irj
> 0
_
para todo j = i
1
, . . . , i
m
, donde ||a
ij
|| = A = B
1
.A.
Tiempo de ejecuci on del algoritmo.
Si bien en la pr actica el tiempo de ejecucion del algoritmo es bueno, en teora no lo es ya que podramos
tener que hacer 2
m
pasos.
Ejemplo 12.1. (Klee-Minty) Consideremos el problema
max
m

j=1
10
mj
x
j
x
1
1
2
i1

j=1
10
ij
x
j
+ x
i
100
i1
(2 i m)
x 0
que tiene m ecuaciones y m inc ognitas. Para poder aplicar el algoritmo planteamos el problema en forma
standard, obteniendo el problema equivalente
min
m

j=1
10
mj
x
j
x
1
+ s
1
= 1
2
i1

j=1
10
ij
x
j
+ x
i
+ s
i
= 100
i1
(2 i m)
x, s 0
54 Optimizaci on Combinatoria
que esta en forma can onica y satisface b 0. Notemos que ahora hay m ecuaciones y 2m inc ognitas.
En este caso el poliedro denido por las restricciones tiene aproximadamente 2
m
puntos extremos y el
algoritmo los recorre todos hasta llegar al optimo. Dejamos como tarea al lector vericar esta armaci on
para m = 3.