Escolar Documentos
Profissional Documentos
Cultura Documentos
USP - Algoritmos de Programção Linear
USP - Algoritmos de Programção Linear
DE
PROGRAMAO
LINEAR
Programao Linear Concreta
Paulo Feofiloff
Professor do
Departamento de Cincia da Computao do
Instituto de Matemtica e Estatstica da
Universidade de So Paulo
novembro de 1997
revisto em 27.7.1999
reformatado em 11.9.2005
Prefcio
1
Neste contexto, o termo programao significa planejamento. No se trata de uma referncia
programao de computadores.
2
Outros algoritmos da famlia, entretanto, competem com o Simplex.
3
O leitor interessado nesses tpicos deve consultar os livros de Chvtal [Chv83] e Golub e
Van Loan [GL96].
i
Feofiloff ii
Para quem. Este livro dirigido a qualquer pessoa que queira compreen-
der as interconexes lgicas entre as vrias peas desse quebra-cabeas que a
programao linear. Em particular, o texto se destina a estudantes de graduao
e ps-graduao em matemtica aplicada, computao e engenharia. O livro
no tem pr-requisitos formais, mas exige uma certa maturidade matemtica.
Verses preliminares do livro foram usadas em vrios oferecimentos da dis-
ciplina Programao Linear nos cursos de graduao e ps-graduao em Cin-
cia da Computao no Instituto de Matemtica e Estatstica da Universidade de
So Paulo. O subttulo do livro Programao Linear Concreta uma aluso
ao Concrete Mathematics [GKP94] de Graham, Knuth e Patashnik Para explicar o
ttulo, o prefcio daquele livro diz:
Dados tcnicos. A elaborao do livro contou com o apoio dos projetos As-
pectos Estruturais e Algortmicos de Objetos Combinatrios (FAPESP 96/04505-
2) e Complexity of Discrete Structures (ProNEx 107/97). O livro foi escrito em
Feofiloff iii
So Paulo, 19992005
P. F.
Sumrio
Prefcio i
1 Vetores e Matrizes 1
1.1 Vetores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.2 Matrizes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.3 Produtos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.4 Matrizes inversveis . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.5 Transposio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.6 Matrizes de bijeo . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.7 Matrizes diagonais . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.8 Matrizes elementares . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.9 Combinaes lineares . . . . . . . . . . . . . . . . . . . . . . . . . . 10
I Algoritmos Bsicos 12
2 Algoritmo de Gauss-Jordan 13
2.1 Matrizes escalonadas . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.2 Esboo do algoritmo . . . . . . . . . . . . . . . . . . . . . . . . . . 14
2.3 Algoritmo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
2.4 Anlise do algoritmo: invariantes . . . . . . . . . . . . . . . . . . . 18
2.5 Mais invariantes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
2.6 Nmero de operaes aritmticas . . . . . . . . . . . . . . . . . . . 21
2.7 Concluso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
2.8 Aplicao: Sistemas de equaes . . . . . . . . . . . . . . . . . . . 23
3 Introduo ao Simplex 26
3.1 Matrizes simples . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
3.2 Esboo do Simplex . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
3.3 Anlise . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
3.4 Convergncia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
iv
Feofiloff SUMRIO v
4 Heurstica Simplex 39
4.1 Introduo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
4.2 A heurstica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
4.3 Anlise: invariantes . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
4.4 Mais trs invariantes . . . . . . . . . . . . . . . . . . . . . . . . . . 44
4.5 Convergncia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
4.6 Concluso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
4.7 Apndice: Simplex Revisto . . . . . . . . . . . . . . . . . . . . . . 47
5 Algoritmo Simplex 50
5.1 Ordem lexicogrfica . . . . . . . . . . . . . . . . . . . . . . . . . . 50
5.2 Regra lexicogrfica . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
5.3 Algoritmo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
5.4 Anlise . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
5.5 Convergncia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
5.6 Nmero de operaes aritmticas . . . . . . . . . . . . . . . . . . . 60
5.7 Concluso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
5.8 Apndice: Segunda fase do Simplex . . . . . . . . . . . . . . . . . 61
5.9 Apndice: Regra de Bland . . . . . . . . . . . . . . . . . . . . . . . 62
II Programao Linear 68
9 Problema geral 87
9.1 Definio do problema . . . . . . . . . . . . . . . . . . . . . . . . . 87
9.2 Dualidade . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
9.3 Lema da dualidade . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
9.4 Construo do dual . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
9.5 Teorema da dualidade . . . . . . . . . . . . . . . . . . . . . . . . . 92
9.6 Reduo ao problema cannico primal . . . . . . . . . . . . . . . . 93
9.7 Concluso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
9.8 Apndice: Uma interpretao do dual . . . . . . . . . . . . . . . . 96
10 Determinantes 100
10.1 Sinal de uma matriz de permutao . . . . . . . . . . . . . . . . . 100
10.2 Determinante de matriz quadrada . . . . . . . . . . . . . . . . . . 102
10.3 Trs propriedades bsicas . . . . . . . . . . . . . . . . . . . . . . . 104
10.4 Determinante do produto de matrizes . . . . . . . . . . . . . . . . 105
10.5 Delimitao do determinante . . . . . . . . . . . . . . . . . . . . . 108
10.6 Concluso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
V Apndices 160
Vetores e Matrizes
1.1 Vetores
Um vetor uma funo que leva um conjunto finito arbitrrio o conjunto
de ndices no conjunto dos nmeros reais (mas no h mal em restringir
a ateno aos nmeros racionais). Convm no presumir qualquer relao de
ordem sobre o conjunto de ndices. Se o conjunto de ndices de um vetor x N ,
diremos que x est definido sobre N .
Se x um vetor sobre um conjunto N e n um elemento de N ento x [n] x [n]
denota o componente n de x, isto , o valor da funo x em n. Se Q uma parte
de N ento
x [Q]
1
Feofiloff cap. 1 Vetores e Matrizes 2
x>y
se x [n] > y [n] para todo n. As relaes e < so definidas de modo anlogo.
4 3 1 2
13 22 11 14 11 14 22 13
1 11 11
2 14 14
4 13 22
3 22 13
1.2 Matrizes
Uma matriz uma funo que leva o produto cartesiano de dois conjuntos fini-
tos no conjunto dos nmeros reais (poderamos restingir a definio ao conjunto
dos racionais). Convm no presumir qualquer relao de ordem sobre os con-
juntos de ndices.
Se uma matriz A tem domnio M N , dizemos que M o conjunto de n-
dices de linhas e N o conjunto de ndices de colunas de A. Dizemos tambm
que A uma matriz definida sobre M N .
Se m e n so elementos de M e N respectivamente ento A [m, n] denota o A [m, n]
componente m, n de A, ou seja, o valor de A em m, n. Se P e Q so partes de
M e N respectivamente ento
A [P, Q]
A [m, Q]
1 2 3 4 5 6 4 2 5 3 1 6 2 4 5 3 1 6
7 1 0 0 1 2 3 7 1 0 2 0 1 3 7 1 0 2 0 1 3
8 0 1 0 4 5 6 9 7 0 8 1 0 9 9 7 0 8 1 0 9
9 0 0 1 7 8 9 8 4 1 5 0 0 6 8 4 1 5 0 0 6
99 4 12 13 77
98 14 19 7 88
32 11 22 9 6
a b c d e f g b d e
f 3 1 9 0 0 4 9 f 1 0 0
g 4 0 8 1 0 5 9 g 0 1 0
h 5 0 7 0 1 6 9 h 0 0 1
1.3 Produtos
Matrizes e vetores podem ser multiplicados entre si. A verso mais bsica dessa
operao de multiplicao envolve dois vetores.
a b c d e e b d c a
11 22 33 44 55 35 41 37 39 43
para cada m em M . claro que A x um vetor sobre M . Analogamente, para produto vetor
qualquer vetor y sobre M , o produto de y por A o vetor y A definido pela por matriz
expresso yA
(y A) [n] = y A [ , n]
(A x) [P ] = A [P, ] x e (y A) [Q] = y A [ , Q] .
y (A x) = (y A) x .
Feofiloff cap. 1 Vetores e Matrizes 5
(A B) [l, n] = A [l, ] B [ , n]
(A B) [P, Q] = A [P, ] B [ , Q] .
(BA) [ , Q] = B (A [ , Q] ) e (yA) [ , Q] = y (A [ , Q] ) .
Toda matriz identidade ser denotada por I , quaisquer que sejam seus conjun- I
tos de ndices.
Feofiloff cap. 1 Vetores e Matrizes 6
a b d c
a 1 0 0 0
b 0 1 0 0
c 0 0 1 0
d 0 0 0 1
Uma inversa esquerda de uma matriz A uma matriz E tal que EA = inversa
I . Uma matriz A inversvel pela esquerda se possui uma inversa esquerda. esquerda
A inversa direita de uma matriz A uma matriz D tal que AD = I . Uma matriz inversa
A inversvel pela direita se possui uma inversa direita. direita
Se uma matriz tem uma inversa esquerda e uma inversa direita ento as
duas inversas so iguais. De fato, se AD = I e EA = I ento
E = E(AD) = (EA)D = D .
Ademais, as inversas so nicas. De fato, para qualquer matriz D0 tal que AD0 =
I tem-se D0 = (EA)D0 = E(AD0 ) = E = D. Analogamente, para qualquer E 0
tal que E 0 A = I tem-se E 0 = E .
A propsito, eis um fato fundamental mas no-trivial: uma matriz que tenha
o mesmo nmero de linhas e colunas tem inversa direita se e s se tem inversa
esquerda. Este fato ser demonstrado, implicitamente, no prximo captulo.
Os problemas que mencionamos no incio da seo podem ser imediata-
mente resolvidos se tivermos uma matriz inversa apropriada. Por exemplo, se
A tem uma inversa esquerda e direita E , ento o vetor x = Eb satisfaz a equao
Ax = b.
1 2 0 0
1 2 2 0 0
0 1 1/2 0
0 1 1 0 0
0 0 1/2 0
0 0 2 0 0
0 1 1 1
0 1 1 1 0
1 2 3 4
1.5 Transposio
1/2 0 0 0
0 0 0 0
0 0 5 0
0 0 0 2
Ax = xA
e
para todo vetor x tal que o produto de A por x esteja definido. Tambm fcil
verificar que
AB
g=B eA
e
(J J)
e [i, j] = J [i, ] Je[ , j] = J [i, ] J [ j, ] .
0 0 1 0
1 0 0 0
0 0 0 1
0 1 0 0
F [M, M k] = I [M, M k] ,
(GF ) [ , M k] = GF [ , M k] = GI [ , M k] = G [ , M k] = I [ , M k] .
1 0 0 4 0 1 0 0 4/7 0
0 1 0 5 0 0 1 0 5/7 0
0 0 1 6 0 0 0 1 6/7 0
0 0 0 7 0 0 0 0 1/7 0
0 0 0 8 1 0 0 0 8/7 1
1 a1 + + k ak ,
Exerccios
1.1 Demonstre a propriedade associativa do produto de matrizes: se cada um
dos produtos faz sentido, ento A(BC) = (AB)C .
1.2 Mostre que o produto de matrizes no comutativo: AB , em geral, dife-
rente de BA (mesmo que os dois produtos estejam definidos).
1.3 Suponha que x e y so vetores e que A e B so matrizes. Quantas opera-
es de multiplicao so necessrias para calcular xy? para calcular Ax?
yA? AB?
1.4 Suponha que AB = I e BC = I . Mostre que B inversa direita de C .
Feofiloff cap. 1 Vetores e Matrizes 11
1.5 Seja A a primeira das matrizes abaixo. Encontre uma matriz de bijeo J
tal que AJ seja a segunda das matrizes. Encontre uma matriz de bijeo J
tal que JA seja a terceira matriz.
a b c d e b c a f h a b c d e
f 11 12 13 14 15 f 11 12 13 14 15 g 11 12 13 14 15
g 21 22 23 24 25 g 21 22 23 24 25 k 21 22 23 24 25
k 31 32 33 34 35 k 31 32 33 34 35 i 31 32 33 34 35
Algoritmos Bsicos
12
Captulo 2
Algoritmo de Gauss-Jordan
1
Referncias ao clebre Carl Friedrich Gauss () e ao (menos clebre) Wilhelm Jordan
(), que popularizou o algoritmo [Jor20].
13
Feofiloff cap. 2 Algoritmo de Gauss-Jordan 14
Q
0 0 0 0 1
0 0 0 1 0
0 0 1 0 0 P
0 1 0 0 0
1 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 1 0 0
0 0 0 0 0 0
0 0 0 0 1 0 0 0
0 2 1 44 66 1
0 0 0 0 0 0 1 0
1 33 0 55 77 0
0 0 0 0 0 0 0 1
0 0 0 0 0 0
0 0 0 0
C ASO 1: E [M P, ] 6= O .
Escolha h em M P e k em N de modo que E [h, k] 6= 0.
Seja E 0 a matriz definida pelas equaes E 0 [h, ] = E [h, ] /E [h, k] e
E 0 [i, ] = E [i, ] E [i, k] E [h, ] /E [h, k] para cada i em M h.
Comece nova iterao com P + h e E 0 nos papis de P e E .
C ASO 2: E [M P, ] = O .
Devolva E e pare. 2
1 1 2 0
2 1 5 1
2 2 4 0
1 1 3 1
0 1 1 1
1 0 3 1
0 0 0 0
0 0 1 1
0 1 0 0
1 0 0 2
0 0 0 0
0 0 1 1
1 1 0 2 1 1 0 1 1 1 2 0
1 2 0 5 8 5 0 3 2 1 5 1
2 2 1 4 2 0 1 0 2 2 4 0
1 1 0 3 3 2 0 1 1 1 3 1
1 0 0 0 1 0 2 3 4 1 0 2 3 4
0 1 0 0 0 1 4 5 6 0 1 4 5 6
0 0 0 0 6 7 8 9 0 0 0 0 0 0
0 0 0 0 9 8 7 6 5 0 0 0 0 0
2.3 Algoritmo
Para dizer, exatamente, o que o algoritmo faz preciso especificar a relao entre
as matrizes E e D. A matriz E equivalente matriz D no seguinte sentido:
existe uma matriz inversvel G tal que
E = GD .
O esboo da seo anterior no devolve G, o que impede o usurio de conferir a
equivalncia entre E e D. A verso do algoritmo que descreveremos abaixo de-
volve G e sua inversa F ; o usurio pode ento, ao preo de duas multiplicaes
de matrizes, verificar que G inversvel e que GD escalonada.
2
Veja exerccio 2.5.
Feofiloff cap. 2 Algoritmo de Gauss-Jordan 17
1 0 0 0 1 0 0 0 1 1 2 0
0 1 0 0 0 1 0 0 2 1 5 1
0 0 1 0 0 0 1 0 2 2 4 0
0 0 0 1 0 0 0 1 1 1 3 1
1 1 0 0 2 1 0 0 0 1 1 1
1 2 0 0 1 1 0 0 1 0 3 1
2 2 1 0 2 0 1 0 0 0 0 0
1 1 0 1 3 2 0 1 0 0 1 1
1 1 0 2 1 1 0 1 0 1 0 0
1 2 0 5 8 5 0 3 1 0 0 2
2 2 1 4 2 0 1 0 0 0 0 0
1 1 0 3 3 2 0 1 0 0 1 1
1 0 0 0 2 1 2 4 0 1
0 1 0 0 1 1 1 2 1 3
0 0 1 0 2 1 0 5 1 4
0 0 0 1 1 1 1 2 1 3
1 1 0 0 1 0 1 2 1 2
1 2 0 0 0 1 0 0 2 5
1 0 1 0 0 0 2 1 1 3
0 1 0 1 0 0 2 0 2 6
3 7/2 2 5/2 1 0 0 0 4 23
1 2 0 0 0 1 0 0 2 5
0 1/2 0 1/2 0 0 1 0 1 3
1 1 1 1 0 0 0 1 1 9
Q
0 0 1
P 0 1 0
1 0 0
0 0 0
0 0 0
0 0 0
F 0 , G0 , E 0 , P + h e Q + k
E 0 [ , Q] = E [ , Q] , (2.a)
0
E [ , k] = I [ , h] , (2.b)
F 0 G0 = I , (2.c)
0 0
E = G D. (2.d)
Feofiloff cap. 2 Algoritmo de Gauss-Jordan 19
Q k
0 0 1 0
P 0 1 0 0
1 0 0 0
0 0 0 0
h 0 0 0 1
0 0 0 0
F 0 = F F , G0 = GG
e E 0 = GE
.
E 0 [i, k] = G [i, ]E [ , k]
= G [i, ]F [ , h]
= (G F )[i, h]
= I [i, h] .
Feofiloff cap. 2 Algoritmo de Gauss-Jordan 20
F 0 G0 = (F F )(GG)
= F (F G)G
= FG = I .
= G(GD)
A prova de (2.d) igualmente fcil: E 0 = GE
= (GG)D = G0 D. 2
P M P Q N Q
0 0 0 0 0 1
0 0 0 0 1 0 P
0 0 0 1 0 0
1 0 0 0 0 0
0 1 0 0 0 0 M P
0 0 1 0 0 0
G0 [ , M P h] = G [ , M P h] ,
Mas F [P, P ] G [P, P ] = I por fora de (i2), (i4) e da primeira parte de (i5). 2
2.7 Concluso
O algoritmo de Gauss-Jordan transforma qualquer matriz dada em uma ma-
triz escalonada equivalente. O algoritmo, juntamente com sua anlise, constitui
prova do seguinte teorema:
3 2 1 4 5 6 7 8 9 10
4 3 2 5 6 7 8 9 73 1
5 6 3 4 7 9 8 10 1 2
1 5 4 7 5 10 9 6 2 3
32 6 5 8 9 10 9 2 7 4
8 7 6 9 10 5 2 3 4 5
9 8 7 11 3 2 1 4 5 8
Este o vetor bsico associado base Q. claro que (GA)x = Gb, donde vetor
F (GA)x = F (Gb) e portanto Ax = b.3 bsico
Suponha agora que (Gb) [h] no nulo para algum h em M P . claro que
nesse caso no existe x tal que (GA)x = Gb. Nosso problema original tambm
no tem soluo, como passamos a demonstrar. Seja g o vetor G [h, ] e observe
3
Esse mtodo de clculo de x no o mais eficiente. possvel obter x com apenas um tero
do nmero de multiplicaes se o algoritmo de Gauss-Jordan for modificado de modo a produzir
uma matriz triangular no lugar da matriz de bijeo (GA) [P, Q] . Essa variante do algoritmo
conhecida como mtodo de eliminao de Gauss [Chv83, cap.6] [CLRS01, cap.31].
Feofiloff cap. 2 Algoritmo de Gauss-Jordan 24
que
gA = (GA) [h, ] = 0 enquanto gb = (Gb) [h] 6= 0 .
Exerccios
2.1 Escreva um algoritmo que decide se uma dada matriz escalonada e em
caso afirmativo devolve o seu par de bases.
2.2 Mostre que GF = I no incio de cada iterao do algoritmo de Gauss-
Jordan.
2.3 O algoritmo descrito no texto devolve apenas as matrizes F e G. Escreva
uma verso que devolva tambm a matriz escalonada E e suas bases P
e Q.
2.4 Escreva uma verso do algoritmo de Gauss-Jordan em que a matriz F seja
calculada somente na ltima iterao.
2.5 Escreva o algoritmo de Gauss-Jordan em uma linguagem mais formal,
mais prxima de PASCAL ou C. (Veja soluo parcial E.1 no apndice E.)
Programe o algoritmo em um computador.
2.6 Escreva uma verso um pouco mais eficiente do algoritmo de Gauss-
Jordan: execute apenas implicitamente a parte da operao de pivotao
que afeta a base de colunas Q e a coluna k.
2.7 Suponha que a execuo do algoritmo de Gauss-Jordan interrompida no
incio de uma iterao e que uma pivotao executada em torno de um
elemento h de P (e no de M P , como usual) e um elemento k de
N Q. claro que isso s faz sentido se E [h, k] 6= 0. Qual o efeito de tal pi-
votao? A execuo do algoritmo pode ser retomada depois da pivotao
excepcional?
2.8 Suponha que A e B so matrizes sobre M M e que P uma parte de M .
Suponha ainda que AB = I e A [ , M P ] = B [ , M P ] = I [ , M P ] . Mostre
que A [P, P ] B [P, P ] = I .
2.9 Mostre que no incio de cada iterao do algoritmo de Gauss-Jordan a ma-
triz G [M P, P ] completamente determinada pelas matrizes D [M P, Q] ,
E [P, Q] e G [P, P ] .
2.10 Sejam G, P e Q os valores das variveis G, P e Q no incio de uma itera-
o. Sejam G, P e Q os valores das variveis G, P e Q no incio de outra
iterao. Mostre que se P = P e Q = Q
ento G [M P , ] = G
[M P , ] .
Feofiloff cap. 2 Algoritmo de Gauss-Jordan 25
x1 + x2 + x3 + 3x4 = 6
3x1 + 4x2 + x3 + 8x4 = 18
x1 + x2 4x3 4x4 = 5
Introduo ao Simplex
26
Feofiloff cap. 3 Introduo ao Simplex 27
Nosso estudo comea com uma descrio das caractersticas da matriz que o
Simplex calcula. Diremos que uma matriz E simples com relao ao par n, m matriz
de ndices se for de um dos trs tipos definidos abaixo: simples solvel, simples simples
invivel ou simples ilimitada. No vamos nos preocupar, por enquanto, com as
conotaes das palavras solvel, invivel e ilimitada; elas sero justifica-
das no captulo 7. As definies podero parecer indigestas, mas devero ficar
mais naturais depois que fizermos um esboo do Simplex.
Q n
0 0 1
P 0 1 0
1 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
m 0 0 0
> h
k Q n
0 0 1
P 0 1 0
1 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
m < 0 0 0
1 99 0 0 99 0 0 99 88
0 99 0 0 99 0 1 99 88
0 0 0 0 0 0 0 0 0
0 1/2 0 0 1/2 1 0 1/2 0
0 99 1 1 99 0 0 99 88
0 77 0 0 77 0 0 77 66
1 99 0 99 99 0 0 99 88
0 99 0 99 99 0 99 99 88
0 0 0 99 0 0 0 0 0
0 1/2 0 1/2 1/2 1 0 1/2 0
0 0 0 0 0 0 0 0 1
99 99 0 99 99 0 0 99 66
1 99 0 0 99 0 0 99 88
0 99 0 99 99 0 1 99 88
0 0 0 0 0 0 0 0 0
0 1/2 0 1/2 1/2 1 0 1/2 0
0 99 1 99 99 0 0 99 88
0 77 0 77 77 0 0 77 66
f [P ] o ,
E [P, Q] uma matriz de bijeo e E [M P, Q] = O ,
equaes
1 E [i, k]
E 0 [h, ] = E [h, ] e E 0 [i, ] = E [i, ] E [h, ]
E [h, k] E [h, k]
para cada i em M h.
claro que os casos 1A e 1B devem ser entendidos como subcasos do caso 1;
analogamente, 3A e 3B so subcasos de 3. Os casos 1B e 3B so formalmente
idnticos. A definio de p nesses casos deve ser entendida da seguinte maneira:
escolha qualquer p em P que satisfaa a condio f [p] /E [p, k] f [i] /E [i, k] para
todo i em P .
Q n
0 0 1
P 0 1 0
1 0 0
0 0 0
0 0 0
0 0 0
m 0 0 0
E [h, N n] = o e f [h] = 0 .
1 1 5 1 5
0 1 1 1 4
0 1 3 1 8
0 1 1 2 3
1 0 6 2 1
0 1 1 1 4
0 0 4 0 4
0 0 0 3 7
0 0 1 0 1
1/2 1 0 0 5/2
1/2 0 0 1 5/2
3/2 0 0 0 1/2
1
Dizer que negativo o mesmo que dizer < 0. Analogamente, positivo se > 0.
Feofiloff cap. 3 Introduo ao Simplex 33
2 2 4 0 24
2 0 5 1 10
1 1 2 1 2
1 1 1 1 0
1 1 2 0 12
0 2 1 1 34
0 2 0 1 14
0 0 1 1 12
1 1 2 0 12
0 2 1 1 34
0 0 1 0 20
0 2 0 0 46
2 2 4 0 24 2 2 4 8 24
2 0 5 1 10 2 0 5 4 10
1 1 2 1 2 1 1 2 0 2
1 1 1 1 0 1 1 1 8 0
1 1 2 0 12 1 1 2 4 12
0 2 1 1 14 0 2 1 4 14
0 2 0 1 14 0 2 0 4 14
0 0 1 1 12 0 0 1 4 12
1 0 0 1/2 5 1 0 0 2 5
0 1 0 1/2 7 0 1 0 2 7
0 0 1 0 0 0 0 1 0 0
0 0 0 1 12 0 0 0 4 12
3.3 Anlise
Como j anunciamos acima, o Simplex gira em torno de duas propriedades
(compare com a seo 2.4:
f 0 [P +h] o , (3.a)
0
E [ , Q] = E [ , Q] , (3.b)
E 0 [ , k] = I [ , h] , (3.c)
f 0 [P ] o , (3.d)
0
E [ , Qq] = E [ , Qq] , (3.e)
E 0 [ , k] = I [ , p] , (3.f)
f [h] /E [h, k] 0 .
f [h]
f 0 [i] = f [i] E [i, k]
E [h, k]
Feofiloff cap. 3 Introduo ao Simplex 35
Q k n
0 0 1 0
P 0 1 0 0
1 0 0 0
0 0 0 1 h
0 0 0 0
0 0 0 0
m 0 0 0 0
e f [i] 0 em virtude de (i0). Suponha agora que E [i, k] positivo. Ento f 0 [i]
0 porque
f [i] f [h]
f 0 [i] = E [i, k] ( )
E [i, k] E [h, k]
e a expresso entre parnteses no negativa, em virtude da definio do
caso 1A. Em suma, f 0 [i] 0 para cada i em P + h . 2
para cada i em M p . 2
Feofiloff cap. 3 Introduo ao Simplex 36
q k n
0 1 0
P 1 0 0
0 0 1 p
0 0 0
0 0 0
0 0 0
m 0 0 0
F G
=G
F = I e E0 = G
E.
E 0 [i, k] = G
[i, ] E [ , k] = G
[i, ] F [ , p] = (G
F ) [i, p] = I [i, p] .
Logo, E 0 [ , k] = I [ , p] . 2
3.4 Convergncia
Nosso esboo do Simplex freqentemente no converge, ou seja, freqente-
mente no atinge um dos casos terminais (2, 3A ou 4). Enquanto estiver ocor-
rendo o caso 1A, bvio que estamos fazendo progresso, pois P aumenta. Mas
possvel que haja uma seqncia infinita de ocorrncias dos casos 1B ou 3B. Isto
acontece, em especial, se o caso 1 ocorre em duas iteraes consecutivas com um
mesmo valor de P e valores distintos de h, como mostra a figura 3.13.
A convergncia melhora se insistirmos na mesma linha h, iterao aps ite-
rao, enquanto P no se alterar. A justificativa para esta poltica est na se-
guinte observao, a ser demonstrada no prximo captulo: enquanto estiver
Feofiloff cap. 3 Introduo ao Simplex 37
1 2 10 2
0 1 12 2
0 6 13 3
0 0 0 0
1/2 1 5 1
1/2 0 7 1
3 0 43 9
0 0 0 0
1 2 10 2
0 1 12 2
0 6 13 3
0 0 0 0
Exerccios
3.1 Escreva um algoritmo que decida se uma dada matriz E simples com
relao a um dado par n, m de ndices.
3.2 Considere o esboo do Simplex feito na seo 3.2. Qual dos casos se aplica
numa iterao que comea com P = M m?
3.3 Escreva uma verso especializada do Simplex para matrizes com uma s
linha. Escreva uma verso especializada do Simplex para matrizes com
apenas duas linhas. Use as duas matrizes abaixo como teste, com n = 6 e
m = 2. (Veja tambm o exerccio 4.3.)
2 2 2 2 2 0 2 2 2 2 2 0
2 1 0 1 2 0 2 1 0 1 2 0
2
Diremos que uma seqncia 1 , 2 , 3 , . . . crescente se 1 2 3 e decrescente
se 1 2 3 .
Feofiloff cap. 3 Introduo ao Simplex 38
3.4 Aplique o Simplex descrito na seo 3.2 matriz abaixo (como de hbito,
a coluna especial a que est mais direita e a linha especial a ltima).
Aplique o Simplex vrias vezes, procurando obter solues diferentes.
1 2 1 0 1 0 0 12
2 5 0 1 0 1 0 10
1 3 1 1 0 0 1 2
1 2 1 0 0 1 0 0
Heurstica Simplex
Este captulo faz uma descrio completa da heurstica Simplex. Esta verso
do Simplex no merece o rtulo algoritmo pois nem sempre converge.1 Mas
os exemplos de no-convergncia so muito mais raros que os do esboo que
fizemos no captulo anterior (seo 3.2). O prximo captulo mostrar como
refinar a heurstica para transform-la num algoritmo.
4.1 Introduo
A heurstica Simplex recebe uma matriz D, o ndice n de uma coluna e o ndice
m de uma linha e calcula uma matriz E que simples com relao ao par n,m.
Para dizer o que, exatamente, o Simplex faz preciso especificar a relao entre
as matrizes E e D. Essa relao um pouco mais restritiva que a do algoritmo
de Gauss-Jordan (captulo 2): existem matrizes F e G tais que
E = GD , G [ , m] = I [ , m] e FG = I ,
39
Feofiloff cap. 4 Heurstica Simplex 40
1 2 2 0 1 2 0 0 2 2 4 0 24
0 1 1 0 0 1 1/2 0 1 1 2 0 12
0 0 2 0 0 0 1/2 0 2 0 5 1 10
0 1 1 1 0 1 1 1 1 1 3 1 2
4.2 A heurstica
A heurstica Simplex adota a poltica, j sugerida no captulo anterior (veja se-
o 3.4), de insistir numa mesma linha h enquanto isso fizer sentido. Essa po-
ltica melhora muito a convergncia, embora no seja suficiente para garanti-la.
Para implementar a poltica, introduzimos duas novas variveis: L e h.
A LTERNATIVA I: h diferente de m .
C ASO I.1: E [h, k] > 0 e f [h] 0 ou E [h, k] < 0 e f [h] 0
para algum k em N n . k
Seja L o conjunto de todos os p em L para os quais E [p, k] > 0. L
2
Ou seja, se M m no vazio.
Feofiloff cap. 4 Heurstica Simplex 41
F 0 [ , h] = D[ , k] , F 0 [ , i] = F [ , i] ,
0
G [h, ] = h G[h, ] , 0
G [i, ] = G[i, ] + i G[h, ] ,
E 0 [h, ] = h E [h, ] , E 0 [i, ] = E [i, ] + i E [h, ] ,
onde h = 1/E [h, k] e i = E [i, k] /E [h, k] para cada i em M h. Como j vimos
em captulos anteriores,
F 0 = F F , G0 = GG
e E 0 = GE
,
3
Ver soluo do exerccio 4.2 no apndice E, pgina 192.
Feofiloff cap. 4 Heurstica Simplex 42
1 0 0 0 1 0 0 0 2 2 4 0 24
0 1 0 0 0 1 0 0 2 0 5 1 10
0 0 1 0 0 0 1 0 1 1 2 1 2
0 0 0 1 0 0 0 1 1 1 1 1 0
2 0 0 0 1/2 0 0 0 1 1 2 0 12 L
2 1 0 0 1 1 0 0 0 2 1 1 14
1 0 1 0 1/2 0 1 0 0 2 0 1 14
1 0 0 1 1/2 0 0 1 0 0 1 1 12
3 2 1 4 5 6 7 8 10
4 3 2 5 6 7 8 9 11
5 6 3 4 7 9 8 10 9
1 5 4 7 5 10 9 6 8
9 8 7 11 3 2 1 4 0
4.3 Anlise
Para entender como e por que a heurstica Simplex funciona, basta verificar as
seguintes propriedades (compare com as sees 3.3, 2.4 e 2.5):
(i0) f [P ] o ,
(i1) E [P, Q] de bijeo , E [M P, Q] = O e E [LP, ] = O ,
(i2) FG=I,
(i3) GD = E ,
(i4) G [ , M P ] = I [ , M P ] ,
onde f o vetor E [ , n] .
P m Q n
0 0 0 0 0 0 1
0 0 0 0 P 0 1 0
0 0 0 0 1 0 0 L
1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 1 0 0 0 0 0
0 0 1 0 0 0 0
0 0 0 1 m 0 0 0
Seja q o nico elemento de Q tal que E [p, q] = 1. Basta mostrar agora que no
fim do caso I.1A
f 0 [P 0 ] o , (4.a)
E0 [ , Q] = E [ , Q] e E0 [ , k] = I [ , h] , (4.b)
E0 0 0
[L P , ]= E [LP, ] , (4.c)
G0 [ , M P 0 ] = G[ , M P 0 ] , (4.d)
f 0 [P ] o , (4.e)
E 0 [ , Qq] = E [ , Qq] e E 0 [ , k] = I [ , q] , (4.f)
E0 [LP, ]= E [LP, ] , (4.g)
G0 [ , M P ] = G[ , M P ] , (4.h)
F 0 G0 = I e G0 D 0 = E 0 . (4.i)
G[ , M P ] = I [ , M P ] e
G[P, P ] = I [P, P ] ,
G[M P, P ] = D[M P, Q] Je,
0 1 0 4 4 4 4 1
0 0 1 4 4 4 4 1
1 0 0 4 4 4 4 1
9 8 7 6 5 4 3 1
4.5 Convergncia
A heurstica Simplex nem sempre converge. A figura 4.6 d um exemplo: o
caso II.1B se aplica em todas as iteraes; no incio da stima iterao, estamos
exatamente na mesma situao que no incio da primeira; este ciclo poder se
repetir ad ternum. A experincia sugere que tais exemplos de ciclagem so
raros.4
importante examinar o fenmeno mais de perto. bvio que nos ca-
sos I.1A e I.3 a heurstica est fazendo progresso, pois L aumenta. H algum
4
Entretanto, h quem afirme [Sch86, p.138] que a ocorrncia de ciclagem em problemas prti-
cos mais freqente do que se imagina, mas mascarada pelo efeito dos erros de arredondamento
da aritmtica ponto flutuante.
Feofiloff cap. 4 Heurstica Simplex 46
1 0 0 0 0 0 1 1
0 1 0 1 1/2 3/2 1/2 0
0 0 1 9 5/2 11/2 1/2 0
0 0 0 24 9 57 10 1
1 0 2 18 5 11 0 1
0 1 1 8 2 4 0 0
0 0 2 18 5 11 1 0
0 0 20 204 41 53 0 1
1 0 0 0 0 0 1 1
0 5/2 1/2 2 0 1 1 0
0 11/2 3/2 8 1 0 2 0
0 93 15 18 0 0 29 1
1 0 0 0 0 0 1 1
0 5/4 1/4 1 0 1/2 1/2 0
0 9/2 1/2 0 1 4 2 0
0 141/2 21/2 0 0 9 20 1
1 0 0 0 0 0 1 1
0 1 0 1 1/2 3/2 1/2 0
0 9 1 0 2 8 4 0
0 24 0 0 21 93 22 1
1 0 0 0 0 0 1 1
0 1 0 1 1/2 3/2 1/2 0
0 0 1 9 5/2 11/2 1/2 0
0 0 0 24 9 57 10 1
e no caso II.1B
f 0 [h] f [h] , (4.k)
4.6 Concluso
A heurstica Simplex recebe uma matriz D, um ndice n de coluna e um ndice m
de linha e procura determinar uma matriz inversvel G tal que G [ , m] = I [ , m]
e GD simples com relao a n, m. A heurstica nem sempre converge; mas
quando converge, produz o resultado desejado. Esta situao pode colocar em
dvida a prpria existncia de uma matriz G com as propriedades desejadas.
G [h, ] D , GD [ , k] e GD [ , n]
apenas quando isso se fizer necessrio. Esses ajustes levam a uma variante da
heurstica conhecida como Simplex Revisto. Vamos exibir abaixo uma verso do
Simplex Revisto que se aplica a sistemas D, n, m dotadas da seguinte proprie-
dade (veja exerccio 4.4, pgina 48): existe uma parte Q0 de N n tal que
D[M m, Q0 ] de bijeo ,
D[m, Q0 ] = o e D[M m, n] o .
claro que essa verso corresponde segunda fase da heurstica geral. Cada
iterao comea com uma parte Q de N n, uma matriz G e um vetor f . A pri-
meira iterao comea com Q = Q0 , G = I e f = D [ , n] . Cada iterao consiste
no seguinte:
5
Uma seqncia 1 , 2 , 3 , . . . estritamente decrescente se 1 > 2 > 3 > .
Feofiloff cap. 4 Heurstica Simplex 48
G0 [i, ] = G [i, ] a [i] G [h, ] /a [h] e f 0 [i] = f [i] a [i] f [h] /a [h] .
Exerccios
4.1 Escreva uma verso da heurstica Simplex que devolva, alm de F e G,
tambm a matriz E e, quando apropriado, as bases P e Q, o ndice h de
uma linha de inviabilidade e o ndice k de uma coluna de ilimitao.
4.2 Escreva a heurstica Simplex em uma linguagem mais formal, mais pr-
xima de PASCAL ou C (veja apndice E, pgina 192). Programe a heurstica
em um computador.
4.3 Escreva uma verso especializada da heurstica Simplex para matrizes com
apenas duas linhas. Mostre que essa verso sempre converge. (Soluo no
apndice E.)
4.4 (S EGUNDA FASE DO S IMPLEX ) Escreva uma verso especializada da heu-
rstica Simplex para o caso em que D tem a seguinte forma: existe uma
Feofiloff cap. 4 Heurstica Simplex 49
D [M m, Q0 ] de bijeo , D [m, Q0 ] = o e D [M m, n] o .
E [P, Q] de bijeo , E [M P, ] = o e E [ , n] o .
1/4 60 1/25 9 1 0 0 0
1/2 90 1/50 3 0 1 0 0
0 0 1 0 0 0 1 1
3/4 150 1/50 6 0 0 0 0
Captulo 5
Algoritmo Simplex
Para transformar a heurstica Simplex (seo 4.2) num algoritmo preciso intro-
duzir um mecanismo que force a convergncia (veja seo 4.5). O mecanismo
que discutiremos neste captulo um refinamento da regra que a heurstica usa,
em cada iterao, para escolher a linha em torno da qual far a prxima pivota-
o. (Outro mecanismo de convergncia ser mencionado na seo 5.9.)
xly
50
Feofiloff cap. 5 Algoritmo Simplex 51
x = 88 33 44 11
u = 0 11 99 88
y = 88 33 33 99
v = 0 0 0 0
z = 88 33 44 12
5.3 Algoritmo
Se acrescentarmos a regra lexicogrfica heurstica Simplex (veja seo 4.2) ob-
teremos o seguinte
A LTERNATIVA I: h diferente de m .
C ASO I.1: E [h, k] > 0 e f [h] 0 ou E [h, k] < 0 e f [h] 0
para algum k em N n . k
Seja L o conjunto de todos os p em L tais que E [p, k] > 0. L
Resta descrever os detalhes dos casos I.1A, I.1B e II.1B. O caso I.1A consiste
no seguinte:
5.4 Anlise
O comportamento do algoritmo pode ser descrito pelas seguintes propriedades
(compare com as sees 4.3 e 4.4):
1
No entanto, a proposio os elementos de Q precedem os demais elementos de N n na
enumerao no invariante!
Feofiloff cap. 5 Algoritmo Simplex 54
b c d e f g h a
1 0 0 0 0 0 1 1
0 1 0 1 1/2 3/2 1/2 0
0 0 1 9 5/2 11/2 1/2 0
0 0 0 24 9 57 10 1
1 1 1
E[3,7] E [3, ] l E[2,7] E [2, ] l E[1,7] E [1, ]
1 0 2 18 5 11 0 1
0 1 1 8 2 4 0 0
0 0 2 18 5 11 1 0
0 0 20 204 41 53 0 1
1 1
E[2,6] E [2, ] l E[1,6] E [1, ]
1 1
E[2,5] E [2, ] l E[3,5] E [3, ]
1 5/2 1/2 2 0 1 0 1
0 1/2 1/2 4 1 2 0 0
0 5/2 1/2 2 0 1 1 0
0 41/2 1/2 40 0 29 0 1
2 5 1 4 0 2 0 2
1 2 0 2 1 3 0 1
1 0 0 0 0 0 1 1
1 18 0 42 0 30 0 2
E [i, k]
E 0 [i, ] = E [i, ] E [p, ] = E [i, ] E [i, k] E 0 [p, ] .
E [p, k]
Como E [i, ] e E 0 [p, ] so lexicograficamente positivos, tambm E 0 [i, ] lexico-
graficamente positivo. Suponha, finalmente, que i diferente de p e E [i, k]
positivo. Por definio,
1 1
E 0 [i, ] = E [i, k] ( E [i, ] E [p, ] ) .
E [i, k] E [p, k]
Portanto, E 0 [i, ] m o em virtude de (5.a). Ademais, a expresso entre parnteses
no pode ser nula uma vez que i e p so elementos distintos de P e E [P, Q]
uma matriz de bijeo. Portanto,
E 0 [i, ] m o ,
5.5 Convergncia
Enquanto estiver ocorrendo o caso I.1A ou o caso I.3, o algoritmo est fazendo
progresso, pois L aumenta. A situao mais delicada quando ocorre o caso I.1B
ou o caso II.1B. Em que sentido o algoritmo est fazendo progresso nesses ca-
sos? A resposta a esta pergunta est nas seguintes observaes, que dependem
crucialmente do invariante (i0).
Podemos mostrar agora por que o algoritmo converge. Imagine que estamos
diante de uma seqncia de iteraes em que ocorrem somente o caso I.1B ou
somente o caso II.1B, donde L e P permanecem constantes. Sejam Q e E os
valores das variveis Q e E no incio da primeira das iteraes da seqncia e
defina Q eE analogamente para a ltima das iteraes da seqncia. Como a
enumerao no se altera ao longo da seqncia de iteraes em questo, o
fato 5.1 garante que
E [h, ] l E
[h, ] ou E [h, ] m E
[h, ] ,
Feofiloff cap. 5 Algoritmo Simplex 57
donde E [h, ] 6= E
[h, ] . Nessas condies, o lema abaixo garante que Q 6= Q.
Como o nmero de subconjuntos de N finito, nossa seqncia de iteraes
necessariamente finita.
D [P, Q] Je G [P, P ] = I ,
2|N |1 .
i h g f e d c b a
1 1 0 0 0 0 0 0 5
4 0 1 1 0 0 0 0 25
8 0 4 0 1 1 0 0 125
16 0 8 0 4 0 1 1 625
8 0 4 0 2 0 1 0 0
b c d e f g h i a
1 1 0 0 0 0 0 0 5 L
0 4 1 1 0 0 0 0 5
0 8 4 0 1 1 0 0 85
0 16 8 0 4 0 1 1 545
0 8 4 0 2 0 1 0 40
b d c e f g h i a
1 1 0 0 0 0 0 0 5 L
0 4 1 1 0 0 0 0 5 L
0 8 0 4 1 1 0 0 65
0 16 0 8 4 0 1 1 505
0 8 0 4 2 0 1 0 60
1 1 0 0 0 0 0 0 5 L
4 0 1 1 0 0 0 0 25 L
8 0 0 4 1 1 0 0 25
16 0 0 8 4 0 1 1 425
8 0 0 4 2 0 1 0 100
e b c f d g h i a
1 1 0 0 0 0 0 0 5 L
4 0 1 1 0 0 0 0 25 L
8 0 0 4 1 1 0 0 25 L
16 0 0 8 0 4 1 1 325
8 0 0 4 0 2 1 0 150
1 1 0 0 0 0 0 0 5 L
0 4 1 1 0 0 0 0 5 L
0 8 0 4 1 1 0 0 65 L
0 16 0 8 0 4 1 1 245
0 8 0 4 0 2 1 0 190
1 1 0 0 0 0 0 0 5 L
0 4 1 1 0 0 0 0 5 L
0 8 4 0 1 1 0 0 85 L
0 16 8 0 0 4 1 1 205
0 8 4 0 0 2 1 0 210
1 1 0 0 0 0 0 0 5 L
4 0 1 1 0 0 0 0 25 L
8 0 4 0 1 1 0 0 125 L
16 0 8 0 0 4 1 1 125
8 0 4 0 0 2 1 0 250
f b g c d h e i a
1 1 0 0 0 0 0 0 5 L
4 0 1 1 0 0 0 0 25 L
8 0 4 0 1 1 0 0 125 L
16 0 8 0 0 4 1 1 125 L
8 0 4 0 0 2 0 1 375
1 1 0 0 0 0 0 0 5 L
4 0 1 1 0 0 0 0 25 L
8 0 4 0 1 1 0 0 125 L
16 0 8 0 0 4 1 1 125 L
8 0 4 0 0 2 1 0 250
1 1 0 0 0 0 0 0 5 L
0 4 1 1 0 0 0 0 5 L
0 8 4 0 1 1 0 0 85 L
0 16 8 0 0 4 1 1 205 L
0 8 4 0 0 2 1 0 210
1 1 0 0 0 0 0 0 5 L
0 4 1 1 0 0 0 0 5 L
0 8 0 4 1 1 0 0 65 L
0 16 0 8 0 4 1 1 245 L
0 8 0 4 0 2 1 0 190
1 1 0 0 0 0 0 0 5 L
4 0 1 1 0 0 0 0 25 L
8 0 0 4 1 1 0 0 25 L
16 0 0 8 0 4 1 1 325 L
8 0 0 4 0 2 1 0 150
1 1 0 0 0 0 0 0 5 L
4 0 1 1 0 0 0 0 25 L
8 0 0 4 1 1 0 0 25 L
16 0 0 8 4 0 1 1 425 L
8 0 0 4 2 0 1 0 100
1 1 0 0 0 0 0 0 5 L
0 4 1 1 0 0 0 0 5 L
0 8 0 4 1 1 0 0 65 L
0 16 0 8 4 0 1 1 505 L
0 8 0 4 2 0 1 0 60
1 1 0 0 0 0 0 0 5 L
0 4 1 1 0 0 0 0 5 L
0 8 4 0 1 1 0 0 85 L
0 16 8 0 4 0 1 1 545 L
0 8 4 0 2 0 1 0 40
1 1 0 0 0 0 0 0 5 L
4 0 1 1 0 0 0 0 25 L
8 0 4 0 1 1 0 0 125 L
16 0 8 0 4 0 1 1 625 L
8 0 4 0 2 0 1 0 0
4mn .
2
As subtraes esto implcitas nas comparaes lexicogrficas.
Feofiloff cap. 5 Algoritmo Simplex 61
5.7 Concluso
O algoritmo Simplex recebe uma matriz D, o ndice n de uma coluna e o ndice
m de uma linha e devolve uma matriz inversvel G tal que G [ , m] = I [ , m] e a
matriz GD simples com relao a n, m.
O algoritmo importante no s do ponto de vista computacional mas tam-
bm do ponto de vista conceitual: ele prova a existncia de um matriz G com as
propriedades enunciadas.
O algoritmo executa cerca de 2n1 iteraes no pior caso, onde n o nmero
de colunas da matriz D, mas em geral converge bem antes.
claro que o algoritmo Simplex pode ser executado de modo aproximado,
com aritmtica de ponto flutuante. Uma tal implementao aproximada pode
cometer erros arbitrariamente grandes. H um grande repertrio de truques
[Chv83] que procuram reduzir tais erros.
Exerccios
5.1 Verifique que a ordem lexicogrfica entre vetores sobre N relativa a qual-
quer enumerao de N reflexiva (x l x), transitiva (se x l y e y l z
ento x l z) e antisimtrica (se x l y e y l x ento x = y).
Feofiloff cap. 5 Algoritmo Simplex 63
n 1 + + n1
0 m1 .
Captulo 6
A, b, c
GA , Gb , c + gA
O algoritmo Simplex discutido nos captulos anteriores opera sobre uma ma-
triz em que uma determinada coluna e uma determinada linha foram destaca-
das para receber tratamento especial. Para aplicar o algoritmo ao problema de
programao linear (de que trataremos no captulo 7), conveniente separar a
coluna especial e a linha especial da matriz, e tratar esses dois objetos como ve-
tores. Em outras palavras, conveniente transformar ternos da forma D, n, m
em que D uma matriz e n e m so ndices em ternos da forma A, b, c em
que A uma matriz e b e c so vetores. A reformulao meramente notacional,
mas vale a pena discut-la com algum vagar. o que faremos neste captulo.
64
Feofiloff cap. 6 Forma tradicional do Simplex 65
0 0 0 1
0 0 1 0
A 0 1 0 0 b
1 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
c 0 0 0 0
0 0 0 1
0 0 1 0
A 0 1 0 0 b
1 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0
c < 0 0 0 0
GA , Gb , c + gA
1 1 1 0 0 2
1 2 0 1 0 10
3 2 0 0 1 6
3 0 1 0 0
Devolva F , G e g e pare.
o resultado da justaposio
claro que F G = I . claro tambm que GD
de GA, Gb e c + gA. Como GD simples, o sistema GA, Gb, c+gA simples.
Portanto, o algoritmo tem o comportamento que prometemos. 2
Como j observamos na seo 5.5, o nmero de iteraes do algoritmo
limitado por 2n , sendo n = |N |. Como j observamos na seo 5.6, cada iterao
executa menos que 4(m + 1)(n + 1) operaes aritmticas, onde m = |M |.
Se os componentes do sistema A, b, c so nmeros racionais ento F , G e g
tambm tero componentes racionais, uma vez que o algoritmo s envolve as
quatro operaes aritmticas.
6.4 Invariantes
A ttulo de curiosidade, eis os invariantes do Simplex (sees 4.3 e 4.4) traduzi-
dos para a nova notao: no incio de cada iterao existem partes P e Q de M
e N respectivamente, matrizes F e G, um vetor g, e um sistema A0 , b0 , c0 tais que
(i0) b0 [P ] o ,
(i1) A0 [P, Q] de bijeo, A0 [M P, Q] = O e c0 [Q] = o ,
(i2) F G = I ,
Feofiloff cap. 6 Forma tradicional do Simplex 67
(i3) A0 = GA, b0 = Gb e c0 = c + gA ,
(i4) G [ , M P ] = I [ , M P ] e g [M P ] = o ,
(i5) F [ , M P ] = I [ , M P ] e F [ , P ] = A [ , Q] Je ,
(i6) A [M P, Q] = G [M P, P ] A [P, Q] e c [Q] = g [P ] A [P, Q] ,
(i7) A [P, Q] Je G [P, P ] = I ,
6.5 Concluso
O algoritmo Simplex transforma qualquer sistema A, b, c em um sistema equi-
valente GA, Gb, c + gA que simples (solvel, invivel ou ilimitado).
A seguinte questo conceitual certamente ter ocorrido ao leitor atento: um
dado sistema A, b, c pode ser transformado em sistemas simples de tipos dife-
rentes? Por exemplo, possvel que uma execuo do Simplex produza um
sistema simples solvel e uma outra execuo, com os mesmos dados, produza
um sistema simples ilimitado? A resposta no. Poderamos demonstrar esta
propriedade de consistncia j, mas mais confortvel tratar disso no captulo 7
(seo 7.4).
Exerccios
6.1 Seja A, b, c o sistema descrito abaixo. Exiba matrizes F e G e um vetor g
tais que F G = I e o sistema GA, Gb, c + gA simples.
1 2 3 1 1 0 0 10
2 3 1 1 0 1 0 7
1 1 3 2 0 0 1 8
3 1 5 2 0 0 0
Parte II
Programao Linear
68
Captulo 7
O algoritmo Simplex (veja captulo 6) foi criado para resolver o problema can-
nico de programao linear, que discutiremos neste captulo. O conceito de ma-
triz simples e os termos solvel, invivel e ilimitado que usamos ao discutir o
Simplex (veja seo 3.1), encontro aqui sua justificativa.
A heurstica Simplex e a disciplina de programao linear foram criados
por George Dantzig[Dan63] e Leonid Kantorovich[Kan39] durante a II Guerra
Mundial (entre e aproximadamente). O Simplex foi se tornando cada
vez mais popular desde ento.1
1
Veja a introduo do livro de Chvtal [Chv83] e a resenha histrica [LKS91] organizada por
Lenstra, Rinnooy Kan e Schrijver.
69
Feofiloff cap. 7 Problema cannico primal 70
1 1 1 3 2
5 1 3 8 44
1 1 4 5 3
4 1 5 3
X(A, b) que minimize cx. O presente texto no usa essa terminologia porque
ela inconsistente e desrespeita o sentido corriqueiro da palavra soluo.
x [N Q] = o e Ax = b .
cx = 0 .
Por outro lado, cx0 o para todo x0 em X(A, b), pois c o. Logo, x soluo
do problema CP(A, b, c).
1 9 9 9 9 9 9 0
0 9 9 9 9 9 9 1
0 0 0 0 0 0 0 1
0 9 9 9 9 9 9 1
0 0 0 0 0 0 0
9 9 9 9 9 0 0 0 1 12
9 9 9 9 9 0 1 0 0 13
9 9 9 9 9 0 0 1 0 14
9 9 9 9 9 1 0 0 0 15
0 0 0 0 0 0 0 0 0 0
8 8 8 8 0 0 0 0 0
0 0 0 0 0 15 13 14 12
9 9 9 9 9 2 0 0 1 12
9 9 9 9 9 3 0 1 0 13
9 9 9 9 9 4 1 0 0 14
9 9 9 9 9 0 0 0 0 0
9 9 9 9 9 0 0 0 0 0
8 8 8 8 0 8 0 0 0
0 0 0 0 0 0 14 13 12
0 0 0 0 0 1 4 3 2
x [N Q] = o e Ax = b .
c (x + x0 ) = c [k] ,
A0 = GA , b0 = Gb e c0 = c + gA .
Feofiloff cap. 7 Problema cannico primal 74
1 2 1 0 1 0 0 12
2 5 0 1 0 1 0 10
1 3 1 1 0 0 1 2
0 1 2 1 0 1 0
7.4 Concluso
O problema cannico primal consiste em encontrar um vetor x que minimize cx
sujeito s restries x o e Ax = b. Todo problema cannico primal tem soluo
ou invivel ou ilimitado. O algoritmo Simplex reduz qualquer problema
cannico primal a um problema equivalente que pode ser resolvido por mera
inspeo.
Convm acrescentar duas observaes sobre terminologia. Quando o n- terminologia
mero cx interpretado como custo do vetor x, diz-se que (c + gA) x o custo
reduzido de x. Diz-se que uma soluo x do problema CP(A, b, c) bsica se x
o vetor bsico do problema simples solvel CP(GA, Gb, c + gA).
Durante a discusso do Simplex, adiamos a anlise da seguinte questo de
consistncia: possvel reduzir um dado sistema A, b, c a dois sistemas simples
de tipos diferentes? A resposta a esta pergunta fica clara agora. Digamos que
F, G, g, F 0 , G0 , g 0 so tais que F G = I , F 0 G0 = I e os sistemas
GA, Gb, c + gA e G0 A, G0 b, c + g 0 A
7.5 Exemplo
Uma empresa fabrica quatro modelos de um produto. Digamos que xi o n-
mero de unidades do modelo i produzidas. Cada produto passa por dois est-
gios de fabricao. O primeiro estgio dispe de no mais que 600 homens-hora
e o segundo de no mais que 400 homens-hora. Digamos que o nmero de
homens-hora necessrios, em cada estgio, para a fabricao de cada modelo do
produto impe as seguintes restries:
Digamos que o lucro total 12x1 + 20x2 + 18x3 + 40x4 . Queremos planejar a
produo de modo a maximizar o lucro total.
Maximizar o lucro o mesmo que minimizar 12x1 20x2 18x3 40x4 .
Assim, nosso problema equivale ao seguinte problema cannico primal: encon-
trar nmeros no-negativos x1 , . . , x6 que minimizem 12x1 20x2 18x3 40x4
respeitadas as restries
4 9 7 10 1 0 600
1 1 3 40 0 1 400
12 20 18 40 0 0
4/15 1/15
1/150 4/150
44/15 4/15
Exerccios
7.1 Suponha que para todo x em X(A, b) existe x0 em X(A, b) tal que cx0 < cx.
O problema CP(A, b, c) ilimitado?
7.2 Suponha que c o. Mostre que o vetor nulo soluo do problema can-
nico CP(A, o, c).
7.3 Seja x um vetor em X(A, b) e g um vetor tal que c+gA o e (c+gA)x = 0.
Prove que x soluo do problema CP(A, b, c).
7.4 Os problemas cannicos CP(A, b, c) e CP(A, b, c) podem ser ambos ilimi-
tados?
7.5 A folga de x o conjunto, digamos S(x), de todos os ndices j para os
quais x [j] no nulo. Suponha que A, b, c um sistema simples solvel e
que x o correspondente vetor bsico. Mostre que a folga de x minimal,
ou seja, que no existe x0 em X(A, b) tal que S(x0 ) S(x), em que indica
subconjunto prprio. (Veja apndice C, pgina 178.)
7.6 Seja A uma matriz sobre M N , b um vetor sobre M e i um elemento
de M . Mostre que o problema de encontrar o menor valor de b [i] para o
qual X(A, b) no vazio equivale ao problema CP(A [M i, ] , b [M i] , A [i, ] ).
Captulo 8
Y (A, c) .
1
O leitor atento j ter reconhecido nessas restries um reflexo da condio c + gA o,
presente na definio de sistema simples solvel (seo 6.2).
77
Feofiloff cap. 8 Problema cannico dual 78
yAx = y (Ax) = yb ,
yAx = (yA) x cx ,
2 1 1 1 3 2
0 5 1 3 8 44
1 1 1 4 5 3
4 1 5 3
11/18 1 1 1 3 2
5/6 5 1 3 8 44
7/9 1 1 4 5 3
4 1 5 3
Fato 8.2 Para todo x em X(A, b) e todo y em Y (A, c), o par x, y tem
folgas complementares se e s se cx = yb.
P
Suponha agora que cx = yb. Ento cxyAx = 0, donde j (cyA) [j] x [j] =
0. Como x o e yA c, cada um dos termos desta soma menor ou igual a 0.
Como a soma nula, cada um de seus termos deve ser nulo. 2
Diante desse lema, razovel que todo vetor y 0 em Y (A, o) que satisfaa
a condio y 0 b > 0 seja chamado vetor de inviabilidade do problema primal. vetor de
CP(A, b, c). inviabilidade
primal
1 1/2 2 2 4 0 24
0 0 1 1 2 0 12
1 1 2 0 5 1 10
1 1 1 1 2 1 2
1 1 1 1
Lema 8.4 (da inviabilidade dual) Se cx0 < 0 para algum vetor x0 em
X(A, o) ento o problema dual CD(A, c, b) invivel e o problema pri-
mal CP(A, b, c) ilimitado ou invivel.
Feofiloff cap. 8 Problema cannico dual 81
Esse lema justifica o uso do termo vetor de inviabilidade do problema dual vetor de
CD(A, c, b) para designar qualquer vetor x0 em X(A, o) tal que cx0 < 0. inviabilidade
dual
2 2 4 8 24
1 1 2 4 12
2 0 5 4 10
1 1 2 0 2
1 1 1 8
5 7 0 0
2 2 0 1
minx cx = maxy yb ,
onde min tomado sobre x em X(A, b) e max tomado sobre y em Y (A, c).
Essa identidade traduz no somente o caso (4) do enunciado do teorema, mas
tambm os casos (2) e (3), se estivermos dispostos a dizer que min cx = +
quando o problema primal invivel, que min cx = quando o problema
primal ilimitado, que max yb = quando o problema dual invivel e que
max yb = + quando o problema dual ilimitado. A igualdade s no vale no
caso (1), quando os dois problemas so inviveis. (Esse o caso, por exemplo,
Feofiloff cap. 8 Problema cannico dual 84
X vazio X no-vazio
Y primal invivel primal ilimitado
vazio dual invivel dual invivel
Y primal invivel primal solvel
no-vazio dual ilimitado dual solvel
8.6 Concluso
O problema cannico dual consiste em encontrar um vetor y que maximize yb
sujeito s restries yA c. Todo problema cannico dual tem soluo ou
invivel ou ilimitado.
H uma ntima relao entre o problema cannico primal CP(A, b, c) e o pro-
blema cannico dual CD(A, c, b): os dois problemas constituem as duas faces de
uma mesma moeda. A menos que os dois problemas sejam inviveis, tem-se
minx cx = maxy yb.
O algoritmo Simplex pode ser usado para resolver simultaneamente os dois
problemas. Para esclarecer de forma cabal a natureza dos dois problemas (am-
bos inviveis, um invivel e outro ilimitado, ou ambos solveis), basta exibir
dois vetores convenientes extrados dos conjuntos X(A, b), Y (A, c), X(A, o) e
Y (A, o).
x est em X(A, b) e
o par x, y tem folgas complementares (donde cx = yb).
um novo par x x cx ou
, y tal que c
um vetor x0 em X(A, o) tal que cx0 < 0.
Exerccios
8.1 Prove que o problema CD(A, c, b) vivel se e s se o problema CP(A, o, c)
tem soluo. Prove a afirmao dual: o problema CP(A, b, c) vivel se e
s se o problema CD(A, o, b) tem soluo.
8.2 Se existe um vetor y 0 em Y (A, o) tal que y 0 b > 0 ento existe um vetor
y 00 em Y (A, o) tal que y 00 b 1. Se existe um vetor x0 em X(A, o) tal que
cx0 < 0 ento existe x00 em X(A, o) tal que cx00 1.
8.3 Mostre que para todo x em X(A, o), todo y em Y (A, o) e todo ndice j
tem-se (yA) [j] = 0 ou x [j] = 0.
8.4 [Chv83] Dada uma matriz A, vetores b e c, e um nmero , dizemos que
o par A, c implica o par b, se o sistema de inequaes yA c tem pelo
menos uma soluo e se todo y que satisfaz o sistema yA c tambm
satisfaz a inequao yb . Mostre que o teorema da dualidade equiva-
lente seguinte proposio: se A, c implica b, ento existe x o tal que
Ax = b e cx .
8.5 Encontre nmeros no-negativos x1 , x2 , x3 , x4 que satisfaam as equaes
Problema geral
minimizem a expresso c1 x1 + c2 x2 + c3 x3
sujeita s restries x1 o
A11 x1 + A12 x2 + A13 x3 b1
A21 x1 + A22 x2 + A23 x3 = b2
A31 x1 + A32 x2 + A33 x3 b3
x3 o.
87
Feofiloff cap. 9 Problema geral 88
9.2 Dualidade
H uma fundamental relao de dualidade entre problemas de programao
linear. Por definio, o dual de um ppl cuja matriz D o ppl cuja matriz D,
e dual
ou seja, a transposta de D com sinal trocado. Assim, o dual do ppl descrito na
seo anterior o ppl
minimizar a expresso b1 y1 b2 y 2 b3 y 3
sujeita s restries y1 o
A
g 11 y1 A21 y2 A31 y3
g g c1
A12 y1 A22 y2 A
g g g32 y3 = c2
A13 y1 A23 y2 A33 y3
g g g c3
y3 o.
maximizar a expresso y 1 b1 + y2 b2 + y 3 b3
sujeita s restries y3 o
y1 A11 + y2 A21 + y3 A31 c1
y1 A12 + y2 A22 + y3 A32 = c2
y1 A13 + y2 A23 + y3 A33 c3
y1 o.
Observe que o ppl D tem uma incgnita para cada restrio de P (exceto as
restries x1 o e x3 o) e uma restrio para cada incgnita de P. Por
exemplo, a incgnita y1 corresponde restrio A11 x1 + A12 x2 + A13 x3 b1
de P; e a restrio y1 A11 + y2 A21 + y3 A31 c1 corresponde incgnita x1 de P.
Se todas as matrizes exceto A21 so vazias e todos os vetores exceto c1 e b2
so vazios ento P o problema cannico primal CP(A21 , b2 , c1 ) e D o pro-
blema cannico dual CD(A21 , c1 , b2 ).
minimizar cx + dy
sujeita a Ax + By = f , lyu e x o.
minimizar cx maximizar yb
sujeito a x o e Ax b sujeito a y o e yA c
x1 o
x3 o
min c1 x1 + c2 x2 + c3 x3
max
y1 A11 y1 A12 y1 A13 y1 y 1 b1
+ + + +
y2 A21 y2 A22 y2 A23 y 2 b2
+ + + +
y3 y3 A31 y3 A32 y3 A33 y 3 b3
o c1 c2 c3 o
1
Note que aqui x1 , x2 e x3 so nmeros e no vetores.
Feofiloff cap. 9 Problema geral 91
sob as restries
15x1 + 16x2 + 17x3 + 18x4 19
20x1 + 21x2 + 22x3 + 23x4 = 24
25x1 + 26x2 + 27x3 + 28x4 29
x1 0
x3 0.
11 y1 15 + y2 20 + y3 25 , pois x1 0,
12 = y1 16 + y2 21 + y3 26 , pois x2 no tem restrio de sinal ,
13 y1 17 + y2 22 + y3 27 , pois x3 0,
14 = y1 18 + y2 23 + y3 28 , pois x4 no tem restrio de sinal .
Ax b , Dv = e e x o .
yA c , wD = f e y o.
Teorema 9.3 (da dualidade) Vale uma e apenas uma das seguintes afir-
mativas:
(1) existe um vetor de inviabilidade para P e
existe um vetor de inviabilidade para D;
(2) D vivel e existe um vetor de inviabilidade para P;
(3) P vivel e existe um vetor de inviabilidade para D;
(4) existem x1 , x2 , x3 em X(b1 , b2 , b3 ) e y1 , y2 , y3 em Y (c1 , c2 , c3 )
tais que c1 x1 + c2 x2 + c3 x3 = y1 b1 + y2 b2 + y3 b3 .
11 15 19 23
12 16 20 24
13 17 21 25
14 18 22
11 15 19 11 15 19 1 0 0 23
12 16 20 12 16 20 0 1 0 24
13 17 21 13 17 21 0 0 1 25
14 18 22 14 18 22 0 0 0
pode ser usado para resolver um ppl arbitrrio. Os dois exemplos abaixo ilus-
tram o fenmeno.
Ax + Bz = b ,
Cx + Dz c ,
xo
(veja exemplo numrico na figura 9.5). Esse problema equivale ao seguinte pro-
blema cannico primal: encontrar vetores y, v, w, r que minimizem a expresso
ay dv + dw sujeita s restries
Ay + Bv Bw = b ,
Cy + Dv Dw + Ir = c ,
y o, v o, w o, r o.
y = x
v [i] = se z [i] 0 ento z [i] seno 0
w[i] = se z [i] 0 ento 0 seno z [i]
r = c Cx Dz .
9.7 Concluso
O problema geral de programao linear consiste em encontrar, no conjunto de
todos os vetores que satisfazem dadas restries lineares, um vetor que mini-
mize uma dada funo linear. Os problemas cannicos primal e dual so casos
particulares desse problema.
Os problemas de programao linear esto casados em pares: a cada pro-
blema corresponde um problema dual (se D o dual de P ento P o dual
de D). Um problema e o seu dual esto intimamente relacionados: ou ambos
Feofiloff cap. 9 Problema geral 96
Exerccios
9.1 Considere o problema de encontrar vetores x e z tais que x o, Ax+Dz
b e cx + f z mnimo. Verifique que o dual deste problema consiste em
encontrar um vetor y tal que y o, yA c, yD = f e yb mximo.
9.2 Seja X o conjunto dos vetores x o tais Ex f e Ax = b. Seja Y o
conjunto dos pares y, w tais que y o e yE + wA c. Prove que para todo
x em X e todo par y, w em Y tem-se cx yf + wb.
9.3 Demonstre o lema da inviabilidade 9.2.
9.4 Seja P o problema de encontrar vetores x e u que maximizem a expresso
cx + du sujeita s restries Ax + Bu = d e o u e. Mostre que P
invivel se existem vetores y 0 e z 0 tais que y 0 A = o, y 0 B + z 0 o, z 0 o e
y 0 d + z 0 e < 0. Mostre que um par y 0 , z 0 como o que acabamos de descrever
certamente existe se e tem algum componente negativo. Mostre que o dual
de P invivel se existe um vetor x0 tal que Ax0 = o e cx0 > 0.
9.5 Suponha dada uma matriz A, vetores b e c e um nmero . Seja R o
conjunto dos vetores y que satisfazem as restries yA c e yb > . Seja
S o conjunto dos vetores x que satisfazem as restries Ax = b, x o
Feofiloff cap. 9 Problema geral 98
99
Captulo 10
Determinantes
1
Veja a nota histrica Matrices and Determinants na MacTutor History of Mathematics Archive
(University of St Andrews, Esccia).
100
Feofiloff cap. 10 Determinantes 101
circ(J) .
hh1 , h2 , . . , hm , k1 , k2 , . . , kn i
0 1 0 0
0 0 1 0
1 0 0 0
0 0 0 1
|M | circ(J)
par e negativa em caso contrrio. A matriz identidade, por exemplo, positiva; negativa
e toda matriz de transposio negativa. O sinal de uma matriz de permutao
J ser denotado por
sig(J) .
Por outro lado, de acordo com o lema 10.1, temos sig(T J) = sig(J) e tam-
bm sig(T JK) = sig(JK). Logo, sig(JK) = sig(J)sig(K), como queramos
demonstrar. 2
uma
Q vez que essas Q duas expresses tm o mesmo valor. De fato, diag(AJ) =
i A [i, ] J [ , i] = i A [i, i] , onde a bijeo de M em M definidaQpela equa-
o
Q J [i, i] = Q1. Se denotarmos por a inversa de teremos i A [i, i] =
j A [j, j] = j J [j, ] A [ , j] = diag(JA).
0 1 0
0 0 1
1 0 0
det(A) = 0 .
4 P
A ttulo de curiosidade, o permanente de uma matriz quadrada A o nmero J diag(AJ),
onde a soma se estende a todas as matrizes de permutao J . No se conhece um algoritmo
eficiente isto , polinomial no nmero de componentes de A para o clculo do permanente.
Feofiloff cap. 10 Determinantes 105
Propriedade 10.5 (matriz com duas linhas iguais) Para dois elementos
distintos h e k de M , se A [h, ] = A [k, ] ento det(A) = 0.
Por outro lado, det(T A) = sig(T ) det(A), em virtude da propriedade 10.4. Como
sig(T ) = 1, temos
det(T A) = det(A) .
de permutao J ,
Q
diag(ABJ) = (AB)[i, ]J [ , i]
Qi Q
= i B [i, ]J [ , i] + B [k, ]J [ , h] i6=h B [i, ]J [ , i]
= diag(BJ) + B [h, ]J [ , h] Q
i6=h B [i, ]J [ , i]
= diag(BJ) + diag(BJ) ,
Como B = 0.
tem duas linhas iguais, a propriedade 10.5 garante que det(B)
Portanto, det(AB) = det(B). 2
det(A0 B) = det(GAB)
= det(AB) .
C ASO 1: A [h, ] nulo. claro que det(A) e det(AB) so nulos, uma vez que
(AB) [h, ] = A [h, ] B = o. Portanto, a identidade det(AB) = det(A) det(B) vale
trivialmente neste caso.
C ASO 2: A [h, ] no nulo. Seja k um elemento de M Q tal que A [h, k] 6= 0. k
Seja F a matriz elementar com coluna saliente h definida pela equao F
F [ , h] = A [ , k]
a matriz elementar com
(veja a anlise de algoritmo de Gauss-Jordan). Seja G
G
coluna saliente h definida pelas equaes
[i, h] = i ,
G
Seja A0 a matriz GA. Ento A0 [h, ] = h A [h, ] e A0 [i, ] = A [i, ] + i A [h, ] para A0
cada i em M h. Como A [h, Q] nulo, temos
A0 [ , Q] = A [ , Q] .
[i, ] A [ , k] = G
Por outro lado, A0 [i, k] = G [i, ] F [ , h] = (G
F ) [i, h] = I [i, h] para cada
i em M , donde
A0 [ , k] = I [ , h] .
5
Publicado em , simultaneamente por Jacques P. M. Binet () e Augustin-Louis
Cauchy ().
Feofiloff cap. 10 Determinantes 108
6
Da mesma forma que e esto presentes no produto de somas ( + )( + ).
Feofiloff cap. 10 Determinantes 109
10.6 Concluso
O determinante de uma matriz quadrada A um nmero da forma 0 , em
que e 0 so somas de produtos de elementos de A e cada produto tem exata-
mente um elemento de cada linha e de cada coluna de A. A propriedade mais
importante do determinante a lei do produto: para qualquer par A, B de
matrizes
det(AB) = det(A) det(B) .
Exerccios
10.1 Mostre que sig(J)
e = sig(J) para toda matriz de permutao J .
10.3 Suponha que A uma matriz elementar com coluna saliente k. Mostre que
det(A) = A [k, k] .
10.4 Mostre que o determinante de uma matriz quadrada A no depende da
indexao das linhas e colunas, ou seja, mostre que det(JAJ)
e = det(A)
para qualquer matriz de permutao J .
10.5 D exemplos de matrizes para as quais a delimitao 10.9 vale com igual-
dade. D exemplos de matrizes para as quais a delimitao de determi-
nantes de submatrizes vale com igualdade.
10.6 Deduza da delimitao produto-de-somas 10.9 a seguinte delimitao
produto-de-produtos: Para qualquer matriz A sobre M M ,
Q Q
absdet(A) iM jM (1 + ij ) ,
Feofiloff cap. 10 Determinantes 110
Algoritmo de Gauss-Jordan-Chio
Este captulo (que s depende dos captulos 1, 2 e 10) examina uma variante
do algoritmo de Gauss-Jordan. Por falta de um nome melhor, diremos que se
trata do algoritmo de Gauss-Jordan-Chio.1 (Veja lema 11.1 adiante.) Uma das
conseqncias do algoritmo a conhecida regra de Cramer2 para soluo de
sistemas de equaes por meio de determinantes.
O algoritmo transforma qualquer matriz D numa matriz equivalente E que
escalonada a menos de um fator multiplicativo. Ademais, os componentes de
E so determinantes de submatrizes de D (em particular, se D s tem compo-
nentes inteiros ento todos os componentes de E sero inteiros). Graas a essa
propriedade, possvel formular uma boa delimitao superior para o valor ab-
soluto dos componentes de E . A delimitao permite mostrar que o consumo
de tempo do algoritmo polinomial.
11.1 Algoritmo
Antes de formular o algoritmo, preciso generalizar o conceito de matriz es-
calonada. Para qualquer nmero no-nulo , diremos que uma matriz K
-bijetora se a matriz 1 K de bijeo. Diremos que uma matriz E sobre -bijetora
M N -escalonada se a matriz 1 E escalonada, ou seja, se existem partes -escalonada
P e Q de M e N respectivamente tais que
E [M P, ] = O e E [P, Q] -bijetora.
1
Referncia a F. Chio [Chi53], conforme H. Eves [Eve80, sec.3.6]. Veja tambm Schrij-
ver [Sch86, p.34].
2
Referncia a Gabriel Cramer ().
111
Feofiloff cap. 11 Algoritmo de Gauss-Jordan-Chio 112
F 0 [ , h] = D[ , k] , F 0 [ , i] = F [ , i] ,
h G[i, ] i G[h, ]
G0 [h, ] = G[h, ] , G0 [i, ] = ,
h E [i, ] i E [h, ]
E 0 [h, ] = E [h, ] , E 0 [i, ] = ,
para cada i em M h. (Veja exemplo numrico na figura 11.2.)
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0
1 0 0 0 0 1 0 0 1 0 1
0 1 0 0 0 0 2 1 1 0
0 0 1 0 0 5 5 0 0 5
0 0 0 1 0 0 3 1 2 0
0 0 0 0 1 0 0 5 1 2
1 0 0 0 0 1 0 0 1 0 1
0 1 0 0 0 0 2 1 1 0
5 0 1 0 0 0 5 0 5 5
0 0 0 1 0 0 3 1 2 0
0 0 0 0 1 0 0 5 1 2
2 0 0 0 0 2 0 0 2 0 2
0 1 0 0 0 0 2 1 1 0
10 5 2 0 0 0 0 5 15 10
0 3 0 2 0 0 0 5 1 0
0 0 0 0 2 0 0 10 2 4
5 0 0 0 0 5 0 0 5 0 5
5 0 1 0 0 0 5 0 5 5
10 5 2 0 0 0 0 5 15 10
25 5 5 5 0 0 0 0 40 25
50 25 10 0 5 0 0 0 70 60
15 5 5 5 0 40 0 0 0 25 40
15 5 3 5 0 0 40 0 0 15
5 25 1 15 0 0 0 40 0 5
25 5 5 5 0 0 0 0 40 25
50 130 10 70 40 0 0 0 0 130
80 65 10 60 25 130 0 0 0 0 130
30 65 6 10 15 0 130 0 0 0
10 65 2 40 5 0 0 130 0 0
50 65 10 60 25 0 0 0 130 0
50 130 10 70 40 0 0 0 0 130
h 6= 0 , (11.a)
0 0
FG = h I , (11.b)
0 0
E = G D, (11.c)
0 1
E [ , Q] = h E [ , Q] , (11.d)
E 0 [ , k] = h I [ , h] , (11.e)
0 1
G [ , M P h] = h G[ , M P h] . (11.f)
P M P Q N Q
0 0 0 0 0
0 0 0 P 0 0
0 0 0 0 0
0 0 0 0 0
0 0 M P 0 0 0
0 0 0 0 0
F [ , h] = h1 E [ , k] e F [ , M h] = h1 I [ , M h] ,
a matriz elementar com coluna especial h definida pelas equaes
Seja G
G
[M h, h] = 1 E [M h, k] ,
G
G [h, h] = 1 ,
G [ , M h] = h 1 I [ , M h] .
Feofiloff cap. 11 Algoritmo de Gauss-Jordan-Chio 115
/6 0 0 0 0 1 /6 6 / 0 0 0 0 1 /
0 /6 0 0 0 2 /6 0 6 / 0 0 0 2 /
0 0 /6 0 0 3 /6 0 0 6 / 0 0 3 /
0 0 0 /6 0 4 /6 0 0 0 6 / 0 4 /
0 0 0 0 /6 5 /6 0 0 0 0 6 / 5 /
0 0 0 0 0 6 /6 0 0 0 0 0 1
0 0 0 0 1 6 0 0 0 0 1
0 0 0 0 2 0 6 0 0 0 2
0 0 0 0 3 0 0 6 0 0 3
0 0 0 0 4 0 0 0 6 0 4
0 0 0 0 5 0 0 0 0 6 5
0 0 0 0 0 6 0 0 0 0 0
F 0 [ , h] = D[ , k]
= ( 1 F G)D[ , k]
= 1 F (E [ , k])
= 1 F (h F [ , h]) .
Em suma, F 0 = h 1 F F . Logo,
F 0 G0 = h 1 (F F )(GG)
1
= h F (F G)G
= h 1 F G
= h I ,
em virtude de (i1). 2
Logo, E 0 [ , k] = h I [ , h] . 2
Feofiloff cap. 11 Algoritmo de Gauss-Jordan-Chio 116
F [ , M P ] = I [ , M P ] e F [ , P ] = D [ , Q] Je,
D [M, M ] = I e D [M, N ] = D .
(veja figura 11.6). A relao E = G D, garantida pelo invariante (i2), leva a uma
relao simples entre determinantes de certas submatrizes de E e determinan-
tes das correspondentes submatrizes de D. O enunciado preciso dessa relao
depende da seguinte conveno de notao.
Uma funo de M em M N uma injeo se i e j so distintos
quando i e j so distintos.3 Dada uma tal injeo , denotaremos por D a D
matriz sobre M M definida pelas equaes
(D ) [ , i] = D [ , i] .
3
Aqui, i denota o valor de em i.
Feofiloff cap. 11 Algoritmo de Gauss-Jordan-Chio 117
M N
1 0 0 0 0 0
0 1 0 0 0 0
0 0 1 0 0 0
M 0 0 0 1 0 0
0 0 0 0 1 0
0 0 0 0 0 1
M Q M Q N Q N Q
0 0 0 0 0
M Q 0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
M Q 0 0 0 0 0
0 0 0 0 0
i
o nico elemento de Q para o qual E [i, i] = . Assim, uma injeo de M
em M N e E = I . A propriedade 11.2 abaixo que poderamos chamar de
invariante (i6) do algoritmo mostra que os componentes no-nulos de E [ , Q]
so determinantes de D ; a propriedade 11.3 que poderamos denominar
invariante (i7) trata dos demais componentes de E.
1 0 0 11 21 31 41
0 1 0 12 22 32 42
0 0 1 13 23 33 43
12 11 0 0 10 20 30
22 21 0 10 0 10 20
10 20 10 0 0 0 0
21 11 0
22 12 0
23 13 1
21 0 0
22 1 0
23 0 1
21 11 41
22 12 42
23 13 43
Figura 11.7: Ilustrao das propriedades 11.2 e 11.3. A primeira matriz da figura D e
a segunda E. O valor de 10. A injeo definida por 1 = 5, 2 = 4, 3 = 3.
A terceira matriz da figura D . O seu determinante vale 10. A quarta matriz D
com i = 2 e j = 2. O seu determinante, 21, o valor de E [2, 2] . A quinta matriz D
com i = 3 e j = 7. O seu determinante, 0, o valor de E [3, 7] . Todas as matrizes esto
indexadas por 1, 2, 3, . . . de cima para baixo e da esquerda para a direita.
Feofiloff cap. 11 Algoritmo de Gauss-Jordan-Chio 120
Uma demonstrao
Q Psemelhante prova que E [i, j] limitado pelo produto das
somas de colunas q p pq (desta vez sem o 1+ ). Mostraremos a seguir que
E [i, j] tambm limitado por um produto de produtos. A delimitao mais
grosseira que as anteriores, mas muito til, por ser mais fcil de manipular.
3 E [4, 4] 4 E [3, 4] 5 1 + 5 15
=
2
3 2 1 4 5 6 7 8 9 10
4 3 2 5 6 7 8 9 73 1
5 6 3 4 7 9 8 10 1 2
1 5 4 7 5 10 9 6 2 3
32 6 5 8 9 10 9 2 7 4
8 7 6 9 10 5 2 3 4 5
9 8 7 11 3 2 1 4 5 8
4m2 n .
m2 n log2
no pior caso. Em suma, o tempo que o algoritmo consome limitado por uma
funo polinomial do espao necessrio para descrever a matriz D. Esta delimi-
tao polinomial foi originalmente demonstrada por Jack Edmonds [Edm67].
11.6 Concluso
Ao receber uma matriz inteira D, o algoritmo de Gauss-Jordan-Chio devolve
uma matriz inversvel inteira G e um nmero inteiro no-nulo tais que
a matriz GD -escalonada.
Exerccios
11.1 Use o algoritmo de Gauss-Jordan-Chio para calcular o determinante da
matriz abaixo.
1 2 4 8
1 3 9 27
1 4 16 64
1 5 25 125
Algoritmo Simplex-Chio
12.1 Algoritmo
Para qualquer nmero no-nulo , diremos que uma matriz E -simples com
relao a um par n, m de ndices se a matriz
1 E
F G = I , G [ , m] = I [ , m] e GD -simples
124
Feofiloff cap. 12 Algoritmo Simplex-Chio 125
n
0 0
0 0
0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0
m 0 0 0
A LTERNATIVA I: h diferente de m .
C ASO I.1: E [h, k] > 0 e f [h] 0 ou E [h, k] < 0 e f [h] 0 para
algum k em N n . k
Para cada p em M m, seja p o nmero E [p, k] . p = E [p, k]
Seja L o conjunto dos ndices p em L para os quais p / > 0.
C ASO I.1 A: f [h] /h f [p] /p para todo p em L .
Seja F 0 , G0 , E 0 o resultado da pivotao de F, G, E em torno de h, k.
Seja L0 o conjunto L + h.
Escolha h0 em M L0 , se possvel distinto de m.
Comece nova iterao com F 0 , G0 , E 0 , h , L0 , h0
nos papis de F , G, E , , L, h.
C ASO I.1 B: f [h] /h > f [p] /p para algum p em L .
Escolha qualquer p em L tal que f [p] /p mnimo.
Seja F 0 , G0 , E 0 o resultado da pivotao de F, G, E em torno de p, k.
Comece nova iterao com F 0 , G0 , E 0 e p
nos papis de F , G, E e .
C ASO I.2: E [h, N n] o e f [h] > 0 ou E [h, N n] o e f [h] < 0 .
Devolva F , G, e pare.
C ASO I.3: E [h, N n] = o e f [h] = 0 .
Seja L0 o conjunto L + h.
Escolha h0 em M L0 , se possvel distinto de m.
Comece nova iterao com L0 e h0 nos papis de L e h.
A LTERNATIVA II: h igual a m .
Feofiloff cap. 12 Algoritmo Simplex-Chio 126
12.2 Anlise
A anlise da heurstica anloga do algoritmo de Gauss-Jordan-Chio.
e +,
Q Q
onde = p q (1 + pq ) e pq o valor absoluto de D [p, Qq] . A delimitao
P
permanece vlida se for
Q P definido pelo produto de somas p (1 + q pq ) ou
pelo produto de somas q p pq .
Quando D inteira, o Simplex-Chio pode ser executado usando somente
aritmtica inteira. De fato, a diviso por implcita na operao de pivotao
ter sempre resultado inteiro. Alm disso, a operao de diviso que aparece na
definio de L no precisa ser executada explicitamente pois p / positivo se
e s se p e tm o mesmo sinal. Analogamente, as operaes de diviso que
aparecem na definio dos casos I.1A e I.1B e na escolha de p podem ser feitas
implicitamente.
3 2 1 4 5 6 7 8 10
4 3 2 5 6 7 8 9 11
5 6 3 4 7 9 8 10 9
1 5 4 7 5 10 9 6 8
9 8 7 11 3 2 1 4 0
mn log2 .
12.4 Concluso
Ao receber uma matriz inteira D e ndices n e m de coluna e linha respectiva-
mente, o algoritmo Simplex-Chio devolve uma matriz inversvel inteira G e um
nmero inteiro no-nulo tais que a matriz GD -simples com relao a n, m.
O valor absoluto de cada componente de G e GD (e, em particular, o n-
mero ) ser limitado pelo produto de todos os nmeros da forma 1 + , onde
o valor absoluto de um componente de D.
Exerccios
12.1 Implemente o algoritmo Simplex-Chio (com regra lexicogrfica ou regra de
Bland) em um computador. Suponha que a matriz dada inteira. Seu pro-
grama deve detectar overflow de operaes aritmticas ou fazer aritmtica
inteira com preciso ilimitada.
Captulo 13
Ax = b .
Q Q Q
O tamanho do sistema A, b o nmero i (1 + i ) i j (1 + ij ), em que
i e ij so os valores absolutos de b [i] e A [i, j] respectivamente. As concluses
Q
continuam
P vlidas se
Q P o tamanho
P do sistema for definido pelas expresses i (1+
i + j ij ) ou ( j i ij ) ( i i ).
129
Feofiloff cap. 13 Problemas com dados inteiros 130
X(A, b) e Y (A, c) ,
Teorema 13.2 (dualidade para dados inteiros) Para qualquer matriz in-
teira A sobre M N , vetor inteiro b sobre M e vetor inteiro c sobre N ,
existe um inteiro positivo para o qual vale uma e apenas uma das se-
guintes afirmaes:
(1) existe um vetor inteiro x em X(A, b) e um vetor inteiro y em
Y (A, c) tais que cx = yb,
(2) existe um vetor inteiro x em X(A, b) e um vetor inteiro x0 em
X(A, o) tal que cx0 1,
(3) existe um vetor inteiro y em Y (A, c) e um vetor inteiro y em
Y (A, o) tal que y 0 b +1,
(4) existe um vetor inteiro x0 em X(A, o) e um vetor inteiro y 0 em
Y (A, o) tais que cx0 1 e y 0 b +1.
Ademais, cada componente de x, x0 , y e y 0 , bem como os nmeros , cx,
yb, cx0 e y 0 b, esto entre e , onde o tamanho do sistema A, b, c.
1
Referncia a Gabriel Cramer ().
Feofiloff cap. 13 Problemas com dados inteiros 131
Q Q Q Q
O tamanho do sistema A, b, c o nmero i j (1+ij ) i (1+i ) j (1+j ), em
que ij , i e j so os valores absolutos de A [i, j] , b [i] e c [j] respectivamente (
claro que i percorre o conjunto de ndices de linhas de A e j percorre o conjunto
de ndices de colunas de A). O teorema
Q continuaP vlido se o tamanhoP doQsistema
P b, c for definido
A, P pelas expresses i (1 + i + j ij ) (1 + j j ) ou j (j +
i ij ) (
i i ).
13.3 Concluso
O algoritmo Simplex-Chio pode ser usado para resolver o par dual de proble-
mas cannicos CP(A, b, c) e CD(A, c, b) com dados A, b e c inteiros. A eventual
soluo do problema primal e a correspondente soluo do problema dual tero
a forma
x/ e y/
Algoritmos Polinomiais
132
Captulo 14
m (m+n) 2n ,
onde log representa o nmero total de dgitos necessrio para escrever todos
os componentes de A, b, c. O presente captulo descreve as camadas externas de
um tal algoritmo polinomial. O ncleo, conhecido como algoritmo de Yamnits-
ky-Levin, ser discutido no prximo captulo.
A existncia de um algoritmo polinomial para programao linear foi ob-
jeto de especulao por algum tempo. O primeiro algoritmo desse tipo foi des-
crito por Khachiyan [Kha79, GL81, PS82] e ficou conhecido como algoritmo do
elipside. Outros algoritmos polinomiais, como o que pretendemos descrever,
foram publicados mais tarde.
O algoritmo que discutiremos no uma alternativa prtica para o Sim-
plex, mas tem profundas implicaes tericas (veja Schrijver [Sch86, Sch03]
e Grtschel-Lovsz-Schrijver [GLS88, GLS93]). Alm disso, algumas de suas
idias so teis em outros algoritmos polinomiais, como os algoritmo de pon-
tos interiores [Kar84, Gon89, Gon92], que esto ganhado aceitao na prtica.
133
Feofiloff cap. 14 Introduo aos algoritmos polinomiais 134
1
Mas as eventuais solues do problema podem ter componentes fracionrios.
Feofiloff cap. 14 Introduo aos algoritmos polinomiais 135
14.2 Reduo do CD ao PV
Suponha que dispomos de um algoritmo que resolve o problema PV. Como
esse algoritmo pode ser usado para resolver o problema CD?
A resposta relativamente simples desde que se conhea o teorema da du-
alidade. Para resolver o problema CD(A, c, b), basta encontrar um par y , x de
vetores tal que
yA c , Ax = b , x o e cx yb . (14.a)
Esta uma instncia do problema PV; para tornar isso mais claro, basta colocar
as restries na forma
yA c , e b,
xA xA
e b ,
xI o , yb + xc 0 . (14.b)
(Veja figura 14.1.) O lema da dualidade 8.1 garante que para todo par y , x que
satisfaz (14.a) o vetor y uma soluo do problema CD(A, c, b). Reciprocamente,
para toda soluo y do problema CD, o teorema da dualidade 8.5 garante a
existncia de um vetor x tal que o par y , x soluo de (14.a).
2
Uma definio mais realista deveria levar em conta o tempo total dispendido na execuo
de cada operao aritmtica; os algoritmos mencionados na introduo podem ser formulados de
modo que seu consumo total de tempo seja polinomial.
Feofiloff cap. 14 Introduo aos algoritmos polinomiais 136
y A O O O b
x O A A I c
c b b o 0
14.3 Reduo do PV ao V
Suponha que dispomos de um algoritmo A que resolve o problema V. Eis como
A pode ser usado para resolver o problema PV(A, c), ou seja, para encontar um
vetor y em Y (A, c):
Use A para decidir se Y (A, c) vazio. Se Y (A, c) no vazio, use A
repetidas vezes para determinar uma parte K de N que seja maximal
com relao seguinte propriedade:3 existe um vetor y tal que
yA c e yA [ , K] c [K] .4
(Veja a figura 14.2.) Seja A0 a matriz A [ , K] . Use o algoritmo de Gauss- A0
Jordan (captulo 2) para determinar matrizes F e G tais que F G = I e
GA0 escalonada. Seja P 0 a base de linhas e Q0 uma base de colunas de P0
GA0 . Seja w o nico vetor que satisfaz as equaes Q0
w
w (GA0 ) [ , Q0 ] = c [Q0 ] e w [M P 0 ] = o .
O vetor y = w G est em Y (A, c). 2
3
Ou seja, nenhum superconjunto prprio de K tem a propriedade.
4
Mas o algoritmo A no fornece o vetor y.
Feofiloff cap. 14 Introduo aos algoritmos polinomiais 137
y A A0
c c0
(c yA) [j]
(vA) [j]
para todo j em N K tal que (vA) [j] positivo. fcil verificar que yA+vA
c. Como (vA) [K] = (GA) [i, K] = o, temos
y A = w [P 0 ] (GA) [P 0 , ] e yA = w [P 0 ] (GA) [P 0 , ] .
14.4 Reduo do V ao PI
O problema PI (A0 , c0 ) consiste em encontrar um ponto interior do poliedro
Y (A0 , c0 ), ou seja, um vetor z tal que zA0 [ , j] < c0 [j] para cada j . Suponha que
dispomos de um algoritmo para o problema PI e queremos resolver o problema
da viabilidade para um sistema inteiro A, c. Adote as abreviaturas n = n(A) e
= (A, c) e faa
= n , A0 = A e c0 = c + u ,
Y (A , c + u)
Suponha por um momento que vale a segunda alternativa. Ento, por um lado,
onde a primeira desigualdade vale porque x0 no nulo, uma vez que cx0 no
nulo. Por outro lado,
0 = (A0 ) (c0 )
mn (A) n (c)
= mn+n
= n mn+n mn+n+1 ,
lg 0 = (mn + n) lg n + (mn + n + 1) lg .
14.5 Concluso
Este captulo mostrou como um algoritmo para o problema do ponto inte-
rior, PI , pode ser usado para resolver o problema cannico CD. O mtodo
consiste em uma reduo ao problema PV, seguida de uma reduo ao pro-
blema V, seguida de uma reduo ao problema PI . Se o algoritmo para o
problema PI (A0 , c0 ) tiver complexidade limitada por um polinmio em m(A0 ),
n(A0 ) e lg (A0 , c0 ) ento a complexidade do algoritmo resultante para o pro-
blema CD(A, c, b) ser limitada por um polinmio em m(A), n(A) e lg (A, c).
A menos de casos excepcionais,5 a complexidade do algoritmo de Yamnits-
ky-Levin (veja prximo captulo) para o problema PI (A0 , c0 ) limitada pelo po-
linmio
70 (m0 + 1)4 (m0 + n0 + 1) lg 0 ,
70 m6 n lg e 70 m5 n2 lg ,
onde m = m(A), n = n(A) e = (A, c, b). Esses clculos, ainda que grosseiros,
sugerem que nosso algoritmo dificilmente poder competir com o Simplex na
prtica.
5
Sistemas com menos que 7 + lg m(A0 ) componentes no-nulos.
Captulo 15
Algoritmo de Yamnitsky-Levin
141
Feofiloff cap. 15 Algoritmo de Yamnitsky-Levin 142
0 t 0 + + m tm ,
onde 0 , . . , m so nmeros no-negativos tais que 0 + + m = 1. Os m + 1
vetores que definem um tetraedro so os vrtices ou geradores do tetraedro.
O tetraedro gerado pelos vetores t0 , . . , tm ser denotado por [t0 , . . , tm ]. [t0 , . . , tm ]
Antes de definir o volume do tetraedro, convm ajustar nossa notao
de modo que M seja o conjunto {1, . . , m} e adotar a abreviatura M+0 =
{0, 1, . . , m}. Feito esse ajuste, seja T a matriz definida pelas equaes M+0
T
T [i, 0] = 1 e T [i, M ] = ti
para i = 0, . . , m. claro que T definida sobre M+0 M+0. Diremos que T a
matriz do tetraedro gerado pelos vetores t0 , . . , tm . Graas ao ajuste de notao,
a matriz quadrada.
O volume do tetraedro gerado por t0 , . . , tm , por definio, o valor abso- volume
luto do determinante da matriz do tetraedro. Se o valor absoluto de det(T ) for
denotado por absdet(T ), podemos dizer que
vol [t0 , . . , tm ] = absdet(T ) .
O volume do tetraedro no depende da ordem em que tomamos seus vrtices.
De fato, se T 0 a matriz do tetraedro gerado por uma permutao t00 , . . , t0m
de t0 , . . , tm ento existe uma matriz de permutao J tal que T 0 = JT ; como
det(T 0 ) = sig(J) det(T ) = det(T ), temos absdet(T 0 ) = absdet(T ).
O nmero vol [t0 , . . , tm ] /m! o volume do conjunto [t0 , . . , tm ] no sentido
geomtrico. Nossa definio de volume deixa de lado o fator 1/m! porque o
algoritmo de Yamnitsky-Levin s depende dos valores relativos dos volumes
de certos tetraedros.
1
A rigor, o termo tetraedro s apropriado quando m = 3. Quando m = 2, o tetraedro um
tringulo. Quando m = 1, o tetraedro se reduz a um intervalo.
Feofiloff cap. 15 Algoritmo de Yamnitsky-Levin 143
4 4 4 1 4 4 4
20 4 4 1 20 4 4
4 20 4 1 4 20 4
4 4 20 1 4 4 20
T [i, ] = ti t0 .
T = (GT ) [M, M ] ,
onde G a matriz elementar sobre M+0 M+0 com coluna saliente 0 definida
pelas equaes G [0, 0] = 1 e G [M, 0] = u, onde u o vetor de 1s (u [j] = 1 para
todo j ). De acordo com propriedade 10.3, det((GT ) [M, M ] ) = det(GT ), uma vez
que (GT ) [ , 0] = Gu = I [ , 0] . De acordo com o teorema 26,
a o e a A [i, ]
> 0.
0 1 , z0 A + 0 a c , 1 4 e |z0 | 8 ,
z0 A + a c , 1
e |z0 | 2
.
2
A expresso est entre e deve ser entendida como .
Feofiloff cap. 15 Algoritmo de Yamnitsky-Levin 146
zi A = z0 A + A [i, ] z0 A + a c
absdet( 1 Z)
= absdet( 1 I) = m
m ,
. 2
uma vez que
1 , z A + a c , 1 4 e |z | 8 ,
onde = (A)(a)(c).
claro que A0 definida sobre M+0 N+0; a notao est sendo ajustada de
modo que 0 no esteja em N . Sejam b0 e c0 os vetores definidos por
b0 [M ] = o , b0 [0] = 1 , c0 [N ] = c e c0 [0] = 0 .
y 0 A0 c0 , A0 x0 = b0 , x0 o , y 0 b0 = c0 x0 ,
|y 0 | 4 , |x0 | 4 ,
y 0 A0 c0 , y 00 A00 o , y 00 b0 1 ,
|y 0 | 4 , |y 00 | 4 .
= y 0 [0] = y 0 b0 = c0 x0 z 0 b0 = z 0 [0] = .
y 00 [0] = y 00 b0 1 e |z | |y 0 | + |y 00 | 8 .
Ademais, z A + a c pois y 0 A0 + y 00 A0 c0 . 2
Feofiloff cap. 15 Algoritmo de Yamnitsky-Levin 148
15.4 Algoritmo
O objetivo do algoritmo encontrar um ponto interior do poliedro Y (A, c). O al-
goritmo envolve o poliedro num tetraedro suficientemente grande,3 que ento
progressivamente encolhido. A cada iterao, o algoritmo verifica se o centro
do tetraedro um ponto interior do poliedro; em caso negativo, o tetraedro de-
formado de modo que continue envolvendo o poliedro mas sofra uma reduo
de volume. Quando o volume do tetraedro se torna suficientemente pequeno, o
algoritmo conclui que o poliedro no tem pontos interiores.
O algoritmo no se aplica a matrizes com menos que duas linhas; mas nesse
caso o problema pode ser resolvido por meios elementares (veja apndice deste
captulo).
= (A) (c) e = 4 2 .
Seja t?0 o vetor 4 u, onde u o vetor de 1s (ou seja, u [j] = 1 para todo j em M ). t?0
Para i = 1, . . , m, seja t?i o vetor t?i
4
u + 8
mI [i, ] .
C ASO 1: 1/ m .
1
Seja t o vetor m+1 (t0 + + tm ). t
C ASO 1.2A: A [ , k] = o .
Pare sem nada devolver.
C ASO 1.2B: A [ , k] 6= o .
Para cada i = 0, 1, . . , m, seja i o nmero (t ti ) A [ , k] .
Escolha h de modo que h seja mximo. h
3
Para efeito desta descrio informal, suponha que o poliedro limitado (veja exerccio 15.4,
pgina 159).
Feofiloff cap. 15 Algoritmo de Yamnitsky-Levin 149
1
Para i = 0, 1, . . , m, seja i o nmero 1 i .
m2 h
Sejam t00 , . . , t0m os vetores definidos pelas equaes t0h = th
1 1
e t0i = ti + (1 ) th para cada i distinto de h.
i i
Seja 0 o nmero Q h .
i i
Comece nova iterao com t00 , . . , t0m e 0 nos papis de t0 , . . , tm e .
C ASO 2: < 1/m .
Pare sem nada devolver. 2
O tetraedro gerado por t?0 , . . , t?m to grande que contm todos os even-
tuais vrtices de Y (A, c). Se Y (A, c) for limitado (veja exerccio 15.4,
pgina 159) ento Y (A, c) parte de [t?0 , . . , t?m ].
O nmero o volume do tetraedro gerado por t0 , . . , tm .
No caso 1.2B, o vetor t o centro do tetraedro gerado por t0 , . . , tm e o
nmero i a projeo do vetor t ti na direo A [ , k] .
A transformao de t0 , . . , tm em t00 , . . , t0m deixa fixo o vrtice th do te-
traedro e multiplica por 1/i a aresta que liga os vrtices ti e th .
CadaQi positivo e pode ser maior que 1 ou menor que 1. Mas o fator
h / i i estritamente menor que 1. Portanto, o volume 0 do novo
tetraedro estritamente menor que .
[ , i] = 1 I [ , i] ,
G [i, h] = 1 1 ,
G [h, h] = 1 ,
G
i i
onde as duas primeiras equaes valem para cada i distinto de h. (Veja a fi-
gura 15.2). A matriz est bem definida pois i 6= 0 para todo i, como veremos
adiante. Diremos que G a matriz de pivotao. fcil verificar que
T 0 = GT
(15.c)
0 0 0 0 0 1 0 1/0 0 0 0 0 1 1/0
0 1 0 0 0 1 1 0 1/1 0 0 0 1 1/1
0 0 2 0 0 1 2 0 0 1/2 0 0 1 1/2
0 0 0 3 0 1 3 0 0 0 1/3 0 1 1/3
0 0 0 0 4 1 4 0 0 0 0 1/4 1 1/4
0 0 0 0 0 1 0 0 0 0 0 1
15.5 Invariantes
Para compreender o algoritmo basta observar as seguintes propriedades invari-
antes
4
Se Y (A, c) for limitado ento (i1) afirma que Y (A, c) parte de [t0 , . . , tm ], pois nesse caso
Y (A, c) parte de [t?0 , . . , t?m ].
Feofiloff cap. 15 Algoritmo de Yamnitsky-Levin 151
Comecemos
P Pcom a seguinte observao. Em cada ocorrncia do caso 1.2B
temos
P i = (t ti )A [ , P
k] . Essa ltima expresso igual a (m+1)tA [ , k]
ti A [ , k] . Como (m+1)t = ti , temos necessariamente
P
i = 0 . (15.f)
Lema 15.6 Se (i2) e (i3) valem no incio de uma iterao em que ocorre
o caso 1.2B ento h > 0.
P
D EMONSTRAO : Como i = 0, a maximalidade de h garante que h
no negativo. Suponha por um instante que h nulo. Ento i = 0 para
todo i, donde tA [ , k] = ti A [ , k] para todo i, e portanto
t0 A [ , k] = t1 A [ , k] = = tm A [ , k] .
Como A [ , k] no nulo por definio do caso 1.2B, a propriedade 15.2 do volume
nulo garante que
vol [t0 , . . , tm ] = 0 .
Suponha que (i2) e (i3) valem no incio de uma iterao em que ocorre o
caso 1.2B. O lema que acabamos de mostrar, mais a maximalidade de h e a
hiptese m 2, permitem concluir que i est bem definido e tambm que m2
i > 0 (15.g)
P P
para
P todo i. Finalmente, convm calcular i . Como i = (m + 1) +
2
P
i /(m h ) e i = 0, temos
P
i = m + 1 . (15.h)
para todo vetor y. Logo, o poliedro Y (A, c) no tem ponto interior. Assim, ao
parar sem nada devolver, o algoritmo est se comportando da maneira prevista.
Feofiloff cap. 15 Algoritmo de Yamnitsky-Levin 152
m
vol [z0 /, . . , zm /] 1/
e, para cada i,
zi / Y (A, c) e |zi | 2
+ 1.
A ltima desigualdade garante que cada vetor zi / est no tetraedro gerado por
t?0 , . . , t?m . De fato,
zi [j] / (2
1)/ 2
1 4
para todo j em M e
P
j zi [j] / m(2
+ 1)/ m(2
+ 1) 4m
.
e observe que
D EMONSTRAO : Considere a matriz de pivotao G
= /Q .
det(G) h i
Diremos que esse nmero o fator de contrao da iterao e mostraremos que contrao
ele significativamente menor que 1. mais cmodo manipular o inverso do
fator de contrao. Mostraremos que o logaritmo desse inverso maior que o
nmero positivo 1 / 2(m + 1)2 .
0 k1 k (k ) k1 .
k = ( + k ) + ( )(k ) ( + k ) .
Segue da que
(k ) k1 ( + k ) k
= (0 + + k1 (k 1) + k ) k
= (0 + + k k) k .
i (1 + 1/m) (1 1/m2 )m .
Q
m lg
2 9/8 0.16992 0.055555
3 256/243 0.07518 0.031250
4 16875/16384 0.04259 0.020000
5 1990656/1953125 0.02745 0.013888
6 367653125/362797056 0.01918 0.010204
1 m 1 1
= (1 ) (1 )1 =
m2 m 2(m + 1)2
Observe agora que 1/m2 e 1/m esto entre 0 e 1, uma vez que m 2. Portanto, m2
o logaritmo da delimitao 15.9 produz as desigualdades
1 1
m ln 1 2
ln 1
m m
1 1 1 1 1 1 1
3
5
7
+ + 2
+ +
m 2m 3m 4m m 2m 3m3
1 1 1 1 1 1
= 2
1 + 3
1 2 + 4
1 3 +
2m m 3m m 4m m
1 1
> 1
2m2 m
m1
=
2m3
m1
>
2(m + 1)(m + 1)(m 1)
1
= .
2(m + 1)2
15.11 Concluso
O algoritmo de Yamnitsky-Levin recebe um sistema inteiro A, c e devolve um
ponto interior do poliedro Y (A, c) se tal ponto existir. O nmero de operaes
aritmticas que o algoritmo executa no pior caso est na ordem de
m4 (m + n) lg ,
onde o produto de todos os nmeros da forma 1+ sendo o valor absoluto
de um componente do sistema A , c.
Infelizmente, nossa anlise no leva em conta o custo de cada operao arit-
mtica; esse custo considervel, pois os nmeros envolvidos podem ter nu-
meradores e denominadores enormes. possvel reescrever o algoritmo, com
a introduo de arredondamentos apropriados [GLS88, p.80] [GLS93] [Sch86,
p.166], de modo que o consumo total de tempo que leva em conta o custo de
cada operao aritmtica ainda seja limitado por um polinmio em m, n e
lg .
C ASO 1: 1 .
Seja t o nmero 12 t0 + 12 t1 .
C ASO 1.1: ta [k] < c [k] para cada k em N .
Devolva t e pare.
C ASO 1.2: ta [k] c [k] para algum k em N .
C ASO 1.2A: a [k] = 0 .
Pare sem nada devolver.
C ASO 1.2B: a [k] 6= 0 .
Sejam 0 e 1 os nmeros (t t0 ) a [k] e (t t1 ) a [k] respectivamente.
Defina t00 e t01 da seguinte maneira:
se 0 0 ento t00 = t0 e t01 = t seno t01 = t1 e t00 = t.
Seja 0 o nmero /2.
Comece nova iterao com t00 , t01 e 0 nos papis de t0 , t1 e .
Feofiloff cap. 15 Algoritmo de Yamnitsky-Levin 158
C ASO 2: < 1 .
Pare sem nada devolver. 2
t0 + (1 )t1 = y .
preciso mostrar que existe 0 entre 0 e 1 tal que y = 0 t00 + (1 0 )t01 . Como
estamos no caso 1.2, temos ta [k] c [k] . Como ya [k] c [k] , vale um das alterna-
tivas:
t0 a [k] c [k] t1 a [k] ou t0 a [k] c [k] t1 a [k] .
0 0 1 .
0 t00 + (1 0 )t01 = t0 + (1 t1 ) = y .
z 0 + 1 z1 , z0 a c e z1 a c ,
Exerccios
15.1 Verifique a proposio 15.1 (frmula do volume) e a proposio 15.2 (do
volume nulo) no caso m = 1 e no caso m = 2.
15.2 D uma prova elementar do teorema 15.4 (tetraedro interior) no caso |M | =
|N | = 1. Enuncie o teorema 15.4 e o lema 15.5 no caso |M | = 1 (e N
arbitrrio); demonstre essas verses especializadas.
15.3 Suponha que Y (A, c) tem um ponto interior. Mostre que Y (A, c) contm
um cubo suficientemente grande. Mais especificamente, mostre que existe
e um vetor inteiro z tais que |z | 4
um inteiro entre 1 e 2 e
(z + v)A c
Apndices
160
Apndice A
Simplex Dual
O algoritmo Simplex (secao 6.3) foi criado para resolver o problema cannico
primal (seo 7.1). O algoritmo Simplex Dual, que esboaremos neste apndice,
resolve o problema cannico dual. Para evitar confuso, passaremos a nos refe-
rir ao primeiro algoritmo como Simplex Primal. Simplex
Primal
O Simplex Primal procura, primeiro, estabelecer a desigualdade E [ , n] o
e, depois, a desigualdade E [m, ] o. Para fazer isso, examina uma nova linha
da matriz em cada iterao. O Simplex Dual, ao contrrio, examina uma nova
coluna da matriz em cada iterao e procura, primeiro, estabelecer a desigual-
dade E [m, ] o e s depois a desigualdade E [ , n] o. Ambos os algoritmos
fazem pivotao de linhas, isto , em cada iterao somam a cada linha de E
uma combinao linear apropriada das outras linhas.
161
Feofiloff ap. A Simplex Dual 162
k Q n
0 0 1
0 1 0
1 0 0
0 0 0 0
0 0 0 0
0 0 0 0
m < 0 0 0
< h
Q n
0 0 1
P 0 1 0
1 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0
m 0 0 0
f [k]
f0 = f E [p, ] .
E [p, k]
fcil verificar que f 0 [Q0 ] nulo e portanto a primeira parte de (i0) vale. Resta
considerar a segunda parte de (i0), supondo satisfeita a condio (A.a). claro
que f 0 [q] f [q] . De modo mais geral, para cada j em N n, temos f 0 [j] f [j] se
E [p, j] 0 e f 0 [j] f [j] em caso contrrio. Portanto, para garantir f 0 [N n] o
necessrio e suficiente que k satisfaa a condio
f [k]
f [j] E [p, j] (A.b)
E [p, k]
Feofiloff ap. A Simplex Dual 164
2 1 1 1 0 0 5
4 1 2 0 1 0 11
3 4 5 0 0 1 8
3 1 0 0 0 0 0
2 1 1 1 0 0 5
6 0 3 1 1 0 6
11 0 1 4 0 1 12
5 0 1 1 0 0 5
13 1 0 5 0 1 17
39 0 0 13 1 3 30
11 0 1 4 0 1 12
16 0 0 5 0 1 17
C ASO 0: E [M mP, n] 6= o .
Devolva F e G e pare (E dual-simples ilimitada).
C ASO 1: E [M mP, n] = o e E [p, n] < 0 para algum p em P .
Seja K o conjunto de todos os k em N n para os quais E [p, k] < 0.
C ASO 1A: K vazio .
Devolva F e G e pare (E dual-simples ilimitada).
C ASO 1B: K no vazio .
Escolha k em K de modo que f [k] /E [p, k] seja mximo.
Seja F 0 , G0 , E 0 o resultado da pivotao de F, G, E em torno de p, k.
Seja q um elemento de Q tal que E [p, q] = 1.
Comece nova iterao com Q q + k, F 0 , G0 e E 0
nos papis de Q, F , G e E .
C ASO 2: E [M mP, n] = o e E [P, n] o .
Devolva F e G e pare (E dual-simples solvel). 2
f [k]
f 0 [n] = f [n] E [p, n] f [n] ,
E [p, k]
sendo f 0 = E 0 [m, ] , pois E [p, n] e E [p, k] so negativos e f [k] 0. Portanto, numa f0
seqncia de ocorrncias do caso 1B, a correspondente seqncia de valores de
f [j] monotnica. Se for estritamente monotnica, a seqncia ser finita, pois
os valores correspondentes da varivel Q sero todos distintos. Infelizmente, a
monotonia pode no ser estrita e a heurstica pode no convergir.
Feofiloff ap. A Simplex Dual 166
1 0 0 0 6 1 2 4 1 0 0 14
0 1 0 0 3 2 1 5 0 1 0 25
0 0 1 0 2 1 0 2 0 0 1 14
0 0 0 1 5 3 3 6 0 0 0 0
Exerccios
A.1 Mostre que os trs tipos de matriz dual-simples so disjuntos (assim, por
exemplo, uma matriz dual-simples solvel com relao a m, n no pode
ser, ao mesmo tempo, dual-simples invivel).
A.2 Escreva uma verso completa da heurstica Simplex Dual. A heurstica
deve receber uma matriz arbitrria D sobre M N e elementos m e n
de M e N respectivamente; se convergir, deve devolver matrizes F e G
tais que F G = I , G [ , m] = I [ , m] e a matriz GD dual-simples (solvel,
invivel ou ilimitada) com relao ao par m, n.
A.3 Escreva e analise o algoritmo Simplex Dual com regra lexicogrfica. Es-
creva e analise o algoritmo Simplex Dual com regra de Bland.
Apndice B
Anlise de sensibilidade
claro que y soluo do problema CD(A, c, b). claro que o vetor bsico x do
sistema GA, Gb, c yA soluo do problema CP(A, b, c). Ademais, cx = yb.
Diremos que esse nmero o valor timo do par de problemas.
Suponha agora que b substitudo por um vetor b, ligeiramente diferente.
Quo prximo b deve estar de b para que o sistema GA, Gb, c yA seja simples
solvel e tenha a mesma base Q de colunas?
Suponha, em seguida, que c substitudo por um vetor ligeiramente dife-
rente c. Quo prximo c deve ser de c para que o sistema GA, Gb, c yA seja
simples solvel, com base de colunas Q, para algum y?
169
Feofiloff ap. B Anlise de sensibilidade 170
Variao de um componente de b
Suponha que b difere de b em apenas um componente: b [m] = b [m] + para
algum m em M e b [i] = b [i] para todo i distinto de m.
G [p, m] G [p, ] b
yb = yb + y [m] .
Quanto ao problema CP(A, b, c), este ter por soluo o vetor bsico, digamos
, do sistema GA, Gb, c yA. claro que c
x x = yb.
Fato Se (yAc) [n] ento o sistema GA, Gb, cyA simples solvel
com base de colunas Q.
Feofiloff ap. B Anlise de sensibilidade 171
Variao de c na base
Suponha que c s difere de c em um elemento de Q. Mais especificamente,
suponha que c[n] = c [n] + para algum n em Q e c[j] = c [j] para todo j distinto m
de n. Seja m o nico elemento de P tal que (GA) [m, n] = 1. m
(
y A) [k] = (yA) [k] + E [m, k] .
y A) [N Q] c[N Q] .
(
Segue da e de (B.b) que o sistema GA, Gb, c yA simples e tem base de colu-
nas Q. 2
bvio que o lado esquerdo das restries sobre pode ser vazio; o lado
direito tambm pode ser vazio. claro tambm que as restries esto satisfeitas
quando = 0.
Feofiloff ap. B Anlise de sensibilidade 172
B.2 Exemplo
Retomemos o exemplo discutido na seo 7.5 do captulo 7. Para convenincia
do leitor, vamos repetir a descrio do problema. Imagine que uma empresa
fabrica quatro modelos de um produto. Cada produto passa por dois estgios
de fabricao. O primeiro estgio dispe de no mais que 600 homens-hora e o
segundo de no mais que 400 homens-hora. Digamos que o nmero de homens-
hora necessrios, em cada estgio, para a fabricao de cada modelo do produto
impe as seguintes restries:
4x1 + 9x2 + 7x3 + 10x4 600 ,
1x1 + 1x2 + 3x3 + 40x4 400 ,
onde xi o nmero de unidades do modelo i. Queremos planejar a produo
de modo a maximizar o lucro total, que dado por 12x1 + 20x2 + 18x3 + 40x4 .
Nosso problema equivale ao problema cannico primal CP(A, b, c) com A,
b e c descritos na figura B.1. Seja G a matriz e y o vetor descritos na figura B.2.
4 9 7 10 1 0 600
1 1 3 40 0 1 400
12 20 18 40 0 0
4/15 1/15
1/150 4/150
44/15 4/15
4 9 7 10 1 0 + 600
1 1 3 40 0 1 400
12 20 18 40 0 0
O sistema GA, Gb, c yA (figura B.3) simples solvel; sua base composta
pelas colunas 1 e 4. Portanto, um plano de produo timo requer a fabricao
de apenas dois modelos:
1 1
x1 = 3 400 , x2 = x3 = 0 , x4 = 3 20 , x5 = x6 = 0 . (B.c)
1 1
x
1 = 3 400 + 15 4 , x
2 = x
3 = 0 ,
1 1
x
4 = 3 20 150 , x
5 = x
6 = 0 .
x = 31 5600
Com este plano de produo teremos c 1
15 44 .
Suponha a seguir que b permanece constante mas c substitudo por um
vetor c. Digamos que c2 = c2 + e c coincide com c em todos os componentes.
fcil verificar que se 13 20 ento o sistema GA, Gb, c yA simples solvel.
O plano de produo x descrito em (B.c) continua timo e e cx continua valendo
31 5600.
Suponha, finalmente, que c1 = c1 + e c coincide com c em todos os demais
componentes (figura B.6). Seja y o vetor especificado na figura B.7. claro que
o sistema GA, Gb, c yA (figura B.8) simples solvel desde que 4 2.
O vetor x descrito em (B.c) continua sendo um plano de produo timo e cx =
13 5600 + 13 400 .
Feofiloff ap. B Anlise de sensibilidade 174
4 9 7 10 1 0 600
1 1 3 40 0 1 400
12 20 18 40 0 0
4/15 1/15
1/150 4/150
4/15 44/15 /15 4/15
fcil verificar que o conjunto B convexo, ou seja, que para todo par b1 , b2 conjunto
de elementos de B e todo par 1 , 2 de nmeros no-negativos, se 1 + 2 = 1 convexo
ento 1 b1 + 2 b2 est em B. Eis a demonstrao desse fato. Suponha que x1
um vetor em X(A, b1 ) e x2 um vetor em X(A, b2 ). Para qualquer par 1 , 2 com
as propriedades acima, seja b0 o vetor 1 b1 + 2 b2 e x0 o vetor 1 x1 + 2 x2 . Ento
x0 o e Ax0 = 1 Ax1 + 2 Ax2 = 1 b1 + 2 b2 = b0 , donde x0 est em X(A, b0 ).
A existncia de um tal x0 mostra que b0 est em B.
igualmente fcil verificar que o conjunto C convexo, ou seja, que para
todo par c1 , c2 de elementos de C e todo par 1 , 2 de nmeros no-negativos,
se 1 + 2 = 1 ento 1 c1 + 2 c2 est em C .
Mostraremos a seguir que, quando o segundo parmetro est fixo, a funo
convexa, contnua e linear por trechos.
(1 b1 + 2 b2 , c) 1 (b1 , c) + 2 (b2 , c) .
Por definio, (b, c) = maxy yb para y variando em Y (A, c). Mas possvel
dizer mais: existe uma parte finita Y 0 de Y (A, c) tal que (b, c) = maxy yb para
y variando em Y 0 .
(b, c) = max { y1 b, y2 b, . . , yk b }
para todo b em B.
cxb = maxQ yQ b ,
x [N Q] = o e GQ Ax = GQ b .
para todo c em C .
B.4 Concluso
Para qualquer matriz fixa A, os problemas cannicos CP(A, b, c) e CD(A, c, b)
tm soluo se e s se o par b, c est em B C , onde B o conjunto dos vetores
b para os quais X(A, b) no vazio e C o conjunto dos vetores c para os quais
Y (A, c) no vazio.
Feofiloff ap. B Anlise de sensibilidade 177
178
Feofiloff ap. C Poliedro cannico primal 179
Proposio C.2 Para qualquer parte finita Z de X(A, b), toda combina-
o convexa de elementos de Z est em X(A, b).
D EMONSTRAO : Digamos
P que os elementos de Z so z1 , . . , zk e considere
uma combinao convexa i zi . Como Azi = b para todo i,
P P P P
A( i zi ) = i Azi = i b = ( i ) b = b ,
Feofiloff ap. C Poliedro cannico primal 180
P P
uma vez que i = 1.PPor outro lado, i zi 0, uma vez que i 0 e zi o
para todo i. Portanto, i zi est em X(A, b). 2
C.3 Vrtices
A folga, ou suporte, de um elemento x de X(A, b) o conjunto de todos os folga
ndices j em N para os quais x [j] > 0. A folga de x ser denotada por suporte
S(x) .
Um vetor x em X(A, b) bsico se sua folga S(x) minimal, ou seja, se no vetor bsico
existe x0 em X(A, b) tal que S(x0 ) S(x). Vetores bsicos de X(A, b) tambm
so conhecidos como vrtices. bvio que todo poliedro no-vazio X(A, b) tem
pelo menos um vrtice.
0 0 0 1 1 0 1 0 9
0 0 1 0 3 0 1 2 8
0 1 0 0 4 7 1 3 7
1 0 0 0 3 6 1 1 6
6 7 8 9 0 0 0 0
5 8 7 8 0 0 1 0
0 0 8 9 0 1 0 0
u [S] 6= o e u [N S] = o ,
onde S uma abreviatura para S(x). A existncia de um tal vetor u mostra que
S ld.
Agora considere a recproca. Suponha que x est em X(A, b) e S(x) ld.
Ento existe um vetor u tal que
Au = o , u [S] 6= o e u [N S] = o ,
para todo j em S tal que u [j] > 0. Observe agora que x u o. De fato, se
u [j] > 0 ento x [j] u [j] 0 em virtude da maneira como foi definido e se
u [j] 0 ento x [j] u [j] 0 uma vez que 0.
Como x u 0 e A(x u) = Ax Au = Ax = b, o vetor x u est
em X(A, b). Por outro lado, como u [j] = 0 sempre que x [j] = 0, temos
S(x u) S .
Ademais, a incluso estrita, uma vez que (C.a) vale com igualdade para algum
j em S . Concluimos assim que S no minimal e portanto x no bsico. 2
Fato C.5 Se o problema CP(A, b, c) tem soluo ento alguma das solu-
es um vrtice de X(A, b).
Cada iterao da segunda fase do algoritmo Simplex (seo 4.2, pgina 43)
comea, implicitamente, com um vrtice de X(A, b). Se o vrtice no for satis-
fatrio, o algoritmo caminha para um dos vrtices vizinhos. Os mecanismos
de convergncia como a regra lexicogrfica e a regra de Bland discutidos no
captulo 5 evitam que um mesmo vrtice seja examinado mais de uma vez.
A execuo do algoritmo termina ao encontrar um vrtice que seja soluo do
problema (ou ao constatar que o problema invivel ou ilimitado).
onde S uma abreviatura para S(x). preciso investigar agora para que valores
de o vetor x u est em X(A, b). claro que A(x u) = b para qualquer ;
resta estudar a validade de x u 0.
Suponha por um instante que u o. Ento, para qualquer positivo, o
vetor x u estar em X(A, b). Como u [j] 6= 0 para algum j , o valor de (x
u) [j] ser tanto maior quanto maior for , e isso inconsistente com o carter
limitado de X(A, b). foroso concluir, portanto, que u tem pelo menos um
componente positivo.
A partir daqui os clculos so iguais aos da demonstrao da proposio C.3.
Seja o maior nmero que satisfaz a restrio
x [k] /u [k]
para todo k em S tal que u [k] > 0. No difcil verificar que x u est em
X(A, b). Tambm fcil constatar que S(xu) S . Nossa hiptese de induo
garante ento que x u uma combinao convexa de vrtices.
Um raciocnio paralelo ao que acabamos de fazer permite concluir que u
tem pelo menos um componente negativo e portanto existe um nmero 0 tal
que x + 0 u est em X(A, b) e S(x + 0 u) S(x). A partir da, nossa hiptese
de induo garante que x + 0 u uma combinao convexa de vrtices.
0
Como x combinao convexa de x u e x + 0 u (de fato, x = +
0 (x
0
u) + +0 (x + u)), e esses dois vetores so combinaes convexas de vrtices,
tambm x combinao convexa de vrtices. 2
Exerccios
C.1 Suponha que W um conjunto finito de vetores sobre N e c um vetor
sobre N . Mostre que o mnimo de cx para x em [W ] igual ao mnimo de
cw para w em W .
C.2 Um conjunto li K maximal se nenhum superconjunto prprio de K
li. Mostre que todos os conjuntos li maximais tm a mesma cardinalidade
(veja exerccio 2.11).
Mas (vA) [N K] 6= o, uma vez que vA = (GA) [i, ] 6= o. Assim, vale a alterna-
tiva (2).
Resta mostrar que as duas alternativas no podem ser simultaneamente
verdadeiras. Suponha que vale a alternativa (1). Seja E a matriz escalonada
GA, seja P a base de linhas de E e seja Q uma base de colunas de E tal que
185
Feofiloff ap. D Poliedro cannico dual 186
Q K . Tome qualquer vetor v tal que (vA) [K] = o e seja w o vetor vF . Como
E [M P, ] = O, temos
w [P ] E [P, ] = wE = vF GA = vA .
Em particular, w [P ] E [P, Q] = (vA) [Q] . Mas (vA) [Q] = o uma vez que Q K .
Logo,
w [P ] = o ,
Proposio D.2 Para qualquer parte finita Z de Y (A, c), toda combina-
o convexa de elementos de Z est em Y (A, c).
P
D EMONSTRAO : Seja i zi uma combinao convexa dos elementos
de Z . Como zi A c e i 0 para todo i,
P P P P
( i zi )A = i zi A i c = ( i ) c = c ,
A proposio D.2 mostra que [Z] Y (A, c) para toda parte finita Z de
Y (A, c), onde [Z] a envoltria convexa de Z . Em certas circunstncias,
Y (A, c) = [Z] para um certo conjunto finito Z . A caracterizao de um tal Z
o principal objetivo deste apndice.
Feofiloff ap. D Poliedro cannico dual 187
S(y) .
(vA) [N S] = (yA) [N S] (y 0 A) [N S] = c [N S] c [N S] = o .
uma vez que (yA) [k] < c [k] enquanto (y 0 A) [k] = c [k] . Assim, de acordo com a
proposio D.1, N S no um gerador de A.
Agora considere a recproca. Seja y um vetor em Y (A, c) e suponha que
N S no gerador de A, onde S S(y). Ento existe um vetor v tal que
Ajuste a notao, trocando v por v se necessrio, de modo que (vA) [j] > 0
para algum j em S . Seja o maior nmero tal que
(c yA) [j]
(D.a)
(vA) [j]
para todo j em S tal que (vA) [j] > 0. fcil verificar que yA+vA c. De fato,
se (vA) [j] > 0 ento (yA) [j] + (vA) [j] c [j] em virtude da maneira como foi
escolhido; e se (vA) [j] 0 ento (yA) [j] + (vA) [j] c [j] uma vez que 0.
Portanto, y + v est em Y (A, c). Por outro lado, como (vA) [j] = 0 sempre que
(yA) [j] = c [j] , temos
S(y + v) S .
Ademais, a incluso estrita, uma vez que (D.a) vale com igualdade para algum
j em S . Logo, S no minimal e portanto y no bsico. 2
Feofiloff ap. D Poliedro cannico dual 188
(vA) [N S] = (zA) [N S] (z 0 A) [N S] = c [N S] c [N S] = o ,
Uma face minimal de Y (A, b) o conjunto de todos os vetores bsicos que face minimal
tm uma mesma folga. Assim, dois vetores bsicos, digamos z e z 0 , pertencem
mesma face minimal se e s se S(z) = S(z 0 ). O corolrio D.4 mostra que z e
z 0 esto na mesma face minimal se e s se zA = z 0 A. Toda face minimal um
conjunto afim, no seguinte sentido.
Se uma face minimal contm um nico vetor diremos que esse vetor um
vrtice de Y (A, c). Em outras palavras, um vetor bsico z um vrtice se o vrtice
conjunto unitrio {z} uma face minimal.
Se o conjunto de linhas de A li ou seja, se existe uma matriz G tal que
GA escalonada e tem base de linhas M ento a igualdade zA = z 0 A implica
em z = z 0 , e portanto todo vetor bsico um vrtice.
Fato D.6 Se o problema CD(A, c, b) tem soluo ento alguma das solu-
es um vetor bsico de Y (A, c).
Fato D.7 Para todo vetor bsico z de Y (A, c), existe um vetor b tal que
os vetores da face minimal que contm z so as nicas solues do pro-
blema CD(A, c, b).
(c yA) [j]
(vA) [j]
Exerccios
D.1 Suponha que W um conjunto finito de vetores sobre M e b um vetor
sobre M . Mostre que o mximo de yb para y em [W ] igual ao mximo de
yw para w em W .
Feofiloff ap. D Poliedro cannico dual 191
Exerccios resolvidos
192
Feofiloff ap. E Exerccios resolvidos 193
E, G, D, I, o
para h 1 at m faa
k1
enquanto k n e E[h, k] = 0 faa k k + 1
se k n ento
E[h, k]
para j 1 at m faa G[h, j] G[h, j]/
para j 1 at n faa E[h, j] E[h, j]/
para i 1 at m faa
se i 6= h ento
E[i, k]
para j 1 at m faa G[i, j] G[i, j] G[h, j]
para j 1 at n faa E[i, j] E[i, j] E[h, j]
[h] k
para j 1 at m faa gera matriz F
se [j] = 0 ento
para i 1 at m faa F [i, j] 0
F [j, j] 1
seno
para i 1 at m faa F [i, j] D[i, [j]]
E [P 0 , Q2 ] x = o e x [q2 ] = 1 . (E.b)
E [P P 0 , q2 ] = o . (E.c)
GD2 x = o , (E.d)
G2 D2 x = o .
|Q2 | |Q1 | .
(c gA) [Q] = o ,
E, G, , h D, I, o, 1
repita primeira fase
k1 k2 n
se E[h, n] 0 ento
k1 0
repita k1 k1 + 1
at que k1 = n ou E[h, k1 ] > 0
se E[h, n] 0 ento
k2 0
repita k2 k2 + 1
at que k2 = n ou E[h, k2 ] < 0
k min (k1 , k2 )
se k < n ento
p L INHA -M NIMA (h, k)
se E[p, n]/E[p, k] E[h, n]/E[h, k] ento
P IVOTAO (h, k)
hh+1
seno P IVOTAO (p, k)
seno
se E[h, n] = 0 ento h h + 1
seno pare (h linha de inviabilidade)
at que h = m
fim da primeira fase e incio da segunda
repita
k0
repita k k + 1
at que k = n ou E[m, k] < 0
se k < n ento
p L INHA -M NIMA (m, k)
se p = m ento pare (k coluna de ilimitao)
seno P IVOTAO (p, k)
at que k = n
Figura E.3: A funo L INHA -M NIMA (usada no cdigo da figura E.2) recebe
ndices h e k e devolve p entre 1 e h1 tal que E[p, k] positivo e E[p, n]/E[p, k]
mnimo; se tal p no existe, a funo devolve h.
P IVOTAO (h, k)
E[h, k]
para j 1 at m faa
G[h, j] G[h, j]/
para j 1 at n faa
E[h, j] E[h, j]/
para i 1 at m faa
se i 6= h ento
E[i, k]
para j 1 at m faa
G[i, j] G[i, j] G[h, j]
para j 1 at n faa
E[i, j] E[i, j] E[h, j]
[h] k k entra na base
Figura E.4: A funo P IVOTAO (usada no cdigo da figura E.2) recebe ndi-
ces h e k e executa uma pivotao de G, E em torno de h, k.
q q n
h 1 >
m 0
Exerccios
E.1 Aplique a heurstica Simplex s matrizes descritas abaixo.
2 2 2 2 2 0 2 2 2 2 2 0
2 1 0 1 2 0 2 1 0 1 2 0
E.2 Mostre como eliminar o processo iterativo dentro do caso 3 mediante uma
escolha criteriosa de k.
Referncias Bibliogrficas
[Bla77] R. Bland. New finite pivoting rules for the simplex method. Mathe-
matics of Operations Research, 2:103107, 1977. 62
[Chi53] F. Chio. Mmoire sur les fonctions connues sous le nom de rsultantes
ou de dterminants. Turin, 1853. 111, 117
199
Feofiloff Referncias Bibliogrficas 200
base, 65 Dantzig, 69
de colunas, 13, 27 decrescente, 37, 47
de linhas, 13, 27 delimitao do determinante
de matriz escalonada, 13 produto de produtos, 120
de matriz simples, 27 produto de somas, 108, 119
Beale, 49 det( ), 103
bijeo (matriz de), 7 determinante, 103
202
Feofiloff ndice Remissivo 203
tamanho
de matriz, 134
de sistema, 129, 131
de vetor, 134
teorema
da dualidade, 83, 93
dados inteiros, 130
forte, 83, 93
fraco, 78, 90
do produto de determinantes, 107
terminologia tradicional, 32, 70, 74
tetraedro, 142
transposta, 6
Alfabeto grego
A alfa I iota P r
B beta K kapa sigma
gama lambda T tau
delta M m upsilon
E epsilon N n fi
Z zeta ksi X qui
H eta o O micron psi
tta pi mega