Você está na página 1de 215

ALGORITMOS

DE
PROGRAMAO
LINEAR
Programao Linear Concreta
Paulo Feoloff
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
O problema bsico de programao linear
1
consiste no seguinte: dada uma matriz
A e vetores b e c, encontrar um vetor x tal que
x 0 , Ax = b e cx mnimo .
O livro discute este problema, suas variantes e generalizaes, e a correspon-
dente teoria da dualidade.
O que. Nosso ponto de partida o algoritmo de Gauss-Jordan e o algo-
ritmo Simplex. Toda a teoria da programao linear deduzida desses dois
algoritmos. Do ponto de vista do Simplex, o problema bsico tem a seguinte
forma: transformar uma matriz dada (a matriz resulta da justaposio de A, b
e c) em outra equivalente que contenha um certo padro ou desenho.
Examinaremos tambm um representante da famlia de algoritmos polino-
miais de programao linear que surgiu em meados da dcada . O al-
goritmo que discutiremos uma variante do clebre algoritmo do elipside
no uma alternativa prtica para o Simplex,
2
mas tem profundas implicaes
tericas.
O livro no trata dos aspectos mais prticos da programao linear. Assim,
por exemplo, o livro no se ocupa das implementaes aproximadas do Simplex,
que representam nmeros racionais em notao ponto utuante; em particu-
lar, o livro no trata das heursticas que procuram reduzir os erros de arredon-
damento de tais implementaes. O livro tambm no trata das diculdades
prticas associadas com a manipulao de matrizes muito grandes, nem de al-
goritmos especiais para matrizes esparsas.
3
Finalmente, o livro no trata de
modelagem, que a arte de reduzir certos problemas de otimizao a problemas
de programao linear. Todos esses tpicos so muito importantes na prtica,
mas esto alm dos objetivos do livro (e da competncia do autor).
Como. A atitude do livro mais matemtica e conceitual que tecnolgica.
Em outra dimenso, a atitude mais algbrica que geomtrica. O enfoque
1
Neste contexto, o termo programao signica 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
Feoloff ii
algortmico: toda a teoria derivada dos algoritmos, particularmente do Simplex.
Os algoritmos so descritos de maneira precisa, em linguagem razoavel-
mente informal. Para tornar isso possvel, necessrio introduzir denies
limpas para os conceitos de matriz e vetor e uma notao sucientemente pode-
rosa para descrever partes desses objetos.
O livro procura dizer com preciso o que cada algoritmo faz e no apenas
como faz o que faz. O comportamento dos algoritmos descrito por meio de
invariantes, e o seu desempenho de pior caso analisado.
O universo natural da programao linear o dos nmeros racionais. O livro
supe, portanto, que dispomos de um agente computacional capaz de executar
aritmtica racional. Uma das verses do Simplex (captulo 12 manipula emsepa-
rado os numeradores e denominadores dos nmeros racionais e portanto s usa
aritmtica inteira. Segue da uma verso do Teorema da Dualidade que especi-
ca delimitaes superiores para o nmero de dgitos das solues do problema
de programao linear.
O livro evita o uso indiscriminado de ferramentas da lgebra linear, porque
tais ferramentas so, em geral, mais sosticadas que as situaes concretas que
preciso enfrentar. O livro evita tambm as hipteses simplicadoras (por
exemplo, a hiptese de que nossas matrizes tm posto pleno e a hiptese de
que dispomos de uma soluo vivel ao iniciar a execuo do Simplex) to
comuns em outros textos sobre o assunto. Tais hipteses pouco contribuiriam
para simplicar a discusso.
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:
The course title Concrete Mathematics was originally intended as an antidote
to Abstract Mathematics [. . . ]. Abstract mathematics is a wonderful subject,
[. . . ] But [. . . ] The goal of generalization had become so fashionable that a
generation of mathematicians has become unable to relish beauty in the parti-
cular, to enjoy the challenge of solving quantitative problems, or to appreciate
the value of technique.
Dados tcnicos. Aelaborao do livro contou como 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
Feoloff iii
L
A
T
E
X nas instalaes do Instituto de Matemtica e Estatstica da Universidade
de So Paulo. Informaes atualizadas sobre o texto podero ser encontradas no
endereo http://www.ime.usp.br/~pf/prog-lin/ da teia WWW.
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
Feoloff 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 lexicogrca . . . . . . . . . . . . . . . . . . . . . . . . . . 50
5.2 Regra lexicogrca . . . . . . . . . . . . . . . . . . . . . . . . . . . 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
6 Forma tradicional do Simplex 64
6.1 Sistemas matriz-vetor-vetor . . . . . . . . . . . . . . . . . . . . . . 64
6.2 Sistemas simples . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
6.3 Algoritmo Simplex . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
6.4 Invariantes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
6.5 Concluso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
II Programao Linear 68
7 Problema cannico primal 69
7.1 Denio do problema . . . . . . . . . . . . . . . . . . . . . . . . . 69
7.2 Problemas simples . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
7.3 O Simplex resolve o problema . . . . . . . . . . . . . . . . . . . . . 73
7.4 Concluso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
7.5 Exemplo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
8 Problema cannico dual 77
8.1 Denio do problema . . . . . . . . . . . . . . . . . . . . . . . . . 77
8.2 Lema da dualidade . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
8.3 Vetores de inviabilidade . . . . . . . . . . . . . . . . . . . . . . . . 80
Feoloff SUMRIO vi
8.4 Algoritmo baseado no Simplex . . . . . . . . . . . . . . . . . . . . 81
8.5 Teorema da dualidade . . . . . . . . . . . . . . . . . . . . . . . . . 83
8.6 Concluso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
8.7 Apndice: Uma interpretao do Simplex . . . . . . . . . . . . . . 84
8.8 Apndice: Problema do vetor vivel . . . . . . . . . . . . . . . . . 85
9 Problema geral 87
9.1 Denio 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
III Algoritmos para Dados Inteiros 99
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
11 Algoritmo de Gauss-Jordan-Chio 111
11.1 Algoritmo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
11.2 Anlise: preliminares . . . . . . . . . . . . . . . . . . . . . . . . . . 112
11.3 Anlise: invariante principal . . . . . . . . . . . . . . . . . . . . . . 116
11.4 Delimitao dos nmeros gerados . . . . . . . . . . . . . . . . . . 119
11.5 Aplicao a matrizes inteiras . . . . . . . . . . . . . . . . . . . . . 120
11.6 Concluso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
12 Algoritmo Simplex-Chio 124
12.1 Algoritmo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
12.2 Anlise . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
12.3 Aplicao a matrizes inteiras . . . . . . . . . . . . . . . . . . . . . 126
12.4 Concluso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128
13 Problemas com dados inteiros 129
Feoloff SUMRIO vii
13.1 Sistemas de equaes . . . . . . . . . . . . . . . . . . . . . . . . . . 129
13.2 Problemas cannicos . . . . . . . . . . . . . . . . . . . . . . . . . . 130
13.3 Concluso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
IV Algoritmos Polinomiais 132
14 Introduo aos algoritmos polinomiais 133
14.1 Problemas CD, PV, V e PI . . . . . . . . . . . . . . . . . . . . . . . 134
14.2 Reduo do CD ao PV . . . . . . . . . . . . . . . . . . . . . . . . . 135
14.3 Reduo do PV ao V . . . . . . . . . . . . . . . . . . . . . . . . . . 136
14.4 Reduo do V ao PI . . . . . . . . . . . . . . . . . . . . . . . . . . 138
14.5 Concluso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140
15 Algoritmo de Yamnitsky-Levin 141
15.1 Denies bsicas . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
15.2 Tetraedros e seus volumes . . . . . . . . . . . . . . . . . . . . . . . 142
15.3 Teorema do tetraedro interior . . . . . . . . . . . . . . . . . . . . . 144
15.4 Algoritmo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148
15.5 Invariantes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150
15.6 O algoritmo est bem denido . . . . . . . . . . . . . . . . . . . . 150
15.7 ltima iterao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151
15.8 Demonstrao dos invariantes . . . . . . . . . . . . . . . . . . . . . 152
15.9 Nmero de iteraes . . . . . . . . . . . . . . . . . . . . . . . . . . 154
15.10 Nmero de operaes aritmticas . . . . . . . . . . . . . . . . . . 156
15.11 Concluso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157
15.12 Apndice: Matriz com uma s linha . . . . . . . . . . . . . . . . . 157
V Apndices 160
A Simplex Dual 161
A.1 Matrizes simples no sentido dual . . . . . . . . . . . . . . . . . . . 161
A.2 Esboo do Simplex Dual . . . . . . . . . . . . . . . . . . . . . . . . 162
A.3 Heurstica Simplex Dual . . . . . . . . . . . . . . . . . . . . . . . . 164
A.4 Algoritmo Simplex Dual . . . . . . . . . . . . . . . . . . . . . . . . 166
A.5 Problema cannico dual . . . . . . . . . . . . . . . . . . . . . . . . 166
B Anlise de sensibilidade 169
B.1 Variao de um s componente . . . . . . . . . . . . . . . . . . . . 169
B.2 Exemplo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172
B.3 Valor timo como funo de b e c . . . . . . . . . . . . . . . . . . . 174
Feoloff SUMRIO viii
B.4 Concluso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176
C Poliedro cannico primal 178
C.1 Dependncia linear . . . . . . . . . . . . . . . . . . . . . . . . . . . 178
C.2 Combinaes convexas . . . . . . . . . . . . . . . . . . . . . . . . . 179
C.3 Vrtices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180
C.4 Solues do problema cannico primal . . . . . . . . . . . . . . . . 182
C.5 Poliedros limitados . . . . . . . . . . . . . . . . . . . . . . . . . . . 182
D Poliedro cannico dual 185
D.1 Conjuntos geradores . . . . . . . . . . . . . . . . . . . . . . . . . . 185
D.2 Combinaes convexas . . . . . . . . . . . . . . . . . . . . . . . . . 186
D.3 Vetores bsicos e faces minimais . . . . . . . . . . . . . . . . . . . 187
D.4 Solues do problema cannico dual . . . . . . . . . . . . . . . . . 188
D.5 Poliedros limitados . . . . . . . . . . . . . . . . . . . . . . . . . . . 189
E Exerccios resolvidos 192
E.1 Soluo do exerccio 2.5 . . . . . . . . . . . . . . . . . . . . . . . . 192
E.2 Soluo do exerccio 2.11 . . . . . . . . . . . . . . . . . . . . . . . . 192
E.3 Soluo do exerccio 2.13 . . . . . . . . . . . . . . . . . . . . . . . . 194
E.4 Soluo do exerccio 4.2 . . . . . . . . . . . . . . . . . . . . . . . . 196
E.5 Soluo do exerccio 4.3 . . . . . . . . . . . . . . . . . . . . . . . . 197
Referncias Bibliogrcas 199
ndice Remissivo 202
Captulo 1
Vetores e Matrizes
Vetor? uma espcie de linha reta com uma echa na ponta.
Matriz? Acho que onde ca a sede da empresa.
Este captulo faz um resumo de conceitos elementares de lgebra linear e intro-
duz as convenes de notao que usaremos nos captulos subseqentes. Ocon-
tedo do captulo muito simples, mas algumas das denies e convenes de
notao merecem ateno pois so pouco usuais.
1.1 Vetores
Um vetor uma funo que leva um conjunto nito 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 denido sobre N.
Se x um vetor sobre um conjunto N e n um elemento de N ento x
[n]
a[n]
denota o componente n de x, isto , o valor da funo x em n. Se Q uma parte
de N ento
x
[Q]
denota a restrio de x a Q, ou seja, o vetor cujo componente q x
[q]
para cada
q em Q. Note a distino entre x
[n]
e x
[{n}]
: o primeiro um nmero, enquanto
o segundo um vetor (com um s componente).
Um vetor x sobre N nulo se x
[n]
= 0 para todo n em N. O vetor nulo ser vetor nulo
o
denotado por o, qualquer que seja o seu conjunto de ndices.
Se x um vetor e um nmero ento x o vetor que se obtm mediante
multiplicao de cada componente de x por . Analogamente, x/ o vetor
que se obtm dividindo por cada componente de x.
Se x e y so vetores sobre um mesmo conjunto de ndices e x
[n]
y
[n]
para
cada n, dizemos que x y. Analogamente, dizemos que a j
1
Feoloff cap. 1 Vetores e Matrizes 2
x > y
se x
[n]
> y
[n]
para todo n. As relaes e < so denidas de modo anlogo.
4 3 1 2
13 22 11 14 11 14 22 13
Figura 1.1: Duas representaes de um vetor sobre 1, 2, 3, 4. Na se-
gunda, ca subentendido que os ndices so 1, 2, 3 e 4 da esquerda
para a direita.
1 11
2 14
4 13
3 22
11
14
22
13
Figura 1.2: Mais duas representaes do mesmo vetor. Na segunda,
ca subentendido que os ndices so 1, 2, 3 e 4 de cima para baixo.
1.2 Matrizes
Uma matriz uma funo que leva o produto cartesiano de dois conjuntos ni-
tos no conjunto dos nmeros reais (poderamos restingir a denio 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 denida sobre M N.
Se m e n so elementos de M e N respectivamente ento A
[i, n]
denota o [i, 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
[1, Q]
a restrio de A a P Q. Usaremos a abreviatura A
[1, ]
(leia A P tudo) para [1, ]
A
[1, .]
e a abreviatura A
[ , Q]
para A
[A, Q]
. Se m um elemento de M ento [ , Q]
A
[i, Q]
o vetor sobre Q cujo componente q A
[i, q]
para todo q em Q. Usaremos a
abreviatura A
[i, ]
para A
[i, .]
e diremos que esse vetor a linha m de A. [i, ]
linha
Analogamente, para qualquer parte P de M e qualquer elemento n de N, a
expresso A
[1, n]
denota o vetor cujo componente p A
[j, n]
para cada p em P. [1, n]
Feoloff cap. 1 Vetores e Matrizes 3
1 2 3 4 5 6
7 1 0 0 1 2 3
8 0 1 0 4 5 6
9 0 0 1 7 8 9
4 2 5 3 1 6
7 1 0 2 0 1 3
9 7 0 8 1 0 9
8 4 1 5 0 0 6
2 4 5 3 1 6
7 1 0 2 0 1 3
9 7 0 8 1 0 9
8 4 1 5 0 0 6
Figura 1.3: Representao de trs matrizes sobre os mesmos conjuntos de
ndices. Os ndices de linhas so 7, 8 e 9. Os ndices de colunas so 1, 2, 3,
4, 5 e 6. As duas primeiras guras representam a mesma matriz; a terceira
representa uma matriz diferente.
99 4 12 13 77
98 14 19 7 88
32 11 22 9 6
Figura 1.4: Quando os ndices de uma matriz no esto indica-
dos explicitamente, ca subentendido que os ndices das linhas
so 1, 2, 3, . . . de cima para baixo e que os ndices das colunas
so 1, 2, 3, . . . da esquerda para a direita.
o / c d c ) q
) 3 1 9 0 0 4 9
q 4 0 8 1 0 5 9
I 5 0 7 0 1 6 9
/ d c
) 1 0 0
q 0 1 0
I 0 0 1
Figura 1.5: A primeira gura representa uma matriz A. A se-
gunda representa a matriz A[ , Q] , onde Q o conjunto composto
pelos ndices b, d, e.
Usaremos a abreviatura A
[ , n]
para A
[A, n]
e diremos que este vetor a coluna [ , n]
coluna
n de A.
Convm no confundir as expresses A
[1, n]
e A
[1, {n}]
: a primeira denota
um vetor, enquanto a segunda denota uma matriz (com uma s coluna). Alguns
livros mais antigos fazem essa confuso conscientemente, e usam a expresso
vetor coluna para designar qualquer matriz dotada de uma nica coluna e a
expresso vetor linha para uma matriz com uma nica linha.
Uma matriz A nula se A
[i, n]
= 0 para todo par m, n. A matriz nula ser matriz nula
O
denotada por O, quaisquer que sejam os seus conjuntos de ndices.
Se A uma matriz e um nmero ento A a matriz que se obtm
quando cada componente de A multiplicado por . Analogamente, A/ o
vetor que se obtm dividindo por cada componente de A.
Feoloff cap. 1 Vetores e Matrizes 4
1.3 Produtos
Matrizes e vetores podem ser multiplicados entre si. A verso mais bsica dessa
operao de multiplicao envolve dois vetores.
Produto vetor-por-vetor. Para quaisquer vetores x e y sobre um mesmo
conjunto N, o produto de x por y o nmero

nN
x
[n]
y
[n]
,
que denotaremos por x y. bvio que x y = y x. Ademais, para qualquer a j
parte Q de N,
x y = x
[Q]
y
[Q]
+ x
[.Q]
y
[.Q]
.
o / c d c
11 22 33 44 55
c / d c o
35 41 37 39 43
Figura 1.6: Se x e y so os vetores denidos pela gura ento x y =
11 43 + 22 41 + 33 39 + 44 37 + 55 35 = 6215. Imagine que a, b, c, d, e
so os modelos de um produto fabricado por certa empresa e que y[n] o
lucro sobre cada unidade do modelo n. Se foram fabricadas x[n] unidades
do modelo n ento x y o lucro total.
Produtos matriz-por-vetor e vetor-por-matriz. Para qualquer matriz A so- produto
matriz por
vetor
bre M N e qualquer vetor x sobre N, o produto de A por x o vetor A x
a
denido pela expresso
(A x)
[i]
= A
[i, ]
x
para cada m em M. claro que A x um vetor sobre M. Analogamente, para produto vetor
por matriz
qualquer vetor y sobre M, o produto de y por A o vetor y A denido pela
j
expresso
(y A)
[n]
= y A
[ , n]
para cada n em N. fcil vericar que, para qualquer parte P de M e qualquer
parte Q de N,
(A x)
[1]
= A
[1, ]
x e (y A)
[Q]
= y A
[ , Q]
.
menos fcil vericar a propriedade associativa
y (A x) = (y A) x.
Feoloff cap. 1 Vetores e Matrizes 5
Produto matriz-por-matriz. Para qualquer matriz A sobre L M e qual-
quer matriz B sobre MN, o produto de A por B a matriz A B sobre LN 1
denida pela expresso
(A B)
[|, n]
= A
[|, ]
B
[ , n]
para cada l em L e cada n em N. fcil vericar que, para qualquer parte P de
L e qualquer parte Q de N,
(A B)
[1, Q]
= A
[1, ]
B
[ , Q]
.
menos fcil vericar a propriedade associativa propriedade
associativa
(A B) C = A (B C) ,
vlida para quaisquer matrizes A, B e C cujos conjuntos de ndices permitam
denir os produtos A B e B C. Analogamente, A (B x) = (A B) x e
(y A) B = y (A B) para quaisquer vetores x e y, desde que cada um dos
produtos faa sentido.
Notao. Vamos apelar, muitas vezes, ao princpio universal da preguia aj
e escrever xy, Ax, yA e AB no lugar de x y, A x, y A e A B respectivamente. a j
1
O operador de indexao
[ , ]
tem precedncia sobre o operador de multi-
plicao. Assim, expresses da forma BA
[1, Q]
e yA
[1, Q]
devem ser entendidas 1[1, Q]
como B (A
[1, Q]
) e y (A
[1, Q]
) respectivamente. Em certas condies, os dois
operadores comutam: se os produtos BA e yA fazem sentido ento
(BA)
[ , Q]
= B (A
[ , Q]
) e (yA)
[ , Q]
= y (A
[ , Q]
) .
1.4 Matrizes inversveis
O problema mais bsico da lgebra linear o da inverso das operaes de mul-
tiplicao que denimos acima: dada uma matriz A e um vetor b,
encontrar um vetor x tal que Ax = b .
Analogamente, dado um vetor c, encontrar um vetor y tal que yA = c. Ou
ainda, dadas matrizes A e B, encontrar uma matriz X tal que AX = B; analo-
gamente, dadas matrizes A e C, encontrar uma matriz Y tal que Y A = C. Estes
problemas levam naturalmente aos seguintes conceitos.
Uma matriz I sobre M N a identidade se M = N e, para cada par i, j identidade
de elementos de M,
I
[i, )]
= se i = j ento 1 seno 0 .
Toda matriz identidade ser denotada por I, quaisquer que sejam seus conjun- 1
tos de ndices.
Feoloff cap. 1 Vetores e Matrizes 6
o / d c
o 1 0 0 0
/ 0 1 0 0
c 0 0 1 0
d 0 0 0 1
Figura 1.7: Esta matriz no a identidade.
Uma inversa esquerda de uma matriz A uma matriz E tal que EA = inversa
esquerda
I. Uma matriz A inversvel pela esquerda se possui uma inversa esquerda.
Ainversa direita de uma matriz A uma matriz D tal que AD = I. Uma matriz inversa
direita
A inversvel pela direita se possui uma inversa 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 D

tal que AD

=
I tem-se D

= (EA)D

= E(AD

) = E = D. Analogamente, para qualquer E

tal que E

A = I tem-se E

= E.
Apropsito, eis umfato 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 temuma inversa esquerda e direita E, ento o vetor x = Eb satisfaz a equao
Ax = b.
1 2 2 0 0
0 1 1 0 0
0 0 2 0 0
0 1 1 1 0
1 2 0 0
0 1 1/2 0
0 0 1/2 0
0 1 1 1
1 2 3 4
Figura 1.8: A primeira matriz uma inversa esquerda da se-
gunda (e a segunda uma inversa direita da primeira).
1.5 Transposio
Atransposta de uma matriz A sobre MN a matriz

A denida pelas equaes transposta

A
[n, i]
= A
[i, n]
Feoloff cap. 1 Vetores e Matrizes 7
1/2 0 0 0
0 0 0 0
0 0 5 0
0 0 0 2
Figura 1.9: Uma matriz no-inversvel.
para cada par m, n. Portanto,

A uma matriz sobre N M. claro que a
transposta de

A A. fcil vericar que
Ax = x

A
para todo vetor x tal que o produto de A por x esteja denido. Tambm fcil
vericar que

AB =

B

A
para toda matriz B tal que o produto de A por B esteja denido.
1.6 Matrizes de bijeo
A seguinte generalizao do conceito de matriz identidade muito til. Uma
matriz J sobre M N de bijeo
1
se existe uma funo bijetora de M em matriz
de bijeo
N tal que
J
[i, n]
= se (m) = n ento 1 seno 0 .
Portanto, uma matriz com componentes 0 e 1 de bijeo se cada uma de suas
colunas tem exatamente um 1 e cada uma de suas linhas tem exatamente um 1.
bvio que [M[ = [N[ se existe uma matriz de bijeo sobre M N.
A transposta de uma matriz de bijeo sobre MN uma matriz de bijeo
sobre N M. Essa segunda matriz inversa da primeira, como mostraremos a
seguir.
Fato Se J uma matriz de bijeo ento J

J = I e

J J = I.
DEMONSTRAO: Para qualquer par i, j de ndices de linhas de J, o com-
ponente i, j de J

J o produto de duas linhas de J:


(J

J)
[i, )]
= J
[i, ]

J
[ , )]
= J
[i, ]
J
[ ), ]
.
Como J matriz de bijeo, J
[i, ]
J
[ ), ]
igual a 1 ou 0 conforme i = j ou i ,= j.
Isso mostra que J

J = I. O mesmo raciocnio, com



J no papel de J, mostra que

JJ = I.
1
Generaliza o conceito de matriz de permutao; uma matriz de permutao uma matriz
de bijeo cujo conjunto de ndices de linhas idntico ao conjunto de ndices de colunas.
Feoloff cap. 1 Vetores e Matrizes 8
Qual o resultado da multiplicao de uma matriz arbitrria por uma matriz
de bijeo? Suponha que J uma matriz de bijeo sobre MN. Digamos que
J
[i, n]
= 1 para algum m em M e algum n em N. Ento, para qualquer matriz
A cujo conjunto de ndices de linhas seja N, a linha m de JA idntica linha
n de A:
(JA)
[i, ]
= A
[n, ]
.
Analogamente, para qualquer matriz B que tenha colunas indexadas por M, a
coluna n de BJ idntica coluna m de B. Em suma, a pr-multiplicao de
A por J apenas redene os nomes das linhas de A, e a ps-multiplicao de B
por J apenas redene os nomes das colunas de B.
0 0 1 0
1 0 0 0
0 0 0 1
0 1 0 0
Figura 1.10: Uma matriz de bijeo.
1.7 Matrizes diagonais
Uma matriz D sobre M N diagonal se M = N e D
[i, n]
= 0 sempre que diagonal
m ,= n. Em particular, toda matriz identidade diagonal.
Se D uma matriz diagonal tal que D
[i, i]
,= 0 para todo m ento a matriz
diagonal E denida pelas equaes
E
[i, i]
= 1/D
[i, i]
uma inversa esquerda e tambm uma inversa direita de D. Portanto, E a
nica inversa de D. Por outro lado, se D uma matriz diagonal e D
[i, i]
= 0
para algum m ento fcil vericar que D no tem inversa.
1.8 Matrizes elementares
Uma matriz-coluna coincide com a identidade em todas as colunas, exceto tal- matriz-
coluna
vez uma. Em outras palavras, uma matriz F sobre MM uma matriz-coluna
se existe k em M tal que
F
[A, AI]
= I
[A, AI]
,
onde M k uma abreviatura de M k. Diremos que k a coluna saliente A I
coluna
saliente
da matriz.
Feoloff cap. 1 Vetores e Matrizes 9
Fato Para qualquer matriz-coluna F com coluna saliente k, se F
[I, I]
no nulo ento a matriz-coluna G com coluna saliente k denida pelas
equaes
G
[I, I]
=
1
F
[I, I]
e G
[i, I]
=
F
[i, I]
F
[I, I]
para cada m em M k uma inversa esquerda e tambm uma inversa
direita de F.
DEMONSTRAO: Mostremos inicialmente que GF = I. Na coluna k te-
mos (GF)
[I, I]
= G
[I, ]
F
[ , I]
= G
[I, I]
F
[I, I]
= F
[I, I]
/F
[I, I]
= 1; ademais,
(GF)
[i, I]
= G
[i, ]
F
[ , I]
= G
[i, i]
F
[i, I]
+ G
[i, I]
F
[I, I]
= F
[i, I]
F
[I, I]
F
[i, I]
/F
[I, I]
= 0
para cada m em Mk. Portanto, a coluna k de GF igual coluna k da matriz
identidade. Para concluir, considere as colunas distintas de k:
(GF)
[ , AI]
= GF
[ , AI]
= GI
[ , AI]
= G
[ , AI]
= I
[ , AI]
.
Portanto, GF = I. Para mostrar que FG = I, basta observar que as mesmas
regras que denem G a partir de F tambm geram F a partir de G.
Nas condies da proposio acima, G a nica inversa (esquerda e direita)
de F. Tambm fcil vericar que se F
[I, I]
= 0 para algum k ento F no tem
inversa.
1 0 0 4 0
0 1 0 5 0
0 0 1 6 0
0 0 0 7 0
0 0 0 8 1
1 0 0 4/7 0
0 1 0 5/7 0
0 0 1 6/7 0
0 0 0 1/7 0
0 0 0 8/7 1
Figura 1.11: Matrizes-coluna com coluna saliente 4. Uma in-
versa da outra.
Uma matriz F sobre M M uma matriz-linha se existe h em M tal que matriz-
linha
F
[AI, A]
= I
[AI, A]
. Diremos que h a linha saliente de F. Uma obser-
vao anloga que demonstramos acima vale para matrizes-linha: se F uma
matriz-linha com linha saliente h e F
[I, I]
,= 0 ento a matriz-linha G com linha
saliente h denida pelas equaes
G
[I, I]
= 1/F
[I, I]
e G
[I, n]
= F
[I, n]
/F
[I, I]
Feoloff cap. 1 Vetores e Matrizes 10
para cada n em Mh a nica inversa esquerda de F e tambma nica inversa
direita de F.
Diremos que uma matriz elementar se for uma matriz-coluna ou uma matriz
elementar
matriz-linha. Note que os conjuntos de ndices de linhas e colunas de uma
matriz elementar so idnticos. Matrizes elementares e suas inversas tero um
papel de destaque nos captulos subseqentes.
1.9 Combinaes lineares
Suponha que a
1
, . . , a
k
so vetores sobre um mesmo conjunto de ndices. Uma
combinao linear desses vetores qualquer vetor da forma

1
a
1
+ +
k
a
k
,
onde
1
, . . ,
k
so nmeros. Esses nmeros so os coecientes da combinao
linear.
Suponha que A uma matriz sobre M N. Para todo vetor x sobre N, o
vetor Ax uma combinao linear das colunas de A comcoecientes x
[)]
, isto ,
Ax =

jN
A
[ , )]
x
[)]
.
Analogamente, para todo vetor y sobre M, o vetor yA uma combinao linear
das linhas de A, isto ,
yA =

iM
y
[i]
A
[i, ]
.
Se A e B so matrizes tais que o produto AB faz sentido ento cada coluna
de AB uma combinao linear das colunas de A e cada linha de AB uma
combinao linear das linhas de B:
(AB)
[ , )]
= AB
[ , )]
e (AB)
[i, ]
= A
[i, ]
B.
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 denidos).
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.
Feoloff 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.
o / c d c
) 11 12 13 14 15
q 21 22 23 24 25
I 31 32 33 34 35
/ c o ) I
) 11 12 13 14 15
q 21 22 23 24 25
I 31 32 33 34 35
o / c d c
q 11 12 13 14 15
I 21 22 23 24 25
i 31 32 33 34 35
1.6 Sejam F e G matrizes sobre MM e D uma matriz sobre MN. Suponha
que FG = I e que a matriz E = GD de bijeo. Verique que D

EG = I.
1.7 Suponha que A uma matriz de bijeo sobre M N e b um vetor arbi-
trrio sobre M. Verique que existe um e um s vetor x tal que Ax = b.
Parte I
Algoritmos Bsicos
12
Captulo 2
Algoritmo de Gauss-Jordan
Encontre nmeros a1, a2, a3 e a4 que satisfaam as equaes
d11 a1 + d12 a2 + d13 a3 + d14 a4 = /1
d21 a1 + d22 a2 + d23 a3 + d24 a4 = /2
d31 a1 + d32 a2 + d33 a3 + d34 a4 = /3
O algoritmo de Gauss-Jordan
1
a ferramenta bsica da lgebra linear. O algo-
ritmo transforma qualquer matriz em uma matriz equivalente dotada de um
certo desenho ou padro, que descreveremos na seo 2.1.
Ao estudar qualquer algoritmo, preciso enfrentar duas perguntas: o que
o algoritmo faz? como faz o que faz? No caso do algoritmo de Gauss-Jordan,
ao contrrio do que ocorre com outros algoritmos clebres, mais fcil tratar da
segunda pergunta. Assim, comearemos com um esboo de como o algoritmo
funciona.
2.1 Matrizes escalonadas
Uma matriz E sobre M N escalonada se existem uma parte P de M e uma matriz
escalonada
parte Q de N tais que
E
[1, Q]
uma matriz de bijeo e E
[A1, .]
= O .
Os conjuntos P e Q so as bases da matriz; o conjunto Q a base de colunas e P bases
a base de linhas. bvio que toda matriz escalonada tem uma nica base de
linhas, mas pode ter vrias bases de colunas distintas. (Convmlembrar que no
estamos fazendo quaisquer restries sobre os valores relativos de [M[ e [N[.
Tambm no estamos presumindo qualquer relao de ordem em M ou N.)
1
Referncias ao clebre Carl Friedrich Gauss (11S) e ao (menos clebre) WilhelmJordan
(1S1Sqq), que popularizou o algoritmo [Jor20].
13
Feoloff cap. 2 Algoritmo de Gauss-Jordan 14
Q
0 0 0 0 1
0 0 0 1 0
0 0 1 0 0 1
0 1 0 0 0
1 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0
Figura 2.1: Matriz escalonada.
0 0 0 0
0 0 0 0
0 0 0 0
0 1 0 0
1 0 0 0
0 0 1 0
0 0 0 1
0 0 0 0
0 0 0 0 0 0
0 2 1 44 66 1
1 33 0 55 77 0
0 0 0 0 0 0
Figura 2.2: Exemplos de matrizes escalonadas. Aprimeira tem
bases e . A segunda tem base de linhas 1, 2, 3, 4 e base de
colunas 1, 2, 3, 4. Na ltima, a base de linhas 2, 3 e h duas
bases de colunas distintas: 1, 3 e 1, 6.
2.2 Esboo do algoritmo
O algoritmo de Gauss-Jordan recebe uma matriz D sobre M N e transforma 1
A .
D numa matriz escalonada. Cada iterao do algoritmo comea com uma parte
P de M e uma matriz E. Aprimeira iterao comea com P = e E = D. Cada 1
1
iterao consiste no seguinte:
CASO 1: E
[A1, ]
,= O .
Escolha h em M P e k em N de modo que E
[I, I]
,= 0.
Seja E

a matriz denida pelas equaes E

[I, ]
= E
[I, ]
/E
[I, I]
e
E

[i, ]
= E
[i, ]
E
[i, I]
E
[I, ]
/E
[I, I]
para cada i em M h.
Comece nova iterao com P + h e E

nos papis de P e E.
CASO 2: E
[A1, ]
= O .
Devolva E e pare.
A expresso P + h uma abreviatura de P h. claro que se P = M no
incio de uma iterao ento aplica-se o caso 2.
No incio de cada iterao existe uma parte Q de N tal que E
[1, Q]
uma
matriz de bijeo e E
[A1, Q]
nula. A demonstrao desta propriedade ser
feita mais adiante, depois que o algoritmo for reescrito de modo mais completo.
Se a propriedade vale no incio da ltima iterao ento bvio que a matriz E
escalonada.
Feoloff cap. 2 Algoritmo de Gauss-Jordan 15
1 1 2 0
2 1 5 1
2 2 4 0
1 1 3 1
0 12 12 12
1 12 52 12
0 1 1 1
0 32 12 12
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
Figura 2.3: Aplicao do esboo do algoritmo de Gauss-
Jordan. A gura descreve a matriz E no incio de sucessivas
iteraes. A ltima matriz escalonada.
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
Figura 2.4: A gura dene matrizes F, G e D. Verique que
FG a identidade e que GD escalonada.
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
Figura 2.5: A gura dene matrizes G e D e exibe GD. Observe que
GD escalonada mas no existe F tal que FG = I.
Feoloff cap. 2 Algoritmo de Gauss-Jordan 16
2.3 Algoritmo
Para dizer, exatamente, o que o algoritmo faz preciso especicar 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, vericar que G inversvel e que GD escalonada.
Algoritmo de Gauss-Jordan Recebe uma matriz D sobre M N e de-
volve matrizes F e G sobre MM tais que FG = I e GD escalonada.
Cada iterao comea com matrizes F, G e E e uma parte P de M. No 1
G
incio da primeira iterao, F = G = I, E = D e P = . Cada iterao consiste
no seguinte:
CASO 1: E
[I, ]
,= o para algum h em M P . I
Escolha k em N tal que E
[I, I]
,= 0. I
Seja F

, G

, E

o resultado da pivotao de F, G, E em torno de h, k.


Comece nova iterao com F

, G

, E

e P + h
nos papis de F, G, E e P.
CASO 2: E
[A1, ]
= O .
Devolva F, G e pare.
2
A operao de pivotao a que se refere o texto do algoritmo denida da
seguinte maneira: dados elementos h de M e k de N, o resultado da pivota- pivotao
o de F, G, E em torno de h, k o terno F

, G

, E

de matrizes denido pelas


equaes
F

[ , I]
= D
[ , I]
, F

[ , i]
= F
[ , i]
,
G

[I, ]
=
h
G
[I, ]
, G

[i, ]
= G
[i, ]
+
i
G
[I, ]
,
E

[I, ]
=
h
E
[I, ]
, E

[i, ]
= E
[i, ]
+
i
E
[I, ]
,
para cada i em M h, onde

h
= 1 / E
[I, I]
e
i
= E
[i, I]
/ E
[I, I]
.
Nmero de iteraes. claro que o algoritmo de Gauss-Jordan con-
verge ou seja, sua execuo pra depois de um nmero nito de iteraes converge
pois P aumenta a cada ocorrncia do caso 1. O nmero total de iteraes , no
mximo, [M[.
2
Veja exerccio 2.5.
Feoloff 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 1 12 0 0 0 12 12 12
0 2 0 0 0 12 0 0 1 12 52 12
0 2 1 0 0 1 1 0 0 1 1 1
0 1 0 1 0 12 0 1 0 32 12 12
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
Figura 2.6: Exemplo de aplicao do algoritmo de Gauss-Jordan. A-
gura registra os valores de F, G e E no incio de sucessivas iteraes.
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
12 0 0 0 1 12 1 2 0 12
12 1 0 0 0 12 0 0 1 52
1 0 1 0 0 0 2 1 1 3
12 0 0 1 0 12 2 0 1 72
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
12 1 12 0 1 0 0 52 32 12
1 2 0 0 0 1 0 0 2 5
12 0 12 0 0 0 1 12 12 32
1 1 1 1 0 0 0 1 1 9
3 72 2 52 1 0 0 0 4 23
1 2 0 0 0 1 0 0 2 5
0 12 0 12 0 0 1 0 1 3
1 1 1 1 0 0 0 1 1 9
Figura 2.7: Exemplo de aplicao do algoritmo de Gauss-Jordan. A gura
registra os valores de G e E no incio de sucessivas iteraes (F foi omitida por
falta de espao). Observe como a matriz identidade que estava inicialmente em
G move-se para a direita, invadindo E.
Feoloff cap. 2 Algoritmo de Gauss-Jordan 18
2.4 Anlise do algoritmo
A chave para entender como e por que o algoritmo funciona est na seguinte
lista de propriedades. As propriedades valem no incio de cada iterao e so,
por isso mesmo, chamadas invariantes.
Invariantes No incio de cada iterao do algoritmo,
(i1) E
[1, Q]
uma matriz de bijeo e E
[A1, Q]
= O ,
(i2) FG = I e
(i3) GD = E ,
onde Q uma parte de N (que poderamos chamar base de colunas da
iterao).
Q
0 0 1
1 0 1 0
1 0 0
0 0 0
0 0 0
0 0 0
Figura 2.8: Matriz E no incio de uma iterao do algoritmo de Gauss-Jordan.
Essas propriedades valem, em particular, no incio da ltima iterao,
quando ocorre o caso 2. Nesse caso, E escalonada em virtude de (i1) e da
denio do caso 2; alm disso, FG = I em virtude de (i2). Portanto, ao devol-
ver F e G o algoritmo estar se comportanto como prometeu.
DEMONSTRAO DOS INVARIANTES: evidente que as propriedades va-
lem no incio da primeira iterao (com P e Q vazios). Suponha agora que as
propriedades valem no incio de uma iterao qualquer que no a ltima. Ento
ocorre o caso 1 (com k em N Q) e as propriedades passam a valer com
F

, G

, E

, P + h e Q + k
nos papis de F, G, E, P e Q. Para demonstrar esta armao basta vericar
que no m do caso 1 tem-se
E

[ , Q]
= E
[ , Q]
, (2.a)
E

[ , I]
= I
[ , I]
, (2.b)
F

= I , (2.c)
E

= G

D. (2.d)
Feoloff cap. 2 Algoritmo de Gauss-Jordan 19
Q I
0 0 1 0
1 0 1 0 0
1 0 0 0
0 0 0 0
I 0 0 0 1
0 0 0 0
Figura 2.9: Matriz E

no m do caso 1 do algoritmo de Gauss-Jordan.


A demonstrao de (2.a) elementar. Por denio da operao de pivotao,
temos
E

[I, ]
=
h
E
[I, ]
e E

[i, ]
= E
[i, ]
+
i
E
[I, ]
para cada i em M h. Como o vetor E
[I, Q]
nulo em virtude de (i1), temos
E

[ , Q]
= E
[ , Q]
.
Antes de empreender as demonstraes de (2.b) a (2.d), conveniente dar
uma representao matricial operao de pivotao. Seja

F a matriz elementar

1
(veja seo 1.8) sobre M M cuja coluna saliente, h, igual a E
[ , I]
, isto ,

F
[ , I]
= E
[ , I]
e

F
[ , AI]
= I
[ , AI]
.
Seja

G a inversa de

F, isto , a matriz elementar com coluna saliente h denida

G
pelas equaes

G
[I, I]
= 1/E
[I, I]
e

G
[i, I]
= E
[i, I]
/E
[I, I]
para cada i em M h. Observe que

F

G =

G

F = I. Observe tambm que
F

= F

F , G

=

GG e E

=

GE.
As duas ltimas identidades so bvias. A primeira merece uma vericao
mais cuidadosa: na coluna h temos
F

[ , I]
= D
[ , I]
= FG D
[ , I]
= F E
[ , I]
= F

F
[ , I]
e nas demais colunas temos
F

[ , AI]
= F
[ , AI]
= F I
[ , AI]
= F

F
[ , AI]
.
Portanto, o resultado da pivotao de F, G, E em torno de h, k o terno de
matrizes F

F,

GG,

GE.
Agora podemos cuidar das demonstraes de (2.b) a (2.d). A demonstrao
de (2.b) decorre das igualdades

G

F = I e E

=

GE: para cada i em M,
E

[i, I]
=

G
[i, ]
E
[ , I]
=

G
[i, ]

F
[ , I]
= (

G

F)
[i, I]
= I
[i, I]
.
Feoloff cap. 2 Algoritmo de Gauss-Jordan 20
A demonstrao de (2.c) fcil:
F

= (F

F)(

GG) = F(

F

G)G = FG = I .
A prova de (2.d) igualmente fcil: E

=

GE =

G(GD) = (

GG)D = G

D.
2.5 Mais invariantes
O algoritmo de Gauss-Jordan tem mais quatro invariantes, alm dos que dis-
cutimos na seo anterior. No necessrio ter conscincia desses invariantes
adicionais para compreender o funcionamento do algoritmo; mas eles so um
prenncio de invariantes fundamentais do Simplex, cujo estudo empreendere-
mos a partir do prximo captulo.
Invariantes No incio de cada iterao do algoritmo,
(i4) G
[ , A1]
= I
[ , A1]
,
(i5) F
[ , A1]
= I
[ , A1]
e F
[ , 1]
= D
[ , Q]

J ,
onde

J a transposta da matriz de bijeo E
[1, Q]
.
1 A 1 Q . Q
0 0 0 0 0 1
0 0 0 0 1 0 1
0 0 0 1 0 0
1 0 0 0 0 0
0 1 0 0 0 0 A 1
0 0 1 0 0 0
Figura 2.10: Matrizes G e E no incio de uma iterao do algoritmo
de Gauss-Jordan. A justaposio de G e E contm uma matriz de
bijeo que ocupa todas as linhas.
DEMONSTRAO: bvio que (i4) vale no incio da primeira iterao. Para
demonstrar que o invariante permanece vlido no incio das demais iteraes,
basta provar que no m de cada ocorrncia do caso 1 temos
G

[ , A1I]
= G
[ , A1I]
,
onde MP h uma abreviatura de (MP)h. Ademonstrao anloga
de (2.a). Por denio,
G

[I, ]
=
h
G
[I, ]
e G

[i, ]
= G
[i, ]
+
i
G
[I, ]
Feoloff cap. 2 Algoritmo de Gauss-Jordan 21
para cada i em M h. Mas G
[I, A1I]
nulo em virtude de (i4). Logo,
G

[ , A1I]
= G
[ , A1I]
.
O invariante (i5) segue imediatamente da maneira como F

denida a par-
tir de F em cada iterao. A multiplicao por

J apenas troca os nomes das
colunas que esto em Q de modo que E
[1, Q]

J seja a matriz identidade sobre
P P. O invariante mostra que a varivel F no precisa ser atualizada a cada
iterao: ela pode muito bem ser calculada no caso 2, imediatamente antes do
m da execuo do algoritmo.
Invariantes No incio de cada iterao do algoritmo,
(i6) D
[A1, Q]
= G
[A1, 1]
D
[1, Q]
e
(i7) D
[1, Q]

J G
[1, 1]
= I ,
onde

J a transposta da matriz de bijeo E
[1, Q]
.
DEMONSTRAO: Seja i um elemento de M P. Em virtude de (i4), para
cada i em M P,
G
[i, 1]
D
[1, Q]
+ D
[i, Q]
= G
[i, 1]
D
[1, Q]
+ G
[i, A1]
D
[A1, Q]
= G
[i, A]
D
[A, Q]
= (GD)
[i, Q]
= E
[i, Q]
= o,
onde as duas ltimas igualdades so conseqncia de (i3) e (i1) respectivamente.
Logo, G
[i, 1]
D
[1, Q]
= D
[i, Q]
. Isto demonstra (i6). Agora considere (i7). Em
virtude da segunda parte de (i5),
D
[1, Q]

J G
[1, 1]
= F
[1, 1]
G
[1, 1]
.
Mas F
[1, 1]
G
[1, 1]
= I por fora de (i2), (i4) e da primeira parte de (i5).
O invariante (i6) mostra que, para cada i em M P, o vetor D
[i, Q]
uma
combinao linear das linhas da matriz D
[1, Q]
. O invariante (i7) mostra que

J G
[1, 1]
uma inversa direita de D
[1, Q]
. A propsito, os invariantes (i3) e (i4)
mostram que

J G
[1, 1]
uma inversa esquerda de D
[1, Q]
.
2.6 Nmero de operaes aritmticas
No difcil estimar, em termos dos parmetros m = [M[ e n = [N[, o nmero
de operaes aritmticas que o algoritmo executa. possvel implementar o al-
goritmo (veja exerccio 2.6, pgina 24) de modo que cada pivotao exija apenas
mn multiplicaes e divises e menos que mn adies e subtraes. Como o
Feoloff cap. 2 Algoritmo de Gauss-Jordan 22
algoritmo executa no mximo m tais pivotaes, o nmero total de operaes
aritmticas menor que
2m
2
n.
(A ttulo de comparao, observe que a multiplicao de G por D requer m
2
n
multiplicaes e outras tantas adies.)
O consumo total de tempo do algoritmo depende no s do nmero de ope-
raes aritmticas mas tambm do tempo dispendido em cada operao. Antes
de estimar esse tempo, preciso entender que tipo de nmeros o algoritmo ma-
nipula. razovel restringir nosso universo aos nmeros racionais: como o nmeros
racionais
algoritmo envolve apenas as operaes de soma, subtrao, multiplicao e di-
viso, ele transforma nmeros racionais em outros nmeros racionais. Assim,
se os componentes da matriz dada D so racionais ento os componentes das
matrizes F, G e E sero sempre racionais.
Cada nmero racional tem a forma /, onde um inteiro e um inteiro
no-nulo. O nmero / representado pelo par ordenado , ); o primeiro
elemento do par o numerador e o segundo o denominador da representa- numerador
denominador
o. O custo de uma operao aritmtica sobre nmeros racionais depende da
magnitude dos numeradores e denominadores dos nmeros envolvidos. Ser
necessrio, portanto, obter uma delimitao superior para os valores absolutos
dos numeradores e denominadores gerados pelo algoritmo. Faremos isto no ca-
ptulo 11. Podemos adiantar que esses nmeros so, em geral, muito maiores
que os numeradores e denominadores dos componentes da matriz dada D.
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:
Para toda matriz D, existem matrizes F e G tais que FG = I e
GD escalonada.
Vale tambmo seguinte adendo: se os componentes de D so nmeros racionais
ento existem matrizes racionais F e G com as propriedades citadas.
O algoritmo de Gauss-Jordan muitas vezes executado de modo apenas
aproximado: os nmeros so representados em ponto utuante, com um n-
mero xo de dgitos, e as operaes aritmticas so executadas com erro de arre-
dondamento. Os erros podem mascarar completamente os resultados; nmeros
que deveriam ser nulos, por exemplo, podem se apresentar como diferentes de
zero, e o algoritmo pode deixar de reconhecer o caso 2. H uma grande coleo
de truques que visam controlar, em alguma medida, tais erros de arredonda-
mento [Chv83].
Feoloff cap. 2 Algoritmo de Gauss-Jordan 23
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
629246 3961516892 682725338 168712669 29812669 95550676 197012669
173246 1188716892 1007925338 270412669 74812669 520350676 230912669
241 5318446 34223 724223 1554223 1138446 244223
130123 76518446 144512669 89612669 5212669 93725338 110912669
22123 12814223 11512669 146312669 31112669 146212669 92012669
6782 2010516892 1258446 15004223 2904223 189316892 5004223
7382 2050916892 758446 9004223 1744223 282516892 3004223
0 0 1 0 0 0 0 148858446 748212550676 30936412669
0 1 0 0 0 0 0 193658446 227956150676 9112312669
1 0 0 0 0 0 0 9074223 333798446 21144223
0 0 0 1 0 0 0 1654223 141974525338 13322812669
0 0 0 0 1 0 0 22054223 25617512669 2473012669
0 0 0 0 0 1 0 185158446 132600516892 333804223
0 0 0 0 0 0 1 195558446 134459316892 369204223
Figura 2.11: Ao receber a primeira matriz da gura, digamos D, o algoritmo de Gauss-
Jordan poder devolver a segunda matriz no papel de G. A terceira matriz GD.
2.8 Aplicao: Sistemas de equaes
Considere o seguinte problema: Dada uma matriz A sobre M N e um vetor
b sobre M, encontrar um vetor x tal que Ax = b. Para resolver o problema,
comece por submeter A ao algoritmo de Gauss-Jordan. O algoritmo devolver
matrizes F e G tais que FG = I e GA escalonada.
Digamos que as bases de GA so P e Q e suponha inicialmente que o vetor
(Gb)
[A1]
nulo. Seja x o nico vetor que satisfaz as equaes
x
[.Q]
= o e (GA)
[1, Q]
x
[Q]
= (Gb)
[1]
.
Este o vetor bsico associado base Q. claro que (GA)x = Gb, donde vetor
bsico
F(GA)x = F(Gb) e portanto Ax = b.
3
Suponha agora que (Gb)
[I]
no nulo para algum h em MP. 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
[I, ]
e observe
3
Esse mtodo de clculo de a no o mais eciente. possvel obter a com apenas um tero
do nmero de multiplicaes se o algoritmo de Gauss-Jordan for modicado de modo a produzir
uma matriz triangular no lugar da matriz de bijeo (G)[1, Q] . Essa variante do algoritmo
conhecida como mtodo de eliminao de Gauss [Chv83, cap.6] [CLRS01, cap.31].
Feoloff cap. 2 Algoritmo de Gauss-Jordan 24
que
gA = (GA)
[I, ]
= 0 enquanto gb = (Gb)
[I]
,= 0.
Se existisse um vetor x tal que Ax = b teramos a contradio 0 = (gA)x =
g(Ax) = gb ,= 0.
O vetor g constitui, portanto, um certicado facilmente vericvel de que
a equao Ax = b no tem soluo.
Exerccios
2.1 Escreva um algoritmo que decide se uma dada matriz escalonada e em
caso armativo 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 eciente 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
[I, I]
,= 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 MM e que P uma parte de M.
Suponha ainda que AB = I e A
[ , A1]
= B
[ , A1]
= I
[ , A1]
. Mostre
que A
[1, 1]
B
[1, 1]
= I.
2.9 Mostre que no incio de cada iterao do algoritmo de Gauss-Jordan a ma-
triz G
[A1, 1]
completamente determinada pelas matrizes D
[A1, Q]
,
E
[1, Q]
e G
[1, 1]
.
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
[A

1, ]
=

G
[A

1, ]
.
Feoloff cap. 2 Algoritmo de Gauss-Jordan 25
2.11 Suponha que G
1
e G
2
so matrizes inversveis tais que G
1
D e G
2
D so
escalonadas. Mostre que quaisquer bases de colunas, digamos Q
1
e Q
2
,
das duas matrizes escalonadas tm a mesma cardinalidade. Essa cardinali-
dade comum o posto da matriz D. A propsito, diz-se que D tem posto
pleno se seu posto igual ao nmero de linhas da matriz. (Soluo no
apndice E, pgina 192.)
2.12 Encontre nmeros x
1
, . . , x
4
que satisfaam as equaes abaixo.
x
1
+ x
2
+ x
3
+ 3x
4
= 6
3x
1
+ 4x
2
+ x
3
+ 8x
4
= 18
x
1
+ x
2
4x
3
4x
4
= 5
2.13 Resolva o seguinte problema: dada uma matriz A sobre M N, um vetor
b sobre M e umvetor c sobre N, encontrar x tal que Ax = b e cx mnimo.
O problema sempre tem soluo? (Veja apndice E, pgina 192.)
Captulo 3
Introduo ao Simplex
Encontre nmeros no-negativos a1, a2, a3 e a4 que satisfaam as equaes
d11 a1 + d12 a2 + d13 a3 + d14 a4 = d15
d21 a1 + d22 a2 + d23 a3 + d24 a4 = d25
d31 a1 + d32 a2 + d33 a3 + d34 a4 = d35
e minimizem a soma d41 a1 + d42 a2 + d43 a3 + d44 a4
Oalgoritmo Simplex a ferramenta bsica da programao linear. Oobjetivo do
algoritmo transformar uma matriz dada em outra equivalente que contenha
um certo desenho ou padro, que descreveremos na seo 3.1.
Este captulo faz um esboo do Simplex, destacando seu parentesco com o
algoritmo de Gauss-Jordan discutido no captulo anterior. Nosso esboo contm
todos os elementos bsicos do Simplex, mas no chega a ser um algoritmo pois
em geral no converge. Os dois prximos captulos mostraro como renar o
esboo para transform-lo num algoritmo.
Como no estudo de qualquer algoritmo, preciso enfrentar duas perguntas:
o que faz o Simplex? como faz o que faz? Este captulo trata principalmente
da segunda pergunta. A primeira ser respondida no prximo captulo. Uma
terceira pergunta para que serve o Simplex? ser adiada at o captulo 7,
ainda que isso possa tornar um tanto rida e indigesta a tarefa de entender o
conceito de matriz simples.
3.1 Matrizes simples
Os dados do Simplex so uma matriz sobre M N, um elemento n de N e um n i
elemento m de M. Diremos que n a coluna especial e que m a linha es- coluna
especial
linha
especial
pecial da matriz. Nas guras, a coluna especial ser sempre a que estiver mais
direita e a linha especial ser sempre a ltima. A propsito, no estamos fa-
zendo quaisquer restries sobre os valores relativos de [M[ e [N[ e no estamos
presumindo qualquer relao de ordem em M ou N.
26
Feoloff cap. 3 Introduo ao Simplex 27
Nosso estudo comea comuma descrio das caractersticas da matriz que o
Simplex calcula. Diremos que uma matriz E simples com relao ao par n, m matriz
simples
de ndices se for de um dos trs tipos denidos abaixo: simples solvel, simples
invivel ou simples ilimitada. No vamos nos preocupar, por enquanto, com as
conotaes das palavras solvel, invivel e ilimitada; elas sero justica-
das no captulo 7. As denies podero parecer indigestas, mas devero car
mais naturais depois que zermos um esboo do Simplex.
Matriz simples solvel. Dada uma matriz E sobre M N e elementos n
e m de N e M respectivamente, diremos que E simples solvel com relao
ao par n, m se existem partes P de M m e Q de N n tais que
E
[1, Q]
de bijeo , E
[1, n]
o ,
E
[Ai1, .]
= O ,
E
[i, .nQ]
o , E
[i, Q]
= o .
A expresso M m P uma abreviatura de (M m) P; analogamente, A i1
NnQ uma abreviatura de (Nn)Q. bvio que a matriz E
[Ai, .n]
. n Q
escalonada. O conjunto P a base de linhas e o conjunto Q uma base de bases
colunas da matriz. fcil vericar que a base de linhas nica, mas podem
existir vrias bases de colunas.
H uma certa simetria entre E
[i, .n]
e E
[Ai, n]
na denio de matriz
simples solvel: a condio E
[1, n]
o corresponde condio E
[i, Q]
= o; e a
condio E
[Ai1, n]
= o corresponde condio E
[i, .nQ]
o.
Matriz simples invivel. Uma matriz E sobre M N simples invivel
com relao coluna n e linha m se existe h em M m tal que linha de
inviabilidade
E
[I, .n]
o e E
[I, n]
> 0 ou
E
[I, .n]
o e E
[I, n]
< 0.
O elemento h de M m o ndice de uma linha de inviabilidade.
Matriz simples ilimitada. Uma matriz E sobre MN simples ilimitada
com relao coluna n e linha m se existe uma parte P de Mm, uma parte Q
de N n e um elemento k de N n Q tais que coluna de
ilimitao
E
[1, I]
o, E
[1, Q]
de bijeo, E
[1, n]
o,
E
[Ai1, I]
= o, E
[Ai1, Q]
= O, E
[Ai1, n]
= o,
E
[i, I]
< 0, E
[i, Q]
= o.
Os conjuntos P e Q so as bases da matriz e k o ndice de uma coluna de
ilimitao.
H uma certa simetria entre a denio de matriz simples invivel e a de
matriz simples ilimitada: a condio E
[I, .n]
o e E
[I, n]
> 0 ou E
[I, .n]

o e E
[I, n]
< 0 da primeira corresponde condio E
[Ai, I]
o e E
[i, I]
<
0 da segunda.
Feoloff cap. 3 Introduo ao Simplex 28
Q n
0 0 1

1 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
i

0 0 0
Figura 3.1: Matriz simples solvel.
n
>
I
i
Figura 3.2: Matriz simples invivel.
I Q n

0 0 1

1

0 1 0

1 0 0

0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
i
<
0 0 0
Figura 3.3: Matriz simples ilimitada.
Matriz simples. Uma matriz E simples com relao aos ndices n e m se
for de um dos trs tipos descritos acima. As trs denies so mutuamente ex-
clusivas: uma matriz no pode ser, ao mesmo tempo, simples solvel e invivel,
nem simples solvel e ilimitada, nem simples invivel e ilimitada.
3.2 Esboo do Simplex
Suponha dada uma matriz D sobre M N e elementos n e m de N e M res- 1
pectivamente. O objetivo do Simplex transformar D, por meio de sucessivas
Feoloff cap. 3 Introduo ao Simplex 29
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 12 0 0 12 1 0 12 0
0 99 1 1 99 0 0 99 88
0 77 0 0 77 0 0 77 66
Figura 3.4: Esta matriz simples solvel com re-
lao coluna 9 e linha 6. A base de linhas com-
posta de 1, 2, 4, 5. H duas bases de colunas: uma
contm 1, 3, 6, 7 e outra contm 1, 4, 6, 7.
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 12 0 12 12 1 0 12 0
0 0 0 0 0 0 0 0 1
99 99 0 99 99 0 0 99 66
Figura 3.5: Matriz simples invivel (coluna espe-
cial 9 e linha especial 6). H duas linhas de inviabi-
lidade: 2 e 5.
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 12 0 12 12 1 0 12 0
0 99 1 99 99 0 0 99 88
0 77 0 77 77 0 0 77 66
Figura 3.6: Matriz simples ilimitada. A coluna de
ilimitao 4.
Feoloff cap. 3 Introduo ao Simplex 30
operaes de pivotao, numa matriz que seja simples em relao a n e m.
Cada iterao do Simplex comea com uma matriz E e uma parte P de 1
1
M m tais que
f
[1]
o,
E
[1, Q]
uma matriz de bijeo e E
[A1, Q]
= O,
onde f denota o vetor E
[ , n]
e Q uma parte de Nn. As operaes executadas )
Q durante uma iterao modicam E e P de modo a preservar essas propriedades.
A primeira iterao comea com E = D e P = . Cada iterao consiste no
seguinte:
CASO 1: E
[I, I]
> 0 e f
[I]
0 ou E
[I, I]
< 0 e f
[I]
0
para algum h em M mP e algum k em N n . I
I
Seja P

o conjunto de todos os p em P para os quais E


[j, I]
> 0.
1

CASO 1A: f
[I]
/E
[I, I]
f
[j]
/E
[j, I]
para todo p em P

.
Seja E

o resultado da pivotao de E em torno de h, k.


Comece nova iterao com P + h e E

nos papis de P e E.
CASO 1B: f
[I]
/E
[I, I]
> f
[j]
/E
[j, I]
para algum p em P

.
Escolha p em P

de modo que f
[j]
/E
[j, I]
seja mnimo. j
Seja E

o resultado da pivotao de E em torno de p, k.


Comece nova iterao com E

no papel de E (sem alterar P).


CASO 2: E
[I, .n]
o e f
[I]
> 0 ou E
[I, .n]
o e f
[I]
< 0
para algum h em M mP . I
Devolva E e pare (a matriz E simples invivel).
CASO 3: E
[Ai1, .]
= O, f
[Ai1]
= o e E
[i, I]
< 0
paraalgum k em N n . I
Seja P

o conjunto de todos os p em P para os quais E


[j, I]
> 0. 1

CASO 3A: P

vazio .
Devolva E e pare (a matriz E simples ilimitada).
CASO 3B: P

no vazio .
Escolha p em P

de modo que f
[j]
/E
[j, I]
seja mnimo. j
Seja E

o resultado da pivotao de E em torno de p, k.


Comece nova iterao com E

no papel de E (sem alterar P).


CASO 4: E
[Ai1, .]
= O, f
[Ai1]
= o e E
[i, .n]
o .
Devolva E e pare (a matriz E simples solvel).
A operao de pivotao a que se referem os casos 1A, 1B e 3B denida
como no algoritmo de Gauss-Jordan (seo 2.3): dados elementos h de M m
e k de N n (as pivotaes jamais ocorrem na linha m e jamais na coluna n),
o resultado da pivotao de E em torno de h, k a matriz E

denida pelas pivotao


Feoloff cap. 3 Introduo ao Simplex 31
equaes
E

[I, ]
=
1
E
[I, I]
E
[I, ]
e E

[i, ]
= E
[i, ]

E
[i, I]
E
[I, I]
E
[I, ]
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. Adenio de p nesses casos deve ser entendida da seguinte maneira:
escolha qualquer p em P

que satisfaa a condio f


[j]
/E
[j, I]
f
[i]
/E
[i, I]
para
todo i em P

.
Q n
0 0 1

1 0 1 0

1 0 0

0 0 0
0 0 0
0 0 0
i 0 0 0
Figura 3.7: Matriz E no incio de uma iterao.
Aestrutura de casos. Emcada iterao, pelo menos umdos quatro casos se
aplica, como passamos a mostrar. Se os casos 1 e 2 no valem para um elemento
h de M mP ento
E
[I, .n]
= o e f
[I]
= 0.
Por outro lado, se essa condio verdadeira para todo h em M mP ento
bvio que vale o caso 3 ou o caso 4.
Como se v, os quatro casos se complementam naturalmente. Essa comple-
mentaridade determina a lgica interna do Simplex e justica nossas deni-
es de matriz simples solvel, invivel e ilimitada.
Nossa linguagem algortmica. Em nossa linguagem de descrio de algo-
ritmos, a ordem em que os casos so enunciados irrelevante: em cada iterao,
qualquer dos casos aplicveis pode ser executado. O mesmo vale para os sub-
casos dentro de cada caso. Ademais, a denio de um caso no supe que os
demais no se aplicam. possvel mesmo que os casos no sejam mutuamente
exclusivos (embora isso no ocorra no esboo do Simplex acima).
A propsito, as expresses lgicas da forma X e Y ou W e Z que aparecem
na denio de alguns casos devem ser entendidas como (X e Y) ou (W e Z).
Feoloff cap. 3 Introduo ao Simplex 32
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
16 0 1 13 16
16 1 0 23 256
23 0 0 43 103
0 0 0 3 7
0 0 1 0 1
12 1 0 0 52
12 0 0 1 52
32 0 0 0 12
Figura 3.8: Exemplo de aplicao do Simplex. A gura registra a matriz E
no incio de sucessivas iteraes. Neste exemplo, a primeira iterao comea
com P = 1 e Q = 1. O subcaso 1A se aplica com h, k = 2, 2. Na segunda
iterao, o caso 1 se aplica com h, k = 3, 3; o subcaso 1A no se aplica, mas o
subcaso 1B vale com p = 1. No incio da terceira iterao, a matriz E no mais
simples que no incio da iterao anterior, mas em algum sentido melhor que
aquela: depois de uma pivotao emtorno de 3, 4 obtemos uma matriz simples
solvel.
Terminologia tradicional. Convmmencionar alguns termos consagrados entra
na base
sai da
base
pelo uso em discusses sobre o Simplex. Nos casos 1 e 3, dizemos que a coluna
k entra na base. Nos casos 1B e 3B, dizemos que sai da base a coluna q denida
pela relao E
[j, q]
= 1.
Qual o critrio para a escolha da coluna k que dever entrar na base? No
caso 1, basta que E
[I, I]
no seja nulo e f
[I]
/E
[I, I]
no seja negativo; no caso 3,
basta que E
[i, I]
seja negativo.
1
Qual o critrio para a escolha da coluna q que
dever sair da base nos casos 1B e 3B? Como a matriz E
[1, Q]
estabelece uma
bijeo entre P e Q, o critrio de escolha de q se confunde com o critrio de
escolha de p e p escolhido em P

de modo que f
[j]
/E
[j, I]
seja mnimo.
A propsito, o esboo que zemos acima corresponde, essencialmente,
chamada verso tabular do Simplex.
1
Dizer que negativo o mesmo que dizer < 0. Analogamente, positivo se 0.
Feoloff 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
Figura 3.9: Exemplo de aplicao do Simplex. A -
gura registra a matriz E no incio de sucessivas itera-
es. A matriz resultante simples invivel.
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 14
0 2 0 1 14
0 0 1 1 12
1 0 52 12 5
0 1 12 12 7
0 0 1 0 0
0 0 1 1 12
1 0 0 12 5
0 1 0 12 7
0 0 1 0 0
0 0 0 1 12
2 2 4 8 24
2 0 5 4 10
1 1 2 0 2
1 1 1 8 0
1 1 2 4 12
0 2 1 4 14
0 2 0 4 14
0 0 1 4 12
1 0 52 2 5
0 1 12 2 7
0 0 1 0 0
0 0 1 4 12
1 0 0 2 5
0 1 0 2 7
0 0 1 0 0
0 0 0 4 12
Figura 3.10: Mais dois exemplos de aplicao do Simplex, ligeiramente
diferentes do anterior. No primeiro ( esquerda), a ltima matriz simples
solvel. No segundo, a ltima matriz simples ilimitada.
Feoloff cap. 3 Introduo ao Simplex 34
3.3 Anlise
Como j anunciamos acima, o Simplex gira em torno de duas propriedades
(compare com a seo 2.4:
Invariantes No incio de cada iterao,
(i0) f
[1]
o ,
(i1) E
[1, Q]
de bijeo e E
[A1, Q]
= O ,
onde Q uma parte de N.
Os dois invariantes so trivialmente verdadeiros (com P e Q vazios) no in-
cio da primeira iterao. Suponha agora que eles valem no incio de uma ite-
rao qualquer que no a ltima. claro que nessa iterao ocorre o caso 1 ou
o caso 3 e k est necessariamente em N Q. preciso mostrar que no m do
caso 1A os invariantes permanecem vlidos com E

, P + h e Q + k nos papis
de E, P e Q e que no m dos casos 1B e 3B os invariantes permanecem vlidos
com E

e Qq +k nos papis de E e Q, onde q o nico elemento de Q tal que


E
[j, q]
= 1. Trocando em midos, basta mostrar que no m do caso 1A temos
f

[1+I]
o , (3.a)
E

[ , Q]
= E
[ , Q]
, (3.b)
E

[ , I]
= I
[ , I]
, (3.c)
e que no m dos casos 1B e 3B temos
f

[1]
o , (3.d)
E

[ , Qq]
= E
[ , Qq]
, (3.e)
E

[ , I]
= I
[ , j]
, (3.f)
onde f

= E

[ , n]
e I a matriz identidade. As demonstraes de (3.a) e (3.d)
explicama estrutura de casos do Simplex e a elaborada escolha de p nos casos 1B
e 3B.
DEMONSTRAO DE (3.a): Considere inicialmente o componente h de f

.
Em virtude da denio do caso 1,
f
[I]
/E
[I, I]
0.
Como a pivotao no caso 1A ocorre em torno de h, k temos f

[I]
= f
[I]
/E
[I, I]
e portanto f

[I]
0. Resta considerar f

[i]
com i em P. Suponha inicialmente
que E
[i, I]
no positivo. Ento f

[i]
0 pois
f

[i]
= f
[i]
E
[i, I]
f
[I]
E
[I, I]
Feoloff cap. 3 Introduo ao Simplex 35
Q I n
0 0 1 0

1 0 1 0 0

1 0 0 0

0 0 0 1

I
0 0 0 0
0 0 0 0
i 0 0 0 0
Figura 3.11: Matriz E

no m do caso 1A.
e f
[i]
0 em virtude de (i0). Suponha agora que E
[i, I]
positivo. Ento f

[i]

0 porque
f

[i]
= E
[i, I]
(
f
[i]
E
[i, I]

f
[I]
E
[I, I]
)
e a expresso entre parnteses no negativa, em virtude da denio do
caso 1A. Em suma, f

[i]
0 para cada i em P + h .
DEMONSTRAO DE (3.d): Como a pivotao nos casos 1B e 3B ocorre em
torno de p, k, temos f

[j]
= f
[j]
/E
[j, I]
. Mas f
[j]
0 em virtude de (i0) e
E
[j, I]
> 0 pois p P

. Logo,
f

[j]
0.
Resta considerar f

[i]
com i em P p. Suponha inicialmente que E
[i, I]
no
positivo. Ento f

[i]
0 pois
f

[i]
= f
[i]
E
[i, I]
f
[j]
E
[j, I]
e f
[i]
0. Suponha agora que E
[i, I]
positivo. Ento f

[i]
0 porque
f

[i]
= E
[i, I]
(
f
[i]
E
[i, I]

f
[j]
E
[j, I]
)
e a expresso entre parnteses no negativa em virtude da maneira como p foi
escolhido.
As demonstraes de (3.b), (3.c), (3.e) e (3.f) so anlogas s demonstraes
das relaes correspondentes no algoritmo de Gauss-Jordan. A ttulo de ilustra-
o, vamos examinar as duas ltimas.
DEMONSTRAO DE (3.e): Como E
[j, Qq]
= 0 em virtude de (i1), a deni-
o da operao de pivotao garante que
E

[j, Qq]
= E
[j, Qq]
e E

[i, Qq]
= E
[i, Qq]
para cada i em M p .
Feoloff cap. 3 Introduo ao Simplex 36
q I n
0 1 0

1 1 0 0

0 0 1

j
0 0 0
0 0 0
0 0 0
i 0 0 0
Figura 3.12: Matriz E

no m dos casos 1B e 3B.


DEMONSTRAO DE (3.f): Convm representar a operao de pivotao de
forma matricial, como j zemos ao analisar o algoritmo de Gauss-Jordan.
Seja

F a matriz elementar sobre M M cuja coluna saliente, p, igual a

1
E
[ , I]
. Seja

G a inversa de

F, isto , a matriz elementar com coluna saliente p

G
denida pelas equaes

G
[j, j]
= 1/E
[j, I]
e

G
[i, j]
= E
[i, I]
/E
[j, I]
para cada i
em M p. Observe que

F

G =

G

F = I e E

=

GE.
Agora, para cada i em M,
E

[i, I]
=

G
[i, ]
E
[ , I]
=

G
[i, ]

F
[ , j]
= (

G

F)
[i, j]
= I
[i, j]
.
Logo, E

[ , I]
= I
[ , j]
.
Como acabamos de mostrar, os invariantes (i0) e (i1) valemno incio de cada
iterao. Em particular, os invariantes valem no incio da ltima iterao. Por-
tanto, a matriz E que o Simplex devolve simples com relao ao par n, m: no
caso 2, E simples invivel (com linha de inviabilidade h); no caso 3A, E sim-
ples ilimitada (com coluna de ilimitao k); no caso 4, E simples solvel (com
bases P e Q).
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 innita 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 gura 3.13.
A convergncia melhora se insistirmos na mesma linha h, iterao aps ite-
rao, enquanto P no se alterar. A justicativa para esta poltica est na se-
guinte observao, a ser demonstrada no prximo captulo: enquanto estiver
Feoloff cap. 3 Introduo ao Simplex 37
1 2 10 2
0 1 12 2
0 6 13 3
0 0 0 0
12 1 5 1
12 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
Figura 3.13: Exemplo de no-convergncia do esboo do Simplex na
seo 3.2. A gura registra o valor de E no incio de trs iteraes con-
secutivas. Em todas, 1 o nico elemento de P. Na primeira iterao,
o caso 1 se aplica com h, k = 2, 2 e o subcaso 1B se aplica com p = 1.
Na segunda iterao, o caso 1 se aplica com h, k = 3, 1 e o subcaso 1B
se aplica com p = 1. No incio da terceira iterao temos exatamente
a mesma congurao que no incio da primeira. Este ciclo poder se
repetir ad ternum.
acontecendo o caso 1 com um mesmo valor de P e um mesmo valor de h, o va-
lor absoluto de f
[I]
diminui ou, na pior das hipteses, no aumenta. Em outras
palavras, numa seqncia de ocorrncias do caso 1B, a seqncia de valores de
f
[I]
monotnica, isto , crescente ou decrescente.
2
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 1 0 1 2 0
2 2 2 2 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 .
Feoloff 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
3.5 Suponha que no incio de uma iterao do Simplex aplica-se o caso 3 e k
escolhido, por engano, de modo que E
[i, I]
0. Suponha que a iterao
executada com este valor de k. Como isso afeta a iterao corrente? Como
isso afeta o andamento das iteraes subseqentes?
Captulo 4
Heurstica Simplex
Que a heurstica apresente a sua verso dos fatos!
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
zemos no captulo anterior (seo 3.2). O prximo captulo mostrar como
renar 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 especicar 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
[ , i]
= I
[ , i]
e FG = I ,
onde I a matriz identidade. Averso da heurstica que descreveremos a seguir
devolve F e G. De posse dessas matrizes, basta calcular os produtos FG e GD e
vericar se, de fato, o primeiro igual matriz identidade e o segundo simples
com relao a n,m.
Como E = GD, cada linha de E uma combinao linear das linhas de D.
Como G
[ , i]
= I
[ , i]
, cada linha de E
[Ai, ]
uma combinao linear das
linhas de D
[Ai, ]
e o vetor E
[i, ]
a soma de D
[i, ]
com uma combinao
linear das linhas de D
[Ai, ]
.
1
Uma heurstica um procedimento de tentativa-e-erro. No presente texto, o termo usado
para designar um procedimento computacional que (ao contrrio de um algoritmo) nem sempre
converge, mas produz os resultados desejados quando converge. Um procedimento computaci-
onal converge se sua execuo termina depois de um nmero nito de iteraes, quaisquer que
sejam os dados.
39
Feoloff cap. 4 Heurstica Simplex 40
1 2 2 0 1 2 0 0 2 2 4 0 24
0 1 1 0 0 1 12 0 1 1 2 0 12
0 0 2 0 0 0 12 0 2 0 5 1 10
0 1 1 1 0 1 1 1 1 1 3 1 2
Figura 4.1: Agura especica matrizes F, G e D. Verique que
FG = I, que G[ , 4] = I[ , 4] e que a matriz GD simples com
relao coluna 5 e linha 4.
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 zer sentido. Essa po-
ltica melhora muito a convergncia, embora no seja suciente para garanti-la.
Para implementar a poltica, introduzimos duas novas variveis: L e h.
Heurstica Simplex Recebe uma matriz D sobre M N e elementos 1
ne m de N e M respectivamente; se convergir, devolve matrizes F e G n
i
sobre M M tais que FG = I, G
[ , i]
= I
[ , i]
e GD simples (solvel,
invivel, ou ilimitada) com relao ao par n, m.
Cada iterao comea comuma parte L de Mm, umelemento h de ML, 1
I
e matrizes F, G e E. Aprimeira iterao comea com F = G = I, E = D, L =
e com h em M, se possvel
2
distinto de m. Cada iterao adota a abreviatura
f = E
[ , n]
e consiste no seguinte: )
ALTERNATIVA I: h diferente de m .
CASO I.1: E
[I, I]
> 0 e f
[I]
0 ou E
[I, I]
< 0 e f
[I]
0
para algum k em N n . I
Seja L

o conjunto de todos os p em L para os quais E


[j, I]
> 0. 1

CASO I.1A: f
[I]
/E
[I, I]
f
[j]
/E
[j, I]
para todo p em L

.
Seja F

, G

, E

o resultado da pivotao de F, G, E em torno de h, k.


Seja L

o conjunto L + h.
Escolha h

em M L

, se possvel distinto de m.
Comece nova iterao com L

, h

, F

, G

, E

nos papis de L, h, F, G, E.
CASO I.1B: f
[I]
/E
[I, I]
> f
[j]
/E
[j, I]
para algum p em L

.
Escolha qualquer p em L

tal que f
[j]
/E
[j, I]
mnimo. j
Seja F

, G

, E

o resultado da pivotao de F, G, E em torno de p, k.


Comece nova iterao com F

, G

e E

nos papis de F, G e E.
2
Ou seja, se A i no vazio.
Feoloff cap. 4 Heurstica Simplex 41
CASO I.2: E
[I, .n]
o e f
[I]
> 0 ou E
[I, .n]
o e f
[I]
< 0 .
Devolva F e G e pare.
CASO I.3: E
[I, .n]
= o e f
[I]
= 0 .
Seja L

o conjunto L + h.
Escolha h

em M L

, se possvel distinto de m.
Comece nova iterao com L

e h

nos papis de L e h.
ALTERNATIVA II: h igual a m .
CASO II.1: E
[I, I]
< 0 para algum k em N n . I
Seja L

o conjunto de todos os p em L para os quais E


[j, I]
> 0. 1

CASO II.1A: L

vazio .
Devolva F e G e pare.
CASO II.1B: L

no vazio .
Escolha qualquer p em L

tal que f
[j]
/E
[j, I]
mnimo. j
Seja F

, G

, E

o resultado da pivotao de F, G, E em torno de p, k.


Comece nova iterao com F

, G

e E

nos papis de F, G e E.
CASO II.2: E
[I, .n]
o .
Devolva F e G e pare.
3
A operao de pivotao denida como no algoritmo de Gauss-Jordan:
dados elementos h de Mm e k de N n, o resultado da pivotao de F, G, E pivotao
em torno de h, k o terno F

, G

, E

de matrizes denido pelas equaes


F

[ , I]
= D
[ , I]
, F

[ , i]
= F
[ , i]
,
G

[I, ]
=
h
G
[I, ]
, G

[i, ]
= G
[i, ]
+
i
G
[I, ]
,
E

[I, ]
=
h
E
[I, ]
, E

[i, ]
= E
[i, ]
+
i
E
[I, ]
,
onde
h
= 1/E
[I, I]
e
i
= E
[i, I]
/E
[I, I]
para cada i em Mh. Como j vimos
em captulos anteriores,
F

= F

F , G

=

GG e E

=

GE,
onde

F a matriz elementar com coluna saliente h denida pela equao

1

F
[ , I]
= E
[ , I]
e

G a inversa de

F.

G
Observaes. bvio que uma das duas grandes alternativas se aplica em
cada iterao. Dentro de cada alternativa pelo menos um dos casos se aplica,
como vericamos no captulo anterior.
A escolha de h no incio da primeira iterao e nos casos I.1A e I.3 deve ser
entendida assim: escolha h de modo que h = m somente se M L = m.
A denio de p nos casos I.1B e II.1B deve ser entendida da seguinte
maneira: escolha qualquer p em L

que satisfaa a condio f


[j]
/E
[j, I]

f
[i]
/E
[i, I]
para todo i em L

.
3
Ver soluo do exerccio 4.2 no apndice E, pgina 192.
Feoloff 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 12 0 0 0 1 1 2 0 12 1
2 1 0 0 1 1 0 0 0 2 1 1 14
1 0 1 0 12 0 1 0 0 2 0 1 14
1 0 0 1 12 0 0 1 0 0 1 1 12
2 2 0 0 0 12 0 0 1 0 52 12 5 1
2 0 0 0 12 12 0 0 0 1 12 12 7 1
1 1 1 0 12 1 1 0 0 0 1 0 0
1 1 0 1 12 0 0 1 0 0 1 1 12
2 2 4 0 54 2 52 0 1 0 0 12 5 1
2 0 5 0 14 0 12 0 0 1 0 12 7 1
1 1 2 0 12 1 1 0 0 0 1 0 0 1
1 1 1 1 1 1 1 1 0 0 0 1 12
Figura 4.2: Exemplo de aplicao do Simplex. A gura registra os valores de
F, G e E no incio de cada iterao. O rtulo L indica as linhas que esto
em L. A ltima matriz E simples solvel com relao coluna 5 e linha 4.
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
1577473 3347473 2777473 1707473 0
4667473 3897473 137473 197473 0
5452491 3322491 5142491 3682491 0
13437473 15227473 14867473 15977473 0
76907473 128667473 123267473 139917473 1
842491 1682491 6867473 0 0 1 17732491 0 13917473
682491 1362491 2757473 0 0 0 21472491 1 4167473
25092491 50182491 492491 0 1 0 72712491 0 34802491
12582491 50072491 36317473 1 0 0 63642491 0 27147473
288342491 601592491 152837473 0 0 0 456402491 0 656207473
Figura 4.3: Exemplo de aplicao do Simplex. Ao receber a matriz D (topo
da gura) e os ndices 9 (coluna) e 5 (linha) o Simplex executou 10 iteraes e
devolveu a matriz G (meio da gura). A matriz GD (parte inferior da gura)
simples solvel com relao coluna 9 e linha 5.
Feoloff cap. 4 Heurstica Simplex 43
Fases. Qualquer execuo da heurstica consiste em uma seqncia de fases
ocorrncias da alternativa I seguida de uma seqncia de ocorrncias da alter-
nativa II. Enquanto estiver acontecendo a alternativa I, dizemos que a heurs-
tica est na primeira fase; enquanto estiver acontecendo a alternativa II, dize-
mos que a heurstica est na segunda fase. A propsito, a alternativa II ocorre
quando e somente quando L = M m.
4.3 Anlise
Para entender como e por que a heurstica Simplex funciona, basta vericar as
seguintes propriedades (compare com as sees 3.3, 2.4 e 2.5):
Invariantes No incio de cada iterao da heurstica, existe uma parte
P de L e uma parte Q de N n tais que Q
(i0) f
[1]
o ,
(i1) E
[1, Q]
de bijeo , E
[A1, Q]
= O e E
[11, ]
= O ,
(i2) F G = I ,
(i3) GD = E ,
(i4) G
[ , A1]
= I
[ , A1]
,
onde f o vetor E
[ , n]
.
1 i Q n
0 0 0 0 0 0 1

0 0 0 0 1 0 1 0

0 0 0 0 1 0 0

1
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 i 0 0 0
Figura 4.4: Matrizes G e E no incio de uma iterao da heurstica Simplex.
evidente que esses invariantes valem (com P e Q vazios) no incio da
primeira iterao. Suponha agora que os invariantes valem no incio de uma
iterao qualquer que no a ltima. claro que nessa iterao ocorre o caso I.1A,
o caso I.1B, o caso I.3 ou o caso II.1B. bvio que depois de uma ocorrncia do
caso I.3 os invariantes permanecem vlidos; para tratar dos demais casos, adote
a notao
f

= E

[ , n]
e P

= P + h.
Feoloff cap. 4 Heurstica Simplex 44
Seja q o nico elemento de Q tal que E
[j, q]
= 1. Basta mostrar agora que no
m do caso I.1A
f

[1

]
o, (4.a)
E

[ , Q]
= E
[ , Q]
e E

[ , I]
= I
[ , I]
, (4.b)
E

[1

, ]
= E
[11, ]
, (4.c)
G

[ , A1

]
= G
[ , A1

]
, (4.d)
que no m dos casos I.1B e II.1B
f

[1]
o, (4.e)
E

[ , Qq]
= E
[ , Qq]
e E

[ , I]
= I
[ , q]
, (4.f)
E

[11, ]
= E
[11, ]
, (4.g)
G

[ , A1]
= G
[ , A1]
, (4.h)
e que no m de quaisquer dos casos
F

= I e G

= E

. (4.i)
As propriedades (4.c) e (4.g) so triviais. As propriedades (4.a), (4.b), (4.e) e (4.f)
j foram demonstradas na seo 3.3. As demonstraes das demais proprieda-
des so anlogas s que zemos ao discutir o algoritmo de Gauss-Jordan.
Os invariantes valem, em particular, no incio da ltima iterao. Portanto,
na ltima iterao, a matriz E simples invivel (caso I.2) ou simples ilimitada
(caso II.1A) ou simples solvel (caso II.2) com relao ao par n, m. Em qualquer
desses casos, G
[ , i]
= I
[ , i]
em virtude de (i4). Alm disso, FG = I em vir-
tude de (i2). Assim, ao devolver F e G, a heurstica est se comportando como
prometeu.
4.4 Mais trs invariantes
Os trs invariantes que examinaremos a seguir (compare com a seo 2.5) pa-
recem irrelevantes no presente captulo, mas sero importantes para a anlise
do mecanismo de convergncia que introduziremos no prximo captulo (se-
o 5.5).
Invariantes No incio de cada iterao da heurstica,
(i5) F
[ , A1]
= I
[ , A1]
e F
[ , 1]
= D
[ , Q]

J ,
(i6) D
[A1, Q]
= G
[A1, 1]
D
[1, Q]
,
(i7) D
[1, Q]

J G
[1, 1]
= I ,
onde

J a transposta da matriz de bijeo E
[1, Q]
.

J
Feoloff cap. 4 Heurstica Simplex 45
Ademonstrao dessas propriedades anloga dos invariantes correspon-
dentes do algoritmo de Gauss-Jordan.
O invariante (i5) descreve completamente a matriz F. Em particular, mos-
tra que no preciso atualizar F a cada iterao: a matriz pode ser calculada
imediatamente antes do m da execuo da heurstica. claro que para isso
preciso dispor das variveis P e Q.
O invariante (i6) mostra que, para cada i em M P, o vetor D
[i, Q]
uma
combinao linear das linhas da matriz D
[1, Q]
. O invariante (i7) mostra que

J G
[1, 1]
uma inversa direita de D
[1, Q]
. A propsito, os invariantes (i3) e (i4)
mostram que

J G
[1, 1]
uma inversa esquerda de D
[1, Q]
.
Esses invariantes sugerem que em certas condies podemos tomar um pe-
queno atalho antes da primeira iterao. Suponha, por exemplo, que existe uma
parte Q de N n tal que D
[Ai, Q]
de bijeo e D
[Ai, n]
o (mas D
[i, Q]
no nula). Seja P o conjunto M m e G a matriz denida por
G
[1, 1]
= I
[1, 1]
, G
[ , A1]
= I
[ , A1]
e
G
[A1, 1]
= D
[A1, Q]

J ,
onde

J a transposta de D
[1, Q]
. Ento a primeira iterao pode comear com
E = GD e L = M m.
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
Figura 4.5: Seja D a matriz da gura. Adote n = 8 e m = 4. Calcule
matrizes F
0
e G
0
que permitam comear a primeira iterao do Simplex
com L = M m, F = F
0
, G = G
0
e E = G
0
D.
4.5 Convergncia
A heurstica Simplex nem sempre converge. A gura 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 arme [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 utuante.
Feoloff cap. 4 Heurstica Simplex 46
1 0 0 0 0 0 1 1
0 1 0 1 12 32 12 0
0 0 1 9 52 112 12 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 114 34 4 12 0 0 1
0 14 14 2 12 1 0 0
0 114 34 4 12 0 1 0
0 534 274 98 292 0 0 1
1 0 0 0 0 0 1 1
0 52 12 2 0 1 1 0
0 112 32 8 1 0 2 0
0 93 15 18 0 0 29 1
1 0 0 0 0 0 1 1
0 54 14 1 0 12 12 0
0 92 12 0 1 4 2 0
0 1412 212 0 0 9 20 1
1 0 0 0 0 0 1 1
0 1 0 1 12 32 12 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 12 32 12 0
0 0 1 9 52 112 12 0
0 0 0 24 9 57 10 1
Figura 4.6: Um exemplo [Chv83] de no-convergncia da heurstica Simplex.
A gura registra a matriz E no incio de sucessivas iteraes. Em todas as
iteraes os elementos de L so 1, 2, 3 e h 4. No incio da stima iterao,
estamos exatamente na mesma situao que no incio da primeira.
progresso nos demais casos? No difcil vericar que no caso I.1B
0 < f

[I]
f
[I]
ou 0 > f

[I]
f
[I]
(4.j)
e no caso II.1B
f

[I]
f
[I]
, (4.k)
onde f

= E

[ , n]
. Demonstraremos uma generalizao dessas desigualdades
no prximo captulo. Imagine agora que estamos diante de uma seqncia de
ocorrncias do caso I.1B ou do caso II.1B. Suponha, por um instante, que as desi-
gualdades em (4.j) e (4.k) so estritas ao longo da execuo da heurstica. Ento
a seqncia de valores de f
[I]
ser estritamente monotnica, isto , estritamente
Feoloff cap. 4 Heurstica Simplex 47
crescente ou estritamente decrescente.
5
Nessas condies, cada iterao da se-
qncia comear com um valor diferente de Q, como mostraremos no prximo
captulo recorrendo aos invariantes (i6) e (i7). Como o nmero de possveis va-
lores de Q nito, o nmero de iteraes ser nito, e portanto a heurstica
convergir.
Em suma, a heurstica Simplex converge se as desigualdades em (4.j) e (4.k)
forem sempre estritas. Mas essa observao um tanto vazia, porque no h
como prever se a condio estar satisfeita em todas as iteraes.
A heurstica corre o risco de no convergir quando f

[I]
= f
[I]
. fcil
vericar que isso acontece quando f
[j]
= 0. Diz-se que matrizes com essa matriz
degenerada
propriedade so degeneradas. fcil vericar tambm que f
[j]
= 0 quando,
em alguma iterao anterior, houve empate na denio de p, ou seja, quando empate
f
[j]
/E
[j, I]
mnimo para mais de um p em L

. O captulo seguinte introduzir


uma poltica para a escolha de p no caso de empates.
4.6 Concluso
Aheurstica Simplex recebe uma matriz D, umndice n de coluna e umndice m
de linha e procura determinar uma matriz inversvel G tal que G
[ , i]
= I
[ , i]
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.
4.7 Apndice: Simplex Revisto
Cada iterao do Simplex usa apenas a linha h e as colunas k e n da ma-
triz E. Podemos, portanto, tentar economizar algumas operaes aritmticas
eliminando a varivel E e calculando os vetores
G
[I, ]
D, GD
[ , I]
e GD
[ , n]
apenas quando isso se zer 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 Q
0
de N n tal que
D
[Ai, Q
0
]
de bijeo,
D
[i, Q
0
]
= o e D
[Ai, 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 = Q
0
, G = I e f = D
[ , n]
. Cada iterao consiste
no seguinte:
5
Uma seqncia
1
,
2
,
3
, . . . estritamente decrescente se
1

2

3
.
Feoloff cap. 4 Heurstica Simplex 48
CASO 1: G
[i, ]
D
[ , I]
< 0 para algum k em N n Q .
Seja a o vetor GD
[ , I]
.
Seja P

o conjunto de todos os p em M m para os quais a


[j]
> 0.
CASO 1A: P

vazio .
Devolva G e pare (a matriz GD simples ilimitada).
CASO 1B: P

no vazio .
Escolha qualquer p em P

tal que f
[j]
/a
[j]
mnimo.
Seja q o elemento de Q tal que E
[j, q]
= 1.
Seja G

, f

o resultado da pivotao de G, f em torno de p, k.


Comece nova iterao com Qq + k, G

, f

nos papis de Q, G, f .
CASO 2: G
[i, ]
D
[ , I]
0 para todo k em N n Q .
Devolva G e pare (a matriz GD simples solvel).
Oresultado da pivotao do par G, f emtorno de h, k o par G

, f

denido
da maneira bvia: G

[I, ]
= G
[I, ]
/a
[I]
, f

[I]
= f
[I]
/a
[I]
e, para cada i em Mh,
G

[i, ]
= G
[i, ]
a
[i]
G
[I, ]
/a
[I]
e f

[i]
= f
[i]
a
[i]
f
[I]
/a
[I]
.
No incio de cada iterao, f
[Ai]
o, (GD)
[i, Q]
nulo e (GD)
[Ai, Q]
de
bijeo. Ademais, G inversvel e G
[ , i]
= I
[ , i]
.
Tal como a verso bsica, a verso revista da heurstica pode no convergir.
O nmero de operaes aritmticas que a verso revista executa em cada itera-
o , em geral, da mesma ordem que o mesmo nmero de operaes da verso
bsica. Entretanto, se [N[ muito maior que [M[ e se a matriz D esparsa (isto
, tem poucos componentes no-nulos) ento a verso revista faz menos opera-
es aritmticas que a verso bsica. Alm disso, a verso revista , em geral,
menos sensvel aos erros de arredondamento quando os nmeros so represen-
tados em ponto utuante.
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 (SEGUNDA FASE DO SIMPLEX) Escreva uma verso especializada da heu-
rstica Simplex para o caso em que D tem a seguinte forma: existe uma
Feoloff cap. 4 Heurstica Simplex 49
parte Q
0
de N n tal que
D
[Ai, Q
0
]
de bijeo , D
[i, Q
0
]
= o e D
[Ai, n]
o .
claro que o valor inicial de Q Q
0
. claro que P = M m em todas as
iteraes.
4.5 (PRIMEIRA FASE DO SIMPLEX) Adote as seguintes denies, um pouco
diferentes das que usamos no texto. Dada uma matriz E sobre M N e
um elemento n de N, diremos que E simples solvel se existem partes
P de M e Q de N n tais que
E
[1, Q]
de bijeo , E
[A1, ]
= o e E
[ , n]
o .
Uma matriz E simples invivel se existe um elemento h de M tal que
E
[I, .n]
o e E
[I, n]
positivo ou E
[I, .n]
o e E
[I, n]
negativo.
Escreva uma heurstica Simplex-Primeira-Fase que receba uma matriz
E e um ndice n e devolva matrizes F e G tais que FG = I e a matriz GD
simples no sentido da nova denio.
4.6 (MUDANA DE BASE) Seja E uma matriz sobre M N e sejam m e n
elementos de M e N respectivamente. Suponha que E simples solvel
com relao a n, m e tem base de linhas P e base de colunas Q. Suponha
ainda que
E
[i, I]
= 0 para algum k em N n Q e
E
[j, I]
> 0 para algum p em P .
Calcule matrizes F e G tais que FG = I, G
[ , i]
= I
[ , i]
e a matriz GE
simples solvel com relao a n, m e tem base de colunas Qq + k, onde
q um elemento de Q.
4.7 Deduza dos invariantes (i4), (i6) e (i7) que no incio de cada iterao da
heurstica, para todo i em M P, vale a identidade
E
[i, ]
= D
[i, ]
D
[i, Q]

E
[Q, 1]
E
[1, ]
.
(Essa identidade til na anlise da regra de Bland, a ser mencionada no
prximo captulo.)
4.8 Aplique a heurstica Simplex matriz abaixo [Bea55] com n = 8 e m = 4.
Mostre que a heurstica no converge quando os elementos de Q so 1, 6, 7,
depois 1, 2, 7, depois 2, 3, 7, depois 3, 4, 7, depois 4, 5, 7 e nalmente 5, 6, 7.
14 60 125 9 1 0 0 0
12 90 150 3 0 1 0 0
0 0 1 0 0 0 1 1
34 150 150 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 renamento 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.)
5.1 Ordem lexicogrca
Seja N um conjunto de ndices e uma enumerao dos elementos de N, isto .

, uma seqncia em que cada elemento de N aparece uma e uma s vez. (Em
outras palavras, uma ordem total sobre N.) Para quaisquer vetores x e y
sobre N, diremos que x lexicogracamente menor que y em relao a se
existe k em N tal que
x
[I]
< y
[I]
mas x
[)]
= y
[)]
para todo j que precede k em . Escreveremos
x y
para dizer que x lexicogracamente menor que y em relao a . Assim, a
enumerao induz uma relao de ordem lexicogrca no conjunto dos
vetores sobre N:
x y se x y ou x = y.
A relao denida da maneira bvia: x y se y x. Diremos que um vetor
x lexicogracamente positivo se x o. lexicograca-
mente
positivo
importante distinguir a desigualdade lexicogrca x y da desigualdade
usual x y (veja seo 1.1), que signica que x
[i]
y
[i]
para todo i. Se x y
ento x y, mas a recproca no verdadeira.
50
Feoloff cap. 5 Algoritmo Simplex 51
u = 0 11 99 88
v = 0 0 0 0
x = 88 33 44 11
y = 88 33 33 99
z = 88 33 44 12
Figura 5.1: Adote a enumerao 1, 2, 3, 4) do conjunto de ndices.
O vetor u lexicogracamente maior que v. O vetor x lexicograca-
mente maior que y e lexicogracamente menor que z.
5.2 Regra lexicogrca
O captulo anterior mostrou que a heurstica Simplex corre o risco de no con-
vergir sempre que houver mais de uma candidata para a linha de pivotao,
ou seja, sempre que houver mais de um p em L

tal que E
[j, n]
/E
[j, I]
m-
nimo (veja a seo 4.5). A regra lexicogrca que descreveremos a seguir fora
a convergncia ao prescrever uma maneira de escolher uma das candidatas. Em
virtude dessa regra, o algoritmo anda sempre numa mesma direo, arbi-
trria mas xa. A regra lexicogrca depende da presena de uma enumerao
de N cujo primeiro elemento n e consiste no seguinte:
Nos casos I.1B e II.1B da heurstica Simplex, escolha p em L

de modo
que o vetor
1
E
[j, I]
E
[j, ]
seja lexicogracamente mnimo com relao enumerao . A enu-
merao no se altera durante as ocorrncias dos casos I.1B e II.1B, mas
reajustada no m de cada ocorrncia do caso I.1A de modo que, para
todo p em P, o vetor E
[j, ]
seja lexicogracamente positivo.
Como n o primeiro elemento de , a escolha de p garante que o nmero
E
[j, n]
/E
[j, I]
ser mnimo. Assim, a regra lexicogrca um renamento da
regra que usamos na heurstica do captulo anterior. Como veremos adiante, a
regra lexicogrca satisfeita por um nico p.
5.3 Algoritmo
Se acrescentarmos a regra lexicogrca heurstica Simplex (veja seo 4.2) ob-
teremos o seguinte
Algoritmo Simplex Lexicogrco Recebe uma matriz D sobre M N 1
e elementos n e m de N e M respectivamente; devolve matrizes F e G n
i
sobre M M tais que FG = I, G
[ , i]
= I
[ , i]
e GD simples com
relao a n, m.
Feoloff cap. 5 Algoritmo Simplex 52
Cada iterao comea comuma enumerao de N, uma parte L de Mm,
um elemento h de M L, uma parte P de L, uma parte Q de N n e matrizes Q
F, G e E.
Na primeira iterao, qualquer enumerao que comece com n. Ade-
mais, L = P = , Q = , F = G = I, E = D e h um elemento de M, se
possvel distinto de m. Cada iterao consiste no seguinte, com f = E
[ , n]
: )
ALTERNATIVA I: h diferente de m .
CASO I.1: E
[I, I]
> 0 e f
[I]
0 ou E
[I, I]
< 0 e f
[I]
0
para algum k em N n . I
Seja L

o conjunto de todos os p em L tais que E


[j, I]
> 0. 1

CASO I.1A: f
[I]
/E
[I, I]
f
[j]
/E
[j, I]
para todo p em L

.
Dena

, L

, h

, F

, G

e E

como indicado abaixo.

Comece nova iterao com

, L

, h

, P + h, Q + k, F

, G

, E

nos papis de , L, h, P, Q, F, G, E.
CASO I.1B: f
[I]
/E
[I, I]
> f
[j]
/E
[j, I]
para algum p em L

.
Dena q, F

, G

e E

como indicado abaixo.


Comece nova iterao com Qq + k, F

, G

, E

nos papis de Q, F, G, E.
CASO I.2: E
[I, .n]
o e f
[I]
> 0 ou E
[I, .n]
o e f
[I]
< 0 .
Devolva F e G e pare.
CASO I.3: E
[I, .n]
= o e f
[I]
= 0 .
Seja L

o conjunto L + h.
Escolha h

em M L

se possvel distinto de m.
Comece nova iterao com L

e h

nos papis de L e h.
ALTERNATIVA II: h igual a m .
CASO II.1: E
[I, I]
< 0 para algum k em N n . I
Seja L

o conjunto de todos os p em L tais que E


[j, I]
> 0. 1

CASO II.1A: L

vazio .
Devolva F e G e pare.
CASO II.1B: L

no vazio .
Dena q, F

, G

e E

como indicado abaixo.


Comece nova iterao com Qq + k, F

, G

, E

nos papis de Q, F, G, E.
CASO II.2: E
[I, .n]
o .
Devolva F e G e pare.
Resta descrever os detalhes dos casos I.1A, I.1B e II.1B. O caso I.1A consiste
no seguinte:
Seja F

, G

, E

o resultado da pivotao de F, G, E em torno de h, k.


Feoloff cap. 5 Algoritmo Simplex 53
Adote uma enumerao

de N na qual n seja o primeiro elemento

e os elementos de Q + k venham logo a seguir (em qualquer ordem).


Seja L

o conjunto L + h.
Escolha h

em M L

, se possvel distinto de m.
(A operao de pivotao denida exatamente como no captulo anterior.) Os
casos I.1B e II.1B so formalmente idnticos e consistem no seguinte:
Escolha p em L

de modo que o vetor E


[j, ]
/E
[j, I]
j
seja lexicogracamente mnimo com relao enumerao .
Seja q o elemento de Q tal que E
[j, q]
= 1.
Seja F

, G

, E

o resultado da pivotao de F, G, E em torno de p, k.


Aescolha lexicogrca de p deve ser entendida assim: escolha p em L

de modo
que
1
E
[j, I]
E
[j, ]

1
E
[i, I]
E
[i, ]
(5.a)
para todo i em L

. A propsito, L

parte de P, uma vez que a matriz E


[11, ]
nula em virtude do invariante (i1) abaixo.
5.4 Anlise
O comportamento do algoritmo pode ser descrito pelas seguintes propriedades
(compare com as sees 4.3 e 4.4):
Invariantes No incio de cada iterao do algoritmo,
(i0) E
[i, ]
o para cada i em P ,
1
(i1) E
[1, Q]
de bijeo, E
[A1, Q]
= O e E
[11, ]
= O ,
(i2) FG = I ,
(i3) GD = E ,
(i4) G
[ , A1]
= I
[ , A1]
,
(i5) F
[ , A1]
= I
[ , A1]
e F
[ , 1]
= D
[ , Q]

J ,
(i6) D
[A1, Q]
= G
[A1, 1]
D
[1, Q]
,
(i7) D
[1, Q]

J G
[1, 1]
= I ,
onde

J a transposta da matriz de bijeo E
[1, Q]
.

J
Os invariantes (i1) a (i7) so idnticos aos que demonstramos ao analisar
a heurstica Simplex. O invariante (i0) generaliza o invariante correspondente
da heurstica. Note que a desigualdade lexicogrca em (i0) estrita; compare
1
No entanto, a proposio os elementos de Q precedem os demais elementos de . n na
enumerao no invariante!
Feoloff 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 12 32 12 0
0 0 1 9 52 112 12 0
0 0 0 24 9 57 10 1
1
E[3,7]
E[3, ]
1
E[2,7]
E[2, ]
1
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
E[2,6]
E[2, ]
1
E[1,6]
E[1, ]
1 114 34 4 12 0 0 1
0 14 14 2 12 1 0 0
0 114 34 4 12 0 1 0
0 534 274 98 292 0 0 1
1
E[2,5]
E[2, ]
1
E[3,5]
E[3, ]
1 52 12 2 0 1 0 1
0 12 12 4 1 2 0 0
0 52 12 2 0 1 1 0
0 412 12 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
Figura 5.2: Exemplo de aplicao do Simplex Lexicogrco (compare com a
gura 4.6). Na primeira iterao, as linhas 1, 2 e 3 esto em L e em P e as
colunas 1, 2 e 3 esto em Q. As letras que encabeam as colunas, tomadas
em ordem alfabtica, indicam a enumerao de N (a mesma em todas as itera-
es). O caso II.1B ocorre em todas as iteraes, exceto a ltima. Indicamos as
desigualdades lexicogrcas que ditam a escolha de p em cada iterao. A exe-
cuo do algoritmo termina no caso II.2.
Feoloff cap. 5 Algoritmo Simplex 55
isso com nossa discusso na seo 4.5 sobre a no-convergncia da heurstica,
especialmente no caso de sistemas degenerados.
claro que o invariante (i0) vale no incio da primeira iterao. Suponha
agora que ele vale no incio de uma iterao qualquer que no a ltima. Seja

a ordem lexicogrca induzida por

. preciso mostrar ento que no m do


caso I.1A teremos
E

[i, ]

o para cada i em P + h , (5.b)


e que no m dos casos I.1B e II.1B teremos
E

[i, ]
o para cada i em P . (5.c)
DEMONSTRAO DE (5.b): J mostramos, ao analisar a heurstica Simplex,
que
E

[1+I, n]
= f

[1+I]
o
e que E

[1+I, Q+I]
uma matriz de bijeo. Na enumerao

, o primeiro
elemento n e os elementos de Q + k precedem todos demais elementos de N.
Portanto, o vetor E

[i, ]
lexicogracamente positivo.
DEMONSTRAO DE (5.c): preciso mostrar que, para todo i em P, o vetor
E

[i, ]
lexicogracamente positivo com relao enumerao . Considere
inicialmente o caso i = p. Ento
E

[j, ]
=
1
E
[j, I]
E
[j, ]
.
Como E
[j, I]
positivo e E
[j, ]
lexicogracamente positivo, E

[j, ]
tambm
lexicogracamente positivo. Suponha agora que i diferente de p e E
[i, I]
no
positivo. Por denio,
E

[i, ]
= E
[i, ]

E
[i, I]
E
[j, I]
E
[j, ]
= E
[i, ]
E
[i, I]
E

[j, ]
.
Como E
[i, ]
e E

[j, ]
so lexicogracamente positivos, tambm E

[i, ]
lexico-
gracamente positivo. Suponha, nalmente, que i diferente de p e E
[i, I]

positivo. Por denio,
E

[i, ]
= E
[i, I]
(
1
E
[i, I]
E
[i, ]

1
E
[j, I]
E
[j, ]
) .
Portanto, E

[i, ]
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
[1, Q]

uma matriz de bijeo. Portanto,
E

[i, ]
o,
como queramos demonstrar.
Feoloff cap. 5 Algoritmo Simplex 56
5.5 Convergncia
Enquanto estiver ocorrendo o caso I.1A ou o caso I.3, o algoritmo est fazendo
progresso, pois L aumenta. Asituao 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).
Fato 5.1 No m de cada ocorrncia do caso I.1B,
o E

[I, ]
E
[I, ]
ou o E

[I, ]
E
[I, ]
.
No m de cada ocorrncia do caso II.1B, E

[I, ]
E
[I, ]
.
DEMONSTRAO: Por denio do caso I.1B, temos f
[I]
/E
[I, I]
>
f
[j]
/E
[j, I]
. Logo,
1
E
[I, I]
E
[I, ]

1
E
[j, I]
E
[j, ]
.
Suponha E
[I, I]
positivo. Ento
E
[I, ]

E
[I, I]
E
[j, I]
E
[j, ]
.
Por outro lado, como E
[j, I]
positivo, o invariante (i0) garante que
E
[I, I]
E
[j, I]
E
[j, ]
o.
Como
E

[I, ]
= E
[I, ]

E
[I, I]
E
[j, I]
E
[j, ]
,
conclumos que o E

[I, ]
E
[I, ]
. Se E
[I, I]
for negativo, um racioccio an-
logo mostra que o E

[I, ]
E
[I, ]
. Finalmente, considere o caso II.1B. Como
E
[I, I]
negativo, E
[j, I]
positivo e
E

[I, ]
= E
[I, ]

E
[I, I]
E
[j, I]
E
[j, ]
,
o invariante (i0) aplicado ao vetor E
[j, ]
garante que E

[I, ]
E
[I, ]
.
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
dena

Q e

E 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
[I, ]


E
[I, ]
ou

E
[I, ]


E
[I, ]
,
Feoloff cap. 5 Algoritmo Simplex 57
donde

E
[I, ]
,=

E
[I, ]
. Nessas condies, o lema abaixo garante que

Q ,=

Q.
Como o nmero de subconjuntos de N nito, nossa seqncia de iteraes
necessariamente nita.
Lema 5.2 (da repetio de bases) Se

Q =

Q ento

E
[I, ]
=

E
[I, ]
.
DEMONSTRAO: Sejam

G e

G os valores da varivel G no incio das duas
iteraes em questo. Seja Q o valor comum de

Q e

Q. Em virtude do invari-
ante (i6),

G
[I, 1]
D
[1, Q]
=

G
[I, 1]
D
[1, Q]
,
pois ambas as expresses so iguais a D
[I, Q]
. Em virtude do invariante (i7),
D
[1, Q]
tem uma inversa direita:
D
[1, Q]

J

G
[1, 1]
= I ,
onde

J a transposta da matriz de bijeo

E
[1, Q]
. Logo,

G
[I, 1]
=

G
[I, 1]
. Em
virtude de (i4),

G
[I, ]
=

G
[I, ]
.
Finalmente, em virtude de (i3),

E
[I, ]
=

G
[I, ]
D =

G
[I, ]
D =

E
[I, ]
.
Em suma, se L e P permanecem constantes em alguma seqncia de itera-
es ento cada iterao comea com um valor diferente de Q. Assim, o compri-
mento da seqncia no excede o nmero de subconjuntos de Nn que tm[P[
elementos. Segue da que o nmero total de iteraes que o algoritmo executa
limitado pelo nmero total de subconjuntos de N n, ou seja, por
2
|N|1
.
Se ajustarmos a notao de modo que N seja o conjunto 1, 2, . . , n, teremos
n = [N[ e poderemos dizer que o nmero total de iteraes do algoritmo
limitado por
2
n1
.
Essa delimitao sugere que o nmero de iteraes pode crescer explosivamente
em funo de n. (Por exemplo, se somarmos 10 a n o valor de 2
n1
ser multi-
plicado por mais de 1000.) Mas a experincia mostra que, em geral, o nmero
de iteraes ca bem abaixo desse limite; o estudo deste fenmeno muito inte-
ressante (veja Borgwardt [Bor87]), mas no cabe aqui.
O algoritmo pode, de fato, executar cerca de 2
n1
iteraes. Klee e
Minty [KM72], e tambm Avis e Chvtal [AC78], construram uma famlia de
exemplos com n colunas e (n + 1)/2 linhas que foram o algoritmo a executar
cerca de 2
(n1)/2
iteraes. Reproduzimos nas guras 5.3 a 5.5 o resultado da
aplicao do algoritmo ao membro n = 9 da famlia.
Feoloff cap. 5 Algoritmo Simplex 58
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 1
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 1
0 4 1 1 0 0 0 0 5 1
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 1
4 0 1 1 0 0 0 0 25 1
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 1
4 0 1 1 0 0 0 0 25 1
8 0 0 4 1 1 0 0 25 1
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 1
0 4 1 1 0 0 0 0 5 1
0 8 0 4 1 1 0 0 65 1
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 1
0 4 1 1 0 0 0 0 5 1
0 8 4 0 1 1 0 0 85 1
0 16 8 0 0 4 1 1 205
0 8 4 0 0 2 1 0 210
Figura 5.3: Continua na prxima gura.
Feoloff cap. 5 Algoritmo Simplex 59
1 1 0 0 0 0 0 0 5 1
4 0 1 1 0 0 0 0 25 1
8 0 4 0 1 1 0 0 125 1
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 1
4 0 1 1 0 0 0 0 25 1
8 0 4 0 1 1 0 0 125 1
16 0 8 0 0 4 1 1 125 1
8 0 4 0 0 2 0 1 375
1 1 0 0 0 0 0 0 5 1
4 0 1 1 0 0 0 0 25 1
8 0 4 0 1 1 0 0 125 1
16 0 8 0 0 4 1 1 125 1
8 0 4 0 0 2 1 0 250
1 1 0 0 0 0 0 0 5 1
0 4 1 1 0 0 0 0 5 1
0 8 4 0 1 1 0 0 85 1
0 16 8 0 0 4 1 1 205 1
0 8 4 0 0 2 1 0 210
1 1 0 0 0 0 0 0 5 1
0 4 1 1 0 0 0 0 5 1
0 8 0 4 1 1 0 0 65 1
0 16 0 8 0 4 1 1 245 1
0 8 0 4 0 2 1 0 190
1 1 0 0 0 0 0 0 5 1
4 0 1 1 0 0 0 0 25 1
8 0 0 4 1 1 0 0 25 1
16 0 0 8 0 4 1 1 325 1
8 0 0 4 0 2 1 0 150
1 1 0 0 0 0 0 0 5 1
4 0 1 1 0 0 0 0 25 1
8 0 0 4 1 1 0 0 25 1
16 0 0 8 4 0 1 1 425 1
8 0 0 4 2 0 1 0 100
1 1 0 0 0 0 0 0 5 1
0 4 1 1 0 0 0 0 5 1
0 8 0 4 1 1 0 0 65 1
0 16 0 8 4 0 1 1 505 1
0 8 0 4 2 0 1 0 60
Figura 5.4: Continua na prxima gura.
Feoloff cap. 5 Algoritmo Simplex 60
1 1 0 0 0 0 0 0 5 1
0 4 1 1 0 0 0 0 5 1
0 8 4 0 1 1 0 0 85 1
0 16 8 0 4 0 1 1 545 1
0 8 4 0 2 0 1 0 40
1 1 0 0 0 0 0 0 5 1
4 0 1 1 0 0 0 0 25 1
8 0 4 0 1 1 0 0 125 1
16 0 8 0 4 0 1 1 625 1
8 0 4 0 2 0 1 0 0
Figura 5.5: Concluso das duas guras anteriores. As guras mostram a
aplicao do algoritmo Simplex Lexicogrco a um sistema com 9 colunas.
O algoritmo executa 2
(91)/2
iteraes. As guras registram o valor de E
no incio de cada iterao. O rtulo L indica as linhas que esto em L.
A enumerao de N est indicada pelas letras que encabeam as colunas,
tomadas em ordem alfabtica.
5.6 Nmero de operaes aritmticas
Mesmo sabendo que o nmero de iteraes do algoritmo cresce exponencial-
mente com o nmero de componentes da matriz, interessante estimar o n-
mero de operaes aritmticas executadas durante uma iterao.
Ajuste a notao de modo que M e N sejam os conjuntos 1, 2, . . , m e
1, 2, . . , n respectivamente. Assim poderemos dizer que m o nmero de li-
nhas e n o nmero de colunas da matriz D.
Para decidir que caso se aplica e determinar a linha e coluna em torno da
qual far a prxima pivotao, cada iterao do algoritmo Simplex executa no
mximo mn divises e menos que mn subtraes.
2
(Na verdade, mais justo
trocar mn por m
2
, uma vez que o resultado das comparaes lexicogrcas
s depende dos [Q[ + 1 primeiras colunas na enumerao .) Por outro lado,
cada pivotao requer no mais que mn multiplicaes e divises e menos que
mn adies e subtraes, como j observamos na seo 2.6. Portanto, o nmero
total de operaes aritmticas em cada iterao menor que
4mn.
(Attulo de comparao, a multiplicao de G por D requer m
2
n multiplicaes
e outras tantas adies.)
Qual o custo de uma operao aritmtica? Ouniverso natural do Simplex o
dos nmeros racionais: se cada componente da matriz D um nmero racional
ento todos os nmeros gerados pelo algoritmo sero racionais, uma vez que
o algoritmo s envolve as quatro operaes aritmticas e portanto transforma
2
As subtraes esto implcitas nas comparaes lexicogrcas.
Feoloff cap. 5 Algoritmo Simplex 61
nmeros racionais em outros nmeros racionais. O custo de uma operao arit-
mtica sobre nmeros racionais depende da magnitude dos numeradores e de-
nominadores dos nmeros envolvidos. Para estimar esse custo ser necessrio,
portanto, obter uma delimitao superior para os numeradores e denominado-
res gerados pelo algoritmo. Faremos isto no captulo 12. Podemos adiantar que
esses nmeros so, em geral, muito maiores que os numeradores e denomina-
dores dos componentes da matriz dada D.
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
[ , i]
= I
[ , i]
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.
Oalgoritmo executa cerca de 2
n1
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 utuante. Uma tal implementao aproximada pode
cometer erros arbitrariamente grandes. H um grande repertrio de truques
[Chv83] que procuram reduzir tais erros.
5.8 Apndice: Segunda fase do Simplex
Pode ser instrutivo examinar a verso especializada do algoritmo Simplex Lexi-
cogrco que se aplica a matrizes D que tm a seguinte forma: existe uma parte
Q
0
de N n tal que
D
[Ai, Q
0
]
de bijeo , D
[Ai, n]
o e D
[i, Q
0
]
= o.
claro que essa verso do algoritmo corresponde segunda fase do Simplex
Adote uma enumerao de N na qual n seja o primeiro elemento e os ele-
mentos de Q
0
precedam os elementos de N n Q
0
. Cada iterao comea
com matrizes F, G e E. A primeira iterao comea com F = G = I e E = D.
Cada iterao consiste no seguinte:
CASO 1: E
[i, I]
< 0 para algum k em N n .
Seja P

o conjunto dos p em M m para os quais E


[j, I]
> 0.
CASO 1A: P

vazio .
Devolva F e G e pare (E simples ilimitada).
CASO 1B: P

no vazio .
Escolha qualquer p em P

tal que o vetor E


[j, ]
/E
[j, I]
seja lexicogracamente mnimo em relao enumerao .
Feoloff cap. 5 Algoritmo Simplex 62
Seja F

, G

, E

o resultado da pivotao de F, G, E em torno de p, k.


Comece nova iterao com F

, G

e E

nos papis de F, G e E.
CASO 2: E
[i, .n]
o .
Devolva F e G e pare (E simples solvel).
No incio de cada iterao, para cada i em M m, o vetor E
[i, ]
lexicogra-
camente positivo com relao enumerao . Ademais, existe uma parte Q
de N tal que E
[Ai, Q]
uma matriz de bijeo e o vetor E
[i, Q]
nulo.
Oalgoritmo converge porque duas iteraes diferentes jamais comeamcom
o mesmo valor de Q. Portanto, o nmero de iteraes limitado pelo nmero
de subconjuntos de N n que tm [M m[ elementos.
5.9 Apndice: Regra de Bland
O algoritmo Simplex Lexicogrco que discutimos na seo 5.3 baseado numa
regra que escolhe a linha em torno da qual ser executada a prxima pivotao.
Uma outra regra, igualmente ecaz, foi demonstrada por Bland [Bla77]. A regra
de Bland consiste no seguinte:
Adote uma enumerao arbitrria sobre o conjunto N n;
essa enumerao permanece xa ao longo da execuo do algoritmo.
Escolha sempre o menor k dentre os que podem entrar na base e
o menor q dentre os que podem sair da base.
Em particular, escolha sempre o menor k que satisfaz a denio dos casos I.1
e II.1 da heurstica Simplex. Nos casos I.1B e II.1B, escolha p em L

de tal modo
que, para todo i em L

p,
f
[j]
/E
[j, I]
< f
[i]
/E
[i, I]
ou f
[j]
/E
[j, I]
= f
[i]
/E
[i, I]
mas q
p
< q
i
,
onde q
i
o elemento de Q tal que E
[i, q
i
]
= 1. A prova de que a regra de Bland
fora a convergncia do Simplex baseada na seguinte observao:
durante uma seqncia de ocorrncias dos casos I.1B ou II.1B, um ele-
mento k de N n que tenha entrado na base Q s sai da base depois
que um elemento maior que k tiver entrado na base.
A demonstrao dessa observao um tanto complexa e ser omitida. O al-
goritmo Simplex com regra de Bland executa cerca de 2
n1
iteraes no pior
caso.
Exerccios
5.1 Verique que a ordem lexicogrca entre vetores sobre N relativa a qual-
quer enumerao de N reexiva (x x), transitiva (se x y e y z
ento x z) e antisimtrica (se x y e y x ento x = y).
Feoloff cap. 5 Algoritmo Simplex 63
5.2 Suponha que y o em relao a uma dada enumerao do conjunto de
ndices. Mostre que x y x para todo vetor x.
5.3 Seja a, b, c, . . . uma seqncia de vetores, todos indexados por 1, 2, 3. Su-
ponha que os componentes de cada vetor so inteiros entre 0 e 9. Adote a
enumerao usual 1, 2, 3) e suponha que a seqncia de vetores estrita-
mente decrescente no sentido lexicogrco (isto , a b c . . .). Que
comprimento pode ter a seqncia?
5.4 Mostre que duas iteraes diferentes do algoritmo podem comear com o
mesmo valor de Q e valores diferentes de G.
5.5 Escreva o algoritmo Simplex Lexicogrco em uma linguagem mais for-
mal, mais prxima de PASCAL ou C. Programe o algoritmo em um compu-
tador.
5.6 Escreva o algoritmo Simplex com regra de Bland. Programe o algoritmo
em um computador.
5.7 Sejam n e m as cardinalidades de N e M respectivamente. Mostre que o
nmero total de iteraes do algoritmo Simplex Lexicogrco limitado
pela soma

n 1
0

+ +

n 1
m1

.
Captulo 6
Forma tradicional do Simplex
, / , c
G , G/ , c + q
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. Emoutras 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. Areformulao meramente notacional,
mas vale a pena discut-la com algum vagar. o que faremos neste captulo.
6.1 Sistemas matriz-vetor-vetor
Umsistema sobre MN umterno A, b, c que consiste emuma matriz A sobre
M N, um vetor b sobre M e um vetor c sobre N.
Se D uma matriz sobre

M

N com coluna especial n e linha especial m
(veja denio na seo 3.1) ento o correspondente sistema A, b, c denido
por
A = D
[

A i,

. n]
, b = D
[

A i, n]
, c = D
[ i,

. n]
. (6.a)
Ou seja, b a ltima coluna de D, c a ltima linha de D e A o restante de D.
bvio que A, b, c um sistema sobre (

M m) (

N n).
Reciprocamente, se A, b, c umsistema sobre MN ento a correspondente
matriz D resulta da justaposio de A, b e c:
D
[A, .]
= A, D
[A, n]
= b , D
[ i, .]
= c , (6.b)
sendo m um objeto que no est em M e n um objeto que no est em N.
O valor de D
[ i, n]
arbitrrio e irrelevante. claro que D uma matriz sobre
(M+ m) (N+ n), sendo m sua linha especial e n sua coluna especial.
64
Feoloff cap. 6 Forma tradicional do Simplex 65
0 0 0 1

0 0 1 0

0 1 0 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
c

0 0 0 0
Figura 6.1: Um sistema simples solvel. Compare com a gura 3.1.

0 0 0 1

0 0 1 0


0 1 0 0

/

1 0 0 0

0 0 0 0 0 0
0 0 0 0 0 0
c
<
0 0 0 0
Figura 6.2: Um sistema simples ilimitado. Compare com a gura 3.3.
Deduza da gura 3.2 a aparncia de um sistema simples invivel.
6.2 Sistemas simples
Um sistema A, b, c simples se a matriz D que resulta da justaposio de A, b
e c for simples (veja seo 3.1) com relao ao par de ndices que corresponde
a b, c. Em particular, A, b, c simples solvel, simples invivel ou simples ili-
mitado se a matriz D for simples solvel, simples invivel ou simples ilimitada,
respectivamente. Os conceitos de base, linha de inviabilidade e coluna de
ilimitao de um sistema simples A, b, c so as adaptaes bvias dos corres-
pondentes conceitos para matriz simples (veja seo 3.1).
6.3 Algoritmo Simplex
O algoritmo Simplex pode ser apresentado agora da seguinte maneira:
Algoritmo Simplex (forma tradicional) Recebe um sistema A, b, c so-
bre M N e devolve matrizes F e G sobre M M e um vetor g sobre q
M tais que FG = I e o sistema
GA, Gb , c + gA
simples (solvel, invivel ou ilimitado).
Feoloff cap. 6 Forma tradicional do Simplex 66
1 1 1 0 0 2
1 2 0 1 0 10
3 2 0 0 1 6
3 0 1 0 0
1 1 1 1 18 38 0 0 1 18 38 3
0 2 1 0 38 18 0 1 0 38 18 3
0 2 3 0 14 14 1 0 0 14 14 4
1 78 38 0 0 0 78 38
Figura 6.3: Digamos que A, b, c o sistema representado no topo da gura.
Sejam F, G e g os objetos denidos na parte inferior esquerda da gura (g
est representado sob G). Verique que FG = I. Verique que o sistema
GA, Gb, c + gA na parte inferior direita da gura simples solvel.
O algoritmo consiste no seguinte. Construa a justaposio D de A, b e c
descrita em (6.b). Seja n a coluna especial e m a linha especial de D. Submeta
D, n, m ao algoritmo Simplex (veja seo 5.3), que devolver matrizes

F e

G
tais que

F

G = I,

G
[, i]
= I
[, i]
e

GD simples. Dena F, G e g da seguinte 1
G
q
maneira:
F =

F
[A, A]
, G =

G
[A, A]
e g =

G
[ i, A]
. (6.c)
Devolva F, G e g e pare.
claro que FG = I. claro tambm que

GD o resultado da justaposio
de GA, Gb e c + gA. Como

GD simples, o sistema GA, Gb, c+gA simples.
Portanto, o algoritmo tem o comportamento que prometemos.
Como j observamos na seo 5.5, o nmero de iteraes do algoritmo
limitado por 2
n
, 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 A

, b

, c

tais que
(i0) b

[1]
o ,
(i1) A

[1, Q]
de bijeo, A

[A1, Q]
= O e c

[Q]
= o ,
(i2) FG = I ,
Feoloff cap. 6 Forma tradicional do Simplex 67
(i3) A

= GA, b

= Gb e c

= c + gA,
(i4) G
[ , A1]
= I
[ , A1]
e g
[A1]
= o ,
(i5) F
[ , A1]
= I
[ , A1]
e F
[ , 1]
= A
[ , Q]

J ,
(i6) A
[A1, Q]
= G
[A1, 1]
A
[1, Q]
e c
[Q]
= g
[1]
A
[1, Q]
,
(i7) A
[1, Q]

J G
[1, 1]
= I ,
onde

J a transposta da matriz de bijeo A

[1, Q]
. O vetor g que o algoritmo
devolve redundante: ele poderia ser calculado a partir de A, c, G e A

. De
fato,
g
[1]
= c
[Q]

JG
[1, 1]
(6.d)
de acordo com (i6) e (i7) e g
[A1]
= o de acordo com (i4).
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 FG = 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
Problema cannico primal
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 justicativa.
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
7.1 Denio do problema
O problema cannico primal de programao linear consiste no seguinte:
Problema CP(A, b, c): Dada uma matriz A, um vetor b e um vetor c,
encontrar um vetor x o tal que Ax = b e cx mnimo.
A equao Ax = b e a inequao x o so as restries do problema. Pode- restries
ramos enunciar o problema dizendo: minimize cx sob as restries Ax = b e
x o. O conjunto de todos os vetores x que satisfazem as restries conhecido
como poliedro cannico primal e ser denotado aqui por
X(A, b) .
Se o nmero cx for interpretado como custo do vetor x, o problema cannico
primal consiste em encontrar um vetor de custo mnimo em X(A, b).
Problemas solveis, inviveis e ilimitados. Umvetor x em X(A, b) uma
soluo do problema CP(A, b, c) se cx cx

para todo x

em X(A, b). O pro-


blema pode no ter soluo alguma. Isso acontece, por exemplo, se X(A, b)
1
Veja a introduo do livro de Chvtal [Chv83] e a resenha histrica [LKS91] organizada por
Lenstra, Rinnooy Kan e Schrijver.
69
Feoloff cap. 7 Problema cannico primal 70
minimizar 4x
1
+ 1x
2
+ 5x
3
+ 3x
4
sujeito a 1x
1
1x
2
1x
3
+ 3x
4
= 2
5x
1
+ 1x
2
+ 3x
3
8x
4
= 44
1x
1
1x
2
4x
3
+ 5x
4
= 3
e x
1
, x
2
, x
3
, x
4
0
Figura 7.1: Um problema cannico primal, escrito em
notao no-matricial.
vazio. Dizemos que o problema invivel
2
se X(A, b) = e vivel em caso invivel
vivel
contrrio.
O problema tambm no tem soluo se X(A, b) contm vetores de custo
arbitrariamente negativo, ou seja, se para todo nmero existe x em X(A, b) tal
que cx < . Nesse caso, dizemos que o problema ilimitado.
3
ilimitado
O problema cannico primal estar resolvido quando tivermos um algo-
ritmo que, ao receber um sistema A, b, c, responda com uma soluo x do pro-
blema CP(A, b, c) ou com a informao de que o problema no tem soluo.
desejvel que o algoritmo produza informaes adicionais que permitam con-
ferir suas respostas. Assim, no primeiro caso, o algoritmo deveria fornecer in-
formaes que permitissem vericar a minimalidade de cx e no segundo caso
deveria fornecer informaes que comprovassem a inexistncia de soluo. Es-
ses objetivos s sero plenamente alcanados no prximo captulo.
1 1 1 3 2
5 1 3 8 44
1 1 4 5 3
4 1 5 3
649 319 53 0
Figura 7.2: A parte superior da gura exibe um sistema A, b, c, com b
direita e c abaixo da matriz A. (Compare com a gura 7.1.) O vetor x repre-
sentado abaixo de c soluo do problema CP(A, b, c). fcil constatar que
x est em X(A, b), mas no to fcil vericar que x minimiza cx.
Observao sobre terminologia. Para muitos praticantes de programao soluo
vivel
linear, uma soluo qualquer vetor x tal que Ax = b; uma soluo vivel
soluo
tima
qualquer vetor em X(A, b); e uma soluo tima qualquer vetor x em
2
No confundir com o conceito de sistema simples invivel denido na seo 6.2.
3
No confundir com o conceito de sistema simples ilimitado denido na seo 6.2.
Feoloff cap. 7 Problema cannico primal 71
X(A, b) que minimize cx. O presente texto no usa essa terminologia porque
ela inconsistente e desrespeita o sentido corriqueiro da palavra soluo.
7.2 Problemas simples
Diremos que um problema CP(A, b, c) simples se o sistema A, b, c for simples
(veja seo 6.2). Um problema simples pode ser resolvido por mera inspeo,
como mostraremos a seguir.
Problema simples invivel. Digamos que os conjuntos de ndices de li-
nhas e colunas do sistema A, b, c so M e N respectivamente. Suponha que o
sistema simples invivel, ou seja, suponha que existe h em M tal que
A
[I, ]
o e b
[I]
> 0 ou A
[I, ]
o e b
[I]
< 0.
Ento o problema CP(A, b, c) no tem soluo: para todo vetor x o tem-se
A
[I, ]
x 0 < b
[I]
ou A
[I, ]
x 0 > b
[I]
, donde Ax ,= b, e portanto X(A, b)
vazio.
Problema simples solvel. Suponha que o sistema A, b, c simples sol-
vel e tem base de linhas P e base de colunas Q, isto , suponha que
A
[1, Q]
de bijeo, b
[1]
o,
A
[A1, .Q]
= O, A
[A1, Q]
= O, b
[A1]
= o,
c
[.Q]
o, c
[Q]
= o.
Seja x o vetor denido pelas equaes
x
[.Q]
= o e Ax = b .
Existe um e um s vetor x que satisfaz estas condies. claro que x
[Q]
=

A
[Q, 1]
b
[1]
, onde

A a transposta de A, e portanto x o. Esse um vetor vetor
bsico
bsico do sistema; dizemos que x est associado base Q. bvio que x est
em X(A, b). Como x
[.Q]
e c
[Q]
so nulos, temos
cx = 0.
Por outro lado, cx

o para todo x

em X(A, b), pois c o. Logo, x soluo


do problema CP(A, b, c).
Problema simples ilimitado. Suponha que o sistema A, b, c simples ili-
mitado e tem bases P e Q e coluna de ilimitao k, ou seja, suponha que
A
[1, I]
o, A
[1, Q]
de bijeo, b
[1]
o,
A
[A1, I]
= o, A
[A1, Q]
= O, b
[A1]
= o,
c
[I]
< 0, c
[Q]
= o.
Feoloff cap. 7 Problema cannico primal 72
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
Figura 7.3: Agura dene umsistema simples invivel A, b, c (com
b direita e c abaixo de A). O sistema tem duas linhas de inviabili-
dade: 2 e 3. O problema CP(A, b, c) simples invivel.
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
Figura 7.4: A parte superior da gura descreve um sistema simples
solvel A, b, c. O problema CP(A, b, c) simples solvel. Na parte
inferior da gura temos um vetor bsico. Esse vetor soluo do
problema CP(A, b, c).
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
Figura 7.5: A parte superior da gura dene um sistema simples
ilimitado A, b, c. Oproblema CP(A, b, c) simples ilimitado. Aparte
inferior da gura dene vetores x e x

. Para qualquer positivo, o


vetor x + x

est em X(A, b) e tem custo 8, o que comprova o


carter ilimitado do problema.
Feoloff cap. 7 Problema cannico primal 73
Ento o problema CP(A, b, c) ilimitado, pelas razes que passamos a expor.
Seja x o vetor denido pelas equaes
x
[.Q]
= o e Ax = b .
Existe um e um s vetor que satisfaz estas equaes; claro que x o. Seja x

o
vetor denido pelas equaes
x

[.QI]
= o, x

[I]
= 1 e Ax

= o.
Existe um e um s vetor que satisfaz estas equaes. claro que x

[Q]
=

A
[Q, 1]
A
[1, I]
e portanto x

o. Para qualquer positivo, bvio que o vetor


x + x

est em X(A, b). Ademais,


c (x + x

) = c
[I]
,
donde c (x + x

) tanto menor quanto maior for . Portanto, o problema


CP(A, b, c) ilimitado.
7.3 O Simplex resolve o problema
Para resolver umproblema cannico primal arbitrrio, basta reduz-lo a umpro-
blema simples. Uma reduo genrica tem o efeito descrito a seguir.
Observao 7.1 Para qualquer sistema A, b, c, qualquer vetor g e quais-
quer matrizes F e G tais que FG = I, os problemas CP(A, b, c) e
CP(GA, Gb, c + gA) tm o mesmo conjunto de solues.
DEMONSTRAO: Se Ax = b ento claro que (GA)x = Gb. Reciproca-
mente, se (GA)x = Gb ento
Ax = (FG)Ax = F(GA)x = F(Gb) = (FG)b = b .
Esse raciocnio mostra que Ax = b se e s se GAx = Gb e portanto que X(A, b) =
X(GA, Gb). Resta mostrar que minimizar cx o mesmo que minimizar (c +
gA)x. Isto assim porque a diferena entre cx e (c + gA)x no depende de x:
cx (c + gA)x = cx cx (gA)x = g(Ax) = gb .
Logo, se cx mnimo em X(A, b) ento (c+gA)x tambm mnimo em X(A, b).
Reciprocamente, se (c + gA)x mnimo ento cx tambm mnimo.
Portanto, qualquer problema cannico primal CP(A, b, c) pode ser resolvido
da seguinte maneira: Submeta o sistema A, b, c ao algoritmo Simplex (veja cap-
tulo 6). O algoritmo devolver matrizes F e G e um vetor g tais que FG = I e
o sistema A

, b

, c

simples, sendo
A

= GA, b

= Gb e c

= c + gA.
Feoloff 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
Figura 7.6: Ilustrao da observao 7.1. Considere o sistema A, b, c denido
pela gura. Seja a o vetor A[2, ] . Para todo x em X(A, b) temos (c + a)x =
cx + ax = cx + 10. Portanto, minimizar cx o mesmo que minimizar (c + a)x.
Os problemas CP(A, b, c) e CP(A, b, c + a) so equivalentes.
Se A

, b

, c

simples invivel, o problema CP(A, b, c) invivel. Se A

, b

, c

simples solvel, ento o vetor bsico x do sistema A

, b

, c

soluo do pro-
blema CP(A, b, c). Se A

, b

, c

simples ilimitado, o problema CP(A, b, c) no


tem soluo por ser ilimitado.
O algoritmo que acabamos de descrever mostra que, para qualquer sistema
A, b, c, o problema CP(A, b, c) tem soluo ou invivel ou ilimitado.
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 temsoluo
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 ca clara agora. Digamos que
F, G, g, F

, G

, g

so tais que FG = I, F

= I e os sistemas
GA, Gb, c + gA e G

A, G

b, c + g

A
so ambos simples. Ento os dois sistemas simples so de um mesmo tipo. De
fato, (1) se o primeiro sistema simples invivel, ento X(A, b) vazio e por-
tanto o segundo sistema no pode ser simples solvel nem simples ilimitado;
(2) se o primeiro sistema simples solvel, ento existe x em X(A, b) tal que cx
mnimo e, portanto, o segundo sistema no pode ser simples invivel nem ili-
mitado; (3) se o primeiro sistema simples ilimitado, ento X(A, b) no vazio
e cx no tem mnimo, donde o segundo sistema no pode ser simples invivel
nem solvel.
Feoloff cap. 7 Problema cannico primal 75
7.5 Exemplo
Uma empresa fabrica quatro modelos de um produto. Digamos que x
i
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:
4x
1
+ 9x
2
+ 7x
3
+ 10x
4
600
1x
1
+ 1x
2
+ 3x
3
+ 40x
4
400.
Digamos que o lucro total 12x
1
+ 20x
2
+ 18x
3
+ 40x
4
. Queremos planejar a
produo de modo a maximizar o lucro total.
Maximizar o lucro o mesmo que minimizar 12x
1
20x
2
18x
3
40x
4
.
Assim, nosso problema equivale ao seguinte problema cannico primal: encon-
trar nmeros no-negativos x
1
, . . , x
6
que minimizem12x
1
20x
2
18x
3
40x
4
respeitadas as restries
4x
1
+ 9x
2
+ 7x
3
+ 10x
4
+ 1x
5
+ 0x
6
= 600
1x
1
+ 1x
2
+ 3x
3
+ 40x
4
+ 0x
5
+ 1x
6
= 400.
As variveis de folga x
5
e x
6
correspondem a modelos ctcios do produto;
elas consomem o que sobra da disponibilidade da mo de obra. Em suma, es-
tamos diante de um problema CP(A, b, c), onde A, b, c o sistema descrito na
gura 7.7.
4 9 7 10 1 0 600
1 1 3 40 0 1 400
12 20 18 40 0 0
Figura 7.7: Sistema A, b, c.
Seja G a matriz e g o vetor descritos na gura 7.8 (verique que G invers-
vel). Osistema GA, Gb, c+gA (gura 7.9) simples solvel; sua base composta
pelas colunas 1 e 4. O plano de produo timo
x
1
=
1
3
400, x
2
= x
3
= 0, x
4
=
1
3
20, x
5
= x
6
= 0.
Com este plano, teremos cx =
1
3
5600. Os nmeros so fracionrios porque
nosso modelo no exige que x
1
, x
2
, x
3
, x
4
sejam inteiros; tal exigncia tiraria o
problema do mundo da programao linear e o tornaria bem mais complexo. programao
inteira
Talvez nossa empresa queira adotar x
1
= 133, x
2
= x
3
= 0 e x
4
= 7 e torcer
para que o arredondamento no afete muito o lucro.
Feoloff cap. 7 Problema cannico primal 76
415 115
1150 4150
4415 415
Figura 7.8: Matriz G e vetor g.
1 3515 2515 0 415 115 4003
0 5150 5150 1 1150 4150 203
0 203 103 0 4415 415
Figura 7.9: Sistema GA, Gb, c + gA.
Exerccios
7.1 Suponha que para todo x em X(A, b) existe x

em X(A, b) tal que cx

< 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 umvetor em X(A, b) e g umvetor 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
[)]
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 x

em X(A, b) tal que S(x

) S(x), emque 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
[Ai, ]
, b
[Ai]
, A
[i, ]
).
Captulo 8
Problema cannico dual
Dual: 1. Composto de duas partes. [ . . . ]
3. Diviso da categoria de nmero que existia, ao lado do singular e do plural,
no indo-europeu e em certas lnguas dele derivadas, indicando um par de seres.
Novo Dicionrio Aurlio
Oproblema cannico primal, de que tratou o captulo anterior, est intimamente
relacionado comumsegundo problema bsico de programao linear. Arelao
entre os dois problema o objeto de estudo da teoria da dualidade. O algoritmo
Simplex (captulo 6) pode ser usado para resolver os dois problemas simultane-
amente.
8.1 Denio do problema
O problema cannico dual de programao linear consiste no seguinte:
Problema CD(A, c, b): Dada uma matriz A, um vetor b e um vetor c,
encontrar um vetor y tal que yA c e yb mximo.
As inequaes yA c so as restries do problema.
1
Poderamos enunciar o restries
problema dizendo: maximize yb sob as restries yA c. O conjunto de todos
os vetores y que satisfazem as restries ser denotado por
Y (A, c) .
Diz-se que Y (A, c) o poliedro cannico dual. Se o nmero yb for interpretado
como valor do vetor y, o problema consiste em encontrar um vetor de valor
mximo em Y (A, c).
1
O leitor atento j ter reconhecido nessas restries um reexo da condio c + q o,
presente na denio de sistema simples solvel (seo 6.2).
77
Feoloff cap. 8 Problema cannico dual 78
maximize 2y
1
+ 44y
2
3y
3
sujeito a y
1
+ 5y
2
+ y
3
4
y
1
+ y
2
y
3
1
y
1
+ 3y
2
4y
3
5
3y
1
8y
2
+ 5y
3
3
Figura 8.1: Um problema cannico dual (compare com -
gura 7.1), escrito em notao no-matricial.
Problemas solveis, inviveis e ilimitados. Umvetor y em Y (A, c) solu-
o do problema cannico dual CD(A, c, b) se yb y

b para todo y

em Y (A, c).
Oproblema pode no ter soluo alguma. Isto acontece, por exemplo, se Y (A, c)
vazio; acontece tambm se Y (A, c) contm vetores de valor arbitrariamente
grande, isto , se para todo nmero existe y em Y (A, c) tal que yb > . No
primeiro caso, dizemos que o problema invivel. No segundo caso, dizemos invivel
que o problema ilimitado. Se Y (A, c) no vazio, dizemos que o problema ilimitado
vivel. vivel
8.2 Lema da dualidade
H uma relao muito ntima entre os problemas cannico dual e cannico pri-
mal. Essa relao est resumida no seguinte lema.
Lema 8.1 (da dualidade cannica) Para todo x em X(A, b) e todo y em
Y (A, c) tem-se cx yb.
DEMONSTRAO (muito simples, mas fundamental): Basta examinar o
produto y A x. Por um lado,
yAx = y (Ax) = yb ,
onde a segunda igualdade vale porque Ax = b. Por outro lado,
yAx = (yA) x cx,
onde a desigualdade vale porque yA c e x o .
O lema s vezes chamado, um tanto pomposamente, de teorema fraco teorema fraco
da dualidade
da dualidade. Vale o seguinte corolrio, bvio mas importante: Se o problema
primal CP(A, b, c) ilimitado ento o problema dual CD(A, c, b) invivel.
claro que tambm vale o corolrio dual: Se o problema primal ilimitado ento
o problema dual invivel. Portanto, para mostrar que o problema primal no
ilimitado basta exibir um elemento de Y (A, c); e para mostrar que o problema
dual no ilimitado basta exibir um vetor em X(A, b).
Feoloff cap. 8 Problema cannico dual 79
2 1 1 1 3 2
0 5 1 3 8 44
1 1 1 4 5 3
4 1 5 3
Figura 8.2: Ilustrao do lema 8.1. Seja A, b, c o sistema denido pela
parte direita da gura (o mesmo da gura 7.2). Seja y o vetor repre-
sentado esquerda de A, na vertical. Verique que yA c e yb = 7.
Conclua que cx 7 para todo x o tal que Ax = b.
O lema da dualidade tem mais um corolrio importante: Para qualquer x
em X(A, b) e qualquer y em Y (A, c), se cx = yb ento x soluo de CP(A, b, c)
e y soluo de CD(A, c, b). Portanto, para tornar evidente que um certo vetor
x em X(A, b) de fato minimiza cx suciente exibir um vetor y em Y (A, c) tal
que cx = yb. Ao mesmo tempo, para tornar bvio que um certo vetor y em
Y (A, c) maximiza yb basta exibir um vetor x em X(A, b) tal que cx = yb.
1118 1 1 1 3 2
56 5 1 3 8 44
79 1 1 4 5 3
4 1 5 3
649 319 53 0
Figura 8.3: Sistema A, b, c (o mesmo da gura 8.2) e vetores y ( es-
querda de A) e x (abaixo de c). Verique que y est em Y (A, c), que
x est em X(A, b) e que yb = 362/9 = cx. Conclua que x soluo do
correspondente problema cannico primal e y soluo do problema
cannico dual.
Folgas complementares. A folga de um elemento x de X(A, b) o con-
junto dos ndices k para os quais x
[I]
> 0; a folga de um elemento y de Y (A, c)
o conjunto dos ndices q para os quais (yA)
[q]
< c
[q]
. Dizemos que o par x, y
temfolgas complementares se a folga de x disjunta da folga de y. Se N denota
o conjunto de ndices de colunas de A, a denio tambm pode ser formulada
assim: existe uma parte Q de N tal que (yA)
[Q]
= c
[Q]
e x
[.Q]
= o .
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.
DEMONSTRAO: Suponha que x, y tem folgas complementares. Ento
cx yb = cx yAx = (c yA)x =

j
(c yA)
[)]
x
[)]
= 0. Logo, cx = yb.
Feoloff cap. 8 Problema cannico dual 80
Suponha agora que cx = yb. Ento cxyAx = 0, donde

j
(cyA)
[)]
x
[)]
=
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.
8.3 Vetores de inviabilidade
Ainviabilidade do problema cannico dual est intimamente ligada ilimitao
do problema cannico primal. De modo anlogo, h uma relao ntima entre
a ilimitao do problema cannico dual e a inviabilidade do problema cannico
primal. Os dois lemas abaixo resumem essas relaes. Os lemas mostram que
para tornar bvia a inviabilidade e/ou ilimitao dos problemas basta exibir
vetores apropriados em X(A, o) e/ou em Y (A, o).
Lema 8.3 (da inviabilidade primal) Se y

b > 0 para algum vetor y

em
Y (A, o) ento o problema primal CP(A, b, c) invivel e o problema dual
CD(A, c, b) ilimitado ou invivel.
DEMONSTRAO: Seja y

um vetor como o descrito no enunciado. Para


todo x em X(A, b) teramos a contradio 0 < y

b = y

(Ax) = (y

A)x 0,
donde se conclui que X(A, b) vazio.
Suponha que CD(A, c, b) no invivel e seja y um vetor em Y (A, c). Ento,
para todo positivo, (y + y

)A = yA + y

A c + o = c, e portanto o vetor
y + y

est em Y (A, c). O valor desse vetor, igual a yb + y

b, tanto maior
quanto maior for . Portanto o problema CD(A, c, b) ilimitado.
Diante desse lema, razovel que todo vetor y

em Y (A, o) que satisfaa


a condio y

b > 0 seja chamado vetor de inviabilidade do problema primal. vetor de


inviabilidade
primal
CP(A, b, c).
1 12 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
Figura 8.4: Ilustrao do lema 8.3. A gura mostra um sis-
tema A, b, c, um vetor y

( esquerda de A) e um vetor y ( es-


querda de y

). Verique que y est em Y (A, c), que y

est em
Y (A, o), e que y

b positivo. Conclua que CP(A, b, c) invivel


e CD(A, c, b) ilimitado.
Lema 8.4 (da inviabilidade dual) Se cx

< 0 para algum vetor x

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.
Feoloff cap. 8 Problema cannico dual 81
DEMONSTRAO: Seja x

um vetor como o descrito no enunciado. Para


todo y em Y (A, c) teramos a contradio 0 > cx

yAx

= yo = 0. Logo,
Y (A, c) vazio.
Suponha que CP(A, b, c) no invivel e seja x um vetor qualquer em
X(A, b). Ento, para todo positivo, x+x

est em X(A, b), pois A(x+x

) =
Ax + Ax

= b + o = b e x + x

o. Ademais, o custo de x + x

, igual a
cx + cx

, tanto menor quanto maior for . Portanto, o problema CP(A, b, c)


ilimitado.
Esse lema justica o uso do termo vetor de inviabilidade do problema dual vetor de
inviabilidade
dual
CD(A, c, b) para designar qualquer vetor x

em X(A, o) tal que cx

< 0.
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
Figura 8.5: Ilustrao do lema 8.5. Sistema sistema A, b, c, vetor
x (abaixo de c) e vetor x

(abaixo de x). Verique que x est em


X(A, b), que x

est em X(A, o) e que cx

negativo. Conclua que


CP(A, b, c) ilimitado e CD(A, c, b) invivel.
8.4 Algoritmo baseado no Simplex
O algoritmo abaixo usa o Simplex para resolver simultaneamente os dois pro-
blemas cannicos. O algoritmo produz uma soluo do primal e uma soluo
do dual, ou provas da inviabilidade do primal e da ilimitao do dual, ou provas
da ilimitao do primal e da inviabilidade do dual, ou provas da inviabilidade
de ambos os problemas. Se os dois problemas tm soluo, cada uma constitui
prova da otimalidade (minimalidade ou maximalidade) da outra. As provas de
inviabilidade e de ilimitao consistememvetores de inviabilidade apropriados.
Algoritmo para o par de problemas cannicos Recebe um sistema
A, b, c e devolve um dos seguintes pares de vetores:
(1) x

em X(A, o) e y

em Y (A, o) tais que cx

< 0 e y

b > 0, ou
(2) y em Y (A, c) e y

em Y (A, o) tal que y

b > 0, ou
(3) x em X(A, b) e x

em X(A, o) tal que cx

< 0, ou
(4) x em X(A, b) e y em Y (A, c) tais que cx = yb.
Feoloff cap. 8 Problema cannico dual 82
Nos itens (1) e (2), y

um vetor de inviabilidade do problema primal


CP(A, b, c). Nos itens (1) e (3), x

um vetor de inviabilidade do problema


dual CD(A, c, b). No item (4), x soluo do problema primal e y soluo
do problema dual.
O algoritmo consiste no seguinte. Seja N o conjunto de ndice de colunas
de A. Submeta o sistema A, b, c ao algoritmo Simplex, que devolver matrizes
F e G e um vetor g tais que FG = I e o sistema GA, Gb, c + gA simples.
CASO 1: o sistema GA, Gb, c + gA simples invivel.
Seja h uma linha de inviabilidade. Dena o vetor y

da seguinte maneira: se
G
[I, ]
b > 0 ento y

= G
[I, ]
seno y

= G
[I, ]
. Submeta o sistema A, o, c
ao algoritmo Simplex, que devolver matrizes F
0
e G
0
e um vetor g
0
tais
que F
0
G
0
= I e o sistema G
0
A, G
0
o, c + g
0
A simples solvel ou simples
ilimitado.
CASO 1.1: o sistema G
0
A, G
0
o, c + g
0
A simples ilimitado.
Seja Q
0
uma base de colunas e k uma coluna de ilimitao do sistema.
Seja x

o vetor denido pelas equaes x

[I]
= 1, x

[.Q
0
I]
= o e
(G
0
A)x

= o. Devolva x

e y

e pare.
CASO 1.2: o sistema G
0
A, G
0
o, c + g
0
A simples solvel.
Devolva g
0
e y

e pare.
CASO 2: o sistema GA, Gb, c + gA simples ilimitado.
Seja Q uma base de colunas e k uma coluna de ilimitao do sistema. Seja
x o vetor bsico associado a Q (isto , x
[.Q]
= o e (GA)x = Gb). Seja
x

o vetor denido pelas equaes x

[I]
= 1, x

[.QI]
= o e (GA)x

= o.
Devolva x e x

e pare.
CASO 3: o sistema GA, Gb, c + gA simples solvel.
Seja Q uma base de colunas do sistema. Seja x o vetor bsico associado a Q
(isto , x
[.Q]
= o e (GA)x = Gb). Devolva x e g e pare.
Eis a anlise do algoritmo. No caso 1, claro que y

A o e y

b positivo.
Em particular, y

est em Y (A, o). Para decidir se Y (A, c) ou no vazio, o


algoritmo resolve o problema CP(A, o, c). Como X(A, o) contm o vetor nulo,
o problema CP(A, o, c) no invivel; isto explica por que o caso 1 tem apenas
dois e no trs subcasos.
No caso 1.1, o vetor x

est em X(G
0
A, o), que idntico a X(A, o) pois G
0
inversvel. Ademais, cx

negativo pois
cx

= (c + g
0
A)x

g
0
Ax

= (c + g
0
A)
[I]
x

[I]
g
0
o
= (c + g
0
A)
[I]
e (c + g
0
A)
[I]
negativo. Portanto, o par de vetores x

, y

satisfaz o item (1) do


enunciado do algoritmo.
Feoloff cap. 8 Problema cannico dual 83
No caso 1.2 temos c +g
0
A o e portanto g
0
est em Y (A, c). Assim, o par
g
0
, y

satisfaz o item (2) do enunciado do algoritmo.


No caso 2, o algoritmo devolve um vetor x em X(GA, Gb) e um vetor x

em X(GA, o). Os vetores x e x

tambm esto em X(A, b) e X(A, o) respectiva-


mente, pois G inversvel. Ademais,
cx

= (c + gA)x

gAx

= (c + gA)
[I]
x

[I]
go
= (c + gA)
[I]
,
donde cx

negativo. Portanto, ao devolver x e x

o algoritmo est se compor-


tando como previsto no item (3).
No caso 3 tem-se x o, Ax = b e c + gA o, donde x est em X(A, b) e
g est em Y (A, c). Ademais, o par x, g tem folgas complementares, uma vez
que (c +gA)
[Q]
e x
[.Q]
so nulos. Logo, cx = gb. Assim, ao devolver x e g
o algoritmo est se comportanto como previsto no item (4).
8.5 Teorema da dualidade
Oalgoritmo da seo anterior demonstra o seguinte teorema da dualidade can-
nica, tambm conhecido como teorema forte da dualidade. teorema forte
da dualidade
Teorema 8.5 (da dualidade cannica) Para qualquer matriz A, qual-
quer vetor b e qualquer vetor c, vale uma e apenas uma das seguintes
armaes:
(1) existem x

em X(A, o) e y

em Y (A, o) tais que cx

< 0 e y

b > 0;
(2) existe y em Y (A, c) e y

em Y (A, o) tal que y

b > 0;
(3) existe x em X(A, b) e x

em X(A, o) tal que cx

< 0;
(4) existem x em X(A, b) e y em Y (A, c) tais que cx = yb.
(Fica subentendido que b indexado pelo mesmo conjunto que as linhas de
A e que c indexado pelo mesmo conjunto que as colunas de A.) O teorema da
dualidade pode ser resumido da seguinte maneira: a menos que os problemas
CP(A, b, c) e CD(A, c, b) sejam ambos inviveis, tem-se
min
x
cx = max
y
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,
Feoloff 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
Figura 8.6: Os quatro casos do teorema da duali-
dade 8.5 correspondem exatamente aos quatro possveis
valores do par X(A, b), Y (A, c).
se todos os componentes de A so iguais a 0, todos os componentes de b so
iguais a 1, e todos os componentes de c so iguais a 1.)
Todas as operaes aritmticas do algoritmo Simplex transformam nmeros
racionais em outros nmeros racionais. Portanto, vale o seguinte adendo ao
teorema da dualidade: se os componentes de A, b, c so nmeros racionais ento
os casos (1), (2), (3) ou (4) so satisfeitos por vetores comcomponentes racionais.
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
min
x
cx = max
y
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).
8.7 Apndice: Uma interpretao do Simplex
interessante interpretar o funcionamento do Simplex luz dos conceitos deste
captulo. Vamos nos restringir segunda fase do algoritmo, em que as coisas
cam mais claras. Considere, pois, uma seqncia de iteraes em que ocorre
a alternativa II. Cada iterao comea com um sistema GA, Gb, c yA e uma
base Q e portanto tambm, implicitamente, com o vetor bsico x do sistema.
Podemos dizer ento que cada iterao comea com vetores x e y tais que
Feoloff cap. 8 Problema cannico dual 85
x est em X(A, b) e
o par x, y tem folgas complementares (donde cx = yb).
Se y est em Y (A, c), a execuo do algoritmo termina. Seno, o algoritmo cal-
cula
um novo par x, y tal que c x cx ou
um vetor x

em X(A, o) tal que cx

< 0.
No primeiro caso, o algoritmo comea nova iterao. No segundo, a execuo
do algoritmo termina.
8.8 Apndice: Problema do vetor vivel
O problema do vetor primal vivel consiste em encontrar um elemento de
X(A, b). Mais especicamente: dada uma matriz A e um vetor b, encontrar
um vetor x tal que x o e Ax = b. No difcil vericar que esse problema
equivale ao problema cannico CP(A, b, o).
O problema do vetor dual vivel consiste em encontrar um elemento de
Y (A, c). Mais especicamente: dada uma matriz A e um vetor c, encontrar um
vetor y tal que yA c. Esse problema equivale ao problema CD(A, c, o).
Os seguintes corolrios do teorema da dualidade (conhecidos como lemas
de Farkas [Chv83, p.248]) descrevemas condies emque os problemas do vetor
vivel tm soluo.
Corolrio 8.6 (lema de Farkas) Para qualquer matriz A e qualquer ve-
tor b, vale uma e apenas uma das alternativas: (1) existe x em X(A, b);
(2) existe y

em Y (A, o) tal que y

b > 0.
Corolrio 8.7 (lema de Farkas) Para qualquer matriz A e qualquer ve-
tor c, vale uma e apenas uma das alternativas: (1) existe y em Y (A, c);
(2) existe x

em X(A, o) tal que cx

< 0.
Do ponto de vista computacional, o corolrio 8.6 precede o teorema da dua-
lidade: antes de calcular os objetos de que trata o teorema, o algoritmo Simplex
calcula (implicitamente) os objetos de que trata o corolrio. instrutivo demons-
trar os corolrios diretamente a partir do Simplex, ainda que as demonstraes
sejam uma reciclagem de raciocnios j feitos acima.
DEMONSTRAO DE 8.6: Submeta A, b, o ao Simplex. O algoritmo devol-
ver objetos F, G e g tais que FG = I e GA, Gb, gA simples. fcil vericar
que g ser necessariamente nulo e portanto GA, Gb, gA ser simples solvel ou
simples invivel. No primeiro caso, qualquer vetor bsico do sistema GA, Gb, o
satisfaz (1). No segundo caso, se h uma linha de inviabilidade ento G
[I, ]
ou
G
[I, ]
satisfaz (2).
Feoloff cap. 8 Problema cannico dual 86
Resta mostrar que as duas alternativas no podem ser simultaneamente
verdadeiras. Se (1) e (2) fossem ambas verdadeiras teramos a contradio
0 < y

b = y

Ax ox = 0.
DEMONSTRAO DE 8.7: Submeta A, o, c ao algoritmo Simplex, que devol-
ver objetos F, G e g tais que FG = I e GA, Go, c + gA simples solvel ou
simples ilimitado ( claro que o sistema GA, Go, c + gA no simples invivel).
No primeiro caso, g satisfaz (1). No segundo, fcil extrair de GA e c + gA
um vetor x

que satisfaz (1).


As duas alternativas no podem ser simultaneamente verdadeiras: se assim
fosse, teramos a contradio 0 > cx

yAx

= yo = 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 armao 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

em Y (A, o) tal que y

b > 0 ento existe um vetor


y

em Y (A, o) tal que y

b 1. Se existe um vetor x

em X(A, o) tal que


cx

< 0 ento existe x

em X(A, o) tal que cx

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)
[)]
= 0 ou x
[)]
= 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 x
1
, x
2
, x
3
, x
4
que satisfaam as equaes
2x
1
+ 4x
2
+ 2x
3
= 4
x
1
+ 2x
2
+ x
3
= 2
2x
1
+ 5x
2
x
4
= 10
x
1
3x
2
+ x
3
+ x
4
= 12 .
Captulo 9
Problema geral
Os problemas cannicos primal e dual discutidos nos captulos 7 e 8 so casos
particulares do problema geral de programao linear. O problema consiste na
otimizao (maximizao ou minimizao) de uma funo linear sujeita a restri-
es lineares.
9.1 Denio do problema
O problema (geral) de programao linear, ou ppl, consiste no seguinte: Dadas ppl
matrizes A
11
, A
12
, A
13
, A
21
, A
22
, A
23
, A
31
, A
32
, A
33
e vetores b
1
, b
2
, b
3
, c
1
, c
2
,
c
3
, encontrar vetores x
1
, x
2
, x
3
que
minimizem a expresso c
1
x
1
+ c
2
x
2
+ c
3
x
3
sujeita s restries x
1
o
A
11
x
1
+ A
12
x
2
+ A
13
x
3
b
1
A
21
x
1
+ A
22
x
2
+ A
23
x
3
= b
2
A
31
x
1
+ A
32
x
2
+ A
33
x
3
b
3
x
3
o.
Estamos supondo que, para i = 1, 2, 3, as matrizes A
i1
, A
i2
e A
i3
tmummesmo
conjunto M
i
de ndices de linhas, e que M
i
tambm o conjunto de ndices de b
i
.
Analogamente, estamos supondo que o vetor c
j
e as colunas de A
1j
, A
2j
e A
3j
tm um mesmo conjunto N
j
de ndices.
A matriz do ppl a matriz D que resulta da justaposio de A
11
, . . , A
33
, b
1
,
. . , b
3
e c
1
, . . , c
3
, maneira da seo 6.1 (o i-simo bloco de linhas de D for-
mado por A
i1
, A
i2
, A
i3
, b
i
e a nica linha do quarto bloco c
1
, c
2
, c
3
, 0). Afuno
objetivo do problema a funo que leva qualquer terno de vetores x
1
, x
2
, x
3
no nmero c
1
x
1
+ c
2
x
2
+ c
3
x
3
. Esse nmero o custo do terno x
1
, x
2
, x
3
.
Embora o ppl tenha sido formulado como um problema de minimizao,
nossa denio inclui, implicitamente, problemas de maximizao, uma vez que
minimizar c
1
x
1
+ c
2
x
2
+ c
3
x
3
o mesmo que maximizar c
1
x
1
c
2
x
2
c
3
x
3
.
87
Feoloff cap. 9 Problema geral 88
Se todas as matrizes exceto A
21
so vazias e todos os vetores exceto c
1
e b
2
so vazios ento o ppl o problema cannico primal CP(A
21
, b
2
, c
1
). Se todas as
matrizes exceto A
32
so vazias e todos os vetores exceto c
2
e b
3
so vazios, ento
o ppl o problema cannico dual CD(

A
32
, b
3
, c
2
).
9.2 Dualidade
H uma fundamental relao de dualidade entre problemas de programao
linear. Por denio, o dual de um ppl cuja matriz D o ppl cuja matriz

D, dual
ou seja, a transposta de D com sinal trocado. Assim, o dual do ppl descrito na
seo anterior o ppl
minimizar a expresso b
1
y
1
b
2
y
2
b
3
y
3
sujeita s restries y
1
o

A
11
y
1


A
21
y
2


A
31
y
3
c
1

A
12
y
1


A
22
y
2


A
32
y
3
= c
2

A
13
y
1


A
23
y
2


A
33
y
3
c
3
y
3
o.
evidente que o dual do dual de qualquer ppl P P .
Digamos que P o ppl descrito na seo anterior e que D o seu dual.
evidente que D tambm pode ser escrito assim:
maximizar a expresso y
1
b
1
+ y
2
b
2
+ y
3
b
3
sujeita s restries y
3
o
y
1
A
11
+ y
2
A
21
+ y
3
A
31
c
1
y
1
A
12
+ y
2
A
22
+ y
3
A
32
= c
2
y
1
A
13
+ y
2
A
23
+ y
3
A
33
c
3
y
1
o.
Observe que o ppl D tem uma incgnita para cada restrio de P (exceto as
restries x
1
o e x
3
o) e uma restrio para cada incgnita de P. Por
exemplo, a incgnita y
1
corresponde restrio A
11
x
1
+ A
12
x
2
+ A
13
x
3
b
1
de P; e a restrio y
1
A
11
+ y
2
A
21
+ y
3
A
31
c
1
corresponde incgnita x
1
de P.
Se todas as matrizes exceto A
21
so vazias e todos os vetores exceto c
1
e b
2
so vazios ento P o problema cannico primal CP(A
21
, b
2
, c
1
) e D o pro-
blema cannico dual CD(A
21
, c
1
, b
2
).
9.3 Lema da dualidade
Digamos que P o ppl denido na seo 9.1 e D o seu dual. O conjunto dos P
D
Feoloff cap. 9 Problema geral 89
minimizar cx + dy
sujeita a Ax + By = f , l y u e x o.
Figura 9.1: Exemplo de um ppl. As matrizes A e B so dadas. Os
vetores c, d, f , l e u so dados. As incgnitas so x e y. Identique as
matrizes A
11
, . . , A
33
e os vetores b
1
, b
2
, b
3
e c
1
, c
2
, c
3
.
minimizar cx
sujeito a x o e Ax b
maximizar yb
sujeito a y o e yA c
Figura 9.2: Verique que o ppl direita o dual do ppl esquerda.
x
1
o
A
11
x
1
+ A
12
x
2
+ A
13
x
3
b
1
A
21
x
1
+ A
22
x
2
+ A
23
x
3
= b
2
A
31
x
1
+ A
32
x
2
+ A
33
x
3
b
3
x
3
o
min c
1
x
1
+ c
2
x
2
+ c
3
x
3
max
y
1
A
11
y
1
A
12
y
1
A
13
y
1
y
1
b
1
+ + + +
y
2
A
21
y
2
A
22
y
2
A
23
y
2
b
2
+ + + +
y
3
y
3
A
31
y
3
A
32
y
3
A
33
y
3
b
3
=
o c
1
c
2
c
3
o
Figura 9.3: A primeira parte da gura uma representao taquigr-
ca de um ppl. A segunda (leia na vertical, de cima para baixo) uma
representao do seu dual. As posies relativas dos smbolos A
ij
, b
i
e
c
j
no se alteram.
Feoloff cap. 9 Problema geral 90
ternos x
1
, x
2
, x
3
de vetores que satisfazem as restries do problema P ser de-
notado por X(b
1
, b
2
, b
3
) e o conjunto dos ternos y
1
, y
2
, y
3
de vetores que satisfa- A(/1, /2, /3)
zem as restries do problema D ser denotado por Y (c
1
, c
2
, c
3
). Em linguagem Y (c1, c2, c3)
geomtrica, diz-se que esses conjuntos so poliedros.
Lema 9.1 (da dualidade) Para todo terno x
1
, x
2
, x
3
em X(b
1
, b
2
, b
3
) e
todo terno y
1
, y
2
, y
3
em Y (c
1
, c
2
, c
3
) vale a desigualdade c
1
x
1
+ c
2
x
2
+
c
3
x
3
y
1
b
1
+ y
2
b
2
+ y
3
b
3
.
DEMONSTRAO: Para todo terno x
1
, x
2
, x
3
e todo terno y
1
, y
2
, y
3
,
c
1
x
1
+ c
2
x
2
+ c
3
x
3
(y
1
A
11
+ y
2
A
21
+ y
3
A
31
) x
1
+
(y
1
A
12
+ y
2
A
22
+ y
3
A
32
) x
2
+
(y
1
A
13
+ y
2
A
23
+ y
3
A
33
) x
3
= y
1
(A
11
x
1
+ A
12
x
2
+ A
13
x
3
) +
y
2
(A
21
x
1
+ A
22
x
2
+ A
23
x
3
) +
y
3
(A
31
x
1
+ A
32
x
2
+ A
33
x
3
)
y
1
b
1
+
y
2
b
2
+
y
3
b
3
,
como queramos demonstrar.
O lema (tambm conhecido como teorema fraco da dualidade) tem o se-
guinte corolrio: se c
1
x
1
+ c
2
x
2
+ c
3
x
3
= y
1
b
1
+ y
2
b
2
+ y
3
b
3
ento x
1
, x
2
, x
3

soluo do problema P e y
1
, y
2
, y
3
soluo do problema D.
9.4 Construo do dual
A denio do dual de um ppl pesada. Felizmente, a demonstrao do lema
da dualidade pode ser usada para inferir a forma correta do dual de qualquer
ppl P: escreva uma incgnita do dual para cada restrio do P e uma restrio P
do dual para cada incgnita do P; em seguida, procure as desigualdades mais
brandas que assegurem a validade do lema da dualidade. Os seguintes exem-
plos ilustram a construo.
Primeiro exemplo. Suponha que o problema P consiste em encontrar n-
meros x
1
, x
2
, x
3
, x
4
que minimizem a expresso
1
11x
1
+ 12x
2
+ 13x
3
+ 14x
4
1
Note que aqui a1, a2 e a3 so nmeros e no vetores.
Feoloff cap. 9 Problema geral 91
sob as restries
15x
1
+ 16x
2
+ 17x
3
+ 18x
4
19
20x
1
+ 21x
2
+ 22x
3
+ 23x
4
= 24
25x
1
+ 26x
2
+ 27x
3
+ 28x
4
29
x
1
0
x
3
0.
Qual o dual de P? O dual ter trs incgnitas: uma incgnita y
1
associada
primeira restrio, uma incgnita y
2
associada segunda, etc. A funo objetivo
do dual ser, portanto, y
1
19+y
2
24+y
3
29. Para todos os vetores x que satisfazem
as restries de P e todos os vetores y que satisfazem as restries do seu dual
devemos ter 11x
1
+12x
2
+13x
3
+14x
4
y
1
19 +y
2
24 +y
3
29. Essa desigualdade
entre as funes objetivo dever valer em virtude da seqncia de relaes
11x
1
+ 12x
2
+ 13x
3
+ 14x
4
(y
1
15 + y
2
20 + y
3
25) x
1
+
(y
1
16 + y
2
21 + y
3
26) x
2
+
(y
1
17 + y
2
22 + y
3
27) x
3
+
(y
1
18 + y
2
23 + y
3
28) x
4
= y
1
(15x
1
+ 16x
2
+ 17x
3
+ 18x
4
) +
y
2
(20x
1
+ 21x
2
+ 22x
3
+ 23x
4
) +
y
3
(25x
1
+ 26x
2
+ 27x
3
+ 28x
4
)
y
1
19 + y
2
24 + y
3
29.
As restries mais brandas que garantem a primeira desigualdade so
11 y
1
15 + y
2
20 + y
3
25 , pois x
1
0,
12 = y
1
16 + y
2
21 + y
3
26 , pois x
2
no tem restrio de sinal ,
13 y
1
17 + y
2
22 + y
3
27 , pois x
3
0,
14 = y
1
18 + y
2
23 + y
3
28 , pois x
4
no tem restrio de sinal .
As restries mais brandas que garantem a segunda desigualdade so
y
1
0 , pois 15x
1
+ 16x
2
+ 17x
3
+ 18x
4
19, e
y
3
0 , pois 25x
1
+ 26x
2
+ 27x
3
+ 28x
4
29 .
Portanto, o dual de P consiste em encontrar nmeros y
1
, y
2
, y
3
que maximizem
a expresso 19y
1
+ 24y
2
+ 29y
3
sujeita s restries
15y
1
+ 20y
2
+ 25y
3
11
16y
1
+ 21y
2
+ 26y
3
= 12
17y
1
+ 22y
2
+ 27y
3
13
18y
1
+ 23y
2
+ 28y
3
= 14
y
1
0
y
3
0.
Feoloff cap. 9 Problema geral 92
Segundo exemplo. Seja P o problema de encontrar vetores x e v que mi-
nimizem a expresso cx + fv sujeita s restries
Ax b , Dv = e e x o.
(Aqui, A e D so matrizes dadas e c, f , b e e so vetores dados.) Qual o dual
de P? Odual ter uma incgnita, digamos y, associada restrio Ax b e uma
outra incgnita, digamos w, associada restrio Dv = e. A funo objetivo do
dual ser, portanto, yb + we. As funes objetivo devero satisfazer a relao
cx + fv yb + we. Essa desigualdade dever valer em virtude da seqncia de
relaes
cx + fv (yA)x + (wD)v
= y(Ax) + w(Dv)
yb + we .
As restries mais brandas sobre y e w que garantem todas essas desigualdades
so
yA c , wD = f e y o.
Portanto, o dual de P consiste em encontrar vetores y e w que maximizem a
expresso yb + we sujeita a essas restries.
Terceiro exemplo. Seja P o problema de encontrar vetores y e w que ma-
ximizem yb + we sujeita s restries
yA c , wD = f e y o.
O problema dual ter uma incgnita, digamos x, associada restrio yA c
e uma incgnita, digamos v, associada restrio wD = f . A funo objetivo
do dual ser cx+fv. As restries do problema dual devem garantir a validade
das relaes
yb + we y(Ax) + w(Dv)
= (yA)x + (wD)v
cx + fv .
As restries mais brandas sobre x e v que garantem todas estas desigualdades
so
Ax b , Dv = e e x o.
Portanto, o dual de P consiste em encontrar x e v que minimizem a expresso
cx + fv sujeita a essas restries.
9.5 Teorema da dualidade
Retornemos aos problema P e D e aos poliedros X(b
1
, b
2
, b
3
) e Y (c
1
, c
2
, c
3
)
da seo 9.3. O problema P vivel se X(b
1
, b
2
, b
3
) no vazio, invivel se
Feoloff cap. 9 Problema geral 93
X(b
1
, b
2
, b
3
) vazio e ilimitado se para todo nmero existe um terno x
1
, x
2
, x
3
em X(b
1
, b
2
, b
3
) tal que c
1
x
1
+ c
2
x
2
+ c
3
x
3
< . Se P invivel ou ilimitado,
evidente que P no tem soluo.
Denies anlogas valem para o problema D: o problema vivel se
Y (c
1
, c
2
, c
3
) no vazio, invivel se Y (c
1
, c
2
, c
3
) vazio e ilimitado se para todo
nmero existe umterno y
1
, y
2
, y
3
em Y (c
1
, c
2
, c
3
) tal que y
1
b
1
+y
2
b
2
+y
3
b
3
> .
O lema da dualidade tem o seguinte corolrio bvio: se um dos problemas
do par P, D ilimitado ento o outro invivel.
Um vetor de inviabilidade para o problema P qualquer terno y

1
, y

2
, y

3
em Y (o, o, o) tal que y

1
b
1
+ y

2
b
2
+ y

3
b
3
> 0. Um vetor de inviabilidade para o
problema D qualquer terno x

1
, x

2
, x

3
em X(o, o, o) tal c
1
x

1
+ c
2
x

2
+ c
3
x

3
< 0.
fcil demonstrar o seguinte lema:
Lema 9.2 (da inviabilidade) Se existe um vetor de inviabilidade para
o problema P ento P invivel e D invivel ou ilimitado. Se existe
um vetor de inviabilidade para o problema D ento D invivel e P
invivel ou ilimitado.
O teorema abaixo (tambm conhecido como teorema forte da dualidade)
estende ao par P, D o teorema da dualidade 8.5.
Teorema 9.3 (da dualidade) Vale uma e apenas uma das seguintes ar-
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 x
1
, x
2
, x
3
em X(b
1
, b
2
, b
3
) e y
1
, y
2
, y
3
em Y (c
1
, c
2
, c
3
)
tais que c
1
x
1
+ c
2
x
2
+ c
3
x
3
= y
1
b
1
+ y
2
b
2
+ y
3
b
3
.
claro que nos casos (1), (2) e (3) os problemas P e D no tm soluo;
no caso (4), x
1
, x
2
, x
3
soluo de P e y
1
, y
2
, y
3
soluo de D. A demonstra-
o de que duas das armativas no podem ser simultaneamente verdadeiras
elementar: ela decorre dos lemas da inviabilidade e do lema da dualidade.
A demonstrao de que pelo menos uma das armativas verdadeira no to
simples: ela consiste em uma reduo ao caso, j demonstrado na seo 8.4, em reduo
que os problemas P e D so cannicos. Para no tornar o texto ainda mais indi-
gesto, vamos nos limitar a ilustrar o processo de reduo com alguns exemplos.
Faremos isso na prxima seo.
9.6 Reduo ao cannico primal
Todo ppl equivale a algumproblema cannico primal. Emvirtude dessa equiva-
lncia, qualquer algoritmo (como o Simplex) que resolva problemas cannicos
Feoloff cap. 9 Problema geral 94
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
Figura 9.4: O topo da gura especica um sistema A, b, c. Considere
o problema de minimizar cx sujeito a Ax b. Esse problema equivale
ao problema cannico CP(A

, b

, c

), onde A

, b

, c

o sistema repre-
sentado na parte inferior da gura.
pode ser usado para resolver um ppl arbitrrio. Os dois exemplos abaixo ilus-
tram o fenmeno.
Primeiro exemplo. Considere o problema de encontrar um vetor x que
minimize a expresso cx sujeita s restries
Ax b (9.a)
(veja exemplo numrico na gura 9.4). Esse problema equivale ao seguinte pro-
blema cannico primal: encontrar vetores u, v e r que minimizem a expresso
cu cv sujeita s restries
Au Av + Ir = b , u o, v o e r o. (9.b)
Eis a vericao da equivalncia. Suponha que x satisfaz as restries (9.a).
Sejam u, v, r vetores denidos pelas equaes
u
[i]
= se x
[i]
0 ento x
[i]
seno 0
v
[i]
= se x
[i]
0 ento 0 seno x
[i]
r = b Ax.
claro que o terno u, v, r satisfaz as restries (9.b). Ademais, x e o terno u, v, r
atribuem o mesmo valor s correspondentes funes objetivo: cx igual a cu
cv. Reciprocamente, se o terno u, v, r satisfaz as restries (9.b) ento o vetor
x = u v satisfaz as restries (9.a). Ademais, cx = cu cv.
Segue dessa discusso que h uma correspondncia biunvoca entre as solu-
es do primeiro problema e as solues do segundo, e que solues correspon-
dentes do o mesmo valor s funes objetivo. Portanto, os dois problemas so
equivalentes.
A propsito, o dual do problema cannico (9.b) consiste em maximizar zb
sujeito a zA c, zA c e z o. No de surpreender que esse problema
seja equivalente ao dual do primeiro problema, que consiste em maximizar yb
sujeito a yA = c e y o.
Feoloff cap. 9 Problema geral 95
Segundo exemplo. Considere o problema de encontrar vetores x e z que
maximizem a expresso ax + dz sujeita s restries
Ax + Bz = b ,
Cx + Dz c ,
x o
(veja exemplo numrico na gura 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.
Eis a vericao da equivalncia. Para qualquer par x, z de vetores, sejam y, v,
w e r os vetores denidos pelas equaes
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 .
Se x, z satisfaz as restries do primeiro problema ento os vetores y, v, w, r
satisfazem as restries do segundo. Ademais, os vetores em questo do o
mesmo valor s correspondentes funes objetivo, a menos de uma troca de si-
nal: ax + dz = (ay dv + dw) (a troca de sinal se deve substituio de
maximizar por minimizar).
Reciprocamente, se y, v, w, r satisfazem as restries do segundo problema
ento o par de vetores y, v w satisfaz as restries do primeiro. Ademais,
ay dv + dw = (a(y) + d(v w)).
Em suma, h uma correspondncia biunvoca entre as solues do primeiro
problema e as solues do segundo, e solues correspondentes do o mesmo
valor (a menos de uma troca de sinal) s funes objetivo.
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
Feoloff cap. 9 Problema geral 96
encontrar nmeros x
i
e z
i
que maximizem
11x
1
+ 16x
2
+ 21z
1
+ 26z
2
sujeito a
12x
1
+ 17x
2
+ 22z
1
+ 27z
2
= 32
13x
1
+ 18x
2
+ 23z
1
+ 28z
2
= 33
14x
1
+ 19x
2
+ 24z
1
+ 29z
2
34
15x
1
+ 20x
2
+ 25z
1
+ 30z
2
35
x
1
0
x
2
0
encontrar nmeros no-negativos y
i
, v
i
, w
i
e r
i
que minimizem
11y
1
+ 16y
2
21v
1
+ 21w
1
26v
2
+ 26w
2
sujeito a
12y
1
17y
2
+ 22v
1
22w
1
+ 27v
2
27w
2
= 32
13y
1
18y
2
+ 23v
1
23w
1
+ 28v
2
28w
2
= 33
14y
1
19y
2
+ 24v
1
24w
1
+ 29v
2
29w
2
+ 1r
1
+ 0r
2
= 34
15y
1
20y
2
+ 25v
1
25w
1
+ 30v
2
30w
2
+ 0r
1
+ 1r
2
= 35
Figura 9.5: O ppl no topo da gura e o problema cannico primal
na parte inferior da gura so equivalentes.
so inviveis, ou um invivel e o outro ilimitado, ou ambos tm soluo.
Esse fato a essncia do teorema da dualidade.
Qualquer problema de programao linear pode ser reduzido a um pro-
blema cannico primal equivalente. O algoritmo Simplex (ou qualquer outro
algoritmo que resolva problemas cannicos primais) pode ento ser usado para
resolver o problema reduzido.
9.8 Apndice: Uma interpretao do dual
O seguinte exemplo procura ilustrar o signicado das incgnitas (ou variveis)
duais. Considere o problema de encontrar nmeros no-negativos x
1
, x
2
, x
3
, x
4
que minimizem a expresso 11x
1
+ 12x
2
+ 13x
3
+ 14x
4
sob as restries
15x
1
+ 16x
2
+ 17x
3
+ 18x
4
19
20x
1
+ 21x
2
+ 22x
3
+ 23x
4
24
25x
1
+ 26x
2
+ 27x
3
+ 28x
4
29 .
Esse problema pode estar modelando a tarefa de um nutricionista: encontrar
quantidades x
1
, x
2
, x
3
, x
4
de pacotes de carne, batatas, leite e goiabada respec-
tivamente que minimizem o custo 11x
1
+ 12x
2
+ 13x
3
+ 14x
4
de uma refeio
que contenha pelo menos 19 gramas de clcio, pelo menos 24 gramas de carboi-
dratos, e pelo menos 29 gramas de protenas. claro que a primeira restrio
d o contedo de clcio nos quatro alimentos (15 gramas por pacote de carne,
Feoloff cap. 9 Problema geral 97
16 gramas por pacote de batatas, etc.), a segunda restrio d o contedo de
carboidratos, etc.
O dual do nosso problema consiste em encontrar nmeros no-negativos
y
1
, y
2
, y
3
que maximizem 19y
1
+ 24y
2
+ 29y
3
sob as restries
15y
1
+ 20y
2
+ 25y
3
11
16y
1
+ 21y
2
+ 26y
3
12
17y
1
+ 22y
2
+ 27y
3
13
18y
1
+ 23y
2
+ 28y
3
14 .
O dual pode ser interpretado como segue. Um fabricante de clcio em p, car-
boidratos em p e protenas em p quer lanar seus produtos no mercado a
preos y
1
por grama de clcio, y
2
por grama de carboidrato e y
3
por grama de
protena. Para competir com os produtos naturais, o preo de um pacote de
carne articial (composta por 15 gramas de clcio, 20 gramas de protena e 25
gramas de carboidratos) no pode ser superior ao preo de um pacote de carne
natural. Analogamente, os preos das batatas, leite e goiabada articiais no
podem ultrapassar os preos dos correspondentes produtos naturais. Satisfeitas
estas restries, o fabricante quer maximizar o preo y
1
19 +y
2
24 +y
3
29 de uma
refeio que contenha as quantidades mnimas dos trs nutrientes.
fcil vericar (veja o exerccio 9.7, pgina 98) que ambos os problemas so
viveis. O teorema da dualidade garante ento que ambos os problemas tm
soluo e que 11x
1
+12x
2
+13x
3
+14x
4
= 19y
1
+24y
2
+29y
3
para qualquer soluo
x
1
, x
2
, x
3
, x
4
do primeiro problema e qualquer soluo y
1
, y
2
, y
3
do segundo.
Exerccios
9.1 Considere o problema de encontrar vetores x e z tais que x o, Ax+Dz
b e cx + fz mnimo. Verique 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

e z

tais que y

A = o, y

B + z

o, z

o e
y

d +z

e < 0. Mostre que um par y

, z

como o que acabamos de descrever


certamente existe se e temalgumcomponente negativo. Mostre que o dual
de P invivel se existe um vetor x

tal que Ax

= o e cx

> 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
Feoloff cap. 9 Problema geral 98
e cx . Seja T o conjunto dos vetores x que satisfazem as restries
Ax = o, x o e cx < 0. Mostre que R vazio se e s se S T no vazio.
9.6 Seja S o conjunto dos vetores x tais que Ax > o, isto , A
[i, ]
x > 0 para
todo i. Seja T o conjunto dos vetores no-nulos y tais que y o e yA = o.
Mostre que S vazio se e s se T no vazio.
9.7 Seja P o problema que consiste em minimizar cx sujeito a Ax b e x o.
Mostre que o dual de P consiste em maximizar yb sujeito a yA c e y o.
Mostre que se c o, b o, A O e A
[i, ]
,= o para todo i ento ambos os
problemas tm soluo.
Parte III
Algoritmos para Dados Inteiros
99
Captulo 10
Determinantes
Os prximos captulos pretendemexaminar as variantes inteiras do algoritmo
de Gauss-Jordan e do algoritmo Simplex. A anlise dessas variantes depende
do conceito de determinante.
1
Embora o conceito seja bem conhecido, convm
fazer uma reviso.
O determinante de uma matriz quadrada A um nmero da forma

,
onde e

so somas de produtos de elementos de A e cada produto contm


exatamente um elemento de cada linha e de cada coluna de A. Por exemplo, o
determinante da matriz



+ + . A propriedade mais importante dos deter-
minantes a lei do produto:
det(AB) = det(A) det(B) .
O conceito de determinante ser denido em duas etapas. Primeiro, de-
niremos o determinante de matrizes de permutao e mostraremos que este
satisfaz a lei do produto. Depois, usaremos o determinante de matrizes de
permutao para denir o determinante de uma matriz quadrada arbitrria.
10.1 Sinal de uma matriz de permutao
Uma matriz de permutao uma matriz de bijeo cujos conjuntos de ndices
de linhas e colunas so idnticos. evidente que o produto de duas matrizes de
permutao uma matriz de permutao.
Um arco de uma matriz de permutao J sobre M M qualquer par
ordenado j, i) de elementos de M tal que J
[i, )]
= 1. Um circuito em J uma
1
Veja a nota histrica Matrices and Determinants na MacTutor History of Mathematics Archive
(University of St Andrews, Esccia).
100
Feoloff cap. 10 Determinantes 101
seqncia k
1
, . . , k
n
) de elementos de M, distintos dois a dois, tal que
k
1
, k
2
), k
2
, k
3
), . . . , k
n1
, k
n
) e k
n
, k
1
)
so arcos de J. Por exemplo, se J
[i, i]
= 1 para algum i ento a seqncia i)
um circuito. Circuitos que diferem apenas por uma rotao como, por exem-
plo, k
1
, k
2
, k
3
), k
2
, k
3
, k
1
) e k
3
, k
1
, k
2
) so considerados idnticos. Feitas
essas convenes, ca claro que cada elemento de M pertence a um e um s
circuito de J. O nmero de circuitos de J ser denotado por
circ(J) .
bvio que 1 circ(J) [M[. bvio tambm que circ(J) = [M[ se e s se J
a matriz identidade.
Uma matriz de transposio uma matriz de permutao T tal que transposio
circ(T) = [M[ 1. Em outras palavras, T de transposio se existem ele-
mentos distintos, i e j, de M tais que j, i) e i, j) so arcos e todos os demais
arcos de T tm a forma k, k). Diremos que uma tal matriz transpe i e j.
Lema 10.1 Seja T uma matriz de transposio que transpe i e j e J
uma matriz de permutao arbitrria. Se i e j pertencem ao mesmo
circuito de J ento circ(TJ) = circ(J) + 1; caso contrrio, circ(TJ) =
circ(J) 1.
DEMONSTRAO: fcil entender o efeito da multiplicao de J por T :
como (TJ)
[), ]
= J
[i, ]
, um arco de J que tem a forma k, i) transformado
no arco k, j) de TJ; analogamente, um arco de J que tem a forma k, j)
transformado no arco k, i) de TJ.
Suponha que i e j pertencem a um mesmo circuito, digamos k
1
, . . , k
n
),
de J. Ajuste a notao de modo que k
1
= i. Seja p um ndice tal que k
p
= j. j
Ento
k
1
, k
2
, . . , k
p1
) e k
p
, k
p+1
, . . , k
n
)
so circuitos
2
de TJ. Todos os demais circuitos de J tambm so circuitos
de TJ. Logo, circ(TJ) = circ(J) + 1. Suponha agora que i e j pertencem a
circuitos distintos, digamos h
1
, . . , h
m
) e k
1
, . . , k
n
), de J. Ajuste a notao de
modo que h
1
= i e k
1
= j. Ento
h
1
, h
2
, . . , h
m
, k
1
, k
2
, . . , k
n
)
um circuito
3
de TJ. Todos os demais circuitos de J tambm so circuitos de
TJ. Logo, circ(TJ) = circ(J) 1.
O valor de circ(J) menos importante que a relao entre a paridade de
circ(J) e a de [M[. Diremos que uma matriz de permutao J positiva se matriz
positiva
2
Se n = 2, ento j = 2 e, portanto, esses circuitos so I1 e I2.
3
Se i = n = 1, ento esse circuito I1, I1.
Feoloff cap. 10 Determinantes 102
0 1 0 0
0 0 1 0
1 0 0 0
0 0 0 1
Figura 10.1: Se J a matriz da gura ento
circ(J) = 2 e portanto sig(J) = +1.
[M[ circ(J)
par e negativa emcaso contrrio. Amatriz identidade, por exemplo, positiva; negativa
e toda matriz de transposio negativa. O sinal de uma matriz de permutao
J ser denotado por
sig(J) .
Assim, sig(J) = +1 se J positiva e sig(J) = 1 se J negativa.
Olema 10.1 mostra que sig(TJ) = sig(J) para qualquer matriz de transpo-
sio T e qualquer matriz de permutao J. O teorema abaixo generaliza essa
relao, mostrando que sig satisfaz a lei do produto.
Teorema 10.2 Para todo par J, K de matrizes de permutao,
sig(JK) = sig(J) sig(K).
DEMONSTRAO: Nossa demonstrao uma induo no nmero circ(J).
Suponha inicialmente que circ(J) = [M[. Ento a proposio vale trivialmente
pois J = I e portanto sig(J) = +1.
Suponha agora que circ(J) < [M[. Ento J possui um circuito k
1
, . . , k
n
)
com n 2. Seja T a matriz de transposio que transpe k
1
e k
2
. De acordo com T
o lema 10.1, circ(TJ) = circ(J) + 1. Podemos pois supor, a ttulo de hiptese
de induo, que
sig(TJK) = sig(TJ) sig(K) .
Por outro lado, de acordo com o lema 10.1, temos sig(TJ) = sig(J) e tam-
bm sig(TJK) = sig(JK). Logo, sig(JK) = sig(J)sig(K), como queramos
demonstrar.
A demonstrao do teorema revela, em particular, que toda matriz de per-
mutao tem a forma T
1
. . T
p
I, onde T
1
, . . , T
p
so matrizes de transposio.
evidente que uma tal matriz positiva se e s se p par.
10.2 Determinante de matriz quadrada
Uma matriz quadrada se seus conjuntos de ndices de linhas e colunas so matriz
quadrada
Feoloff cap. 10 Determinantes 103
idnticos. Em outras palavras, uma matriz A sobre M N quadrada se M =
N. As denies abaixo aplicam-se apenas a matrizes quadradas.
Para qualquer matriz A sobre MM, vamos denotar por diag(A) o produto
dos elementos da diagonal de A:
diag(A) =

iM
A
[i, i]
.
O determinante de uma matriz quadrada A sobre M M o nmero

J
sig(J) diag(AJ), em que a soma se estende a todas as matrizes de permuta-
o J sobre M M. O determinante de A denotado por det(A). Portanto,
det(A) =

J
sig(J) diag(AJ) .
claro que det(A) =

J
diag(AJ)

K
diag(AK), em que a primeira soma se
refere a todas as matrizes de permutao positivas e a segunda se refere a todas
as matrizes de permutao negativas.
A denio de determinante no se altera se a expresso diag(AJ) for subs-
tituda pela expresso
diag(JA) ,
uma vez que essas 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 denida pela equa-
o J
[i, i]
= 1. Se denotarmos por a inversa de teremos

i
A
[i, i]
=

j
A
[), )]
=

j
J
[), ]
A
[ , )]
= diag(JA).



0 1 0
0 0 1
1 0 0
Figura 10.2: Digamos que A a primeira das matrizes da
gura e J a segunda. Observe que diag(A

J) o produto
dos elementos de A que esto nas posies correspondentes
aos elementos no-nulos de J.
muito fcil vericar as seguintes propriedades do determinante de uma
matriz quadrada A: se A de permutao ento det(A) = sig(A); se A diago-
nal ento
det(A) = diag(A) ;
se A
[i, ]
= o ou A
[ , i]
= o para algum m ento
det(A) = 0.
Tambm fcil vericar que para qualquer matriz diagonal D
det(DA) = diag(D) det(A) .
Feoloff cap. 10 Determinantes 104
Em particular, para qualquer nmero , det(A) =
m
det(A), onde m o n-
mero de linhas de A.
Como calcular o determinante de uma matriz? Embora a denio envolva
uma soma de m! parcelas (pois este o nmero de matrizes de permutao com
m linhas), o determinante pode ser calculado com esforo proporcional a m
3
,
como veremos num prximo captulo.
4
10.3 Trs propriedades bsicas
Esta seo reune trs propriedades bsicas dos determinantes. No enunciado de
todas as propriedades, A uma matriz sobre M M.
Propriedade 10.3 (desenvolvimento por uma linha) Para qualquer m
em M, se A
[i, Ai]
= o ento o determinante de A o produto de
A
[i, i]
pelo determinante de A
[Ai, Ai]
.
DEMONSTRAO: Suponha que A
[i, Ai]
nulo. Seja J uma matriz de
permutao sobre M M. Se J
[i, i]
= 0 ento A
[i, ]
J
[ , i]
= 0 e portanto
diag(AJ) =

i
A
[i, ]
J
[ , i]
= 0. Caso contrrio,
diag(AJ) = A
[i, i]
diag(BK) ,
onde B = A
[Ai, Ai]
e K = J
[Ai, Ai]
. Como sig(K) = sig(J), temos

J
sig(J) diag(AJ) = A
[i, i]

K
sig(K) diag(BK) ,
onde K percorre o conjunto das matrizes de permutao sobre MmMm.
Logo, det(A) = A
[i, i]
det(B).
Vale tambm a propriedade transposta: se A
[Ai, i]
nulo ento
det(A) = A
[i, i]
det(A
[Ai, Ai]
). A demonstrao anloga, essencial-
mente porque diag(JA) = diag(AJ).
A propriedade seguinte um caso particular da lei do produto que de-
monstraremos na prxima seo.
Propriedade 10.4 (multiplicao por matriz de permutao) Para qual-
quer matriz de permutao K sobre MM, det(KA) = sig(K) det(A).
DEMONSTRAO: Por denio, det(KA) =

J
sig(J) det(JKA). Em vir-
tude do teorema 10.2, sig(J) = sig(K)sig(JK). Logo,
det(KA) =

J
sig(K)sig(JK)diag(JKA)
= sig(K)

J
sig(JK)diag(JKA)
= sig(K) det(A) ,
4
Attulo de curiosidade, o permanente de uma matriz quadrada o nmero

J
diag(J),
onde a soma se estende a todas as matrizes de permutao J. No se conhece um algoritmo
eciente isto , polinomial no nmero de componentes de para o clculo do permanente.
Feoloff cap. 10 Determinantes 105
uma vez que quando J percorre o conjunto de todas as matrizes de permutao
a matriz JK tambmpercorre o conjunto de todas as matrizes de permutao.
Propriedade 10.5 (matriz com duas linhas iguais) Para dois elementos
distintos h e k de M, se A
[I, ]
= A
[I, ]
ento det(A) = 0.
DEMONSTRAO: Seja T a matriz de transposio que transpe h e k.
Como TA = A, temos
det(TA) = det(A) .
Por outro lado, det(TA) = sig(T) det(A), emvirtude da propriedade 10.4. Como
sig(T) = 1, temos
det(TA) = det(A) .
Essas equaes s podemser simultaneamente verdadeiras se det(A) for nulo.
Vale tambm a propriedade transposta: se A
[ , I]
= A
[ , I]
para dois ele-
mentos distintos h e k de M ento det(A) = 0.
10.4 Determinante do produto de matrizes
Esta seo mostra que para quaisquer matrizes quadradas A e B vale a identi-
dade det(AB) = det(A) det(B). A demonstrao ser feita por etapas: primeiro
mostraremos que a identidade vale quando A quase-identidade; da deduzi-
remos a identidade no caso em que A elementar; nalmente, cuidaremos do
caso geral. As duas etapas nais so anlogas ao algoritmo de Gauss-Jordan
(veja captulo 2).
Uma matriz A sobre M M quase-identidade se existem elementos h e quase-
identidade
k de M tais que A
[i, )]
= I
[i, )]
para todo par i, j distinto do par h, k. Diremos
que esta uma matriz quase-identidade do tipo h, k. claro que toda matriz
quase-identidade do tipo h, k elementar.
Lema 10.6 (multiplicao por matriz quase-identidade) Se A uma
matriz quase-identidade do tipo h, k ento
det(AB) = A
[I, I]
det(B) se h = k e
det(AB) = det(B) em caso contrrio ,
qualquer que seja a matriz B.
DEMONSTRAO: Se h = k ento A uma matriz diagonal e portanto
det(AB) = diag(A) det(B) enquanto diag(A) = A
[I, I]
.
Suponha agora que h ,= k. Seja o nmero A
[I, I]
. claro que (AB)
[i, ]
=
B
[i, ]
para todo i distinto de h e (AB)
[I, ]
= B
[I, ]
+ B
[I, ]
. Para toda matriz
Feoloff cap. 10 Determinantes 106
de permutao J,
diag(ABJ) =

i
(AB)
[i, ]
J
[ , i]
=

i
B
[i, ]
J
[ , i]
+ B
[I, ]
J
[ , I]

i=h
B
[i, ]
J
[ , i]
= diag(BJ) +

B
[I, ]
J
[ , I]

i=h

B
[i, ]
J
[ , i]
= diag(BJ) + diag(

BJ) ,
onde

B a matriz denida pelas equaes

B
[AI, ]
= B
[AI, ]
e

B
[I, ]
=
B
[I, ]
. Portanto,
det(AB) =

J
sig(J) diag(ABJ)
=

J
sig(J) diag(BJ) +

J
sig(J) diag(

BJ)
= det(B) + det(

B) .
Como

B tem duas linhas iguais, a propriedade 10.5 garante que det(

B) = 0.
Portanto, det(AB) = det(B).
Lema 10.7 (multiplicao por matriz elementar) Se A uma matriz ele-
mentar com coluna saliente h ento det(AB) = A
[I, I]
det(B) qualquer
que seja a matriz B.
DEMONSTRAO: Seja M o conjunto de ndices de linhas e colunas de A.
A proposio trivialmente verdadeira se A
[I, I]
= 0, pois nesse caso A
[I, ]

nulo, donde (AB)
[I, ]
nulo, e portanto det(AB) = 0.
Suponha no que segue que A
[I, I]
,= 0. Diremos que a complexidade de A
o nmero de componentes no-nulos do vetor A
[AI, I]
. Nossa demonstrao
prossegue por induo na complexidade de A e depende do lema 10.6.
Suponha que a complexidade de A nula, ou seja, que o vetor A
[AI, I]
nulo. Ento A uma matriz quase-identidade do tipo h, h. Pelo lema 10.6,
det(AB) = A
[I, I]
det(B), como queramos demonstrar.
Suponha agora que A
[i, I]
,= 0 para algum i em M h. Seja

G a matriz

G
quase-identidade do tipo i, h denida pela equao

G
[i, I]
= A
[i, I]
/A
[I, I]
(veja a anlise de algoritmo de Gauss-Jordan, seo 2.4) e seja A

a matriz

GA.

fcil vericar que a matriz A

elementar comcoluna saliente h e que A

[i, I]
= 0
e A

[Ai, I]
= A
[Ai, I]
. Como a complexidade de A

menor que a complexi-


dade de A podemos pois supor, a ttulo de hiptese de induo, que
det(A

B) = A

[I, I]
det(B) .
Como

G quase-identidade, o lema 10.6 garante que
det(A

B) = det(

GAB) = det(AB) .
Finalmente, como A

[I, I]
= A
[I, I]
, temos det(AB) = A
[I, I]
det(B).
Feoloff cap. 10 Determinantes 107
claro que vale a propriedade transposta: det(AB) = A
[I, I]
det(B) para
qualquer matriz elementar A com linha saliente h e qualquer matriz B.
Teorema 10.8 (do produto de determinantes
5
) Para quaisquer matri-
zes A e B sobre M M,
det(AB) = det(A) det(B) .
DEMONSTRAO: A demonstrao deste teorema em tudo anloga an-
lise do algoritmo de Gauss-Jordan.
Digamos que a simplicidade de uma matriz A sobre M M a cardina-
lidade do maior subconjunto P de M dotado da seguinte propriedade: existe
uma parte Q de M tal que A
[1, Q]
de bijeo e A
[A1, Q]
nula. Suponha
inicialmente que a simplicidade de A [M[, ou seja, que A uma matriz de
permutao. Ento, pela propriedade 10.4, det(AB) = sig(A) det(B). Como
sig(A) = det(A), temos a identidade desejada.
Suponha agora que a simplicidade de A menor que [M[. Sejam P e Q 1 Q
partes de M tais que A
[1, Q]
de bijeo, A
[A1, Q]
nula e [P[ igual sim-
plicidade de A. Seja h um elemento de M P. H dois casos a considerar: I
CASO 1: A
[I, ]
nulo. claro que det(A) e det(AB) so nulos, uma vez que
(AB)
[I, ]
= A
[I, ]
B = o. Portanto, a identidade det(AB) = det(A) det(B) vale
trivialmente neste caso.
CASO 2: A
[I, ]
no nulo. Seja k um elemento de MQ tal que A
[I, I]
,= 0. I
Seja

F a matriz elementar com coluna saliente h denida pela equao

1

F
[ , I]
= A
[ , I]
(veja a anlise de algoritmo de Gauss-Jordan). Seja

G a matriz elementar com

G
coluna saliente h denida pelas equaes

G
[i, I]
=
i
,
onde
h
= 1/A
[I, I]
e
i
= A
[i, I]
/A
[I, I]
para todo i em Mh. fcil vericar
que

F

G =

G

F = I .
Seja A

a matriz

GA. Ento A

[I, ]
=
h
A
[I, ]
e A

[i, ]
= A
[i, ]
+
i
A
[I, ]
para

cada i em M h. Como A
[I, Q]
nulo, temos
A

[ , Q]
= A
[ , Q]
.
Por outro lado, A

[i, I]
=

G
[i, ]
A
[ , I]
=

G
[i, ]

F
[ , I]
= (

G

F)
[i, I]
= I
[i, I]
para cada
i em M, donde
A

[ , I]
= I
[ , I]
.
5
Publicado em 1S1, simultaneamente por Jacques P. M. Binet (1S61S6) e Augustin-Louis
Cauchy (1Sq1S).
Feoloff cap. 10 Determinantes 108
Segue da que A

[1+I, Q+I]
uma matriz de bijeo e A

[A1I, Q+I]
nula.
Portanto, a simplicidadade de A

maior que a simplicidade de A. Podemos


pois supor, a ttulo de hiptese de induo, que
det(A

B) = det(A

) det(B) .
Como

FA

B = AB e

F elementar, o lema 10.7 garante que
det(AB) =

F
[I, I]
det(A

B) =

F
[I, I]
det(A

) det(B) .
Como A

=

GA e

G elementar, o lema 10.7 garante que det(A

) =

G
[I, I]
det(A). Portanto,
det(AB) =

F
[I, I]

G
[I, I]
det(A) det(B) .
Como

F
[I, I]
= 1/
h
e

G
[I, I]
=
h
, temos a identidade desejada.
10.5 Delimitao do determinante
importante estabelecer uma delimitao superior para o valor absoluto de
det(A), que denotaremos por absdet(A). absdet()
Delimitao 10.9 Para qualquer matriz A sobre M M,
absdet(A)

iM

jM

ij
,
onde
ij
denota o valor absoluto de A
[i, )]
. ij
DEMONSTRAO: H uma correspondncia biunvoca bvia entre matrizes
de permutao sobre MM e bijees de M em M: uma matriz de permutao
J e uma bijeo se correspondem se
J
[i, i]
= 1 para todo i em M .
Para toda bijeo de M em M, podemos denir o nmero sig() com sendo
sig(J), onde J a matriz de permutao que corresponde a . Podemos dizer
ento que
det(A) =

sig()

i
A
[i, i]
,
onde a soma se estende a todas as bijees de M em M. Portanto,
absdet(A)

i

i i
.
Ora, cada um dos produtos que comparecem do lado direito da desigualdade
tambm est presente
6
no produto de somas

j

ij
. Logo, absdet(A) no
maior que esse produto de somas.
Acabamos de mostrar que absdet(A) limitado pelo produto das somas
de linhas. Demonstra-se analogamente que absdet(A) limitado pelo produto

i

ij
das somas de colunas.
6
Da mesma forma que e esto presentes no produto de somas ( + )( + ).
Feoloff cap. 10 Determinantes 109



Figura 10.3: Suponha que todos os componentes da matriz so po-
sitivos. Ento seu determinante limitado por ( + + )( + +
)( + + ) e tambm por ( + + )( + + )( + + ).
10.6 Concluso
O determinante de uma matriz quadrada A um nmero da forma

, em
que e

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) .
Mesmo sem conhecer os detalhes da denio de determinante, ca claro que o
determinante de uma matriz inteira umnmero inteiro. Fica claro tambmque
o valor absoluto do determinante limitado pelo produto das somas de linhas e
pelo produto das somas de colunas:
absdet(A)

i

j

ij
e absdet(A)

j

i

ij
,
em que
ij
o valor absoluto de A
[i, )]
. Estas delimitaes permitem prever,
ainda que grosseiramente, a ordem de grandeza do determinante da matriz.
Exerccios
10.1 Mostre que sig(

J) = sig(J) para toda matriz de permutao J.


10.2 Mostre que det(

A) = det(A) para qualquer matriz quadrada A.


10.3 Suponha que A uma matriz elementar comcoluna saliente k. Mostre que
det(A) = A
[I, I]
.
10.4 Mostre que o determinante de uma matriz quadrada A no depende da
indexao das linhas e colunas, ou seja, mostre que det(JA

J) = 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,
absdet(A)

iM

jM
(1 +
ij
) ,
Feoloff cap. 10 Determinantes 110
onde
ij
o valor absoluto de A
[i, )]
.
Captulo 11
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 Cramer
2
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
[A1, ]
= O e E
[1, Q]
-bijetora.
(Veja gura 11.1.) Podemos agora descrever o algoritmo.
Algoritmo de Gauss-Jordan-Chio Recebe uma matriz D sobre MN
e devolve matrizes F e G sobre M M e um nmero no-nulo tais
que FG = I e GD -escalonada.
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 (1o1).
111
Feoloff cap. 11 Algoritmo de Gauss-Jordan-Chio 112
Cada iterao comea com uma parte P de M, uma parte Q de N, matrizes
F e G, uma matriz E e um nmero . A primeira iterao comea com P e Q
vazios, F = G = I, E = D e = 1. Cada iterao consiste no seguinte:
CASO 1: E
[I, ]
,= o para algum h em M P . I
Escolha k em N tal que E
[I, I]
,= 0. I
Para cada i em M, seja
i
o nmero E
[i, I]
. i = 1[i, I]
Seja F

, G

, E

o resultado da pivotao de F, G, E em torno de h, k.


Comece nova iterao com P + h, Q + k, F

, G

, E

e
h
nos papis de P, Q, F, G, E e .
CASO 2: E
[A1, ]
= O .
Devolva F, G, e pare.
A operao de pivotao a que se refere o texto do algoritmo ligeiramente
diferente da dos captulos 2 e 3: dados elementos h de M e k de N, o resultado pivotao
da pivotao de F, G, E em torno de h, k o terno F

, G

, E

de matrizes de-
nido pelas equaes
F

[ , I]
= D
[ , I]
, F

[ , i]
= F
[ , i]
,
G

[I, ]
= G
[I, ]
, G

[i, ]
=

h
G
[i, ]

i
G
[I, ]

,
E

[I, ]
= E
[I, ]
, E

[i, ]
=

h
E
[i, ]

i
E
[I, ]

,
para cada i em M h. (Veja exemplo numrico na gura 11.2.)
11.2 Anlise: preliminares
Para mostrar como e por que o algoritmo de Gauss-Jordan-Chio produz os re-
sultados anunciados basta vericar as seguintes propriedades.
Invariantes No incio de cada iterao do algoritmo,
(i0) ,= 0 ,
(i1) FG = I ,
(i2) E = GD ,
(i3) E
[1, Q]
uma matriz -bijetora e E
[A1, Q]
= O ,
(i4) G
[ , A1]
= I
[ , A1]
.
claro que estas propriedades valem no incio da primeira iterao. Supo-
nha agora que elas valem no incio de uma iterao qualquer que no a ltima.
Para mostrar que continuamvlidas no incio da prxima iterao basta mostrar
Feoloff cap. 11 Algoritmo de Gauss-Jordan-Chio 113
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
Figura 11.1: Matriz -escalonada.
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
Figura 11.2: Exemplo de execuo do algoritmo de Gauss-Jordan-Chio.
A gura registra os valores de G, E e no incio de cada iterao.
Feoloff cap. 11 Algoritmo de Gauss-Jordan-Chio 114
que no m do caso 1

h
,= 0, (11.a)
F

=
h
I , (11.b)
E

= G

D, (11.c)
E

[ , Q]
=
h

1
E
[ , Q]
, (11.d)
E

[ , I]
=
h
I
[ , I]
, (11.e)
G

[ , A1I]
=
h

1
G
[ , A1I]
. (11.f)
A propriedade (11.a) segue imediatamente da maneira como h e k so escolhi-
dos no caso 1.
1 A 1 Q . Q
0 0 0 0 0
0 0 0 1 0 0
0 0 0 0 0
0 0 0 0 0
0 0 A 1 0 0 0
0 0 0 0 0
Figura 11.3: Matrizes G e E no incio de uma iterao.
DEMONSTRAO DE (11.d) E (11.f): Por denio da operao de pivota-
o, E

[I, ]
= E
[I, ]
e
E

[i, ]
=
h

1
E
[i, ]

1
E
[I, ]
para cada i em Mh. Como E
[I, Q]
nulo emvirtude de (i3), temos a igualdade
desejada. De modo anlogo, G

[I, ]
= G
[I, ]
e
G

[i, ]
=
h

1
G
[i, ]

1
G
[I, ]
para cada i em M h. Como G
[I, A1I]
nulo em virtude de (i4), temos a
igualdade desejada.
Antes de empreender as demonstraes das demais propriedades, convm
dar uma representao matricial operao de pivotao. Seja

F a matriz ele-

1
mentar com coluna especial h denida pelas equaes

F
[ , I]
=
1
h
E
[ , I]
e

F
[ , AI]
=
1
h
I
[ , AI]
,
Seja

G a matriz elementar com coluna especial h denida pelas equaes

G

G
[AI, I]
=
1
E
[AI, I]
,

G
[I, I]
= 1,

G
[ , AI]
=
h

1
I
[ , AI]
.
Feoloff cap. 11 Algoritmo de Gauss-Jordan-Chio 115
(Veja guras 11.4 e 11.5.) fcil vericar que

F

G =

G

F = I , E

=

GE e G

=

GG. (11.g)
A propriedade (11.c) segue da imediatamente. As duas propriedades restantes
exigem um pouco mais de esforo.
6 0 0 0 0 16 6 0 0 0 0 1
0 6 0 0 0 26 0 6 0 0 0 2
0 0 6 0 0 36 0 0 6 0 0 3
0 0 0 6 0 46 0 0 0 6 0 4
0 0 0 0 6 56 0 0 0 0 6 5
0 0 0 0 0 66 0 0 0 0 0 1
Figura 11.4: Exemplo com h = 6. A matriz esquerda

F. A matriz
direita

G.
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
Figura 11.5: Exemplo com h = 6. A matriz esquerda
6

F. A matriz
direita

G.
DEMONSTRAO DE (11.b): Observe que a matriz F

[ , AI]
igual a

1
F

F
[ , AI]
(ambas as matrizes so iguais a F
[ , AI]
). Ademais,
F

[ , I]
= D
[ , I]
= (
1
FG)D
[ , I]
=
1
F(E
[ , I]
)
=
1
F (
h

F
[ , I]
) .
Em suma, F

=
h

1
F

F. Logo,
F

=
h

1
(F

F)(

GG)
=
h

1
F(

F

G)G
=
h

1
FG
=
h
I ,
em virtude de (i1).
DEMONSTRAO DE (11.e): Para cada i em M,
E

[i, I]
=

G
[i, ]
E
[ , I]
=

G
[i, ]

h

F
[ , I]
=
h
(

G

F)
[i, I]
=
h
I
[i, I]
.
Logo, E

[ , I]
=
h
I
[ , I]
.
Feoloff cap. 11 Algoritmo de Gauss-Jordan-Chio 116
Conclumos assim a demonstrao de que os invariantes (i0) a (i4) valem no
incio de cada iterao do algoritmo. Os invariantes valem, em particular, no
incio da ltima iterao, quando E
[A1, ]
nula. Nesta ocasio, em virtude
de (i3),
E -escalonada
(e tem bases P e Q). Alm disso, em virtude de (i1), FG = I. Portanto, o
nmero e as matrizes F e G que o algoritmo devolve tm as propriedades
anunciadas.
Tal como acontece no algoritmo de Gauss-Jordan (seo 2.3), a matriz F
pode ser facilmente calculada a partir de D e E: no incio de cada iterao, e
portanto tambm ao nal da execuo do algoritmo,
F
[ , A1]
= I
[ , A1]
e F
[ , 1]
= D
[ , Q]

J ,
onde

J a transposta da matriz
1
E
[1, Q]
.
11.3 Anlise: invariante principal
Aseo anterior deixou de lado o invariante mais caracterstico do algoritmo: os
componentes de G e E so determinantes de submatrizes de D. Para demons-
trar esta propriedade, convm reformular algumas das variveis do algoritmo.
Ajuste a notao de modo que M e N sejam disjuntos. Seja D a matriz que D
se obtm pela justaposio de D com a matriz identidade, isto , D a matriz
sobre M (M N) denida pelas equaes
D
[A, A]
= I e D
[A, .]
= D.
No incio de cada iterao, seja E a matriz denida pela justaposio de G E
com E:
E
[A, A]
= G e E
[A, .]
= E
(veja gura 11.6). A relao E = GD, 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 denida pelas equaes


(D

)
[ , i]
= D
[ , i]
.
Portanto, D

temos mesmos componentes que D


[ , A]
mas suas colunas so in-
dexadas por M. Diremos que D

a submatriz de D denida por . Denies


anlogas valem para a matriz E. E

3
Aqui, i denota o valor de em i.
Feoloff cap. 11 Algoritmo de Gauss-Jordan-Chio 117
A .
1 0 0 0 0 0
0 1 0 0 0 0
0 0 1 0 0 0
A 0 0 0 1 0 0
0 0 0 0 1 0
0 0 0 0 0 1
A Q A Q . Q . Q
0 0 0 0 0
A Q 0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
A Q 0 0 0 0 0
0 0 0 0 0
Figura 11.6: A primeira parte da gura uma representao da
matriz D. A segunda parte representa a matriz E.
Estamos prontos para formular a relao entre determinantes de submatri-
zes de E e D. Essa relao corresponde ao mtodo de condensao de Chio
[Chi53] para clculo de determinantes [Eve80, sec.3.6]. Poderamos dizer que a
relao o invariante (i5) do algoritmo.
Lema 11.1 (lema de Chio) No incio de cada iterao do algoritmo,
para qualquer injeo de M em M N,
det(E

) =
m1
det(D

) ,
onde E

e D

so as submatrizes de E e D respectivamente denidas


por . Como de hbito, m a cardinalidade de M.
DEMONSTRAO: claro que a propriedade vale no incio da primeira ite-
rao, pois nessa ocasio E = D e = 1. Suponha agora que a propriedade
vale no incio de uma iterao qualquer que no a ltima; para mostrar que a
propriedade vale no incio da iterao seguinte, basta vericar que no m do
caso 1
det(E

) =
m1
h
det(D

) ,
onde E

a matriz denida pela justaposio de G

e E

e E

a submatriz de
E

denida por . Em virtude de (11.g) temos E

=

GE, donde E

=

GE

.
O teorema 26 (do produto de determinantes) garante que
det(E

) = det(

G) det(E

) .
Como

G uma matriz diagonal, det(

G) = (
h
/)
m1
. Isso prova a igualdade
desejada.
Feoloff cap. 11 Algoritmo de Gauss-Jordan-Chio 118
Podemos mostrar agora que cada componente de E igual ao determinante
de uma submatriz de D. Seja Q o conjunto Q (M P), donde P = M Q e Q
M P = M Q. Os invariantes (i3) e (i4) garantem que E
[A, Q]
uma matriz
-bijetora (veja gura 11.6). Para cada i em M, seja
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.
Propriedade 11.2 No incio de cada iterao do algoritmo, = det(D

).
DEMONSTRAO: De acordo com o lema 11.1, det(E

) =
m1
det(D

).
Mas det(E

) =
m
, uma vez que E

= I. Como ,= 0 em virtude de (i0),


temos = det(D

) .
Propriedade 11.3 No incio de cada iterao do algoritmo, para cada i
em M e cada j em (M N) Q,
E
[i, )]
= det(D

) ,
onde a injeo de M em M N denida pelas equaes i = j e
h = h para cada h em M i.
DEMONSTRAO: De acordo com o lema 11.1, det(E

) =
m1
det(D

).
Como ,= 0, resta apenas provar que
det(E

) =
m1
E
[i, )]
.
Para isso, preciso estudar a estrutura de E

. A denio de garante que


E
[ , Ai]
= E
[ , Ai]
. Como E

= I, temos
E
[ , Ai]
= I
[ , Ai]
,
donde E
[i, Ai]
nulo. Portanto, o desenvolvimento do determinante de E

pela linha i (propriedade 10.3) garante que


det(E

) = E
[i, i]
det(E
[Ai, Ai]
)
= E
[i, i]

m1
.
Para concluir a demonstrao, resta observar que E
[ , i]
= E
[ , )]
.
Esta seo demonstrou que, no incio de cada iterao do algoritmo de
Gauss-Jordan-Chio, cada componente de E o determinante de uma subma-
triz de D. Se o conceito de submatriz for generalizado da maneira bvia, a
propriedade pode ser reformulada (com auxlio da propriedade 10.3 do desen-
volvimento do determinante por uma linha) diretamente em termos de D, G
e E: No incio de cada iterao do algoritmo, cada componente de G e de E
o determinante de alguma submatriz de D .
Feoloff cap. 11 Algoritmo de Gauss-Jordan-Chio 119
11.4 Delimitao dos nmeros gerados
As propriedades que discutimos acima permitem delimitar o valor absoluto dos
componentes da matriz E ao longo da execuo do algoritmo. Como E mera
justaposio de G e E, a delimitao se aplica aos componentes das matrizes G
e E, e portanto tambm ao nmero .
Delimitao 11.4 No incio de cada iterao do algoritmo, para cada i
em M e cada j em M N,
[E
[i, )]
[

pM
(1 +

qN

pq
) ,
onde
pq
o valor absoluto de D
[j, q]
.
DEMONSTRAO: De acordo com as propriedades 11.2 e 11.3, E
[i, )]
da
forma det(D

), onde uma injeo de M em M N. De acordo com a deli-


mitao 10.9 do determinante,
absdet(D

)

pM
(

qM
[D
[j, q]
[) .
Adesigualdade no violada se q M for trocado por q MN (sempre
supondo M disjunto de N). Finalmente, como D a justaposio de I e D,

qMN
[D
[j, q]
[ = 1 +

qN

pq
,
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 gura D e
a segunda E. O valor de 10. A injeo denida por 1 = 5, 2 = 4, 3 = 3.
A terceira matriz da gura 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.
Feoloff cap. 11 Algoritmo de Gauss-Jordan-Chio 120
como queramos demonstrar.
Uma demonstrao semelhante prova que E
[i, )]
limitado pelo produto das
somas de colunas

p

pq
(desta vez semo 1+). Mostraremos a seguir que
E
[i, )]
tambm limitado por um produto de produtos. A delimitao mais
grosseira que as anteriores, mas muito til, por ser mais fcil de manipular.
Delimitao 11.5 No incio de cada iterao do algoritmo, para cada i
em M e cada j em M N,
[E
[i, )]
[

pM

qN
(1 +
pq
) ,
em que
pq
o valor absoluto de D
[j, q]
.
DEMONSTRAO: Em virtude da delimitao 11.4, basta mostrar que
1 +

qN

pq


qN
(1 +
pq
)
para cada p em M. Ora, a soma esquerda parte do desenvolvimento do
produto direita (da mesma forma que 1+++ parte do desenvolvimento
de (1+)(1+)(1+)). Como as demais parcelas do desenvolvimento so no-
negativas, temos a desigualdade desejada.
11.5 Aplicao a matrizes inteiras
Tudo que dissemos at aqui no depende da natureza dos componentes de D.
Suponha agora que todos os componentes da matriz dada D so inteiros. Sub-
meta D ao algoritmo de Gauss-Jordan-Chio. No incio de cada iterao, todos os
componentes de E sero determinantes de submatrizes da matriz D; portanto,
todos os componentes de G e E sero inteiros (veja gura 11.8). Ademais, de
acordo com a delimitao 11.5, todos os componentes de G e E estaro entre
e + ,
onde =

q
(1 +
pq
) e
pq
o valor absoluto de D
[j, q]
. A delimitao
permanece vlida se for denido pelo produto de somas

p
(1 +

q

pq
) ou
pelo produto de somas

p

pq
.
oportuno perguntar se os componentes da matriz E que o algoritmo gera
no so muito maiores que o estritamente necessrio. A resposta negativa,
ainda que num sentido fraco: os componentes de E admitem, no raro, um
divisor comum no-trivial; mas h matrizes D para as quais pelo menos um dos
componentes de E digamos resulta primo.
Quando a matriz dada D inteira, o algoritmo de Gauss-Jordan-Chio pode
ser executado usando somente aritmtica inteira. Para isso, basta calcular as
expresses que denema operao de pivotao exatamente na ordemindicada:
primeiro a expresso no numerador e depois a diviso por , que ser exata.
(Veja a gura 11.9.)
Feoloff cap. 11 Algoritmo de Gauss-Jordan-Chio 121

3
E[4, 4]
4
E[3, 4]

=
5 1 + 5 15
2
Figura 11.8: Examine o exemplo da gura 11.2. Apesar das divi-
ses por , todos os nmeros permaneceminteiros ao longo das su-
cessivas iteraes. Por exemplo, durante a terceira iterao ocorre
uma pivotao em torno de 3 , 3 e o valor de E

[4, 4] dado pela


expresso da gura. A expresso tem valor inteiro, ainda que as
sub-expresses 5 1/2 e 5 15/2 tenham valor fracionrio.
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
129574 118845 13654 6748 1192 955 7880
35638 35661 20158 10816 2992 5203 9236
2472 3186 36 864 1860 678 288
53560 45906 5780 3584 208 1874 4436
9064 15372 460 5852 1244 5848 3680
41406 60315 750 18000 3480 5679 6000
45114 61527 450 10800 2088 8475 3600
0 0 50676 0 0 0 0 89310 7482125 1237456
0 50676 0 0 0 0 0 116190 2279561 364492
50676 0 0 0 0 0 0 10884 200274 25368
0 0 0 50676 0 0 0 1980 2839490 532912
0 0 0 0 50676 0 0 26460 1024700 98920
0 0 0 0 0 50676 0 111090 3978015 400560
0 0 0 0 0 0 50676 117330 4033779 443040
Figura 11.9: Resultado da aplicao do algoritmo de Gauss-Jordan-Chio ma-
triz que aparece no topo da gura. O algoritmo devolve o nmero 50676 e as
matrizes G (meio da gura) e E (parte inferior da gura). Ovalor da expresso

p
(1 +

q

pq
) , aproximadamente, 4 411 057 000 000.
Feoloff cap. 11 Algoritmo de Gauss-Jordan-Chio 122
Ecincia. O nmero de dgitos na representao de vale, aproximada-
mente, log . Se adotarmos o produto-de-produtos como denio de , tere-
mos
log =

q
log(1 +
pq
)
e, portanto, o nmero de dgitos de ser igual, aproximadamente, ao nmero
total de dgitos de D. Pode-se dizer que uma medida do tamanho da matriz
dada D.
Cada operao de pivotao envolve menos que 3(m1)n multiplicaes e
divises e menos que (m1)n subtraes, onde m o nmero de linhas e n
o nmero de colunas de D. Como o nmero de iteraes no passa de m, o
nmero total de operaes aritmticas menor que
4m
2
n.
Suponhamos que o tempo necessrio para executar uma operao aritmtica
entre dois nmeros inteiros que estejam entre e limitado por log
2
.
Ento o consumo total de tempo do algoritmo ser da ordem de
m
2
nlog
2

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].
Matrizes totalmente unimodulares. Uma matriz totalmente unimodu-
lar se o determinante de cada uma de suas submatrizes quadradas vale 1, 0
ou +1 (em particular, o valor de cada componente 1, 0 ou +1). Matrizes
totalmente unimodulares aparecem, naturalmente, em vrios problemas de oti-
mizao combinatria [CCPS98, Sch86, AMO93].
Se o algoritmo de Gauss-Jordan-Chio for aplicado a uma matriz totalmente
unimodular D ento, de acordo com a propriedade 11.2, o nmero ser igual
a 1 ou +1 em todas as iteraes. Portanto, o algoritmo devolver uma matriz
inversvel inteira G tal que GD ou GD 1-escalonada.
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.
( como se o algoritmo produzisse uma matriz escalonada cujos componentes
so nmeros racionais, todos com o mesmo denominador .) O valor absoluto
de cada componente de G e GD (e, em particular, o nmero ) ser limitado
Feoloff cap. 11 Algoritmo de Gauss-Jordan-Chio 123
pelo produto de todos os nmeros da forma 1 + onde o valor absoluto
de um componente de D.
A quantidade de tempo que o algoritmo consome no pior caso da ordem
de m
2
nlog
2
, onde m o nmero de linhas e n o nmero de colunas de D.
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
11.2 Suponha que o produto das somas de colunas de D. Mostre que
log nlog(n), onde = max
q
max
p

pq
e n o nmero de colunas
de D.
11.3 Implemente o algoritmo de Gauss-Jordan-Chio em um computador. Supo-
nha que a matriz dada, D, inteira. Seu programa deve detectar overow
de operaes aritmticas ou fazer aritmtica inteira compreciso ilimitada.
Captulo 12
Algoritmo Simplex-Chio
Aoperao de pivotao caracterstica do algoritmo de Gauss-Jordan-Chio (veja
captulo 11) pode tambm ser usada no algoritmo Simplex. O resultado dessa
combinao ser chamado algoritmo Simplex-Chio, por falta de um nome me-
lhor.
O algoritmo transforma qualquer matriz D numa matriz equivalente E que
simples a menos de umfator multiplicativo. Cada componente de E igual ao
determinante de alguma submatriz de D; portanto, se cada componente de D
inteiro ento os componentes de E tambm sero inteiros. possvel dar uma
boa delimitao superior para o valor absoluto dos componentes de E e assim
mostrar que o consumo de tempo de cada iterao polinomialmente limitado
(ainda que o nmero de iteraes possa ser exponencial).
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
simples (solvel, invivel ou ilimitada) com relao a n, m. O algoritmo
Simplex-Chio recebe uma matriz arbitrria D e umpar n, m de ndices e devolve
um nmero no-nulo e uma matriz E que -simples com relao a n, m.
Para simplicar a exposio, vamos descrever apenas a heurstica Simplex-
Chio; essa heurstica pode ser convertida num algoritmo pela introduo de
um mecanismo de convergncia como o que usamos no Simplex Lexicogrco
(seo 5.3).
Heurstica Simplex-Chio Recebe uma matriz D sobre MN e elemen-
tos n e m de N e M respectivamente; se convergir, devolve matrizes F
e G e um nmero no-nulo tais que
FG = I , G
[ , i]
= I
[ , i]
e GD -simples
124
Feoloff 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
i

0 0 0
Figura 12.1: Matriz -simples solvel.
(solvel, invivel ou ilimitada) com relao a n, m.
Cada iterao comea commatrizes F, G e E, umnmero , uma parte L de
Mm e um elemento h de ML. A primeira iterao comea com F = G = I, I
E = D, = 1, L = e com h em M, se possvel distinto de m. Cada iterao
consiste no seguinte, com f = E
[ , n]
:
ALTERNATIVA I: h diferente de m .
CASO I.1: E
[I, I]
> 0 e f
[I]
0 ou E
[I, I]
< 0 e f
[I]
0 para
algum k em N n . I
Para cada p em M m, seja
p
o nmero E
[j, I]
. p = 1[j, I]
Seja L

o conjunto dos ndices p em L para os quais


p
/ > 0.
CASO I.1A: f
[I]
/
h
f
[j]
/
p
para todo p em L

.
Seja F

, G

, E

o resultado da pivotao de F, G, E em torno de h, k.


Seja L

o conjunto L + h.
Escolha h

em M L

, se possvel distinto de m.
Comece nova iterao com F

, G

, E

,
h
, L

, h

nos papis de F, G, E, , L, h.
CASO I.1B: f
[I]
/
h
> f
[j]
/
p
para algum p em L

.
Escolha qualquer p em L

tal que f
[j]
/
p
mnimo.
Seja F

, G

, E

o resultado da pivotao de F, G, E em torno de p, k.


Comece nova iterao com F

, G

, E

e
p
nos papis de F, G, E e .
CASO I.2: E
[I, .n]
o e f
[I]
> 0 ou E
[I, .n]
o e f
[I]
< 0 .
Devolva F, G, e pare.
CASO I.3: E
[I, .n]
= o e f
[I]
= 0 .
Seja L

o conjunto L + h.
Escolha h

em M L

, se possvel distinto de m.
Comece nova iterao com L

e h

nos papis de L e h.
ALTERNATIVA II: h igual a m .
Feoloff cap. 12 Algoritmo Simplex-Chio 126
CASO II.1: E
[I, I]
/ < 0 para algum k em N n . I
Para cada p em M m, seja
p
o nmero E
[j, I]
. p = 1[j, I]
Seja L

o conjunto dos ndices p em L para os quais


p
/ > 0.
CASO II.1A: L

vazio .
Devolva F, G, e pare.
CASO II.1B: L

no vazio .
Escolha qualquer p em L

tal que f
[j]
/
p
mnimo.
Seja F

, G

, E

o resultado da pivotao de F, G, E em torno de p, k.


Comece nova iterao com F

, G

, E

e
p
nos papis de F, G, E e .
CASO II.2: E
[I, .n]
/ o .
Devolva F, G, e pare.
A operao de pivotao denida exatamente como no algoritmo de
Gauss-Jordan-Chio.
12.2 Anlise
A anlise da heurstica anloga do algoritmo de Gauss-Jordan-Chio.
Invariantes No incio de cada iterao da heurstica,
(i0) ,= 0 ,
(i1) FG = I ,
(i2) E = GD ,
e existem partes P de L e Q de N n tais que
(i3) E
[1, Q]
-bijetora , E
[A1, Q]
= O e E
[11, ]
= O ,
(i4) G
[ , A1]
= I
[ , A1]
,
(i5) f
[1]
o ,
onde f o vetor E
[ , n]
. Alm disso, cada componente de G e de E o
determinante de uma submatriz de D .
A demonstrao dos invariantes inteiramente anloga que discutimos
para o algoritmo de Gauss-Jordan-Chio. Os invariantes valem, em particular,
no m da ltima iterao. Portanto, as objetos F, G e que a heurstica devolve
nos casos I.2, II.1A e II.2 tm as propriedades anunciadas.
12.3 Aplicao a matrizes inteiras
Suponha agora que todos os componentes da matriz dada D so inteiros. Ento,
no incio de cada iterao, em virtude de (i6), o nmero e todos os componen-
Feoloff cap. 12 Algoritmo Simplex-Chio 127
tes de G e de E tambm sero inteiros. Ademais, pelas mesmas razes que na
delimitao 11.5, todos estaro entre
e + ,
onde =

q
(1 +
pq
) e
pq
o valor absoluto de D
[j, q]
. A delimitao
permanece vlida se for denido pelo produto de somas

p
(1 +

q

pq
) ou
pelo produto de somas

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
denio 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 denio 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
157 334 277 170 0
466 389 13 19 0
1635 996 1542 1104 0
1343 1522 1486 1597 0
7690 12866 12326 13991 7473
252 504 686 0 0 7473 5319 0 1391
204 408 275 0 0 0 6441 7473 416
7527 15054 147 0 7473 0 21813 0 10440
3774 15021 3631 7473 0 0 19092 0 2714
86502 180477 15283 0 0 0 136920 0 65620
Figura 12.2: Submeta heurstica Simplex-Chio a matriz D descrita no topo da gura.
Depois de 10 iteraes, a heurstica devolver o nmero 7473, a matriz G (meio da
gura) e a matriz E (parte inferior da gura). A matriz E/7473 simples solvel com
relao coluna 9 e linha 5. O valor da expresso

p
(1 +

q

pq
) 381 966 750.
Ecincia de uma iterao. Qualquer que seja o mecanismo de convergn-
cia adotado, o nmero de iteraes do algoritmo Simplex-Chio ser da ordemde
2
n
no pior caso, onde n o nmero de colunas de D.
Se adotarmos o mecanismo lexicogrco, o nmero de operaes aritmticas
em uma iterao ser inferior a m(4n+3m), onde m o nmero de linhas de D,
pelas razes que passamos a detalhar. Cada operao de pivotao envolve me-
nos que 3(m1)n multiplicaes e divises e menos que (m1)n subtraes.
Feoloff cap. 12 Algoritmo Simplex-Chio 128
A escolha da linha e coluna em torno da qual se far a prxima pivotao en-
volve menos que 2(m1)n multiplicaes e menos que (m1)n subtraes. (Na
verdade, mais justo trocar n por m, uma vez que o resultado das compa-
raes lexicogrcas s depende dos [Q[ + 1 primeiras colunas de E.)
Em cada operao aritmtica, o nmero de dgitos de cada operando limi-
tado por log e portanto o esforo necessrio para executar a operao limi-
tado por log
2
. Logo, o consumo de tempo de uma iterao da ordem de
mnlog
2
.
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 (comregra lexicogrca ou regra de
Bland) em um computador. Suponha que a matriz dada inteira. Seu pro-
grama deve detectar overow de operaes aritmticas ou fazer aritmtica
inteira com preciso ilimitada.
Captulo 13
Problemas com dados inteiros
Suponha dado um sistema de equaes lineares com coecientes inteiros ou um
par dual de problemas cannicos de programao linear com coecientes intei-
ros. Este captulo resume o resultado da aplicao dos algoritmos Gauss-Jordan-
Chio e Simplex-Chio a esses problemas. Mostra tambm como possvel prever
a ordem de grandeza das solues dos problemas.
13.1 Sistemas de equaes
Suponha que A uma matriz inteira e b um vetor inteiro. Nosso problema
encontrar um vetor racional x

tal que
Ax

= b .
Submeta A ao algoritmo de Gauss-Jordan-Chio (seo 11.1) O algoritmo produ-
zir uminteiro no-nulo e uma matriz inversvel G tal que GA -escalonada.
fcil extrair de GA e Gb, como j zemos na seo 2.8, uma soluo x

de nosso
problema ou a evidncia de que tal soluo no existe. Segue da o seguinte
Teorema 13.1 Para qualquer matriz inteira A sobre M N e qualquer
vetor inteiro b sobre M, vale uma e apenas uma das alternativas:
(1) existe um inteiro entre 1 e e um vetor inteiro x
com componentes entre e tais que Ax = b ,
(2) existe um vetor inteiro g com componentes entre e
tal que gA = o, gb ,= 0 e gb est entre e ,
onde o tamanho do sistema A, b.
O tamanho do sistema A, b o nmero

i
(1 +
i
)

j
(1 +
ij
), em que

i
e
ij
so os valores absolutos de b
[i]
e A
[i, )]
respectivamente. As concluses
continuamvlidas se o tamanho do sistema for denido pelas expresses

i
(1+

i
+

j

ij
) ou (

i

ij
) (

i

i
).
129
Feoloff cap. 13 Problemas com dados inteiros 130
A alternativa (1) , essencialmente, o resultado da soluo das equaes
Ax

= b pela regra de Cramer.


1
A alternativa (2) um certicado de que
as equaes no tm soluo.
Matrizes totalmente unimodulares. Se A totalmente unimodular (veja
seo 11.5) ento = 1 no teorema acima e portanto existe um vetor inteiro x
tal que Ax = b.
13.2 Problemas cannicos
Suponha que A, b, c um sistema inteiro. Considere os problemas cannicos
CP(A, b, c) e CD(A, c, b). O primeiro consiste em encontrar um vetor racional x

em X(A, b) que minimize a expresso cx

; o segundo procura um vetor racional


y

em Y (A, c) que maximize y

b.
Submeta ao algoritmo Simplex-Chio (seo 12.1) o sistema D, m, n denido,
como em (6.b), pela justaposio de A, b e c. O algoritmo produzir uma matriz
-simples E a partir da qual fcil deduzir, como j zemos nos captulos 7
e 8, solues x

e y

dos dois problemas cannicos ou a evidncia de que tais


solues no existem.
Segue da a verso do teorema da dualidade 8.5 enunciada abaixo. Nosso
enunciado envolve os conjuntos
X(A, b) e Y (A, c) ,
com positivo. bvio um vetor x est no primeiro conjunto se e s se x/
est em X(A, b); analogamente, um vetor y est no segundo se e s se y/ est
em 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 armaes:
(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 x

em
X(A, o) tal que cx

1,
(3) existe um vetor inteiro y em Y (A, c) e um vetor inteiro y em
Y (A, o) tal que y

b +1,
(4) existe um vetor inteiro x

em X(A, o) e um vetor inteiro y

em
Y (A, o) tais que cx

1 e y

b +1.
Ademais, cada componente de x, x

, y e y

, bem como os nmeros , cx,


yb, cx

e y

b, esto entre e , onde o tamanho do sistema A, b, c.


1
Referncia a Gabriel Cramer (1o1).
Feoloff cap. 13 Problemas com dados inteiros 131
Otamanho do sistema A, b, c o nmero

j
(1+
ij
)

i
(1+
i
)

j
(1+
j
), em
que
ij
,
i
e
j
so os valores absolutos de A
[i, )]
, b
[i]
e c
[)]
respectivamente (
claro que i percorre o conjunto de ndices de linhas de A e j percorre o conjunto
de ndices de colunas de A). Oteorema continua vlido se o tamanho do sistema
A, b, c for denido pelas expresses

i
(1 +
i
+

j

ij
) (1 +

j

j
) ou

j
(
j
+

i

ij
) (

i

i
).
Matrizes totalmente unimodulares. Se A totalmente unimodular ento
o teorema da dualidade 13.2 vale com = 1. Nesse caso, se os problemas
CP(A, b, c) e CD(A, c, b) tm solues ento existe um vetor inteiro x em X(A, b)
e um vetor inteiro y em Y (A, c) tais que cx = yb.
Essas observaes trazem baila a seguinte questo, de fundamental impor-
tncia para problemas de otimizao combinatria: emque condies os proble-
mas CP(A, b, c) e CD(A, c, b) tm solues inteiras? Edmonds e Giles [EG84] in-
vestigaram essa questo e introduziram o conceito de sistema TDI (totally dual
integral) para caracterizar algumas respostas. O leitor interessado poder en-
contrar mais informaes no livro de Schrijver [Sch86, Sch03].
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/
respectivamente, onde x e y so vetores inteiros enquanto um nmero in-
teiro positivo. Tanto quanto os componentes de x e y so limitados, em valor
absoluto, pelo produto de todos os monmios da forma (1+), onde o valor
absoluto de um componente do sistema A, b, c.
As concluses se aplicam tambm, num certo sentido, a dados racionais: se
os dados so racionais, basta multiplic-los todos por um inteiro positivo to
grande que todos se tornem inteiros.
Parte IV
Algoritmos Polinomiais
132
Captulo 14
Introduo aos algoritmos
polinomiais
O Simplex um algoritmo exponencial: o nmero de operaes aritmticas que
o algoritmo executa, no pior caso, ao receber o sistema A, b, c que dene um
problema cannico primal da ordem de
m(m+n) 2
n
,
onde m o nmero de linhas e n o nmero de colunas de A. A mesma observa-
o vale para o Simplex-Chio. Talvez no seja razovel exigir que o nmero de
operaes aritmticas executadas por um algoritmo de programao linear seja
limitado por um polinmio em m e n. Mas existem algoritmos de programao
linear em que o nmero de operaes aritmticas limitado por um polinmio
em
m, n e log ,
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 cou 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
Feoloff cap. 14 Introduo aos algoritmos polinomiais 134
14.1 Problemas CD, PV, V e PI
O algoritmo polinomial que queremos descrever resolve o problema cannico
dual (mas preciso lembrar que qualquer problema de programao linear pode
ser transformado num problema cannico dual equivalente). Convm repetir a
denio do
Problema CD(A, c, b): Dado um sistema A, c, b, encontrar um vetor y
em Y (A, c) que maximize yb.
Como de hbito, Y (A, c) o poliedro cannico dual, ou seja, o conjunto de todos
os vetores y que satisfazem a restrio yA c.
Nosso algoritmo consiste em trs camadas que envolvem um ncleo.
A camada externa reduz o problema CD ao seguinte
Problema do Ponto Vivel PV(A, c): Dado um sistema A, c, encontrar
um vetor y em Y (A, c).
A segunda camada reduz o problema PV ao
Problema da Viabilidade V(A, c): Dado um sistema A, c, decidir se
Y (A, c) ou no vazio.
A camada interna reduz o problema V ao
Problema do Ponto Interior PI (A, c): Dado umsistema A, c, encontrar
um vetor z tal que z A
[ , )]
< c
[)]
para todo j.
Finalmente, o ncleo, conhecido como algoritmo de Yamnitsky-Levin, resolve o algoritmo de
Yamnitsky-
Levin
problema PI .
Trataremos do ncleo no prximo captulo; o presente captulo cuidar das
redues. A reduo de um problema a outro um mtodo que resolve o pri-
meiro recorrendo a um hipottico algoritmo para o segundo.
Tamanho e complexidade. Antes de tratar das redues necessrio ado-
tar algumas hipteses e convenes de notao. Suporemos que os componen-
tes das matrizes e vetores que denem nossos problemas so nmeros inteiros.
1
Essa hiptese no muito restritiva: qualquer sistema comdados racionais pode
ser transformado num sistema inteiro equivalente mediante multiplicao por
um nmero inteiro positivo sucientemente grande.
O nmero de linhas de qualquer matriz A ser denotado por m(A). O n- i()
mero de colunas ser denotado por n(A). O tamanho de A (veja captulo 13) n()
ser medido pelo produto (A) de todos os nmeros da forma 1 + , onde ()
o valor absoluto de um componente de A. Analogamente, o tamanho de
1
Mas as eventuais solues do problema podem ter componentes fracionrios.
Feoloff cap. 14 Introduo aos algoritmos polinomiais 135
qualquer vetor b ser o produto de todos os nmeros da forma 1 + , onde
o valor absoluto de um componente de b. Usaremos tambm as abreviaturas
(A, b) = (A) (b) e (A, b, c) = (A) (b) (c) ,
qualquer que seja o vetor c. O nmero total de dgitos binrios de um sistema
inteiro A, b, c essencialmente igual a lg (A, b, c), onde lg denota o logaritmo lg
na base 2.
Diremos que a complexidade de um algoritmo o nmero de operaes
aritmticas que o algoritmo executa no pior caso.
2
Um algoritmo que age sobre
um sistema A, b, c polinomial se sua complexidade limitada por um polin-
mio em m(A), n(A) e lg (A, b, c).
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 , x

A b , x

A b ,
xI o, yb + xc 0. (14.b)
(Veja gura 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).
Complexidade. Digamos que A

, c

o sistema descrito implicitamente


em (14.b). Suponha que a complexidade de nosso hipottico algoritmo para o
problema PV(A

, c

) limitada por um polinmio em m(A

), n(A

) e lg (A

, c

).
fcil vericar que m(A

) = m(A) + n(A) e n(A

) = 2n(A) + 2m(A) + 1. Ade-


mais,
(A

) = (A)
3
2
n(A)
(b) (c) e (c

) = (c) (b)
2
,
donde lg (A

, c

) n(A) + 3 lg (A, c, b).


Portanto, a complexidade de nosso algoritmo para o problema CD(A, c, b)
ser limitada por um polinmio em m(A), n(A) e lg (A, c, b).
2
Uma denio 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.
Feoloff cap. 14 Introduo aos algoritmos polinomiais 136
j O O O /
a O

1 c
c / / o 0
Figura 14.1: Construo do problema PV
que equivale ao problema CD(A, c, b).
14.3 Reduo do PV ao V
Suponha que dispomos de um algoritmo / que resolve o problema V. Eis como
/ pode ser usado para resolver o problema PV(A, c), ou seja, para encontar um
vetor y em Y (A, c):
Use / para decidir se Y (A, c) vazio. Se Y (A, c) no vazio, use /
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
[ , 1]
c
[1]
.
4
(Veja a gura 14.2.) Seja A

a matriz A
[ , 1]
. Use o algoritmo de Gauss-

Jordan (captulo 2) para determinar matrizes F e G tais que FG = I e


GA

escalonada. Seja P

a base de linhas e Q

uma base de colunas de 1

GA

. Seja w

o nico vetor que satisfaz as equaes


n

(GA

)
[ , Q

]
= c
[Q

]
e w

[A1

]
= o.
O vetor y

= w

G est em Y (A, c).


Anlise do algoritmo. O conjunto K foi construdo de modo que yA c
e yA

= c

para algum vetor y, onde c

= c
[1]
. Mostraremos a seguir que a
maximalidade de K garante que
(GA)
[A1

, ]
= O. (14.c)
(Na terminologia do apndice D, pgina 185, o vetor y bsico em Y (A, c).
A identidade (14.c) arma que K um gerador de A. A demonstrao da iden-
tidade uma combinao das demonstraes de D.1 e D.3.)
Suponha por um instante que (GA)
[i, ]
,= o para algum i em M P

. Seja v
3
Ou seja, nenhum superconjunto prprio de 1 tem a propriedade.
4
Mas o algoritmo A no fornece o vetor j.
Feoloff cap. 14 Introduo aos algoritmos polinomiais 137
j

c c

Figura 14.2: Construo do problema V que equivale ao


problema PV(A, c). Legenda: A

= A[ , 1] e c

= c[1] .
o vetor G
[i, ]
. Ajuste a notao, trocando v por v se necessrio, de modo que
(vA)
[)]
seja positivo para algum j em N K. Seja o maior nmero tal que

(c yA)
[)]
(vA)
[)]
para todo j em NK tal que (vA)
[)]
positivo. fcil vericar que yA+vA
c. Como (vA)
[1]
= (GA)
[i, 1]
= o, temos
(yA + vA)
[1]
= c
[1]
.
Ademais, em virtude da maximalidade de ,
(yA + vA)
[)]
= c
[)]
para algum j em N K. Mas isso incompatvel com a maximalidade de K.
A contradio prova (14.c).
Podemos mostrar agora que y

est em Y (A, c). Como yA c, basta veri-


car que y

A = yA. (Na terminologia do apndice D, pgina 185, diramos que y


e y

pertencem mesma face minimal do poliedro. Se P

= M ento y = y

um vrtice do poliedro.) claro que y

A = w

GA e yA = yFGA = wGA, onde


w o vetor yF. Como (GA)
[A1

, ]
nula, temos
y

A = w

[1

]
(GA)
[1

, ]
e yA = w
[1

]
(GA)
[1

, ]
.
Resta apenas vericar que w

[1

]
= w
[1

]
. Por denio, w

[1

]
(GA

)
[1

, Q

]
=
c
[Q

]
. Por outro lado,
w
[1

]
(GA

)
[1

, Q

]
= w
[1

]
(GA)
[1

, Q

]
= yA
[ , Q

]
= c
[Q

]
,
uma vez que Q

parte de K. Finalmente, como (GA

)
[1

, Q

]
uma matriz de
bijeo, temos
w

[1

]
= w
[1

]
.
Segue da que y

A = yA, como queramos demonstrar.


Feoloff cap. 14 Introduo aos algoritmos polinomiais 138
Complexidade. Para resolver o problema PV(A, c), nossa reduo apela
ao algoritmo / no mais que 1 + n(A) vezes. Em cada apelo, resolvemos um
problema V(A

, c

) tal que
n(A

) 2n(A) , m(A

) = m(A) e (A

, c

) (A, c)
2
.
Se a complexidade do algoritmo / limitada por um polinmio em n(A

),
m(A

) e lg (A

, c

), ento a soma das complexidades em todos os apelos ao


algoritmo ser limitada por um polinmio em n(A), m(A) e lg (A, c). A com-
plexidade do algoritmo de Gauss-Jordan usado em nossa reduo tambm
limitada por um polinmio. Em suma, a complexidade de nosso algoritmo para
o problema PV(A, c) limitada um polinmio em m(A), n(A) e lg (A, c).
14.4 Reduo do V ao PI
O problema PI (A

, c

) consiste em encontrar um ponto interior do poliedro


Y (A

, c

), ou seja, um vetor z tal que zA

[ , )]
< c

[)]
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, A

= A e c

= c + u,
onde u o vetor de 1s (todos os componentes de u so iguais a 1). Resolva o
problema do ponto interior para o sistema A

, c

. Se Y (A

, c

) no tem ponto
interior ento o teorema abaixo garante que Y (A, c) vazio; caso contrrio, o
teorema garante que Y (A, c) no vazio (embora sem exibir, explicitamente,
um elemento do poliedro).
Nossa reduo depende do seguinte teorema, que uma conseqncia sim-
ples do teorema da dualidade 13.2 para dados inteiros. O teorema arma que o
poliedro Y (A, c) vazio se e s se um poliedro auxiliar, ligeiramente maior, no
tem pontos interiores.
Teorema 14.1 (da reduo) Para qualquer sistema inteiro A, c, o polie-
dro Y (A, c) vazio se e s se
Y (A, c + u)
tem um ponto interior, onde = n.
DEMONSTRAO: Suponha que existe um vetor y tal que yA c. claro
que yA < c +
1
u e portanto y um ponto interior de Y (A, c + u). Agora
considere a recproca. Suponha que Y (A, c + u) tem um ponto interior z.
claro que
zA < c +
1
u.
Feoloff cap. 14 Introduo aos algoritmos polinomiais 139
Considere o problema de encontrar um vetor y que satisfaa as restries yA
c. O teorema da dualidade 13.2 para dados inteiros garante que vale uma das
seguintes alternativas:
existem um inteiro entre 1 e e um vetor inteiro y com compo-
nentes entre e tais que yA c;
existe um vetor inteiro x

com componentes entre 0 e tal que


Ax

= o e cx

1.
Suponha por um momento que vale a segunda alternativa. Ento, por um lado,
(c +
1
u)x

> (zA)x

= z(Ax

) = 0,
onde a primeira desigualdade vale porque x

no nulo, uma vez que cx

no
nulo. Por outro lado,
(c +
1
u)x

= cx

+
1
ux

1 +
1
n 1 + (n)
1
n = 0.
Esta contradio mostra que a segunda alternativa impossvel, e portanto vale
a primeira. Como yA c, o vetor
1
y est em Y (A, c).
A nfase do teorema est menos nos pontos interiores que na possibilidade
de aumentar ligeiramente o lado direito das restries que denem um poliedro
vazio sem que ele deixe de ser vazio. De fato, algumas alteraes bvias na
demonstrao acima provam que Y (A, c) vazio se e s se Y (2A, 2c + u)
vazio.
Complexidade. Suponha que a complexidade de nosso algoritmo hipot-
tico para o problema PI (A

, c

) limitada por um polinmio em n(A

), m(A

)
e lg (A

, c

). Para resolver o problema V(A, c) como esboamos acima ne-


cessrio tomar A

= A e c

= c + u. Se observarmos que m(A

) = m(A) e
n(A

) = n(A) e adotarmos as abreviaturas m e n respectivamente para esses


dois nmeros, teremos

= (A

) (c

)

mn
(A)
n
(c)
=
mn+n

= n
mn+n

mn+n+1
,
onde e

so abreviaturas para (A, c) e (A

, c

) respectivamente. Portanto
lg

= (mn + n) lg n + (mn + n + 1) lg .
Assim, a complexidade do algoritmo que propusemos para o problema V(A, c)
limitada por um polinmio em m(A), n(A) e lg (A, c).
Feoloff cap. 14 Introduo aos algoritmos polinomiais 140
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 (A

, c

) tiver complexidade limitada por um polinmio em m(A

),
n(A

) e lg (A

, c

) 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 (A

, c

) limitada pelo po-


linmio
70 (m

+ 1)
4
(m

+ n

+ 1) lg

,
onde m

= m(A

), n

= n(A

) e

= (A

, c

). Os termos mais signicativos


desse polinmio so
70 m

5
lg

e 70 m

4
n

lg

.
Se um problema V(A, c) for reduzido a um problema PI e esse ltimo resolvido
pelo algoritmo de Yamnitsky-Levin, o nmero total de operaes aritmticas
ser limitado por um polinmio cujos termos mais signicativos so
70 m
6
nlg e 70 m
5
n
2
lg ,
onde m = m(A), n = n(A) e = (A, c). Se um problema PV(A, c) for re-
duzido a um problema V e este for resolvido como sugerido acima, o nmero
total de operaes aritmticas ser limitado por umpolinmio cujos termos mais
signicativos so
280 m
6
n
2
lg e 560 m
5
n
3
lg ,
onde m = m(A), n = n(A) e = (A, c). Finalmente, no polinmio corres-
pondente para o problema CD(A, c, b), o termo mais signicativo ser (miserere
nobis! )
13440 (m + n)
8
lg ,
onde m = m(A), n = n(A) e = (A, c, b). Esses clculos, ainda que grosseiros,
sugerem que nosso algoritmo dicilmente poder competir com o Simplex na
prtica.
5
Sistemas com menos que 7 + lg i(

) componentes no-nulos.
Captulo 15
Algoritmo de Yamnitsky-Levin
Este captulo descreve um algoritmo polinomial para o problema do ponto inte-
rior, j enunciado no captulo 14:
Problema PI (A, c): Dada uma matriz inteira A e um vetor inteiro c,
encontrar um vetor z tal que zA < c.
O algoritmo, publicado por Yamnitsky e Levin [YL82][Chv83, Sch86, Sch03],
semelhante ao clebre algoritmo do elipside [Kha79, GL81], mas, ao contrrio
daquele, opera apenas com nmeros racionais. O nmero de operaes aritm-
ticas que o algoritmo de Yamnitsky-Levin executa da ordem de
m
4
(m + n) log ,
onde m e n so os nmeros de linhas e colunas de A respectivamente e log
representa o nmero total de dgitos necessrio para escrever todos os compo-
nentes de A e c.
A concepo bsica do algoritmo simples: o poliedro Y (A, c) envolvido
por um tetraedro sucientemente grande que ento progressivamente enco-
lhido at que o centro do tetraedro seja um ponto interior do poliedro ou at
que que evidente que o poliedro no tem ponto interior. Embora a idia parea
simples, sua realizao tcnica bastante complexa.
15.1 Denies bsicas
Os protagonistas principais do captulo so uma matriz A sobre M N e um
vetor c sobre N. Suporemos que o sistema A, c inteiro, ou seja, que todos os
componentes de A e c so nmeros inteiros.
O tamanho de A (veja captulo 13) o produto de todos os nmeros da
forma 1 + , onde o valor absoluto de um componente de A. O tamanho
de c denido de maneira anloga. O tamanho do sistema A, c o produto
(A) (c), onde (A) e (c) so os tamanhos de A e c respectivamente.
Como de hbito, Y (A, c) denota o conjunto de todos os vetores y para os
quais yA c. Diremos que esse conjunto o poliedro determinado por A, c.
141
Feoloff cap. 15 Algoritmo de Yamnitsky-Levin 142
Nosso problema encontrar um ponto interior do poliedro, isto , um vetor ponto
interior
racional z tal que
zA < c .
A desigualdade deve ser entendida componente-a-componente: zA
[ , )]
< c
[)]
para cada ndice j.
15.2 Tetraedros e seus volumes
A existncia de um ponto interior em Y (A, c) est intimamente relacionada com
o volume de Y (A, c): o poliedro tem um ponto interior se e s se seu vo-
lume no nulo. Felizmente, no ser necessrio denir o volume de um
poliedro arbitrrio; basta denir o conceito para certos poliedros muito simples,
que chamaremos tetraedros.
Um tetraedro
1
sobre M o conjunto de todas as combinaes convexas de
m + 1 vetores sobre M, onde m = [M[. Uma combinao convexa dos vetores combinao
convexa
t
0
, . . , t
m
qualquer vetor da forma

0
t
0
+ +
m
t
m
,
onde
0
, . . ,
m
so nmeros no-negativos tais que
0
+ +
m
= 1. Os m+1
vetores que denem um tetraedro so os vrtices ou geradores do tetraedro.
O tetraedro gerado pelos vetores t
0
, . . , t
m
ser denotado por [t
0
, . . , t
m
]. [t
0
, . . , t
m
]
Antes de denir 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 denida pelas equaes A+0
T
T
[i, 0]
= 1 e T
[i, A]
= t
i
para i = 0, . . , m. claro que T denida sobre M+0M+0. Diremos que T a
matriz do tetraedro gerado pelos vetores t
0
, . . , t
m
. Graas ao ajuste de notao,
a matriz quadrada.
O volume do tetraedro gerado por t
0
, . . , t
m
, por denio, 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 [t
0
, . . , t
m
] = absdet(T) .
O volume do tetraedro no depende da ordem em que tomamos seus vrtices.
De fato, se T

a matriz do tetraedro gerado por uma permutao t

0
, . . , t

m
de t
0
, . . , t
m
ento existe uma matriz de permutao J tal que T

= JT ; como
det(T

) = sig(J) det(T) = det(T), temos absdet(T

) = absdet(T).
O nmero vol [t
0
, . . , t
m
] /m! o volume do conjunto [t
0
, . . , t
m
] no sentido
geomtrico. Nossa denio 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 i = 3. Quando i = 2, o tetraedro um
tringulo. Quando i = 1, o tetraedro se reduz a um intervalo.
Feoloff 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
Figura 15.1: O volume do tetraedro gerado pelas li-
nhas da primeira matriz o valor absoluto do determi-
nante da segunda matriz, ou seja, 24
3
.
Propriedades do volume. O volume de um tetraedro pode ser calculado a
partir das arestas t
i
t
0
. Esse clculo depende da matriz reduzida do tetrae-
dro: trata-se da matriz

T sobre M M denida pelas equaes

T

T
[i, ]
= t
i
t
0
.
Propriedade 15.1 (frmula do volume) Se

T a matriz reduzida do te-
traedro gerado por t
0
, . . , t
m
ento vol [t
0
, . . , t
m
] = absdet(

T).
DEMONSTRAO: Basta mostrar que o determinante de

T igual ao deter-
minante da matriz T do tetraedro. A relao entre as duas matrizes simples:

T = (GT)
[A, A]
,
onde G a matriz elementar sobre M+0 M+0 com coluna saliente 0 denida
pelas equaes G
[0, 0]
= 1 e G
[A, 0]
= u, onde u o vetor de 1s (u
[)]
= 1 para
todo j). De acordo com propriedade 10.3, det((GT)
[A, A]
) = det(GT), uma vez
que (GT)
[ , 0]
= Gu = I
[ , 0]
. De acordo com o teorema 26,
det(GT) = det(G) det(T) = G
[0, 0]
det(T) = det(T) .
Logo, det(

T) = det(T), como queramos demonstrar.


Essa frmula do volume ajuda a calcular o volume do tetraedro que servir
de ponto de partida do algoritmo de Yamnitsky-Levin. Considere o tetraedro
gerado pelos vetores t
0
= u e t
i
= u + I
[i, ]
, onde u um vetor de 1s (veja
gura 15.1). Ento
vol [t
0
, . . , t
m
] =
m
, (15.a)
uma vez que a matriz reduzida do tetraedro I.
A anlise do algoritmo de Yamnitsky-Levin depende de mais duas propri-
edades do volume de um tetraedro. A primeira d condies sucientes para
que o volume de um tetraedro seja nulo; a segunda mostra que se [t

0
, . . , t

m
]
[t
0
, . . , t
m
] ento vol [t

0
, . . , t

m
] vol [t
0
, . . , t
m
].
Propriedade 15.2 (do volume nulo) Se t
0
a = t
1
a = = t
m
a para
algum vetor no-nulo a sobre M ento vol [t
0
, . . , t
m
] = 0.
Feoloff cap. 15 Algoritmo de Yamnitsky-Levin 144
DEMONSTRAO: Seja

T a matriz reduzida do tetraedro gerado por
t
0
, . . , t
m
. De acordo com a propriedade 15.1, basta mostrar que det(

T) = 0.
Submeta

T ao algoritmo de Gauss-Jordan (seo 2.3). O algoritmo produzir
matrizes F e G tais que FG = I e a matriz G

T escalonada. Seja P a base de


linhas da matriz G

T .
Suponha, tentativamente, que P = M e portanto que G

T uma matriz
de bijeo. De acodo com nossas hipteses,

T
[i, ]
a = t
i
a t
0
a = 0 para cada i.
Como

Ta nulo, tambm G

Ta nulo. Como a matriz G

T de bijeo, o vetor a
necessariamente nulo. o que inconsistente comnossas hipteses. Conclumos
assim que M P no vazio.
Seja i umelemento de MP. Como o vetor (G

T)
[i, ]
nulo, o determinante
de G

T nulo. Como o determinante de G

T o produto dos determinantes de G


e

T (teorema 26), um desses dois ltimos nulo. Mas det(F) det(G) = det(I) =
1, donde det(

T) = 0.
Propriedade 15.3 (monotonicidade) Se os vetores t

0
, . . , t

m
esto todos
em [t
0
, . . , t
m
] ento vol [t

0
, . . , t

m
] vol [t
0
, . . , t
m
].
DEMONSTRAO: Sejam T e T

as matrizes dos tetraedros gerados, respec-


tivamente, por t
0
, . . , t
m
e t

0
, . . , t

m
. Basta mostrar que absdet(T

) absdet(T).
Por hiptese, cada vetor t

i
uma combinao convexa de t
0
, . . , t
m
. Por-
tanto, cada linha da matriz T

uma combinao convexa das linhas de T . Em


outras palavras, existe uma matriz

G sobre M+0 M+0 tal que
T

=

GT ,

G
[i, ]
o e

j

G
[i, )]
= 1
para cada i em M+0. Portanto, o determinante de T

o produto dos determi-


nantes de

G e T (teorema 26). Mas
absdet(

G)

i
(

G
[i, )]
) = 1
de acordo com a delimitao 10.9. Logo, absdet(T

) absdet(T).
15.3 Teorema do tetraedro interior
A seo anterior comeou com a seguinte observao informal: um poliedro
possui um ponto interior se e s se o seu volume no nulo. Agora esta-
mos em condies de fazer uma armao mais precisa: um poliedro possui
um ponto interior se e s se inclui um tetraedro de volume no-nulo. O teo-
rema abaixo prova esta armao d estimativas do volume do tetraedro e da
norma de seus vrtices. Anorma de umvetor z o maior componente, emvalor
absoluto, de z:
[z[ = max
j
[z
[)]
[ .
O teorema adota, tacitamente, a conveno M = 1, . . , m que j usamos na
seo anterior.
Feoloff cap. 15 Algoritmo de Yamnitsky-Levin 145
Teorema 15.4 (do tetraedro interior) Seja A, c um sistema inteiro sobre
M N. Se Y (A, c) possui um ponto interior ento existem um inteiro
entre
2
1 e e vetores inteiros z
0
, . . , z
m
sobre M dotados das seguintes
propriedades:
vol [z
0
/, . . , z
m
/] 1/
m
e, para cada i, z
i
/ Y (A, c) e [z
i
[ 2 + 1, onde o nmero
4 (A)
2
(c)
2
.
DEMONSTRAO: Para qualquer inteiro positivo , evidente que Y (A, c)
o conjunto de todos os vetores da forma y com y em Y (A, c). Se for suci-
entemente grande, alguns dos vetores em Y (A, c) tero componentes inteiros.
So desse tipo os vetores z
0
, . . , z
m
que estamos procurando. O vetor z
0
, em
particular, dever estar sucientemente afastado de algumas das fronteiras do
poliedro Y (A, c). A prova da existncia de um tal z
0
ser delegada, em parte,
ao lema 15.5 abaixo.
Seja a o vetor denido da seguinte maneira para cada j em N: se A
[ , )]
o
ento a
[)]
= 0 seno a
[)]
= max
i
A
[i, )]
. bvio que
a o e a A
[i, ]
para cada i em M. Ademais, a inteiro uma vez que A inteira. A denio
de a garante que para cada j existe i tal que a
[)]
[A
[i, )]
[. Segue da imediata-
mente que
(a) (A) .
Nossa primeira tarefa a determinao de um vetor inteiro z
0
e um nmero
tais que a diferena entre c e z
0
A seja pelo menos a. Digamos que z um
ponto interior de Y (A, c) e dena o nmero da seguinte maneira: se a nulo
ento = 1 seno o maior nmero racional que satisfaz a desigualdade
zA + a c. Como z um ponto interior, temos
> 0.
Nestas condies, o lema 15.5 abaixo garante a existncia de um inteiro , um
inteiro
0
e um vetor inteiro z
0
tais que

0
1, z
0
A +
0
a c , 1 4 e [z
0
[ 8 ,
onde = (A)(a)(c). Como a o e (a) (A), temos
z
0
A + a c , 1 e [z
0
[ 2 .
(Note que z
0
pertence a Y (A, c) mas no necessariamente um ponto interior.)
2
A expresso est entre e deve ser entendida como .
Feoloff cap. 15 Algoritmo de Yamnitsky-Levin 146
Agora que temos um dos vrtices do tetraedro, podemos construir os de-
mais: para i = 1, . . , m,
z
i
= z
0
+ I
[i, ]
.
evidente que cada z
i
inteiro e [z
i
[ 2 + 1. Como a A
[i, ]
, temos
z
i
A = z
0
A + A
[i, ]
z
0
A + a c
para cada i em M. Como a o, podemos dizer que z
0
A z
0
A + a c.
Portanto, cada um dos vetores z
i
est em Y (A, c).
Finalmente, preciso calcular o volume do tetraedro gerado pelos vetores
z
0
/, . . , z
m
/. Seja

Z a matriz reduzida do tetraedro. De acordo com a proprie-
dade 15.1,
vol [z
0
/, . . , z
m
/] = absdet(
1

Z) .
Como

Z
[i, ]
= z
i
z
0
= I
[i, ]
para cada i, temos
absdet(
1

Z) = absdet(
1
I) =
m

m
,
uma vez que .
O teorema que acabamos de demonstrar tem a seguinte conseqncia ime-
diata: se Y (A, c) parte de um tetraedro gerado por t
0
, . . , t
m
e vol [t
0
, . . , t
m
] <
1/
m
ento Y (A, c) no tem ponto interior. Esta , essencialmente, a condio
de parada do algoritmo de Yamnitsky-Levin.
Lema do ponto profundo. Para completar a demonstrao do teorema,
preciso estabelecer o seguinte lema, que uma mera aplicao da verso inteira
do teorema da dualidade 13.2. Grosso modo, o lema mostra que todo poliedro
dotado de um ponto interior possui um ponto profundo, ou seja, um ponto
sucientemente afastado das fronteiras.
Lema 15.5 Seja A uma matriz inteira sobre MN e sejam a e c vetores
inteiros sobre N. Se existe um nmero racional e um vetor racional z
tais que
> 0 e zA + a c
ento existem um inteiro , um inteiro

e um vetor inteiro z

tais que

1, z

A +

a c , 1 4 e [z

[ 8 ,
onde = (A)(a)(c).
DEMONSTRAO: Considere o problema de encontrar um vetor z

e um
nmero

que
maximizem

sujeito a z

A +

a c e

0 . (15.b)
Feoloff cap. 15 Algoritmo de Yamnitsky-Levin 147
Convm mostrar explicitamente que este problema cannico dual. Seja A

a
matriz denida por
A

[A, .]
= A, A

[0, .]
= a, A

[A, 0]
= o e A

[0, 0]
= 1.
claro que A

denida sobre M+0 N+0; a notao est sendo ajustada de


modo que 0 no esteja em N. Sejam b

e c

os vetores denidos por


b

[A]
= o, b

[0]
= 1, c

[.]
= c e c

[0]
= 0.
Nosso problema (15.b) essencialmente igual ao problema cannico dual
CD(A

, c

, b

), que consiste em maximizar y

sujeito a y

. Para qualquer
soluo y

do segundo problema, o par y

[A]
, y

[0]
uma soluo do primeiro.
Observe que (A

)(c

)(b

) = 4 , uma vez que (A

) = 2(a)(A),
(b

) = 2 e (c

) = (c). De acordo com a verso inteira 13.2 do teorema da


dualidade, existe um inteiro entre 1 e 4 para o qual vale uma das seguintes
alternativas: existem vetores inteiros y

e x

tais que
y

, A

= b

, x

o, y

= c

,
[y

[ 4 , [x

[ 4 ,
ou existem vetores inteiros y

e y

tais que
y

, y

o, y

1,
[y

[ 4 , [y

[ 4 .
Suponha inicialmente que vale a primeira das alternativas. Dena z

= y

[A]
e

= y

[0]
. Observe que z

A +

a c pois y

. Observe tambm que

1
pelos motivos que passamos a expor. Seja z

o vetor denido por z

[A]
= z e
z

[0]
= . Como z

satisfaz as restries do problema CD(A

, b

, c

), o lema da
dualidade 8.1 garante que z

. Logo,

= y

[0]
= y

= c

= z

[0]
= .
Como positivo e y

inteiro, temos

1.
Suponha agora que vale a segunda alternativa e adote z

= y

[A]
+ y

[A]
e

= y

[0]
+ y

[0]
. claro que

[0]
= y

1 e [z

[ [y

[ +[y

[ 8 .
Ademais, z

A +

a c pois y

+ y

.
Feoloff cap. 15 Algoritmo de Yamnitsky-Levin 148
15.4 Algoritmo
Oobjetivo do algoritmo encontrar umponto interior do poliedro Y (A, c). Oal-
goritmo envolve o poliedro num tetraedro sucientemente grande,
3
que ento
progressivamente encolhido. A cada iterao, o algoritmo verica se o centro
do tetraedro umponto interior do poliedro; emcaso 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 sucientemente 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).
Algoritmo de Yamnitsky-Levin Recebe uma matriz inteira A sobre
M N com [M[ 2 e um vetor inteiro c sobre N; devolve um ve-
tor racional t tal que t A < c ou pra sem nada devolver se um tal vetor
no existe.
Ajuste a notao de modo que M = 1, . . , m. Adote a abreviatura para i 2
o tamanho do sistema A, c e a abreviatura para a expresso 4
2
. Em suma,
= (A) (c) e = 4
2
.
Seja t

0
o vetor 4 u, onde u o vetor de 1s (ou seja, u
[)]
= 1 para todo j em M). t

0
Para i = 1, . . , m, seja t

i
o vetor t

i
4 u + 8 mI
[i, ]
.
Cada iterao do algoritmo comea com vetores racionais t
0
, . . , t
m
sobre M e t
0
, . . , t
m
um nmero racional . A primeira iterao comea com t
i
= t

i
para cada i e
com = (8 m)
m
. Cada iterao consiste no seguinte:
CASO 1: 1/
m
.
Seja t o vetor
1
m+1
(t
0
+ + t
m
). t
CASO 1.1: t A
[ , I]
< c
[I]
para cada k em N.
Devolva t e pare.
CASO 1.2: t A
[ , I]
c
[I]
para algum k em N. I
CASO 1.2A: A
[ , I]
= o .
Pare sem nada devolver.
CASO 1.2B: A
[ , I]
,= o .
Para cada i = 0, 1, . . , m, seja
i
o nmero (t t
i
) A
[ , I]
.
Escolha h de modo que
h
seja mximo. I
3
Para efeito desta descrio informal, suponha que o poliedro limitado (veja exerccio 15.4,
pgina 159).
Feoloff cap. 15 Algoritmo de Yamnitsky-Levin 149
Para i = 0, 1, . . , m, seja
i
o nmero 1
1
m
2

i
.
Sejam t

0
, . . , t

m
os vetores denidos pelas equaes t

h
= t
h
e t

i
=
1

i
t
i
+ (1
1

i
) t
h
para cada i distinto de h.
Seja

o nmero

h

i

i
.
Comece nova iterao com t

0
, . . , t

m
e

nos papis de t
0
, . . , t
m
e .
CASO 2: < 1/
m
.
Pare sem nada devolver.
Eis algumas observaes informais de carter geomtrico que podem ajudar
a tornar o algoritmo menos misterioso:
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 t
0
, . . , t
m
.
No caso 1.2B, o vetor t o centro do tetraedro gerado por t
0
, . . , t
m
e o
nmero
i
a projeo do vetor t t
i
na direo A
[ , I]
.
A transformao de t
0
, . . , t
m
em t

0
, . . , t

m
deixa xo o vrtice t
h
do te-
traedro e multiplica por 1/
i
a aresta que liga os vrtices t
i
e t
h
.
Cada
i
positivo e pode ser maior que 1 ou menor que 1. Mas o fator

h
/

i

i
estritamente menor que 1. Portanto, o volume

do novo
tetraedro estritamente menor que .
Operao de pivotao. Diremos que a operao que transforma t
0
, . . , t
m
em t

0
, . . , t

m
no caso 1.2B uma pivotao em torno de h. A operao de pi- pivotao
votao pode ser representada de forma matricial, como mostraremos a seguir.
Sejam T e T

as matrizes dos tetraedros gerados por t


0
, . . , t
m
e t

0
, . . , t

m
respec- T T

tivamente. Seja

G a matriz sobre M+0 M+0 denida pelas equaes

G

G
[ , i]
=
1

i
I
[ , i]
,

G
[i, I]
= 1
1

i
,

G
[I, I]
= 1,
onde as duas primeiras equaes valem para cada i distinto de h. (Veja a -
gura 15.2). A matriz est bem denida pois
i
,= 0 para todo i, como veremos
adiante. Diremos que

G a matriz de pivotao. fcil vericar que
T

=

GT (15.c)
(em particular, T

[ , 0]
= u =

GT
[ , 0]
). Tambm fcil constatar que det(

G) =

h
/

i

i
, donde

= det(

G) . (15.d)
Feoloff cap. 15 Algoritmo de Yamnitsky-Levin 150
A matriz

G inversvel. De fato, se

F a matriz denida por

1

F
[ , i]
=
i
I
[ , i]
,

F
[i, I]
= 1
i
,

F
[I, I]
= 1, (15.e)
onde as duas primeiras equaes valem para cada i distinto de h, ento

F

G =

G

F = I .
0 0 0 0 0 1 0
0 1 0 0 0 1 1
0 0 2 0 0 1 2
0 0 0 3 0 1 3
0 0 0 0 4 1 4
0 0 0 0 0 1
10 0 0 0 0 1 10
0 11 0 0 0 1 11
0 0 12 0 0 1 12
0 0 0 13 0 1 13
0 0 0 0 14 1 14
0 0 0 0 0 1
Figura 15.2: Exemplo com m = h = 5. O lado esquerdo da gura descreve

F;
o lado direito descreve

G.
15.5 Invariantes
Para compreender o algoritmo basta observar as seguintes propriedades invari-
antes
No incio de cada iterao,
(i1) se yA c e y [t

0
, . . , t

m
] ento y [t
0
, . . , t
m
] ,
(i2) vol [t
0
, . . , t
m
] = ,
(i3) > 0 .
O primeiro invariante arma
4
que Y (A, c) [t

0
, . . , t

m
] parte de [t
0
, . . , t
m
].
Os invariantes (i1) e (i3) so obviamente verdadeiros no incio da primeira
iterao. O invariante (i2) tambm vale no incio da primeira iterao, pois
vol [t

0
, . . , t

m
] = (8 m)
m
= de acordo com (15.a). A validade dos invarian-
tes no incio das demais iteraes ser discutida nas prximas sees.
A prova dos invariantes e a estimativa do nmero de iteraes dependem
muito mais da geometria de [t
0
, . . , t
m
] que do sistema A, c. Por outro lado, a
anlise da ltima iterao no depende de t
0
, . . , t
m
mas apenas de A, c.
15.6 O algoritmo est bem denido
Para garantir que o algoritmo est bem denido preciso vericar que
h
,= 0 e

i
,= 0 para todo i em cada iterao. Vamos mostrar que estas condies esto
satisfeitas desde que (i2) e (i3) sejam vlidas no incio da iterao.
4
Se Y (, c) for limitado ento (i1) arma que Y (, c) parte de [t
0
, . . , t
m
], pois nesse caso
Y (, c) parte de [t

0
, . . , t

m
].
Feoloff cap. 15 Algoritmo de Yamnitsky-Levin 151
Comecemos com a seguinte observao. Em cada ocorrncia do caso 1.2B
temos

i
=

(t t
i
)A
[ , I]
. Essa ltima expresso igual a (m+1)tA
[ , I]

t
i
A
[ , I]
. Como (m+1)t =

t
i
, temos necessariamente

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.
DEMONSTRAO: 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
[ , I]
= t
i
A
[ , I]
para todo i, e portanto
t
0
A
[ , I]
= t
1
A
[ , I]
= = t
m
A
[ , I]
.
Como A
[ , I]
no nulo por denio do caso 1.2B, a propriedade 15.2 do volume
nulo garante que
vol [t
0
, . . , t
m
] = 0.
Mas isso inconsistente comos invariantes (i2) e (i3). Portanto, a hiptese
h
= 0
insustentvel e devemos ter
h
> 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 denido e tambm que i 2

i
> 0 (15.g)
para todo i. Finalmente, convm calcular

i
. Como

i
= (m + 1) +

i
/(m
2

h
) e

i
= 0, temos

i
= m + 1. (15.h)
15.7 ltima iterao
Suponha que os invariantes (i1) a (i3) valemno incio da ltima iterao do algo-
ritmo, quando ocorrem os casos 1.1, 1.2A ou 2. Ento o algoritmo d a resposta
correta, como passamos a mostrar.
Anlise do caso 1.1. Suponha que tA < c. Ento t ponto interior de
Y (A, c). Assim, ao devolver t, o algoritmo est se comportando como previsto.
Anlise do caso 1.2A. Suponha que A
[ , I]
nulo e tA
[ , I]
c
[I]
para al-
gum k. Ento
yA
[ , I]
= 0 c
[I]
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.
Feoloff cap. 15 Algoritmo de Yamnitsky-Levin 152
Anlise do caso 2. Suponha, nalmente, que < 1/
m
. Ento, de acordo
com o invariante (i2), vol [t
0
, . . , t
m
] < 1/
m
. Suponha que, ao contrrio do que
arma o algoritmo, Y (A, c) tem um ponto interior. Ento, de acordo com o
teorema 15.4 do tetraedro interior, existem um inteiro entre 1 e e vetores
inteiros z
0
, . . , z
m
tais que
vol [z
0
/, . . , z
m
/] 1/
m
e, para cada i,
z
i
/ Y (A, c) e [z
i
[ 2 + 1.
A ltima desigualdade garante que cada vetor z
i
/ est no tetraedro gerado por
t

0
, . . , t

m
. De fato,
z
i
[)]
/ (2 1)/ 2 1 4
para todo j em M e

j
z
i
[)]
/ m(2 + 1)/ m(2 + 1) 4m .
Como Y (A, c) [t

0
, . . , t

m
] [t
0
, . . , t
m
] em virtude do invariante (i1), conclu-
mos que z
i
/ est em [t
0
, . . , t
m
] para cada i. Nestas circunstncias, a proprie-
dade 15.3 da monotonicidade garante que
vol [z
0
/, . . , z
m
/] vol [t
0
, . . , t
m
] .
Segue-se que vol [t
0
, . . , t
m
] 1/
m
, o que inconsistente com a denio do
caso 2. Portanto, a existncia de um ponto interior em Y (A, c) insustentvel.
Assim, ao parar sem nada devolver o algoritmo est se comportando como pro-
meteu.
15.8 Demonstrao dos invariantes
Suponha que os invariantes (i1), (i2) e (i3) valem no incio de uma iterao qual-
quer que no a ltima. Para mostrar que estas propriedades continuam valendo
no incio da prxima iterao, basta vericar os seguintes fatos.
Fato 15.7 No m do caso 1.2B, vol [t

0
, . . , t

m
] =

> 0 .
DEMONSTRAO: Considere a matriz de pivotao

G e observe que
det(

G) =
h
/

i
.
Em virtude de (15.g), det(

G) positivo. Como

= det(

G) , o invariante (i2)
garante que

positivo. Isto conclui a demonstrao da segunda parte. Para


demonstrar a primeira parte basta vericar que
vol [t

0
, . . , t

m
] = det(

G) vol [t
0
, . . , t
m
] .
Feoloff cap. 15 Algoritmo de Yamnitsky-Levin 153
Sejam T e T

as matrizes dos tetraedros gerados por t


0
, . . , t
m
e t

0
, . . , t

m
res-
pectivamente. Como j observamos em (15.c), T

=

GT . Pelo teorema 26, o
determinante de T

o produto dos determinantes de



G e T . Portanto,
vol [t

0
, . . , t

m
] = absdet(T

)
= det(

G) absdet(T)
= det(

G) vol [t
0
, . . , t
m
] ,
como queramos demonstrar.
Fato 15.8 No m do caso 1.2B, se yA
[ , I]
c
[I]
e y est em [t
0
, . . , t
m
]
ento y est em [t

0
, . . , t

m
] .
DEMONSTRAO: Seja y um ponto do tetraedro gerado por t
0
, . . , t
m
. Se T
denota a matriz do tetraedo, podemos dizer que existe um vetor l sobre M+0
tal que
lT
[ , A]
= y , lT
[ , 0]
= 1 e l o.
Seja

F a inversa de

G denida em (15.e) e seja l

o vetor l

F. Mostraremos a
seguir que se yA
[ , I]
c
[I]
ento
l

[ , A]
= y , lT

[ , 0]
= 1 e l

o,
onde T

a matriz do tetraedro gerado por t

0
, . . , t

m
; isso provar que y est em
[t

0
, . . , t

m
]. As duas primeiras relaes seguem imediatamente de (15.c):
l

= (l

F)(

GT) = l(

F

G)T = lT .
Na demonstrao da desigualdade l

0, vamos adotar as abreviaturas


i
= l
[i]
e

i
= l

[i]
. Para cada i distinto de h temos

i
= l

F
[ , i]
=
i

i
0,
uma vez que
i
no negativo de acordo com (15.g). Resta apenas mostrar que

h
no negativo. Como

h
= l

F
[ , I]
=
h

h
+

(1
i
)
i
e
h
no negativo em virtude de (15.g), basta mostrar que

(1
i
)
i
no
negativo. Isso equivale a mostrar que

i
no negativo, uma vez que

i
= m
2

h
(1
i
) e
h
positivo em virtude do lema 15.6. Mas

i

i
=

i
(t t
i
) A
[ , I]
= (

i
t

i
t
i
) A
[ , I]
= (t y) A
[ , I]
= tA
[ , I]
yA
[ , I]
c
[I]
c
[I]
= 0,
uma vez que tA
[ , I]
c
[I]
por denio do caso 1.2 e yA
[ , I]
c
[I]
por hiptese.
Com isto, conclumos a demonstrao de que

h
no negativo.
Feoloff cap. 15 Algoritmo de Yamnitsky-Levin 154
15.9 Nmero de iteraes
O nmero de iteraes depende fundamentalmente do nmero de ocorrncias
do caso 1.2B. Em cada ocorrncia desse caso, multiplicado por

i
.
Diremos que esse nmero o fator de contrao da iterao e mostraremos que contrao
ele signicativamente 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
.
Delimitao 15.9 (do fator de contrao) Em cada ocorrncia do
caso 1.2B,

h
(1
1
m
2
)
m
(1
1
m
)
1
.
DEMONSTRAO: Para comparar

i
com

i
, convm demonstrar o se-
guinte lema:
se
i
0 para i = 0, . . , k
ento
0

k
(
0
+ +
k
k)
k
.
Aproposio trivialmente verdadeira quando k nulo. Suponha agora que k
positivo e adote como hiptese de induo a desigualdade
0

k1

k1
,
onde denota a expresso
0
+ +
k1
(k1). Ento

0

k1

k
(
k
)
k1
.
Como
i
para todo i, temos k (k 1) = e portanto

k
= ( +
k
) + ( )(
k
) ( +
k
) .
Segue da que
(
k
)
k1
( +
k
)
k
= (
0
+ +
k1
(k 1) +
k
)
k
= (
0
+ +
k
k)
k
.
Isto encerra a demonstrao do lema. Podemos agora aplica-lo nossa situao
concreta. Em virtude da maximalidade de
h
, temos
i
1 1/m
2
para todo i.
Ademais,

i
= m + 1 de acordo com (15.h). Diante disso, o lema (15.i)
com m,
i
e 1 1/m
2
no lugar de k,
i
e garante que

i
(1 + 1/m) (1 1/m
2
)
m
.
Como
h
= 1 1/m
2
= (1 1/m) (1 + 1/m), temos a delimitao desejada.
Feoloff cap. 15 Algoritmo de Yamnitsky-Levin 155
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
1
m
2
)
m
(1
1
m
)
1
=
1
2(m + 1)
2
Figura 15.3: Ilustrao das delimitaes 15.9 e 15.10.
importante estabelecer uma delimitao simples para o logaritmo do fator
de contrao. O logaritmo na base 2 ser denotado por lg. lg
Delimitao 15.10 (do logaritmo do fator de contrao) Em cada ocor-
rncia do caso 1.2B,
lg

h
>
1
2(m + 1)
2
.
DEMONSTRAO: Se ln denota o logaritmo na base e ento, para todo ln
entre 0 e 1,
ln(1 ) =
2
/2
3
/3
4
/4 .
Observe agora que 1/m
2
e 1/m esto entre 0 e 1, uma vez que m 2. Portanto, i 2
o logaritmo da delimitao 15.9 produz as desigualdades
mln

1
1
m
2

ln

1
1
m



1
m

1
2m
3

1
3m
5

1
4m
7
+
1
m
+
1
2m
2
+
1
3m
3
+
=
1
2m
2

1
1
m

+
1
3m
3

1
1
m
2

+
1
4m
4

1
1
m
3

+
>
1
2m
2

1
1
m

=
m1
2m
3
>
m1
2(m + 1)(m + 1)(m1)
=
1
2(m + 1)
2
.
Como lg > ln quando ln positivo, temos a delimitao desejada.
Feoloff cap. 15 Algoritmo de Yamnitsky-Levin 156
Delimitao 15.11 (do nmero de iteraes) O algoritmo executa no
mais que
2m(m + 1)
2
(4 lg + lg m + 7)
iteraes, onde = (A)(c).
DEMONSTRAO: No incio da primeira iterao temos = (8 m)
m
. No
m de cada ocorrncia do caso 1.2B, substitudo por (
h
/

i
) . No m da
j-sima iterao teremos < (8 m)
m
L
j
, onde L uma delimitaao do fator
de contrao. Em virtude da delimitao 15.10,
lg < mlg(8 m) j
1
2(m + 1)
2
no incio da j+1-sima iterao. Quando
j 2(m + 1)
2
m(lg + lg(8m )) ,
teremos lg < mlg e portanto <
m
, desigualdade esta que caracteriza o
caso 2 do algoritmo. Mas
lg + lg(8 m) = 2 lg + lg m + 3
= 2 lg(4
2
) + lg m + 3
= 4 lg + lg m + 7.
Portanto, 2m(m+1)
2
(4 lg +lg m+7) uma delimitao superior para o nmero
de iteraes.
A menos que o sistema A, c seja extremamente esparso (menos que 7 +lg m
componentes no-nulos), teremos lg lg m+7, e portanto o nmero de itera-
es limitado por
10 (m+1)
3
lg . (15.i)
15.10 Nmero de operaes aritmticas
Seja n uma abreviatura para [N[. No difcil vericar que o algoritmo executa n
no mais 2mn + m
2
+ m + 2 operaes aritmticas para decidir que caso se
aplica e no mais que 6m
2
+6m+4 operaes aritmticas ao longo da execuo
do caso 1.2B. Assim, o nmero de operaes aritmticas em cada iterao
limitado por 7m
2
+ 2mn + 7m + 6. Quando m 2 e n 1, esse nmero no
passa de
7m(m + n + 1) .
A propsito, as operaes aritmticas envolvem nmeros racionais; mas pos-
svel reorganizar o algoritmo de modo que ele opere apenas com inteiros.
Em virtude de (15.i), o nmero total de operaes aritmticas durante a exe-
cuo do algoritmo limitado por
70 (m+1)
4
(m + n + 1) lg
(a menos que o sistema seja extremamente esparso).
Feoloff cap. 15 Algoritmo de Yamnitsky-Levin 157
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
m
4
(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 .
15.12 Apndice: Uma s linha
Considere o problema do ponto interior no caso em que a matriz A tem uma
s linha (m = 1). O algoritmo de Yamnitsky-Levin no se aplica diretamente,
pois depende da desigualdade m 2. Mas no difcil escrever uma variante
do algoritmo para esse caso. Nessa variante, os tetraedros so intervalos e o
algoritmo nada mais que uma busca binria.
Nosso algoritmo recebe vetores inteiros a e c sobre N e devolve um nmero
racional t tal que ta < c ou pra sem nada devolver se tal nmero no existe.
Cada iterao comea com nmeros racionais t
0
, t
1
e . A primeira iterao
comea com t
0
= t

0
, t
1
= t

1
e = 8 , onde t

0
= 4 , t

1
= +4 e =
4(a)
2
(c)
2
. Cada iterao consiste no seguinte:
CASO 1:
1
.
Seja t o nmero
1
2
t
0
+
1
2
t
1
.
CASO 1.1: ta
[I]
< c
[I]
para cada k em N.
Devolva t e pare.
CASO 1.2: ta
[I]
c
[I]
para algum k em N.
CASO 1.2A: a
[I]
= 0 .
Pare sem nada devolver.
CASO 1.2B: a
[I]
,= 0 .
Sejam
0
e
1
os nmeros (t t
0
) a
[I]
e (t t
1
) a
[I]
respectivamente.
Dena t

0
e t

1
da seguinte maneira:
se
0
0 ento t

0
= t
0
e t

1
= t seno t

1
= t
1
e t

0
= t.
Seja

o nmero /2.
Comece nova iterao com t

0
, t

1
e

nos papis de t
0
, t
1
e .
Feoloff cap. 15 Algoritmo de Yamnitsky-Levin 158
CASO 2: <
1
.
Pare sem nada devolver.
O funcionamento do algoritmo pode ser descrito pelos seguintes invarian-
tes: No incio de cada iterao,
(i1) se ya c e t

0
y t

1
ento t
0
y t
1
,
(i2) t
1
= t
0
+ ,
(i3) > 0 .
Para mostrar a validade do invariante (i1) basta vericar que no m do
caso 1.2B temos
se ya
[I]
c
[I]
e t
0
y t
1
ento t

0
y t

1
. (15.j)
Ademonstrao desse fato umcaso particular do que discutimos na seo 15.8.
Suponha que y um nmero tal que t
0
y t
1
e ya
[I]
c
[I]
. claro que existe
um nmero entre 0 e 1 tal que
t
0
+ (1 )t
1
= y .
preciso mostrar que existe

entre 0 e 1 tal que y =

0
+ (1

)t

1
. Como
estamos no caso 1.2, temos ta
[I]
c
[I]
. Como ya
[I]
c
[I]
, vale um das alterna-
tivas:
t
0
a
[I]
c
[I]
t
1
a
[I]
ou t
0
a
[I]
c
[I]
t
1
a
[I]
.
Digamos que vale a primeira alternativa (a demonstrao anloga no outro
caso). Como ya
[I]
c
[I]
, conclumos que y est mais prximo de t
0
que de t
1
e
portanto 1/2. Seja

o nmero 2 1 e observe que

1.
Como ta
[I]
c
[I]
t
0
a
[I]
, temos
0
0 e portanto t

0
= t
0
e t

1
= t. fcil
vericar agora que

0
+ (1

)t

1
= t
0
+ (1 t
1
) = y .
Isso conclui a demonstrao de (15.j).
No caso 2, o poliedro Y (a, c) vazio, ou seja, no existe nmero y tal que
ya c. A demonstrao desse fato segue do teorema 15.4 do tetraedro interior,
que poderia ser enunciado assim nesse caso especial:
Se existe um nmero y tal que ya < c ento existem um inteiro entre
1 e e nmeros inteiros z
0
e z
1
entre 2 e 2 + 1 tais que
z
0
+ 1 z
1
, z
0
a c e z
1
a c ,
onde o nmero 4(a)
2
(c)
2
.
Feoloff cap. 15 Algoritmo de Yamnitsky-Levin 159
Exerccios
15.1 Verique 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 sucientemente grande. Mais especicamente, mostre que existe
um inteiro entre 1 e 2 e um vetor inteiro z

tais que [z

[ 4 e
(z

+ v)A c
para todo vetor v sobre M com componentes em 1, +1, onde =
4(A)
2
(c)
2
.
15.4 O poliedro Y (A, c) limitado (seja sees C.5 e D.5) se existe um nmero
tal que [y[ para todo y em Y (A, c). Suponha que Y (A, c) limi-
tado. Mostre que Y (A, c) [t

0
, . . , t

m
] no incio da primeira iterao do
algoritmo de Yamnitsky-Levin.
15.5 Suponha que Y (A, c) no vazio. Mostre que, no incio da primeira itera-
o do algoritmo de Yamnitsky-Levin, Y (A, c) [t

0
, . . , t

m
] no vazio.
15.6 Escreva e analise uma verso especializada do algoritmo de Yamnitsky-
Levin para o caso m = 2.
15.7 Escreva o algoritmo de Yamnitsky-Levin em uma linguagem mais formal,
mais prxima de PASCAL ou C. Escreva o algoritmo de modo que ele ma-
nipule somente nmeros inteiros.
Parte V
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
[i, ]
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
[i, ]
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.
A.1 Matrizes simples no sentido dual
O conceito de matriz dual-simples semelhante ao conceito de matriz simples;
para evitar confuso, usaremos a expresso primal-simples (veja seo 3.1) em primal-
simples
referncias ao ltimo. Suponha que M e N so conjuntos de ndices e que m e
n so elementos de M e N respectivamente. Diremos que uma matriz E sobre
M N dual-simples (ou simples no sentido dual) em relao ao par m, n de dual-simples
ndices se for de um dos trs tipos denidos a seguir.
Uma matriz E dual-simples solvel comrelao ao par m, n se for primal-
simples solvel com relao ao par n, m, ou seja, se existem partes P de M m
e Q de N n tais que
E
[1, Q]
de bijeo , E
[1, n]
o,
E
[Ai1, .]
= O,
E
[i, .nQ]
o, E
[i, Q]
= o.
O conjunto P a base de linhas e o conjunto Q uma base de colunas da bases
matriz.
Uma matriz E dual-simples invivel com relao ao par m, n se existe
161
Feoloff ap. A Simplex Dual 162
I Q n

0 0 1

0 1 0

1 0 0
0 0 0 0
0 0 0 0
0 0 0 0
i
<
0 0 0
Figura A.1: Matriz dual-simples invivel.
n
<
I
i

Figura A.2: Matriz dual-simples ilimitada.
uma parte P de M m, uma parte Q de N n e um elemento k em N n Q
tais que
E
[1, I]
o, E
[1, Q]
de bijeo,
E
[Ai1, I]
= o, E
[Ai1, Q]
= O,
E
[i, I]
< 0, E
[i, Q]
= o.
Note que esta denio semelhante mas no idntica de uma matriz
primal-simples ilimitada. Os conjuntos P e Q so as bases da matriz e k o
ndice de uma coluna de inviabilidade. coluna de
inviabilidade
Uma matriz E dual-simples ilimitada com relao a m, n se E
[i, .]
o
e existe h em M m tal que
E
[I, .n]
o e E
[I, n]
> 0 ou E
[I, .n]
o e E
[I, n]
< 0.
Esta denio semelhante mas no idntica de uma matriz primal-
simples invivel. Oelemento h de Mm o ndice de uma linha de ilimitao. linha de
ilimitao
A.2 Esboo do Simplex Dual
Para fazer um primeiro esboo do Simplex Dual, suponha que E uma matriz
sobre M N tal que
(i0) f
[Q]
= o , f
[.nQ]
o ,
Feoloff ap. A Simplex Dual 163
(i1) E
[1, Q]
uma matriz de bijeo e E
[Ai1, .n]
= O,
onde P uma parte de Mm, Q uma parte de Nn, e f a linha m da matriz, )
ou seja, f = E
[i, ]
. Nosso objetivo transformar E, por meio de sucessivas
operaes de pivotao, numa matriz que seja dual-simples com relao a m, n.
Q n
0 0 1
1 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
i 0 0 0

Figura A.3: Matriz E no incio de uma iterao do Simplex Dual.
Se E
[Ai1, n]
,= o ento E dual-simples ilimitada. Se E
[Ai1, n]
nulo e E
[1, n]
o ento E dual-simples solvel. Suponha agora que
E
[Ai1, n]
nulo mas E
[j, n]
negativo para algum p em P. Para tornar
a matriz mais simples, o Simplex Dual considera a possibilidade de executar
uma pivotao em torno de p, k, com k escolhido em N n Q de modo que a
validade dos invariantes (i0) e (i1) seja preservada. Uma pivotao em torno de
p, k consiste em substituir a matriz E pela matriz E

denida pelas equaes


E

[j, ]
=
1
E
[j, I]
E
[j, ]
e E

[i, ]
= E
[i, ]

E
[i, I]
E
[j, I]
E
[j, ]
para cada i em M p. Ao mesmo tempo, Q substitudo pelo conjunto Q

=
Qq + k, onde q o nico elemento de Q tal que E
[j, q]
= 1. Para garantir que
E

[j, n]
no seja negativo, preciso escolher p e k de modo que
E
[j, I]
< 0. (A.a)
claro que depois da pivotao o invariante (i1) continuar valendo com E

e Q

no lugar de E e Q. Resta entender as condies sobre k que garantem a


preservao de (i0). Se denotarmos por f

o vetor E

[i, ]
ento claro que )

= f
f
[I]
E
[j, I]
E
[j, ]
.
fcil vericar que f

[Q

]
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

[q]
f
[q]
. De modo mais geral, para cada j em Nn, temos f

[)]
f
[)]
se
E
[j, )]
0 e f

[)]
f
[)]
em caso contrrio. Portanto, para garantir f

[.n]
o
necessrio e suciente que k satisfaa a condio
f
[)]

f
[I]
E
[j, I]
E
[j, )]
(A.b)
Feoloff ap. A Simplex Dual 164
para todo j em N n tal que E
[j, )]
negativo. As condies (A.a) e (A.b) so
o ponto de partida do Simplex Dual. Basta escolher p em P e k em N n que
satisfaamas condies e executar uma pivotao emtorno de p, k. Se no existe
k que satisfaa (A.a) ento p uma linha de ilimitao. A nova matriz E

no
necessariamente mais simples que E, uma vez que E

[1, n]
pode ter mais
componentes negativos que E
[1, n]
. Mas o Simplex Dual espera, assim mesmo,
estar fazendo algum progresso.
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
Figura A.4: Exemplo de aplicao do Simplex Dual. A gura registra o
valor de E no incio de sucessivas iteraes. Na primeira iterao os ele-
mentos de Q so 4, 5, 6 e os elementos de P so 1, 2, 3. A ltima matriz
dual-simples ilimitada com relao linha 4 e coluna 7.
A.3 Heurstica Simplex Dual
Dada uma matriz D sobre MN e elementos m e n de M e N respectivamente,
o objetivo do Simplex Dual transformar D, por meio de sucessivas operaes
de pivotao, numa matriz que seja dual-simples comrelao a m, n. Atarefa de
escrever o algoritmo completo car a cargo do leitor; cuidaremos aqui apenas
da fase II, que formaliza o esboo feito na seo anterior.
Heurstica Simplex Dual (fase II) Recebe uma matriz D sobre MN,
elementos m e n de M e N respectivamente e partes P
0
e Q
0
de M m
e N n respectivamente tais que
D
[i, Q
0
]
= o , D
[i, .nQ
0
]
o ,
D
[1
0
, Q
0
]
uma matriz de bijeo e D
[Ai1
0
, .n]
= O ;
se convergir, devolve matrizes F e G tais que FG = I, G
[ , i]
= I
[ , i]
e a matriz GD dual-simples (solvel ou ilimitada) com relao ao
par m, n.
Feoloff ap. A Simplex Dual 165
Cada iterao comea com uma parte Q de N n, uma parte P de Mm e
matrizes F, G e E. A primeira iterao comea com Q = Q
0
, P = P
0
, F = G =
I e com E = D. Cada iterao consiste no seguinte, com f = E
[i, ]
:
CASO 0: E
[Ai1, n]
,= o .
Devolva F e G e pare (E dual-simples ilimitada).
CASO 1: E
[Ai1, n]
= o e E
[j, n]
< 0 para algum p em P .
Seja K

o conjunto de todos os k em N n para os quais E


[j, I]
< 0.
CASO 1A: K

vazio .
Devolva F e G e pare (E dual-simples ilimitada).
CASO 1B: K

no vazio .
Escolha k em K

de modo que f
[I]
/E
[j, I]
seja mximo.
Seja F

, G

, E

o resultado da pivotao de F, G, E em torno de p, k.


Seja q um elemento de Q tal que E
[j, q]
= 1.
Comece nova iterao com Qq + k, F

, G

e E

nos papis de Q, F, G e E.
CASO 2: E
[Ai1, n]
= o e E
[1, n]
o .
Devolva F e G e pare (E dual-simples solvel).
A operao de pivotao denida exatamente como no Simplex Primal.
O comportamento da heurstica descrita pelos seguintes
Invariantes No incio de cada iterao,
(i0) f
[Q]
= o e f
[.nQ]
o ,
(i1) E
[1, Q]
uma matriz de bijeo e E
[Ai1, .n]
= O ,
(i2) FG = I e GD = E ,
onde f o vetor E
[i, ]
. )
As demonstraes dos invariantes so anlogas s correspondentes demons-
trao no Simplex Primal. A cada ocorrncia do caso 1B temos
f

[n]
= f
[n]

f
[I]
E
[j, I]
E
[j, n]
f
[n]
,
sendo f

= E

[i, ]
, pois E
[j, n]
e E
[j, I]
so negativos e f
[I]
0. Portanto, numa )

seqncia de ocorrncias do caso 1B, a correspondente seqncia de valores de


f
[)]
monotnica. Se for estritamente monotnica, a seqncia ser nita, pois
os valores correspondentes da varivel Q sero todos distintos. Infelizmente, a
monotonia pode no ser estrita e a heurstica pode no convergir.
Feoloff 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
1 45 0 0 185 35 65 0 1 45 0 6
0 15 0 0 35 25 15 1 0 15 0 5
0 25 1 0 45 15 25 0 0 25 1 4
0 65 0 1 435 35 95 0 0 65 0 30
53 43 0 0 6 1 2 0 53 43 0 10
23 13 0 0 3 0 1 1 23 13 0 1
13 23 1 0 2 0 0 0 13 23 1 2
1 2 0 1 5 0 3 0 1 2 0 36
Figura A.5: Exemplo de aplicao da heurstica Simplex Dual. A gura registra os
valores de G e E no incio de sucessivas iteraes. No incio da primeira iterao, os
elementos de Q so 5, 6, 7 e os elementos de P so 1, 2, 3. A ltima matriz E dual-
simples solvel com relao a 4, 8.
A.4 Algoritmo Simplex Dual
Para transformar a heurstica Simplex Dual num algoritmo basta usar uma ver-
so apropriada da regra lexicogrca ou da regra de Bland (veja captulo 5) a
que recorremos no Simplex Primal.
Como no caso do Simplex Primal, podemos reformular a notao fazendo
A = D
[Ai, .n]
, c = D
[i, .n]
e b = D
[Ai, n]
. Diremos que o terno A, c, b
um sistema dual. O sistema simples se a correspondente matriz D for dual- sistema
dual
simples. Nessa notao, o algoritmo poderia ser formulado assim:
Recebe um sistema dual A, c, b e devolve matrizes F e G e um vetor g
tais que FG = I e o sistema dual GA, c + gA, Gb simples.
A.5 Problema cannico dual
De acordo com a seo 8.1, o problema cannico dual CD(A, c, b) consiste no
seguinte: dado um sistema dual A, c, b sobre M N, encontrar um vetor y em
Y (A, c) que maximize yb. Como de hbito, Y (A, c) o conjunto de todos os
vetores y para os quais yA c.
Sistemas duais simples. O problema cannico dual CD(A, c, b) pode ser
resolvido por mera inspeo quando o sistema dual A, c, b simples. Suponha
inicialmente que o sistema dual A, c, b simples solvel e tem bases P e Q.
O vetor y = o est em Y (A, c) pois yA = o c. Por outro lado, yb mximo
Feoloff ap. A Simplex Dual 167
pois y

b 0 para todo y

em Y (A, c). De fato,


y

b = y

[1]
b
[1]
0
pois b
[A1]
= o, b
[1]
o e y

[1]
0, uma vez que y

[1]
A
[1, Q]
= y

A
[ , Q]

c
[Q]
= o. Conclumos assim que o vetor nulo soluo do problema CD(A, c, b).
Suponha agora que A, c, b simples invivel com bases P e Q e coluna de
inviabilidade k. Ento Y (A, c) vazio pelo seguinte motivo. Suponha que y
est em Y (A, c). Ento y
[1]
A
[1, I]
= (yA)
[I]
c
[I]
< 0, donde
y
[j]
> 0
para algum p em P. Se q o elemento de Q para o qual A
[j, q]
= 1, temos
y
[j]
A
[j, q]
= y
[j]
> 0. Isto contradiz nossa hiptese de que yA c. Portanto,
CD(A, c, b) invivel.
Suponha, nalmente, que A, c, b simples ilimitado com linha de ilimita-
o h. Suponha A
[I, ]
o e b
[I]
positivo (o outro caso anlogo). Tome
y

[I]
= 1 e y

[AI]
nulo. Ento
y

A = y

[I]
A
[I, ]
o c e y

b > 0.
Para qualquer positivo, y

est em Y (A, c) e y

b tanto maior quanto maior


for . Portanto, CD(A, c, b) ilimitado.
Sistemas duais arbitrrios. Suponha que A, c, b no simples. Submeta
A, c, b ao algoritmo Simplex Dual, que devolver matrizes F e G e um vetor g
tais que FG = I e o sistema dual GA, c + gA, Gb simples. Considere a funo
que leva qualquer vetor y no vetor
(y + g) F .
Esta funo uma bijeo de Y (A, c) em Y (GA, c +gA). A inversa dessa bijeo
leva qualquer elemento z de Y (GA, c + gA) no elemento
zGg
de Y (A, c). A existncia da bijeo mostra que Y (A, c) vazio se e s se
Y (GA, c + gA) vazio. Portanto, CD(A, c, b) invivel se e s se CD(GA, c +
gA, Gb) invivel.
Considere agora os valores das funes objetivo nos dois problemas. Ovalor
de um elemento y de Y (A, c) no problema CD(A, c, b) yb, enquanto o corres-
pondente valor de (y + g)F no problema CD(GA, c + gA, Gb)
((y + g)F)(Gb) = yb + gb .
Portanto, os valores de vetores correspondentes nos dois problemas diferempor
gb, que constante. Segue da que (1) o primeiro problema ilimitado se e s se
o segundo ilimitado e (2) o primeiro problema temsoluo se e s se o segundo
tem soluo. Mais especicamente, se y soluo do primeiro problema ento
(y + g)F soluo do segundo; e se z soluo do segundo problema ento
zGg soluo do primeiro.
Feoloff ap. A Simplex Dual 168
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 FG = I, G
[ , i]
= I
[ , i]
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 lexicogrca. Es-
creva e analise o algoritmo Simplex Dual com regra de Bland.
Apndice B
Anlise de sensibilidade
Como a soluo de um problema cannico afetada por pequenas variaes da
funo objetivo? Pequenas variaes de c no afetam a soluo do problema
CP(A, b, c). Analogamente, pequenas variaes de b no afetam a soluo do
problema CD(A, c, b).
A primeira seo deste apndice trata dessas questes no caso em que ape-
nas umdos componentes de c ou b varia. Asegunda seo procura descrever, de
maneira mais global e abstrata, a natureza da dependncia entre o valor timo
dos problemas e os parmetros b e c. Este apndice s depende dos captulos 4,
6, 7 e 8.
B.1 Variao de um s componente
Seja A, b, c um sistema sobre M N e suponha que existem matrizes F e G e
um vetor y tais que FG = I e o sistema GA, Gb, c yA simples solvel e tem
bases P e Q. Portanto,
(GA)
[1, Q]
de bijeo , (Gb)
[1]
o,
(GA)
[A1, .Q]
= O, (GA)
[A1, Q]
= O, (Gb)
[A1]
= o,
(c yA)
[.Q]
o, (c yA)
[Q]
= o.
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, G

b, 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
Feoloff ap. B Anlise de sensibilidade 170
Variao de um componente de b
Suponha que

b difere de b em apenas um componente:

b
[i]
= b
[i]
+ para
algum m em M e

b
[i]
= b
[i]
para todo i distinto de m.
Fato Se G
[A1, i]
= o e respeita as restries a seguir ento o sistema
GA, G

b, c yA simples solvel e tem base de colunas Q. As restries


so
G
[j, ]
b
G
[j, i]

G
[j, ]
b
G
[j, i]
,
onde a desigualdade esquerda se aplica a todo p em P tal que G
[j, i]

positivo e a desigualdade direita se aplica a todo p em P tal que G
[j, i]
negativo.
DEMONSTRAO: bvio que G

b = Gb+G
[ , i]
. Como G
[A1, i]
nulo,
temos (G

b)
[A1]
= (Gb)
[A1]
= o. Como satisfaz as desigualdades, temos
G
[j, i]
G
[j, ]
b
para todo p em P, donde (G

b)
[1]
o. Portanto, o sistema GA, G

b, c yA
simples solvel e tem base de colunas Q.
Eis algumas observaes bvias. 1. O lado esquerdo das restries sobre
pode ser vazio; o lado direito tambm pode ser vazio. 2. Nas restries sobre ,
a expresso esquerda tem valor no-positivo e a expresso direita tem valor
no-negativo. As restries esto certamente satisfeitas quando = 0. 3. A con-
dio G
[A1, i]
= o signica, emparticular, que m deve estar em P. De fato, se
G foi gerada pelo algoritmo Simplex ento G
[A1, i]
= I
[A1, i]
,= o quando
m est em M P.
Respeitadas as condies acima, bvio que y soluo do novo problema
CD(A, c,

b). O valor timo do problema, y

b, varia linearmente com :


y

b = yb + y
[i]
.
Quanto ao problema CP(A,

b, c), este ter por soluo o vetor bsico, digamos


x, do sistema GA, G

b, c yA. claro que c x = y

b.
Variao de c fora da base
Suponha que c difere de c em apenas um elemento de N Q, ou seja, suponha
que c
[n]
= c
[n]
+ para algum n em N Q e c
[)]
= c
[)]
para j distinto de n.
Fato Se (yAc)
[n]
ento o sistema GA, Gb, cyA simples solvel
com base de colunas Q.
Feoloff ap. B Anlise de sensibilidade 171
DEMONSTRAO: Como c
[Q]
= c
[Q]
, temos (yA)
[Q]
= c
[Q]
. Ademais,
(yA)
[)]
c
[)]
para todo j distinto de n. Finalmente, (yA)
[n]
c
[n]
+ = c
[n]
.
Logo, o sistema GA, Gb, c yA simples solvel e tem base de colunas Q.
Respeitada a restrio sobre , bvio que x soluo do novo problema
CP(A, b, c) e que cx = cx. Quanto ao problema dual, claro que y soluo de
CD(A, c, b) e que yb = cx.
Variao de c na base
Suponha que c s difere de c em um elemento de Q. Mais especicamente,
suponha que c
[n]
= c
[n]
+ para algum n em Q e c
[)]
= c
[)]
para todo j distinto i
de n. Seja m o nico elemento de P tal que (GA)
[i, n]
= 1. i
Fato Se respeita as restries a seguir ento existe um vetor y tal que
o sistema GA, Gb, c yA simples solvel com base de colunas Q. As
restries so
(c yA)
[I]
(GA)
[i, I]

(c yA)
[I]
(GA)
[i, I]
,
onde a desigualdade esquerda se aplica a todo k em N Q tal que
(GA)
[i, I]
negativo e a desigualdade direita se aplica a todo k em
N Q tal que (GA)
[i, I]
positivo.
DEMONSTRAO: Adote a abreviatura E = GA. Seja y o vetor y +G
[i, ]
.
claro que
yA = yA + E
[v, ]
. (B.a)
Se restringirmos (B.a) a Q teremos ( yA)
[Q]
= (yA)
[Q]
+E
[i, Q]
= c
[Q]
+I
[n, Q]
.
Logo,
( yA)
[Q]
= c
[Q]
. (B.b)
Se restringirmos (B.a) a um elemento k de N Q teremos
( yA)
[I]
= (yA)
[I]
+ E
[i, I]
.
Se satisfaz as desigualdade expostas no enunciado ento E
[i, I]
c
[I]

(yA)
[I]
e portanto ( yA)
[I]
c
[I]
. Como c
[.Q]
= c
[.Q]
, temos
( yA)
[.Q]
c
[.Q]
.
Segue da e de (B.b) que o sistema GA, Gb, c yA simples e tem base de colu-
nas Q.
bvio que o lado esquerdo das restries sobre pode ser vazio; o lado
direito tambmpode ser vazio. claro tambmque as restries esto satisfeitas
quando = 0.
Feoloff ap. B Anlise de sensibilidade 172
Satisfeitas as restries sobre , o vetor bsico x do sistema GA, Gb, c yA
tambm vetor bsico do sistema GA, Gb, c yA. Ademais,
cx = cx + x
[n]
,
donde cx varia linearmente com . Quanto ao problema dual, claro que y
soluo de CD(A, c, b) e que yb = cx.
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:
4x
1
+ 9x
2
+ 7x
3
+ 10x
4
600,
1x
1
+ 1x
2
+ 3x
3
+ 40x
4
400,
onde x
i
o nmero de unidades do modelo i. Queremos planejar a produo
de modo a maximizar o lucro total, que dado por 12x
1
+ 20x
2
+ 18x
3
+ 40x
4
.
Nosso problema equivale ao problema cannico primal CP(A, b, c) com A,
b e c descritos na gura B.1. Seja G a matriz e y o vetor descritos na gura B.2.
4 9 7 10 1 0 600
1 1 3 40 0 1 400
12 20 18 40 0 0
Figura B.1: Sistema A, b, c.
4/15 1/15
1/150 4/150
44/15 4/15
Figura B.2: Matriz G e vetor y.
1 35/15 25/15 0 4/15 1/15 400/3
0 5/150 5/150 1 1/150 4/150 20/3
0 20/3 10/3 0 44/15 4/15
Figura B.3: Sistema GA, Gb, c yA.
Feoloff ap. B Anlise de sensibilidade 173
4 9 7 10 1 0 + 600
1 1 3 40 0 1 400
12 20 18 40 0 0
Figura B.4: Sistema A,

b, c.
1 35/15 25/15 0 4/15 1/15 4/15 + 400/3
0 5/150 5/150 1 1/150 4/150 n/150 + 20/3
0 20/3 10/3 0 44/15 4/15
Figura B.5: Sistema GA, G

b, c yA.
O sistema GA, Gb, c yA (gura 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:
x
1
=
1
3
400, x
2
= x
3
= 0, x
4
=
1
3
20, x
5
= x
6
= 0. (B.c)
Com este plano, teremos cx =
1
3
5600.
Suponha agora que a disponibilidade de mo de obra no primeiro estgio
alterada para 600 + . Nosso problema passa a ser denido pelo sistema A,

b, c
descrito na gura B.4.
No difcil vericar que se 500 1000 ento o sistema GA, G

b, cyA
(gura B.5) simples solvel e a base continua composta pelas colunas 1 e 4.
O plano de produo timo continua limitado aos modelos 1 e 4:
x
1
=
1
3
400 +
1
15
4 , x
2
= x
3
= 0,
x
4
=
1
3
20
1
150
, x
5
= x
6
= 0.
Com este plano de produo teremos c x =
1
3
5600
1
15
44 .
Suponha a seguir que b permanece constante mas c substitudo por um
vetor c. Digamos que c
2
= c
2
+ e c coincide com c emtodos os componentes.
fcil vericar que se
1
3
20 ento o sistema GA, Gb, cyA simples solvel.
Oplano de produo x descrito em(B.c) continua timo e e cx continua valendo

1
3
5600.
Suponha, nalmente, que c
1
= c
1
+ e c coincide com c em todos os demais
componentes (gura B.6). Seja y o vetor especicado na gura B.7. claro que
o sistema GA, Gb, c yA (gura B.8) simples solvel desde que 4 2.
O vetor x descrito em (B.c) continua sendo um plano de produo timo e cx =

1
3
5600 +
1
3
400 .
Feoloff 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
Figura B.6: Sistema A, b, c.
4/15 1/15
1/150 4/150
4/15 44/15 /15 4/15
Figura B.7: Matriz G e vetor y.
1 35/15 25/15 0 4/15 1/15 400/3
0 5/150 5/150 1 1/150 4/150 20/3
0 7/3 + 20/3 5/3 + 10/3 0 4/15 + 44/15 /15 + 4/15
Figura B.8: Sistema GA, Gb, c yA.
B.3 Valor timo como funo de b e c
Considere os problemas cannicos CP(A, b, c) e CD(A, c, b). Se o primeiro pro-
blema tem soluo ento o seu valor timo o nmero min
x
cx para x variando valor
timo
em X(A, b). Analogamente, se o segundo problema tem soluo ento o seu
valor timo o nmero max
y
yb com y variando em Y (A, c). De acordo com o
teorema da dualidade 8.5, se um dos problemas tem soluo ento ambos tm
soluo e seus valores timos coincidem. O valor timo comum ser denotado
por
(b, c) .
Diremos que esse o valor timo do sistema A, b, c. Como varia (b, c) em
funo de b e de c, supondo A xa?
preciso comear por esclarecer o domnio da funo . Seja B o conjunto 1
de todos os vetores b para os quais X(A, b) no vazio, isto , o conjunto de
todos os vetores b para os quais existe x o tal que Ax = b. (H quem diga que
B o cone de A.)
Analogamente, seja C o conjunto de todos os vetores c para os quais Y (A, c) C
no vazio, isto , o conjunto de todos os vetores c para os quais existe y tal que
yA c. De acordo com o teorema da dualidade 8.5, os problemas CP(A, b, c) e
CD(A, c, b) tmsoluo se e s se b est em B e c est em C. Portanto, o domnio
de o produto cartesiano
B C .
Feoloff ap. B Anlise de sensibilidade 175
fcil vericar que o conjunto B convexo, ou seja, que para todo par b
1
, b
2
conjunto
convexo
de elementos de B e todo par
1
,
2
de nmeros no-negativos, se
1
+
2
= 1
ento
1
b
1
+
2
b
2
est em B. Eis a demonstrao desse fato. Suponha que x
1
um vetor em X(A, b
1
) e x
2
um vetor em X(A, b
2
). Para qualquer par
1
,
2
com
as propriedades acima, seja b

o vetor
1
b
1
+
2
b
2
e x

o vetor
1
x
1
+
2
x
2
. Ento
x

o e Ax

=
1
Ax
1
+
2
Ax
2
=
1
b
1
+
2
b
2
= b

, donde x

est em X(A, b

).
A existncia de um tal x

mostra que b

est em B.
igualmente fcil vericar que o conjunto C convexo, ou seja, que para
todo par c
1
, c
2
de elementos de C e todo par
1
,
2
de nmeros no-negativos,
se
1
+
2
= 1 ento
1
c
1
+
2
c
2
est em C.
Mostraremos a seguir que, quando o segundo parmetro est xo, a funo
convexa, contnua e linear por trechos.
Fato B.1 ( convexa no primeiro parmetro) Seja c um elemento
de C. Para todo par b
1
, b
2
de elementos de B e todo par
1
,
2
de nme-
ros no-negativos tais que
1
+
2
= 1 tem-se
(
1
b
1
+
2
b
2
, c)
1
(b
1
, c) +
2
(b
2
, c) .
DEMONSTRAO: Seja x
1
um vetor em X(A, b
1
) tal que (b
1
, c) = cx
1
. Seja
x
2
um vetor em X(A, b
2
) tal que (b
2
, c) = cx
2
. Para todo par
1
,
2
com as
propriedades denidas no enunciado, seja b

o vetor
1
b
1
+
2
b
2
e x

o vetor

1
x
1
+
2
x
2
. Ento x

est em X(A, b

) e b

est em B (como mostramos acima)


e portanto (b

, c) cx

=
1
cx
1
+
2
cx
2
=
1
(b
1
, c) +
2
(b
2
, c).
Por denio, (b, c) = max
y
yb para y variando em Y (A, c). Mas possvel
dizer mais: existe uma parte nita Y

de Y (A, c) tal que (b, c) = max
y
yb para
y variando em Y

.
Fato B.2 ( linear por trechos e contnua no primeiro parmetro) Para
todo c em C existem vetores y
1
, y
2
, . . , y
k
sobre M tais que
(b, c) = max y
1
b, y
2
b, . . , y
k
b
para todo b em B.
DEMONSTRAO: Seja c umelemento xo de C. Seja Q conjunto das partes
Q de N dotadas da seguinte propriedade: existem uma matriz inversvel G e
um vetor y tais que o sistema GA, Gb, c yA simples solvel com base de
colunas Q para algum b em B. bvio que Q nito.
Para cada Q em Q, escolha um par G
Q
, y
Q
de modo que, para algum b,
o sistema G
Q
A, G
Q
b, c y
Q
A seja simples solvel com base de colunas Q. Em
particular, y
Q
est em Y (A, c) para todo Q emQ. Oconjunto de todos os vetores
da forma y
Q
com Q em Q o que estamos procurando, como mostraremos a
seguir.
Feoloff ap. B Anlise de sensibilidade 176
Seja b um vetor em B e seja x
b
uma soluo do problema CP(A, b, c). claro
que (b, c) = cx
b
. Vamos mostrar que
cx
b
= max
Q
y
Q
b ,
onde o mximo tomado sobre todo Q em Q. Para todo Q em Q, y
Q
est em
Y (A, c) e portanto o lema da dualidade 8.1 garante que cx
b
y
Q
b. Resta mostrar
que cx
b
= y
Q
b para algum Q em Q.
Como c est em C, e portanto Y (A, c) no vazio, a anlise do algoritmo
Simplex mostra que existe uma parte Q de N, uma matriz inversvel G e um
vetor y tais que o sistema GA, Gb, c yA simples solvel com base de colu-
nas Q. Logo, Q est em Q. Seja x o vetor bsico do sistema simples solvel
GA, Gb, c yA, isto , x
[.Q]
nulo e (GA)x = Gb. Observe que cx = yb e que
cx = cx
b
. Mas x tambm o vetor bsico do sistema G
Q
A, G
Q
b, c yA, pois
x
[.Q]
= o e G
Q
Ax = G
Q
b .
Segue que (c y
Q
A)x = 0, donde cx = y
Q
b. Portanto cx
b
= cx = y
Q
b, como
queramos demonstrar.
Portanto, para descrever (b, c) completamente como funo de b basta cal-
cular os vetores y
1
, . . , y
k
. Infelizmente, isto no prtico pois k cresce exponen-
cialmente com [N[.
Demonstra-se analogamente que, como funo do segundo parmetro,
cncava, contnua e linear por trechos.
Fato B.3 ( cncava no segundo parmetro) Seja b um elemento
de B. Para todo par c
1
, c
2
de elementos de C e todo par
1
,
2
de nme-
ros no-negativos tais que
1
+
2
= 1 tem-se
(b,
1
c
1
+
2
c
2
)
1
(b, c
1
) +
2
(b, c
2
) .
Fato B.4 ( linear por trechos e contnua no segundo parmetro) Para
todo b em B existem vetores x
1
, x
2
, . . , x
k
sobre N tais que
(b, c) = min cx
1
, cx
2
, . . , cx
k

para todo c em C.
B.4 Concluso
Para qualquer matriz xa 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.
Feoloff ap. B Anlise de sensibilidade 177
Para b xo em B, a funo que a cada c em C associa o valor timo (b, c)
do sistema A, b, c contnua, linear por trechos, e cncava. Para c xo em C,
a funo que a cada b em B associa o valor timo (b, c) do sistema A, b, c
contnua, linear por trechos, e convexa.
A soluo x do problema CP(A, b, c) no afetada por variaes suciente-
mente pequenas de c. Analogamente, a soluo y do problema CD(A, c, b) no
se altera se b sofre variaes sucientemente pequenas.
Apndice C
Poliedro cannico primal
Este apndice estuda algumas propriedades geomtricas do poliedro cannico
primal
X(A, b) .
Esse o conjunto de todos os vetores x o tais que Ax = b. Suporemos,
ao longo do apndice, que A uma matriz sobre M N e que b um vetor
sobre M.
C.1 Dependncia linear
Comecemos por examinar, em uma linguagem adequada ao nosso contexto, os
conceitos de dependncia e independncia linear.
Uma matriz J sobre M K de injeo se existe uma parte P de M tal matriz
de injeo
que J
[1, 1]
uma matriz de bijeo e J
[A1, 1]
= O. Por exemplo, se E uma
matriz escalonada com base de colunas Q ento E
[ , Q]
uma matriz de injeo.
Proposio C.1 Para qualquer parte K de N, vale uma e apenas uma
das seguintes alternativas:
(1) existe uma matriz G tal que GA
[ , 1]
de injeo;
(2) existe um vetor u tal que Au = o, u
[1]
,= o e u
[.1]
= o.
DEMONSTRAO: De acordo com o algoritmo de Gauss-Jordan aplicado
matriz A
[ , 1]
, existem matrizes F e G tais que FG = I e GA
[ , 1]
escalonada.
Digamos que a base de colunas da matriz escalonada Q. claro que GA
[ , Q]
uma matriz de injeo. Se Q = K ento vale a alternativa (1). Suponha agora
que Q K e seja k um elemento de K Q. evidente que existe um vetor u
sobre N tal que
u
[I]
= 1, u
[.QI]
= o e GAu = o.
claro que u
[.1]
= o, u
[1]
,= o e Au = FGAu = o. Portanto, vale a alterna-
tiva (2).
178
Feoloff ap. C Poliedro cannico primal 179
Resta mostrar que as duas alternativas no podemser simultaneamente ver-
dadeiras. Suponha pois que vale (2). Como u
[.1]
nulo,
GA
[ , 1]
u
[1]
= GAu = o,
uma vez que Au = o. Mas u
[1]
no nulo, e portanto GA
[ , 1]
no pode ser
uma matriz de injeo. Portanto, a alternativa (1) no vale.
Na linguagem da lgebra linear, a alternativa (1) arma que o conjunto de
colunas da matriz A
[ , 1]
linearmente independente enquanto (2) arma que
o conjunto de colunas da matriz A
[ , 1]
linearmente dependente. No presente
contexto, convm atribuir as propriedades de dependncia e independncia li-
near aos subconjuntos de N. Diremos, pois, que K linearmente independente
em A se vale a alternativa (1) e linearmente dependente em A se vale a alter-
nativa (2). A proposio C.1 mostra que as duas propriedades so complemen-
tares.
Usaremos as abreviaturas li e ld para as expresses linearmente indepen- li
ld
dente e linearmente dependente. bvio que todo subconjunto de um con-
junto li tambm li e que todo superconjunto de um conjunto ld tambm ld.
A demonstrao da proposio C.1 pode ser facilmente convertida em um
algoritmo que, ao receber A e K, decide se K li ou ld. No primeiro caso, o algoritmo
algoritmo devolve uma matriz G para atestar que K li; no segundo caso, o
algoritmo devolve um vetor u para atestar que K ld.
C.2 Combinaes convexas
Suponha que x
1
, . . , x
k
so vetores sobre N. Uma combinao am desses ve-
tores qualquer combinao linear
1
x
1
+ +
k
x
k
tal que

1
+ +
k
= 1.
(Em termos geomtricos, um vetor combinao am de x
1
e x
2
se estiver na
reta que passa pelos pontos x
1
e x
2
.) Uma combinao convexa dos vetores
x
1
, . . , x
k
qualquer combinao am
1
x
1
+ +
k
x
k
tal que

i
0
para todo i. (Em termos geomtricos, um vetor combinao convexa de x
1
e x
2
se estiver no segmento de reta que une os pontos x
1
e x
2
.) O poliedro
cannico primal um conjunto convexo no seguinte sentido:
Proposio C.2 Para qualquer parte nita Z de X(A, b), toda combina-
o convexa de elementos de Z est em X(A, b).
DEMONSTRAO: Digamos que os elementos de Z so z
1
, . . , z
k
e considere
uma combinao convexa

i
z
i
. Como Az
i
= b para todo i,
A(

i
z
i
) =

i
Az
i
=

i
b = (

i
) b = b ,
Feoloff ap. C Poliedro cannico primal 180
uma vez que

i
= 1. Por outro lado,

i
z
i
0, uma vez que
i
0 e z
i
o
para todo i. Portanto,

i
z
i
est em X(A, b).
A envoltria convexa de um conjunto nito Z de vetores o conjunto de
todas as combinaes convexas de elementos de Z. A envoltria convexa de Z
ser denotada por [Z]. A proposio C.2 mostra que [Z] X(A, b) para toda [Z]
parte nita Z de X(A, b). Em certas circunstncias, X(A, b) = [Z] para um certo
conjunto nito Z. A caracterizao de um tal Z o principal objetivo deste
apndice.
C.3 Vrtices
A folga, ou suporte, de um elemento x de X(A, b) o conjunto de todos os folga
suporte ndices j em N para os quais x
[)]
> 0. A folga de x ser denotada por
S(x) .
Um vetor x em X(A, b) bsico se sua folga S(x) minimal, ou seja, se no vetor bsico
existe x

em X(A, b) tal que S(x

) 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
Figura C.1: O topo da gura dene um sistema A, b. Os vetores x, x

e x

de-
nidos nesta ordem pelas trs ltimas linhas da gura esto todos em X(A, b).
A folga de x

no minimal porque S(x

) S(x). A folga de x minimal


porque qualquer vetor x

em X(A, b) tal que S(x

) S(x) necessariamente
igual a x. A folga de x

menor que S(x), embora no seja parte de S(x).


Nossa denio de vetores bsicos tem um carter intrnseco: ela no de-
pende do particular sistema A, b usado para denir o poliedro X(A, b). J a
seguinte observao caracteriza os vetores bsicos em termos de propriedades
da matriz A.
Proposio C.3 Um vetor x em X(A, b) bsico se e s se S(x) li
em A.
Feoloff ap. C Poliedro cannico primal 181
DEMONSTRAO: Suponha que x no bsico. Ento existe um vetor x

em X(A, b) tal que S(x

) S(x). Seja u o vetor x x

e observe que Au =
Ax Ax

= b b = o. Observe tambm que


u
[o]
,= o e u
[.o]
= 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
[o]
,= o e u
[.o]
= o,
onde S = S(x). Vamos mostrar que S no minimal. Ajuste a notao, trocando
o sinal de u se necessrio, de modo que u
[)]
> 0 para algum j em S. Seja o
maior nmero tal que
x
[)]
/u
[)]
(C.a)
para todo j em S tal que u
[)]
> 0. Observe agora que x u o. De fato, se
u
[)]
> 0 ento x
[)]
u
[)]
0 em virtude da maneira como foi denido e se
u
[)]
0 ento x
[)]
u
[)]
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
[)]
= 0 sempre que x
[)]
= 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.
Esta demonstrao, juntamente com a demonstrao da proposio C.1, su-
gere um algoritmo que, ao receber um elemento x de X(A, b), decide que x algoritmo
um vrtice ou devolve um vetor x

em X(A, b) tal que S(x

) S(x).
Corolrio C.4 Para quaisquer vrtices z e z

de X(A, b), se S(z) = S(z

)
ento z = z

.
DEMONSTRAO: Seja u o vetor z z

. claro que Au = Az Az

= bb =
o. claro tambm que u
[.o]
= o, onde S o valor comum de S(z) e S(z

).
Como S li, concluimos que u
[o]
= o. Portanto u = o e assim z = z

.
De acordo com o corolrio C.4, o nmero de vrtices de X(A, b) menor
que nmero de subconjuntos de N, ou seja, menor que 2
|N|
. Grosso modo, esta
delimitao a melhor possvel: existem poliedros com at

|N|
|N|/2

vrtices, e
esse nmero maior que 2
|N|/2
.
Feoloff ap. C Poliedro cannico primal 182
C.4 Solues do problema cannico primal
As solues do problema cannico primal so vrtices, como veremos a seguir.
Fato C.5 Se o problema CP(A, b, c) tem soluo ento alguma das solu-
es um vrtice de X(A, b).
DEMONSTRAO: Suponha que o problema CP(A, b, c) tem soluo. Ento,
de acordo com o algoritmo Simplex, existem matrizes F e G e um vetor y tais
que FG = I e o sistema GA, Gb, cyA simples. Digamos que Q uma base de
colunas do sistema simples. Ento GA
[ , Q]
uma matriz de injeo e portanto
Q li. Seja x o vetor bsico associado base Q. Ento S(x) Q e portanto S(x)
li. De acordo com a proposio C.3, x um vrtice.
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 lexicogrca 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).
Fato C.6 Se z um vrtice de X(A, b) ento existe um vetor c tal que z
a nica soluo do problema CP(A, b, c).
DEMONSTRAO: Adote a abreviatura S = S(z). Seja c o vetor denido
pelas equaes c
[o]
= o e c
[)]
= 1 para cada j em N S. evidente que
cx 0 para todo x em X(A, b). Mas cz = 0, uma vez que z
[.o]
= o. Logo, z
minimiza cz e portanto soluo do problema CP(A, b, c).
Resta mostrar que z a nica soluo do problema. Suponha pois que cx =
cz para algum x em X(A, b). Ento cx = 0 e portanto x
[.o]
= o, donde
S(x) S(z). Como S(z) minimal, preciso ter S(x) = S(z), donde x tambm
vrtice. Agora o corolrio C.4 permite concluir que x = z.
C.5 Poliedros limitados
O poliedro X(A, b) limitado se existe um nmero tal que x
[)]
para
todo x em X(A, b) e todo j. O conceito geometricamente intuitivo, mas um
tanto abstrato, uma vez que no est claro, de imediato, como vericar algorit-
micamente se um dado poliedro ou no limitado. Tambm no est claro, de
imediato, como certicar o carter limitado ou ilimitado de um poliedro. Ainda
assim til restringir a ateno aos poliedros limitados pois eles tm uma estru-
tura muito simples.
Feoloff ap. C Poliedro cannico primal 183
Teorema C.7 (da decomposio) Se X(A, b) limitado ento todo ele-
mento de X(A, b) combinao convexa de vrtices.
DEMONSTRAO: Seja x um elemento de X(A, b). Se x um vrtice ento
a proposio trivialmente verdadeira. Suponha agora que x no um vrtice
e adote como hiptese de induo a validade da proposio para todo elemento
x

de X(A, b) tal que S(x

) S(x).
De acordo com a proposio C.3, S(x) ld em A. Portanto, existe um vetor
u tal que
Au = o, u
[o]
,= o e u
[.o]
= o,
onde S uma abreviatura para S(x). preciso investigar agora para que valores
de o vetor xu est em X(A, b). claro que A(xu) = 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
[)]
,= 0 para algum j, o valor de (x
u)
[)]
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.
Apartir daqui os clculos so iguais aos da demonstrao da proposio C.3.
Seja o maior nmero que satisfaz a restrio
x
[I]
/u
[I]
para todo k em S tal que u
[I]
> 0. No difcil vericar 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

tal
que x +

u est em X(A, b) e S(x +

u) S(x). A partir da, nossa hiptese


de induo garante que x +

u uma combinao convexa de vrtices.


Como x combinao convexa de x u e x +

u (de fato, x =

(x
u) +

+

(x +

u)), e esses dois vetores so combinaes convexas de vrtices,


tambm x combinao convexa de vrtices.
Esta demonstrao pode ser facilmente convertida num algoritmo que, ao
receber um sistema A, b e um elemento x de X(A, b), constata que X(A, b) no
limitado ou devolve vrtices z
1
, . . , z
p
e nmeros no-negativos
1
, . . ,
p
tais
que

i
= 1 e x =

i
z
i
.
Oteorema C.7 temo seguinte corolrio imediato: Se X(A, b) limitado ento
X(A, b) = [Z], onde Z o conjunto dos vrtices do poliedro. Isso mostra que,
em termos geomtricos, os vrtices esto na casca ou fronteira de X(A, b).
Feoloff ap. C Poliedro cannico primal 184
Exerccios
C.1 Suponha que W um conjunto nito 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).
C.3 Mostre que o nmero de vrtices de X(A, b) no passa de

|N|
|Q|

, onde Q
qualquer conjunto li maximal (veja exerccio C.2) em A.
C.4 Suponha que um elemento x de X(A, b) combinao convexa de dois
elementos de X(A, b)x; mostre que x no umvrtice. Agora suponha
que um elemento x de X(A, b) no vrtice e mostre que x combinao
convexa de dois vetores em X(A, b) x.
C.5 Suponha que X(A, b) = [W], onde W um conjunto nito de vetores.
Mostre que X(A, b) limitado.
C.6 Suponha que o poliedro X(A, b) limitado e mostre que X(A, b) vazio
ou X(A, o) = o. Suponha que X(A, o) = o e mostre que X(A, b)
limitado.
C.7 Escreva um algoritmo que receba um sistema A, b e decida se o poliedro
X(A, b) ou no limitado.
C.8 Suponha que X(A, b) limitado. Mostre que, para qualquer vetor c, o
problema CP(A, b, c) invivel ou tem soluo.
C.9 Mostre que todo vetor em X(A, b) da forma x + r onde x uma combi-
nao convexa de vrtices e r um elemento de X(A, o).
C.10 Umelemento r de X(A, o)o umraio se seu suporte, S(r), minimal.
Uma combinao cnica de vetores x
1
, . . , x
k
qualquer combinao linear

1
x
1
+ +
k
x
k
tal que
i
0 para todo i. Mostre que todo elemento de
X(A, o) combinao cnica de raios.
Apndice D
Poliedro cannico dual
Este apndice estuda algumas propriedades geomtricas do poliedro cannico
dual
Y (A, c) .
Esse o conjunto de todos os vetores y tais que yA c. Suporemos, ao longo
do apndice, que A uma matriz sobre M N e que c um vetor sobre N.
D.1 Conjuntos geradores
A seguinte observao uma espcie de dual da proposio C.1.
Proposio D.1 Para qualquer parte K de N, vale uma e apenas uma
das seguintes alternativas:
(1) existem matrizes F e G tais que FG = I e GA uma matriz escalo-
nada cuja base de colunas parte de K;
(2) existe um vetor v tal que (vA)
[1]
= o mas (vA)
[.1]
,= o.
DEMONSTRAO: Seja B a matriz A
[ , 1]
. De acordo com algoritmo de
Gauss-Jordan, existem matrizes F e G tais que FG = I e GB escalonada.
Seja Q uma base de colunas de GB. Se a matriz GA escalonada ento vale a
alternativa (1). Suponha agora que GA no escalonada. Ento (GA)
[i, ]
,= o
para algum i em M P, onde P a base de linhas de GB. Seja v o vetor G
[i, ]
.
Ento
(vA)
[1]
= (GA)
[i, 1]
= (GB)
[i, ]
= o.
Mas (vA)
[.1]
,= o, uma vez que vA = (GA)
[i, ]
,= 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
Feoloff ap. D Poliedro cannico dual 186
Q K. Tome qualquer vetor v tal que (vA)
[1]
= o e seja w o vetor vF. Como
E
[A1, ]
= O, temos
w
[1]
E
[1, ]
= wE = vFGA = vA.
Em particular, w
[1]
E
[1, Q]
= (vA)
[Q]
. Mas (vA)
[Q]
= o uma vez que Q K.
Logo,
w
[1]
= o,
j que E
[1, Q]
uma matriz de bijeo. Segue da que vA = w
[1]
E
[1, ]
= o.
Portanto, a alternativa (2) no pode valer.
Na linguagem da lgebra linear, a alternativa (1) arma que cada coluna
de A
[ , .1]
uma combinao linear das colunas de A
[ , 1]
enquanto a alter-
nativa (2) arma que alguma coluna da matriz A
[ , .1]
linearmente inde-
pendente das colunas de A
[ , 1]
. Diremos que K um gerador de A se vale a gerador
alternativa (1). bvio que todo superconjunto de um gerador tambm gera-
dor.
A demonstrao da proposio D.1 pode ser facilmente convertida em um
algoritmo que, ao receber A e K, decide se K ou no umgerador. No primeiro algoritmo
caso, o algoritmo devolve umpar F, G de matrizes para atestar o carter gerador
de K; no segundo caso, o algoritmo devolve um vetor v para atestar que K no
um gerador.
D.2 Combinaes convexas
O poliedro cannico dual um conjunto convexo no seguinte sentido:
Proposio D.2 Para qualquer parte nita Z de Y (A, c), toda combina-
o convexa de elementos de Z est em Y (A, c).
DEMONSTRAO: Seja

i
z
i
uma combinao convexa dos elementos
de Z. Como z
i
A c e
i
0 para todo i,
(

i
z
i
)A =

i
z
i
A

i
c = (

i
) c = c ,
uma vez que

i
= 1. Portanto,

i
z
i
est em Y (A, c).
A proposio D.2 mostra que [Z] Y (A, c) para toda parte nita Z de
Y (A, c), onde [Z] a envoltria convexa de Z. Em certas circunstncias,
Y (A, c) = [Z] para um certo conjunto nito Z. A caracterizao de um tal Z
o principal objetivo deste apndice.
Feoloff ap. D Poliedro cannico dual 187
D.3 Vetores bsicos e faces minimais
A folga de um elemento y de Y (A, c) o conjunto de todos os ndices j em N folga
para os quais (yA)
[)]
< c
[)]
. A folga de y ser denotada por
S(y) .
Um vetor y em Y (A, c) bsico se S(y) minimal, ou seja, se no existe y

vetor
bsico
em Y (A, c) tal que S(y

) S(y). bvio que todo poliedro no-vazio Y (A, c)


tem pelo menos um vetor bsico. A seguinte proposio caracteriza os vetores
bsicos em termos de propriedades da matriz A.
Proposio D.3 Um vetor y em Y (A, c) bsico se e s se N S(y)
um gerador de A.
DEMONSTRAO: Seja y um vetor em Y (A, c) e suponha que y no bsico,
ou seja, que S(y) no minimal. Ento existe um vetor y

em Y (A, c) tal que


S

S, onde S

e S so abreviaturas para S(y

) e S(y) respectivamente. Vamos


mostrar que N S no um gerador de A. Seja v o vetor y y

e observe que
(vA)
[.o]
= (yA)
[.o]
(y

A)
[.o]
= c
[.o]
c
[.o]
= o.
Agora tome qualquer k em S S

e observe que
(vA)
[I]
= (yA)
[I]
(y

A)
[I]
,= 0,
uma vez que (yA)
[I]
< c
[I]
enquanto (y

A)
[I]
= c
[I]
. 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
(vA)
[.o]
= o mas (vA)
[o]
,= o.
Ajuste a notao, trocando v por v se necessrio, de modo que (vA)
[)]
> 0
para algum j em S. Seja o maior nmero tal que

(c yA)
[)]
(vA)
[)]
(D.a)
para todo j em S tal que (vA)
[)]
> 0. fcil vericar que yA+vA c. De fato,
se (vA)
[)]
> 0 ento (yA)
[)]
+(vA)
[)]
c
[)]
em virtude da maneira como foi
escolhido; e se (vA)
[)]
0 ento (yA)
[)]
+ (vA)
[)]
c
[)]
uma vez que 0.
Portanto, y + v est em Y (A, c). Por outro lado, como (vA)
[)]
= 0 sempre que
(yA)
[)]
= c
[)]
, 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.
Feoloff ap. D Poliedro cannico dual 188
Essa demonstrao, juntamente com a demonstrao da proposio D.1, su-
gere umalgoritmo que, ao receber umelemento y de Y (A, c), decide que y um algoritmo
vetor bsico ou devolve um vetor y

em Y (A, c) tal que S(y

) S(y).
Corolrio D.4 Para quaisquer vetores bsicos z e z

, se S(z) = S(z

)
ento zA = z

A.
DEMONSTRAO: Seja v o vetor z z

e seja S o valor comum de S(z) e


S(z

). claro que
(vA)
[.o]
= (zA)
[.o]
(z

A)
[.o]
= c
[.o]
c
[.o]
= o,
Como NS umgerador de A, a proposio D.1 garante que (vA)
[o]
= o Logo,
vA = o e portanto zA = z

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

, pertencem
mesma face minimal se e s se S(z) = S(z

). O corolrio D.4 mostra que z e


z

esto na mesma face minimal se e s se zA = z

A. Toda face minimal um


conjunto am, no seguinte sentido.
Proposio D.5 Toda combinao am de vetores de uma face minimal
pertence face minimal.
DEMONSTRAO: Digamos que os vetores bsicos z
1
, . . , z
k
pertencem a
uma face minimal Y

. Agora suponha que
1
, . . ,
k
so nmeros tais que

i
= 1. Como z
i
A = z
1
A para todo i temos tambm
(

i
z
i
)A =

i
(z
i
A) = (

i
)z
1
A = z
1
A.
Portanto,

i
z
i
um vetor bsico de Y (A, c) e pertence face minimal Y

.
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

A implica
em z = z

, e portanto todo vetor bsico um vrtice.


D.4 Solues do problema cannico dual
As solues do problema cannico dual so vetores bsicos, como veremos a
seguir.
Feoloff ap. D Poliedro cannico dual 189
Fato D.6 Se o problema CD(A, c, b) tem soluo ento alguma das solu-
es um vetor bsico de Y (A, c).
DEMONSTRAO: Suponha que o problema CD(A, c, b) temsoluo. Ento,
de acordo com o algoritmo Simplex, existem matrizes F e G e um vetor y tais
que FG = I e o sistema GA, Gb, cyA simples. Digamos que Q uma base de
colunas do sistema simples. claro que Q umgerador de A. Como (cyA)
[Q]
nulo, Q parte de N S(y), donde N S(y) um gerador de A. Assim, de
acordo com a proposio D.3, y um vetor bsico.
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).
DEMONSTRAO: Adote a abreviatura S = S(z). Seja A

a matriz A
[ , .o]
e seja b o vetor A

u, onde u o vetor 1s sobre N S (isto , u


[)]
= 1 para todo j
em N S). Seja c

o vetor c
[.o]
. evidente que yb = yA

u c

u para todo y
em Y (A, c). Mas zb = zA

u = c

u. Logo, z maximiza zb e portanto soluo do


problema CD(A, c, b).
Suponha agora y uma soluo do problema CD(A, c, b); vamos mostrar
y s bsico e pertence mesma face minimal que z. Como yb = c

u, temos
necessariamente yA

= c

e portanto S(y) S(z). Como S(z) minimal,


preciso ter S(y) = S(z), donde y um vetor bsico. Agora o corolrio D.4
permite concluir que yA = zA, garantindo assim que y est na mesma face
minimal que z.
D.5 Poliedros limitados
O poliedro cannico dual Y (A, c) limitado se existe um nmero tal que
[y
[i]
[ para todo y em Y (A, c) e todo i. O conceito um tanto abstrato,
uma vez que no est claro, de imediato, como vericar algoritmicamente se
um dado poliedro ou no limitado. Ainda assim til restringir a ateno aos
poliedros limitados pois eles tm uma estrutura muito simples.
Fato D.8 Se Y (A, c) limitado ento todos os seus vetores bsicos so
vrtices.
DEMONSTRAO: Suponha que uma face minimal contm dois vetores b-
sicos distintos, digamos z e z

. De acordo com a proposio D.5, o vetor


z +(1 )z

tambm est em Y (A, b), qualquer que seja . Seja i um ndice tal
que z
[i]
,= z

[i]
. Como
[(z + (1 )z

)
[i]
[ [(z
[i]
z

[i]
)[ [z

[i]
[ ,
Feoloff ap. D Poliedro cannico dual 190
vemos que o valor absoluto do componente i de z + (1 )z

tanto maior
quanto maior for o valor absoluto de . Mas isso incompatvel com o car-
ter limitado de Y (A, c). Concluimos assim que toda face minimal de Y (A, c)
unitria.
Teorema D.9 (da decomposio dual) Se Y (A, c) limitado ento todo
elemento de Y (A, c) combinao convexa de vrtices.
DEMONSTRAO: - Seja y um elemento de Y (A, b). Se y um vrtice ento
a proposio trivialmente verdadeira. Suponha agora que y no um vrtice
e adote como hiptese de induo a validade da proposio para todo elemento
y

de Y (A, c) tal que S(y

) S(y).
De acordo com a proposio D.3, S(y) no gerador de A. Portanto, existe
um vetor v tal que
(vA)
[.o]
= o e (vA)
[o]
,= o,
onde S = S(y). Suponha por um instante que vA o. Ento, para qualquer
nmero positivo teremos (y+v)A c, donde y+v estar em Y (A, c). Como
v
[i]
no nulo para algum i, o valor absoluto de (y + v)
[i]
ser tanto maior
quanto maior for , e isso inconsistente com o carter limitado de Y (A, c).
foroso concluir, portanto, que vA tem pelo menos um componente positivo.
A partir daqui os cculos so iguais aos que zemos na demosntrao da
proposio D.3. Seja o maior nmero que satisfaz a restrio

(c yA)
[)]
(vA)
[)]
para todo j em S tal que (vA)
[)]
> 0. Ento yA + vA c e portanto y + v
est em Y (A, c). Ademais, S(y + v) S. Nossa hiptese de induo garante
agora que y + v uma combinao convexa de vrtices.
Um raciocnio anlogo ao que acabamos de fazer permite concluir que vA
tem pelo menos um componente negativo e portanto existe um nmero

tal
que y

v est em Y (A, c) e S(y

v) S(y). A partir da, nossa hiptese de


induo garante que y

v uma combinao convexa de vrtices.


Como y combinao convexa de y + v e y

v, e esses dois vetores so


combinaes convexas de vrtices, tambm y combinao convexa de vrti-
ces.
Exerccios
D.1 Suponha que W um conjunto nito 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.
Feoloff ap. D Poliedro cannico dual 191
D.2 Um conjunto gerador K minimal se nenhum subconjunto prprio de K
gerador. Mostre que todos os conjuntos geradores minimais tma mesma
cardinalidade.
D.3 Mostre que todo conjunto gerador minimal tem a mesma cardinalidade
que qualquer conjunto li minimal (veja exerccio C.2).
D.4 Mostre que o nmero de faces minimais de Y (A, c) no passa de

|N|
|Q|

,
onde Q qualquer conjunto gerador minimal de A.
D.5 Suponha que um elemento y de Y (A, c) combinao convexa de dois
elementos, digamos y

e y

de Y (A, c) y. Suponha que y bsico.


Mostre que y

e y

tambm so bsicos e pertencem mesma face minimal


que y.
D.6 Suponha que Y (A, c) possui um vrtice, ou seja, uma face minimal unit-
ria. Mostre que todas as faces minimais so unitrias.
D.7 Suponha que Y (A, c) = [W], onde W um conjunto nito de vetores.
Mostre que Y (A, c) limitado.
D.8 Suponha que o poliedro Y (A, c) limitado e mostre que Y (A, c) vazio
ou Y (A, o) = o. Suponha que Y (A, o) = o e mostre que Y (A, c)
limitado.
D.9 Escreva um algoritmo que receba um sistema A, c e decida se o poliedro
Y (A, c) ou no limitado.
D.10 Suponha que Y (A, c) limitado. Mostre que, para qualquer vetor b, o
problema CD(A, c, b) invivel ou tem soluo.
D.11 Mostre que todo vetor em Y (A, c) da forma y + r onde x uma combi-
nao convexa de vetores bsicos e r um elemento de Y (A, o).
Apndice E
Exerccios resolvidos
Este apndice contm as solues de alguns dos exerccios propostos no texto.
E.1 Soluo do exerccio 2.5
A gura E.1 descreve o algoritmo de Gauss-Jordan em uma linguagem mais
formal que aquela do texto. Vamos supor que os elementos de M so 1, 2, . . . , m
e os elementos de N so 1, 2, . . . , n.
As bases P e Q so representadas por um vetor sobre M: se i est em P
ento [i] nico q em Q tal que E[i, q] = 1; se i est em M P ento [i] = 0.
O pseudocdigo da gura E.1 supe que nosso computador capaz de exe-
cutar aritmtica racional exata. Supe tambm que, durante a pivotao, as ope-
raes aritmticas que envolvem um operando nulo no consomem tempo al-
gum (seno, as operaes relativas s colunas do conjunto Q + k deveriam ser
executadas apenas implicitamente). Nossa soluo usa o espao de memria de
maneira pouco econmica, pois armazena as matrizes E, G e F em separado.
E.2 Soluo do exerccio 2.11
Suponha que G
1
e G
2
so matrizes inversveis tais que G
1
D e G
2
D so escalona-
das. Queremos mostrar que as bases de colunas das duas matrizes escalonadas
tm a mesma cardinalidade.
Soluo: Sejam Q
1
e Q
2
bases de G
1
D e G
2
D respectivamente. Seja G
uma matriz inversvel tal que GD escalonada e possui uma base de colunas Q
de cardinalidade [Q
1
[; escolha G de modo a minimizar Q
2
Q. Suponha agora
que
Q
2
Q ,= (E.a)
e seja q
2
umelemento desse conjunto. Seja P a base de linhas da matriz E = GD.
H uma parte P

de P tal que E
[1

, Q Q2]
e E
[11

, QQ2]
so matrizes de
192
Feoloff ap. E Exerccios resolvidos 193
E, G, D, I, o
para h 1 at m faa
k 1
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 ,= 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]]
Figura E.1: Formalizao do algoritmo de Gauss-Jordan (exerccio 2.5). A pri-
meira linha atribui valores iniciais s variveis E, G e respectivamente.
O primeiro bloco de cdigo cuida da operao de pivotao. O segundo, gera
a matriz F a partir do vetor .
bijeo. Seja x um vetor sobre Q
2
tal que
E
[1

, Q2]
x = o e x
[q2]
= 1. (E.b)
Agora suponha, por um instante, que
E
[11

, q2]
= o. (E.c)
Ento os vetores E
[1, Q2]
x e E
[ , Q2]
x so nulos, ou seja,
GD
2
x = o, (E.d)
onde D
2
denota a matriz D
[ , Q2]
. Seja F uma matriz tal que FG = I. Se multi-
plicarmos ambos os lados de (E.d) por G
2
F, teremos
G
2
D
2
x = o.
Como Q
2
uma base de colunas da matriz escalonada G
2
D, o vetor x nulo,
o que inconsistente com (E.b). (Na linguagem da lgebra da linear, diramos
simplesmente que o conjunto de colunas da matriz G
2
D
2
linearmente inde-
pendente.) Conclumos assim que a hiptese (E.c) insustentvel, ou seja, que
Feoloff ap. E Exerccios resolvidos 194
existe p em P P

tal que E
[j, q2]
,= 0. possvel, agora, executar uma pivotao
em torno de p, q
2
.
Seja

F a matriz elementar cuja coluna saliente, p, igual a E
[ , q2]
. Seja

G
a inversa de

F. claro que a matriz

GG inversvel e que

GE escalonada e
tem base de colunas Q q + q
2
, onde q o nico elemento de Q que possui a
propriedade E
[j, q]
,= 0. Est claro que [Qq + q
2
[ = [Q
1
[ e Q
2
(Qq + q
2
)
parte prpria de Q
2
Q, o que torna a existncia da matriz

GG incompatvel
com nossa escolha de G. Logo, a hiptese (E.a) insustentvel. Segue da que
[Q
2
[ [Q
1
[ .
Se repetirmos o raciocnio todo depois de inverter os papis de Q
1
e Q
2
conclui-
remos que [Q
1
[ [Q
2
[.
Corolrio. Para qualquer matriz D, qualquer matriz inversvel G
1
tal que
G
1
D escalonada e qualquer matriz inversvel G
2
tal que G
2
D escalonada, as
bases de linhas das duas matrizes escalonadas tm a mesma cardinalidade.
E.3 Soluo do exerccio 2.13
Dada uma matriz A sobre M N, um vetor b sobre M e um vetor c sobre N,
encontrar x tal que Ax = b e cx mnimo.
Soluo: Use o algoritmo de Gauss-Jordan para obter uma matriz invers-
vel G e um vetor g tais que GA escalonada e
(c gA)
[Q]
= o,
onde Q uma base de colunas de GA. Seja P a base de linhas de GA.
CASO 1: (Gb)
[A1]
,= o. Neste caso o problema no tem soluo porque
no existe x tal que Ax = b. De fato, se um tal x existisse teramos a contradio
o = (GA)
[A1]
x = (Gb)
[A1]
,= o.
CASO 2: (Gb)
[A1]
= o e c gA = o. Seja, x o vetor denido pelas
condies
x
[.Q]
= o e (GA)
[, Q]
x
[Q]
= Gb .
Como GAx = Gb e G inversvel, temos Ax = b. Observe agora que (c gA)x
nulo, donde cx = gb. Por outro lado, para qualquer x

tal que Ax

= b teremos
(c gA)x

= o, donde cx

= gb. Portanto, x uma soluo do problema.


CASO 3: (Gb)
[A1]
= o e cgA ,= o. Seja j umndice tal que (cgA)
[)]
,= 0;
claro que j N Q. Seja x o vetor denido pelas seguintes condies:
(c gA)
[)]
x
[)]
< 0, x
[(.Q))]
= o e (GA)x = Gb .
Feoloff ap. E Exerccios resolvidos 195
E, G, , h D, I, o, 1
repita primeira fase
k
1
k
2
n
se E[h, n] 0 ento
k
1
0
repita k
1
k
1
+ 1
at que k
1
= n ou E[h, k
1
] > 0
se E[h, n] 0 ento
k
2
0
repita k
2
k
2
+ 1
at que k
2
= n ou E[h, k
2
] < 0
k min (k
1
, k
2
)
se k < n ento
p LINHA-MNIMA (h, k)
se E[p, n]/E[p, k] E[h, n]/E[h, k] ento
PIVOTAO (h, k)
h h + 1
seno PIVOTAO (p, k)
seno
se E[h, n] = 0 ento h h + 1
seno pare (h linha de inviabilidade)
at que h = m
m da primeira fase e incio da segunda
repita
k 0
repita k k + 1
at que k = n ou E[m, k] < 0
se k < n ento
p LINHA-MNIMA (m, k)
se p = m ento pare (k coluna de ilimitao)
seno PIVOTAO (p, k)
at que k = n
Figura E.2: Formalizao da heurstica Simplex (exerccio 4.2). A primeira
linha atribui valores iniciais s variveis E, G, e h respectivamente. As
funes LINHA-MNIMA e PIVOTAO esto descritas nas guras seguintes.
A matriz F poderia ser determinada, a partir de D e , como na gura E.1.
claro que Ax = b. claro tambm que cx gb = (c gA)x = (c gA)
[)]
x
[)]
,
donde
cx = (c gA)
[)]
x
[)]
+ gb .
Logo, cx tanto menor quanto maior for o valor absoluto de x
[)]
. Conclumos
assim que o problema no tem soluo.
Feoloff ap. E Exerccios resolvidos 196
LINHA-MNIMA (h, k)
p 0
repita p p + 1
at que p = h ou E[p, k] > 0
para i p + 1 at h 1 faa
se E[i, k] > 0 e E[i, n]/E[i, k] < E[p, n]/E[p, k] ento
p i
devolva p
Figura E.3: A funo LINHA-MNIMA (usada no cdigo da gura 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.
PIVOTAO (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 ,= 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 PIVOTAO (usada no cdigo da gura E.2) recebe ndi-
ces h e k e executa uma pivotao de G, E em torno de h, k.
E.4 Soluo do exerccio 4.2
As guras E.2 a E.4 descrevem a heurstica Simplex em uma linguagem mais
formal que aquela usada no texto. Esta formalizao supe que os elementos de
M so 1, 2, . . . , m, os elementos de N so 1, 2, . . . , n, a coluna especial n e a
linha especial m.
Se convergir, a heurstica produz no s matrizes G e E mas tambmndices
h e k. Se 1 h < m ento E simples invivel e h uma linha de inviabilidade.
Se 1 k < n ento E simples ilimitada e k uma coluna de ilimitao. Em
caso contrrio, E simples solvel.
Os conjuntos P e Q so representados por um vetor sobre M denido da
seguinte maneira: se i est em P ento [i] nico q em Q tal que E[i, q] = 1;
seno [i] = 0.
Feoloff ap. E Exerccios resolvidos 197
Esta formalizao do Simplex supe um computador capaz de executar arit-
mtica racional exata. Supe tambm que, durante a pivotao, as operaes
aritmticas que envolvem um operando nulo no consomem tempo algum (se-
no, as operaes relativas s colunas do conjunto Q+k deveriamser executadas
apenas implicitamente). Almdisso, esta formalizao usa o espao de memria
de maneira pouco econmica.
E.5 Soluo do exerccio 4.3
instrutivo analisar uma verso especializada da heurstica Simplex para ma-
trizes com apenas duas linhas. Essa verso sempre converge; a anlise da con-
vergncia contm um prenncio do algoritmo Simplex Lexicogrco.
Suponha que M um conjunto com apenas dois elementos, h e m. Nossa
verso especializada do Simplex recebe uma matriz D sobre M N e um ele-
mento n de N e devolve uma matriz G tal que G
[I, I]
,= 0, G
[ , i]
= I
[ , i]
e
GD simples com relao coluna n e linha m. claro que a matriz
G inversvel; sua inversa F denida pelas equaes F
[I, I]
= 1/G
[I, I]
,
F
[i, I]
= G
[i, I]
/G
[I, I]
e F
[ , i]
= I
[ , i]
. O algoritmo consiste no seguinte:
CASO 1: D
[I, .n]
o e D
[I, n]
> 0 ou D
[I, .n]
o e D
[I, n]
< 0 .
Devolva I e pare (D simples invivel).
CASO 2: D
[I, .]
= o .
Devolva I e pare (D simples solvel se D
[i, .n]
o e
simples ilimitada em caso contrrio).
CASO 3: D
[I, q]
> 0 e D
[I, n]
0 ou D
[I, q]
< 0 e D
[I, n]
0 para
algum q em N n .
Seja

G,

E o resultado da pivotao de I, D em torno de h, q.
Execute o processo iterativo descrito a seguir.
Cada iterao comea com um elemento q de N n e matrizes G e E.
A primeira iterao comea com q = q, G =

G e E =

E.
Cada iterao consiste no seguinte:
CASO 3.1: E
[i, I]
< 0 e E
[I, I]
> 0 para algum k em N n .
Seja G

, E

o resultado da pivotao de G, E em torno de h, k.


Comece nova iterao com G

e E

nos papis de G e E.
CASO 3.2: E
[i, I]
< 0 e E
[I, I]
0 para algum k em N n .
Devolva G e pare (E simples ilimitada).
CASO 3.3: E
[i, .n]
o .
Devolva G e pare (E simples solvel).
bvio que o algoritmo produz o resultado desejado nos casos 1 e 2. Resta
analisar o processo iterativo dentro do caso 3. fcil vericar os seguintes inva-
riantes:
Feoloff ap. E Exerccios resolvidos 198
no incio de cada iterao,
(i0) E
[I, n]
0 e E
[I, q]
> 0 ,
(i1) E
[ , q]
= I
[ , I]
,
(i2) G
[I, I]
,= 0 ,
(i3) E = GD ,
(i4) G
[ , i]
= I
[ , i]
,
(i6) G
[i, I]
D
[I, q]
= D
[i, q]
e
(i7) D
[I, q]
G
[I, I]
= 1 .
Esses invariantes valem, em particular, no incio da ltima iterao. Por-
tanto, a matriz G que o algoritmo devolve nos casos 3.2 e 3.3 tem as proprieda-
des desejadas.
q q n
I 1
>
i 0
Figura E.5: Matriz E no incio de uma iterao.
Resta provar a convergncia do algoritmo. O processo iterativo dentro do
caso 3 termina depois de umnmero nito de iteraes pelos motivos que passa-
mos a expor. Os invariantes (i4), (i6) e (i7) tma seguinte conseqncia imediata:
se duas iteraes diferentes comeam com o mesmo valor da varivel q ento os
correspondentes valores de G so iguais. Emvirtude de (i3), os correspondentes
valores de E
[i, q]
tambm so iguais. Por outro lado, no m de cada ocorrncia
do caso 3.1,
E

[i, q]
> E
[i, q]
.
De fato, E

[i, q]
= E
[i, q]
+E
[I, q]
, onde = E
[i, I]
/E
[I, I]
. Como e E
[I, q]
so positivos, temos a desigualdade desejada.
Essas observaes levam seguinte concluso: duas iteraes diferentes ja-
mais comeamcomo mesmo valor de q. Logo, o nmero de iteraes no excede
[N[ 1.
Exerccios
E.1 Aplique a heurstica Simplex s matrizes descritas abaixo.
2 2 2 2 2 0
2 1 0 1 2 0
2 2 2 2 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 Bibliogrcas
[AC78] D. Avis and V. Chvtal. Notes on Blands pivoting rule. In Mathemati-
cal Programming Study, volume 8, pages 2434. North-Holland, 1978.
57
[AMO93] R. K. Ahuja, T. L. Magnanti, and J. B. Orlin. Network Flows: Theory,
Algorithms and Applications. Prentice Hall, 1993. 122
[Bea55] E. M. L. Beale. Cycling in the dual simplex algorithm. Naval Research
Logistics Quarterly, 2:269275, 1955. 49
[Bla77] R. Bland. New nite pivoting rules for the simplex method. Mathe-
matics of Operations Research, 2:103107, 1977. 62
[Bor87] K. H. Borgwardt. The Simplex Method A Probabilistic Approach.
Springer-Verlag, 1987. 57
[CCPS98] W. J. Cook, W. H. Cunningham, W. R. Pulleyblank, and A. Schrijver.
Combinatorial Optimization. John Wiley, 1998. 122
[Chi53] F. Chio. Mmoire sur les fonctions connues sous le nomde rsultantes
ou de dterminants. Turin, 1853. 111, 117
[Chv83] V. Chvtal. Linear Programming. W. H. Freeman, 1983. i, 22, 23, 46,
61, 69, 85, 86, 141
[CLRS01] T. H. Cormen, C. E. Leiserson, R. L. Rivest, and C. Stein. Introduction
to Algorithms. MIT Press and McGraw-Hill, second edition, 2001. 23
[Dan63] G. B. Dantzig. Linear Programming and Extensions. Princeton Univer-
sity Press, 1963. 69
[Edm67] J. Edmonds. Systems of distinct representatives and linear algebra. J.
of Research of the National Bureau of Standards, B, 71:241245, 1967. 122
[EG84] J. Edmonds and R. Giles. Total dual integrality of linear inequality
systems. In W. R. Pulleyblank, editor, Progress in Combinatorial Opti-
mization, pages 117129, Toronto, 1984. Academic Press. Proceedings
of Jubilee Conference, University of Waterloo, 1982. 131
199
Feoloff Referncias Bibliogrcas 200
[Eve80] H. Eves. Elementary Matrix Theory. Dover, 1980. Republication of the
1966 Allyn and Bacon edition. 111, 117
[GKP94] R. L. Graham, D. E. Knuth, and O. Patashnik. Concrete Mathematics:
A Foundation for Computer Science. Addison-Wesley, second edition,
1994. ii
[GL81] P. Gcs and L. Lovsz. Khachiyans algorithm for linear program-
ming. In Mathematical Programming Study, volume 14, pages 6168.
North-Holland, 1981. 133, 141
[GL96] G. H. Golub and C. F. Van Loan. Matrix Computations. Johns Hopkins
University Press, Baltimore, third edition, 1996. i
[GLS88] M. Grtschel, L. Lovsz, and A. Schrijver. Geometric Algorithms and
Combinatorial Optimization, volume 2 of Algorithms and Combinatorics.
Springer-Verlag, rst edition, 1988. 133, 157
[GLS93] M. Grtschel, L. Lovsz, and A. Schrijver. Geometric Algorithms and
Combinatorial Optimization, volume 2 of Algorithms and Combinatorics.
Springer-Verlag, second edition, 1993. 133, 157
[Gon89] C. C. Gonzaga. An algorithm for solving linear programming pro-
blems in O(n
3
L) operations. In N. Megiddo, editor, Progress in Mathe-
matical Programming: Interior Point and Related Methods, pages 128.
Springer-Verlag, New York, 1989. 133
[Gon92] C. C. Gonzaga. Path following methods for linear programming.
SIAM Review, 34(2):167227, 1992. A survey. 133
[Jor20] W. Jordan. Handbuch der Vermessungskunde, volume I. Metzler, Stutt-
gart, seventh edition, 1920. 13
[Kan39] L. V. Kantorovich. Mathematical methods of organizing and planning
production. Publication House of the Leningrad State University, 1939.
[Translated in Management Science, 6 (1960, p.366422]. 69
[Kar84] N. Karmarkar. Anewpolynomial-time algorithmfor linear program-
ming. Combinatorica, 4:373395, 1984. 133
[Kha79] L. G. Khachiyan. A polynomial algorithm for linear programming.
Soviet Mathematical Doklady, 20:191194, 1979. Translation of Doklady
Akademii Nauk SSSR, vol.244, pp.10931096. 133, 141
[KM72] V. Klee and G. J. Minty. How good is the simplex algorithm? In
O. Shisha, editor, Inequalities, III, pages 159175. Academic Press,
1972. 57
[LKS91] J. K. Lenstra, A. H. G. Rinnooy Kan, and A. Schrijver, editors. His-
tory of Mathematical Programming: a Collection of Personal Reminiscen-
ces. North-Holland, 1991. 69
Feoloff Referncias Bibliogrcas 201
[PS82] C. H. Papadimitriou and K. Steiglitz. Combinatorial Optimization: Al-
gorithms and Complexity. Prentice Hall, 1982. Second printing by Do-
ver, 1998. 133
[Sch86] A. Schrijver. Theory of Linear and Integer Programming. John Wiley,
1986. 45, 111, 122, 131, 133, 141, 157
[Sch03] A. Schrijver. Combinatorial Optimization: Polyhedra and Efciency.
Number 24 in Algorithms and Combinatorics. Springer, 2003. [Th-
ree volumes]. 131, 133, 141
[YL82] B. Yamnitsky and L. A. Levin. An old linear programming algorithm
runs in polynomial time. In 23rd Annual Symposium on Foundations of
Computer Science, pages 327328. IEEE, 1982. 141
ndice Remissivo
(transposio), 6
o, 1
O, 3
I, 5
x[n] , 1
x[Q] , 1
A[i, n] , 2
A[1, Q] , 2
A[1, ] , 2
A[ , Q] , 2
A[i, ] , 2
A[ , n] , 3
A[1, n] , 2
A[i, Q] , 2
M m, 8
N n, 8
Ax, 5
yA, 5
, 76
absdet( ), 108
algoritmo, 26, 39
do elipside, 141
exponencial, 133
Gauss-Jordan, 16
Gauss-Jordan-Chio, 111
polinomial, 122
Simplex, 51
forma tradicional, 65
Simplex Dual, 166
Simplex Primal, 65
Simplex-Chio, 124
Yamnitsky-Levin, 133, 148
arredondamento, i, 22, 45, 61
Avis e Chvtal, 57
base, 65
de colunas, 13, 27
de linhas, 13, 27
de matriz escalonada, 13
de matriz simples, 27
Beale, 49
bijeo (matriz de), 7
Bland, 49, 62
Borgwardt, 57
busca binria, 157
CD(A, c, b), 77
Chio, 111, 117
Chvtal, 46, 69, 86, 141
ciclagem, 45
circ( ), 101
circuito, 100
coluna
de ilimitao, 27, 65
de inviabilidade, 162
de matriz, 3
especial, 26
saliente, 8
combinao
am, 179
cnica, 184
convexa, 142, 179
linear, 10, 179
complexidade, 135
polinomial, 135
componente, 1, 2
cone, 174
conjunto convexo, 175
converge, 16, 39
convergncia (de algoritmo), 16, 36, 39,
45, 56
convexo, 175
CP(A, b, c), 69
Cramer, 111, 130
crescente, 37, 47
custo, 69, 87
reduzido, 74
Dantzig, 69
decrescente, 37, 47
delimitao do determinante
produto de produtos, 120
produto de somas, 108, 119
det( ), 103
determinante, 103
202
Feoloff ndice Remissivo 203
diag( ), 103
dual de um ppl, 88
construo, 90
interpretao, 96
dualidade, 88
lema, 78, 90
teorema, 83, 93
forte, 83, 93
fraco, 78, 90
Edmonds, 122
Edmonds e Giles, 131
elipside, 133, 141
entra na base, 32
enumerao de um conjunto, 50
envoltria convexa, 180, 186
erro de arredondamento, i, 22, 45
escalonada (matriz), 13
face minimal, 188
Farkas, 85
fase I do Simplex, 49
fase II do Simplex, 47, 48, 61
fases do Simplex, 43
fator de contrao, 154
folga, 180, 187
minimal, 180, 187
folgas complementares, 79
funo objetivo, 87
Gcs e Lovsz, 133, 141
Gauss, 13
mtodo de eliminao, 23
Gauss-Jordan
algoritmo, 16
Gauss-Jordan-Chio
algoritmo, 111
gerador
de uma matriz, 186
minimal, 191
Gonzaga, 133
Grtschel, Lovsz, Schrijver, 133
heurstica, 39
Simplex, 40
Simplex Dual, 164
Simplex-Chio, 124
I (matriz identidade), 5
ilimitada (matriz simples), 27
ilimitado
problema, 70, 78, 93
sistema simples, 65
ndices, 1, 2
1, 2, 3, . . . , 2, 3
invariantes, 18
invivel
problema, 70, 78, 92
sistema simples, 65
invivel (matriz simples), 27
Jordan, 13
Kantorovich, 69
Karmarkar, 133
Khachiyan, 133, 141
Klee e Minty, 57
ld (linearmente dependente), 179
lei do produto, 107
lema
da dualidade, 78, 90
da inviabilidade, 93
da inviabilidade dual, 80
da inviabilidade primal, 80
da repetio de bases, 57
de Chio, 117
de Farkas, 85
do ponto profundo, 146
Lenstra, Rinnooy Kan, Schrijver, 69
Levin, 141
lexicogracamente positivo, 50
lexicogrco, 50
lg (logaritmo na base 2), 135
li (linearmente independente), 179
limitado (poliedro), 159, 182, 189
linearmente dependente, 179
linearmente independente, 179
maximal, 184
linguagem algortmica, ii, 31
linha
de ilimitao, 162
de inviabilidade, 27, 65
de matriz, 2
especial, 26
saliente, 9
m (linha especial), 26
m (nmero de linhas), 60, 134
matriz, 2
-coluna, 8
de bijeo, 7
de injeo, 178
de permutao, 100
de pivotao, 149
de transposio, 101
Feoloff ndice Remissivo 204
de um ppl, 87
de um tetraedro, 142
degenerada, 47
-bijetora, 111
-escalonada, 111
-simples, 124
diagonal, 8
dual-simples, 161
elementar, 10
escalonada, 13
esparsa, i
identidade (I), 5
inversa, 6
-linha, 9
nula (O), 3
quadrada, 102
simples, 27, 28
ilimitada, 27
invivel, 27
solvel, 27
sobre M N, 2
totalmente unimodular, 122
transposta, 6
monotnica, 37, 46
mudana de base, 49
n (coluna especial), 26
n (nmero de colunas), 57, 60, 134
negativo, 32
norma, 144
nmero
negativo, 32
positivo, 32
racional, ii, 22
O (matriz nula), 3
o (vetor nulo), 1
, 120, 127, 129, 130, 135
ordem lexicogrca, 50
induzida, 50
otimizao, i
otimizao combinatria, 122, 131
Papadimitriou e Steiglitz, 133
permanente, 104
permutao (matriz de), 100
PI (A, c), 134
pivotao, 30, 112, 149
pivotao, 16
representao matricial, 19
poliedro, 90
cannico dual, 77, 185
cannico primal, 69, 178
limitado, 159, 182, 189
ponto utuante, 22, 61
ponto interior, 138, 142
positivo, 32
posto
de matriz, 25
pleno, ii, 25
ppl, 87
primeira fase do Simplex, 49
problema
cannico dual, 77
cannico primal, 69
da viabilidade, 134
de programao linear, 87
do ponto interior, 134, 141
do ponto vivel, 134
do vetor vivel, 85
dual, 88
ilimitado, 70, 78, 93
invivel, 70, 78, 92
simples, 71
vivel, 70, 78, 92
produto
matriz por matriz, 5
matriz por vetor, 4
vetor por matriz, 4
vetor por vetor, 4
programao
inteira, 75
linear, i, 69, 87
propriedade associativa, 5
pseudocdigo, ii, 31, 192
PV(A, c), 134
racional, 22
raio, 184
reduo entre problemas, 134
regra
de Bland, 49, 62
de Cramer, 111, 130
lexicogrca, 51
restries, 69, 77
sai da base, 32
saliente
coluna, 8
linha, 9
Schrijver, 45, 122, 131, 133, 141
segunda fase do Simplex, 47, 48, 61
seqncia
crescente, 37, 47
Feoloff ndice Remissivo 205
decrescente, 37, 47
sig( ), 102
simples
matriz, 27, 28
problema, 71
sistema, 65
Simplex
algoritmo, 51
forma tradicional, 65
Dual, 161
algoritmo, 166
heurstica, 164
esboo, 30
heurstica, 40
Primal, 161
Revisto, 47
Tabular, 32
Simplex-Chio
algoritmo, 124
heurstica, 124
sinal
de matriz de permutao, 102
sistema, 64
simples, 65
sistema dual, 166
soluo, 70
soluo tima, 70
soluo vivel, 70
soluo bsica, 74
solvel
matriz simples, 27
problema, 69, 78
sistema simples, 65
submatriz, 116
suporte de vetor, 180
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
V(A, c), 134
valor timo, 169, 174
variveis de folga, 75
vrtice, 180, 188
de um tetraedro, 142
vetor, 1
bsico, 23, 71, 180, 187
de inviabilidade, 93
dual, 81
primal, 80
nulo (o), 1
sobre N, 1
vetor coluna, 3
vetor linha, 3
vivel (problema), 70, 78, 92
volume de um tetraedro, 142
X(A, b), 69
Y (A, c), 77
Yamnitsky, 141
Yamnitsky-Levin
algoritmo, 133, 148
Feoloff ndice Remissivo 206
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
Z zeta ksi X qui
H eta o O micron psi
tta pi mega

Você também pode gostar