Você está na página 1de 215

ALGORITMOS

DE
PROGRAMAO
LINEAR
Programao Linear Concreta

Paulo Feofiloff
Professor do
Departamento de Cincia da Computao do
Instituto de Matemtica e Estatstica da
Universidade de So Paulo

novembro de 1997
revisto em 27.7.1999
reformatado em 11.9.2005
Prefcio

O problema bsico de programao linear1 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 flutuante; 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 dificuldades
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 significa planejamento. No se trata de uma referncia
programao de computadores.
2
Outros algoritmos da famlia, entretanto, competem com o Simplex.
3
O leitor interessado nesses tpicos deve consultar os livros de Chvtal [Chv83] e Golub e
Van Loan [GL96].

i
Feofiloff ii

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 definies
limpas para os conceitos de matriz e vetor e uma notao suficientemente 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 em sepa-
rado os numeradores e denominadores dos nmeros racionais e portanto s usa
aritmtica inteira. Segue da uma verso do Teorema da Dualidade que especi-
fica 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 sofisticadas que as situaes concretas que
preciso enfrentar. O livro evita tambm as hipteses simplificadoras (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 simplificar 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. A elaborao do livro contou com o apoio dos projetos As-
pectos Estruturais e Algortmicos de Objetos Combinatrios (FAPESP 96/04505-
2) e Complexity of Discrete Structures (ProNEx 107/97). O livro foi escrito em
Feofiloff iii

LATEX 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
Feofiloff SUMRIO v

4 Heurstica Simplex 39
4.1 Introduo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
4.2 A heurstica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
4.3 Anlise: invariantes . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
4.4 Mais trs invariantes . . . . . . . . . . . . . . . . . . . . . . . . . . 44
4.5 Convergncia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
4.6 Concluso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
4.7 Apndice: Simplex Revisto . . . . . . . . . . . . . . . . . . . . . . 47

5 Algoritmo Simplex 50
5.1 Ordem lexicogrfica . . . . . . . . . . . . . . . . . . . . . . . . . . 50
5.2 Regra lexicogrfica . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
5.3 Algoritmo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
5.4 Anlise . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
5.5 Convergncia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
5.6 Nmero de operaes aritmticas . . . . . . . . . . . . . . . . . . . 60
5.7 Concluso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
5.8 Apndice: Segunda fase do Simplex . . . . . . . . . . . . . . . . . 61
5.9 Apndice: Regra de Bland . . . . . . . . . . . . . . . . . . . . . . . 62

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 Definio 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 Definio do problema . . . . . . . . . . . . . . . . . . . . . . . . . 77
8.2 Lema da dualidade . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
8.3 Vetores de inviabilidade . . . . . . . . . . . . . . . . . . . . . . . . 80
Feofiloff 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 Definio do problema . . . . . . . . . . . . . . . . . . . . . . . . . 87
9.2 Dualidade . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
9.3 Lema da dualidade . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
9.4 Construo do dual . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
9.5 Teorema da dualidade . . . . . . . . . . . . . . . . . . . . . . . . . 92
9.6 Reduo ao problema cannico primal . . . . . . . . . . . . . . . . 93
9.7 Concluso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
9.8 Apndice: Uma interpretao do dual . . . . . . . . . . . . . . . . 96

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


Feofiloff 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 Definies 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 definido . . . . . . . . . . . . . . . . . . . . 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
Feofiloff 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 Bibliogrficas 199

ndice Remissivo 202


Captulo 1

Vetores e Matrizes

Vetor? uma espcie de linha reta com uma flecha na ponta.


Matriz? Acho que onde fica 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. O con-
tedo do captulo muito simples, mas algumas das definies e convenes de
notao merecem ateno pois so pouco usuais.

1.1 Vetores
Um vetor uma funo que leva um conjunto finito arbitrrio o conjunto
de ndices no conjunto dos nmeros reais (mas no h mal em restringir
a ateno aos nmeros racionais). Convm no presumir qualquer relao de
ordem sobre o conjunto de ndices. Se o conjunto de ndices de um vetor x N ,
diremos que x est definido sobre N .
Se x um vetor sobre um conjunto N e n um elemento de N ento x [n] x [n]
denota o componente n de x, isto , o valor da funo x em n. Se Q uma parte
de N ento
x [Q]

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 xy

1
Feofiloff cap. 1 Vetores e Matrizes 2

x>y

se x [n] > y [n] para todo n. As relaes e < so definidas de modo anlogo.

4 3 1 2
13 22 11 14 11 14 22 13

Figura 1.1: Duas representaes de um vetor sobre 1, 2, 3, 4. Na se-


gunda, fica subentendido que os ndices so 1, 2, 3 e 4 da esquerda
para a direita.

1 11 11
2 14 14
4 13 22
3 22 13

Figura 1.2: Mais duas representaes do mesmo vetor. Na segunda,


fica 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 fini-
tos no conjunto dos nmeros reais (poderamos restingir a definio ao conjunto
dos racionais). Convm no presumir qualquer relao de ordem sobre os con-
juntos de ndices.
Se uma matriz A tem domnio M N , dizemos que M o conjunto de n-
dices de linhas e N o conjunto de ndices de colunas de A. Dizemos tambm
que A uma matriz definida sobre M N .
Se m e n so elementos de M e N respectivamente ento A [m, n] denota o A [m, n]
componente m, n de A, ou seja, o valor de A em m, n. Se P e Q so partes de
M e N respectivamente ento
A [P, Q]

a restrio de A a P Q. Usaremos a abreviatura A [P, ] (leia A P tudo) para A [P, ]


A [P, N ] e a abreviatura A [ , Q] para A [M, Q] . Se m um elemento de M ento A [ , Q]

A [m, Q]

o vetor sobre Q cujo componente q A [m, q] para todo q em Q. Usaremos a


abreviatura A [m, ] para A [m, N ] e diremos que esse vetor a linha m de A. A [m, ]
Analogamente, para qualquer parte P de M e qualquer elemento n de N , a linha
expresso A [P, n] denota o vetor cujo componente p A [p, n] para cada p em P . A [P, n]
Feofiloff cap. 1 Vetores e Matrizes 3

1 2 3 4 5 6 4 2 5 3 1 6 2 4 5 3 1 6
7 1 0 0 1 2 3 7 1 0 2 0 1 3 7 1 0 2 0 1 3
8 0 1 0 4 5 6 9 7 0 8 1 0 9 9 7 0 8 1 0 9
9 0 0 1 7 8 9 8 4 1 5 0 0 6 8 4 1 5 0 0 6

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 figuras 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, fica 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.

a b c d e f g b d e
f 3 1 9 0 0 4 9 f 1 0 0
g 4 0 8 1 0 5 9 g 0 1 0
h 5 0 7 0 1 6 9 h 0 0 1

Figura 1.5: A primeira figura 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 [M, n] e diremos que este vetor a coluna A [ , n]


n de A. coluna
Convm no confundir as expresses A [P, n] e A [P, {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 [m, n] = 0 para todo par m, n. A matriz nula ser matriz nula
denotada por O, quaisquer que sejam os seus conjuntos de ndices. O

Se A uma matriz e um nmero ento A a matriz que se obtm A


quando cada componente de A multiplicado por . Analogamente, A/ o A/
vetor que se obtm dividindo por cada componente de A.
Feofiloff 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
X
x [n] y [n] ,
nN

que denotaremos por x y. bvio que x y = y x. Ademais, para qualquer xy


parte Q de N ,
x y = x [Q] y [Q] + x [N Q] y [N Q] .

a b c d e e b d c a
11 22 33 44 55 35 41 37 39 43

Figura 1.6: Se x e y so os vetores definidos pela figura 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


bre M N e qualquer vetor x sobre N , o produto de A por x o vetor A x matriz por
vetor
definido pela expresso
Ax
(A x) [m] = A [m, ] x

para cada m em M . claro que A x um vetor sobre M . Analogamente, para produto vetor
qualquer vetor y sobre M , o produto de y por A o vetor y A definido pela por matriz
expresso yA
(y A) [n] = y A [ , n]

para cada n em N . fcil verificar que, para qualquer parte P de M e qualquer


parte Q de N ,

(A x) [P ] = A [P, ] x e (y A) [Q] = y A [ , Q] .

menos fcil verificar a propriedade associativa

y (A x) = (y A) x .
Feofiloff cap. 1 Vetores e Matrizes 5

Produto matriz-por-matriz. Para qualquer matriz A sobre L M e qual-


quer matriz B sobre M N , o produto de A por B a matriz A B sobre L N AB
definida pela expresso

(A B) [l, n] = A [l, ] B [ , n]

para cada l em L e cada n em N . fcil verificar que, para qualquer parte P de


L e qualquer parte Q de N ,

(A B) [P, Q] = A [P, ] B [ , Q] .

menos fcil verificar a propriedade associativa propriedade


associativa
(A B) C = A (B C) ,

vlida para quaisquer matrizes A, B e C cujos conjuntos de ndices permitam


definir 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 xy


e escrever xy, Ax, yA e AB no lugar de x y, A x, y A e A B respectivamente. Ax yA
O operador de indexao [ , ] tem precedncia sobre o operador de multi- AB
plicao. Assim, expresses da forma BA [P, Q] e yA [P, Q] devem ser entendidas BA [P, Q]
como B (A [P, Q] ) e y (A [P, 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 definimos 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, j] = se i = j ento 1 seno 0 .

Toda matriz identidade ser denotada por I , quaisquer que sejam seus conjun- I
tos de ndices.
Feofiloff cap. 1 Vetores e Matrizes 6

a b d c
a 1 0 0 0
b 0 1 0 0
c 0 0 1 0
d 0 0 0 1

Figura 1.7: Esta matriz no a identidade.

Uma inversa esquerda de uma matriz A uma matriz E tal que EA = inversa
I . Uma matriz A inversvel pela esquerda se possui uma inversa esquerda. esquerda
A inversa direita de uma matriz A uma matriz D tal que AD = I . Uma matriz inversa
A inversvel pela direita se possui uma inversa direita. direita

Se uma matriz tem uma inversa esquerda e uma inversa direita ento as
duas inversas so iguais. De fato, se AD = I e EA = I ento

E = E(AD) = (EA)D = D .

Ademais, as inversas so nicas. De fato, para qualquer matriz D0 tal que AD0 =
I tem-se D0 = (EA)D0 = E(AD0 ) = E = D. Analogamente, para qualquer E 0
tal que E 0 A = I tem-se E 0 = E .
A propsito, eis um fato fundamental mas no-trivial: uma matriz que tenha
o mesmo nmero de linhas e colunas tem inversa direita se e s se tem inversa
esquerda. Este fato ser demonstrado, implicitamente, no prximo captulo.
Os problemas que mencionamos no incio da seo podem ser imediata-
mente resolvidos se tivermos uma matriz inversa apropriada. Por exemplo, se
A tem uma inversa esquerda e direita E , ento o vetor x = Eb satisfaz a equao
Ax = b.

1 2 0 0
1 2 2 0 0
0 1 1/2 0
0 1 1 0 0
0 0 1/2 0
0 0 2 0 0
0 1 1 1
0 1 1 1 0
1 2 3 4

Figura 1.8: A primeira matriz uma inversa esquerda da se-


gunda (e a segunda uma inversa direita da primeira).

1.5 Transposio

A transposta de uma matriz A sobre M N a matriz A


e definida pelas equaes transposta
A
e
A
e[n, m] = A [m, n]
Feofiloff 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 e uma matriz sobre N M . claro que a


transposta de A A. fcil verificar que
e

Ax = xA
e

para todo vetor x tal que o produto de A por x esteja definido. Tambm fcil
verificar que
AB
g=B eA
e

para toda matriz B tal que o produto de A por B esteja definido.

1.6 Matrizes de bijeo


A seguinte generalizao do conceito de matriz identidade muito til. Uma
matriz J sobre M N de bijeo1 se existe uma funo bijetora de M em matriz
N tal que de bijeo
J [m, 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 M N 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 Je = I e Je J = I .

D EMONSTRAO : Para qualquer par i, j de ndices de linhas de J , o com-


ponente i, j de J Je o produto de duas linhas de J :

(J J)
e [i, j] = J [i, ] Je[ , j] = J [i, ] J [ j, ] .

Como J matriz de bijeo, J [i, ] J [ j, ] igual a 1 ou 0 conforme i = j ou i 6= j .


Isso mostra que J Je = I . O mesmo raciocnio, com Je no papel de J , mostra que
e = I. 2
JJ
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.
Feofiloff 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 M N . Digamos que
J [m, 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) [m, ] = 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 redefine os nomes das linhas de A, e a ps-multiplicao de B
por J apenas redefine 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 [m, n] = 0 sempre que diagonal
m 6= n. Em particular, toda matriz identidade diagonal.
Se D uma matriz diagonal tal que D [m, m] 6= 0 para todo m ento a matriz
diagonal E definida pelas equaes

E [m, m] = 1/D [m, m]

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 [m, m] = 0
para algum m ento fcil verificar que D no tem inversa.

1.8 Matrizes elementares


Uma matriz-coluna coincide com a identidade em todas as colunas, exceto tal- matriz-
vez uma. Em outras palavras, uma matriz F sobre M M uma matriz-coluna coluna
se existe k em M tal que

F [M, M k] = I [M, M k] ,

onde M k uma abreviatura de M {k}. Diremos que k a coluna saliente M k


da matriz. coluna
saliente
Feofiloff cap. 1 Vetores e Matrizes 9

Fato Para qualquer matriz-coluna F com coluna saliente k, se F [k, k]


no nulo ento a matriz-coluna G com coluna saliente k definida pelas
equaes
1 F [m, k]
G [k, k] = e G [m, k] =
F [k, k] F [k, k]
para cada m em M k uma inversa esquerda e tambm uma inversa
direita de F .

D EMONSTRAO : Mostremos inicialmente que GF = I . Na coluna k te-


mos (GF ) [k, k] = G [k, ] F [ , k] = G [k, k] F [k, k] = F [k, k] /F [k, k] = 1; ademais,

(GF )[m, k] = G[m, ]F [ , k]


= G[m, m] F [m, k] + G[m, k] F [k, k]
= F [m, k] F [k, k] F [m, k]/F [k, k]
= 0

para cada m em M k. Portanto, a coluna k de GF igual coluna k da matriz


identidade. Para concluir, considere as colunas distintas de k:

(GF ) [ , M k] = GF [ , M k] = GI [ , M k] = G [ , M k] = I [ , M k] .

Portanto, GF = I . Para mostrar que F G = I , basta observar que as mesmas


regras que definem G a partir de F tambm geram F a partir de G. 2

Nas condies da proposio acima, G a nica inversa (esquerda e direita)


de F . Tambm fcil verificar que se F [k, k] = 0 para algum k ento F no tem
inversa.

1 0 0 4 0 1 0 0 4/7 0
0 1 0 5 0 0 1 0 5/7 0
0 0 1 6 0 0 0 1 6/7 0
0 0 0 7 0 0 0 0 1/7 0
0 0 0 8 1 0 0 0 8/7 1

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-


F [M h, M ] = I [M h, M ] . Diremos que h a linha saliente de F . Uma obser- linha
vao anloga que demonstramos acima vale para matrizes-linha: se F uma
matriz-linha com linha saliente h e F [h, h] 6= 0 ento a matriz-linha G com linha
saliente h definida pelas equaes

G [h, h] = 1/F [h, h] e G [h, n] = F [h, n] /F [h, h]


Feofiloff cap. 1 Vetores e Matrizes 10

para cada n em M h a nica inversa esquerda de F e tambm a nica inversa


direita de F .
Diremos que uma matriz elementar se for uma matriz-coluna ou uma matriz
matriz-linha. Note que os conjuntos de ndices de linhas e colunas de uma elementar
matriz elementar so idnticos. Matrizes elementares e suas inversas tero um
papel de destaque nos captulos subseqentes.

1.9 Combinaes lineares


Suponha que a1 , . . , ak so vetores sobre um mesmo conjunto de ndices. Uma
combinao linear desses vetores qualquer vetor da forma

1 a1 + + k ak ,

onde 1 , . . , k so nmeros. Esses nmeros so os coeficientes 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 com coeficientes x [j] , isto ,
P
Ax = jN A [ , j] x [j] .

Analogamente, para todo vetor y sobre M , o vetor yA uma combinao linear


das linhas de A, isto , P
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) [ , j] = A B [ , j] 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 definidos).
1.3 Suponha que x e y so vetores e que A e B so matrizes. Quantas opera-
es de multiplicao so necessrias para calcular xy? para calcular Ax?
yA? AB?
1.4 Suponha que AB = I e BC = I . Mostre que B inversa direita de C .
Feofiloff cap. 1 Vetores e Matrizes 11

1.5 Seja A a primeira das matrizes abaixo. Encontre uma matriz de bijeo J
tal que AJ seja a segunda das matrizes. Encontre uma matriz de bijeo J
tal que JA seja a terceira matriz.

a b c d e b c a f h a b c d e
f 11 12 13 14 15 f 11 12 13 14 15 g 11 12 13 14 15
g 21 22 23 24 25 g 21 22 23 24 25 k 21 22 23 24 25
k 31 32 33 34 35 k 31 32 33 34 35 i 31 32 33 34 35

1.6 Sejam F e G matrizes sobre M M e D uma matriz sobre M N . Suponha


que F G = I e que a matriz E = GD de bijeo. Verifique que DEG
e = I.

1.7 Suponha que A uma matriz de bijeo sobre M N e b um vetor arbi-


trrio sobre M . Verifique 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 x1 , x2 , x3 e x4 que satisfaam as equaes


d11 x1 + d12 x2 + d13 x3 + d14 x4 = b1
d21 x1 + d22 x2 + d23 x3 + d24 x4 = b2
d31 x1 + d32 x2 + d33 x3 + d34 x4 = b3

O algoritmo de Gauss-Jordan1 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
parte Q de N tais que escalonada

E [P, Q] uma matriz de bijeo e E [M P, N ] = 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. (Convm lembrar 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 () e ao (menos clebre) Wilhelm Jordan
(), que popularizou o algoritmo [Jor20].

13
Feofiloff cap. 2 Algoritmo de Gauss-Jordan 14

Q
0 0 0 0 1
0 0 0 1 0
0 0 1 0 0 P
0 1 0 0 0
1 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0

Figura 2.1: Matriz escalonada.

0 1 0 0
0 0 0 0 0 0
0 0 0 0 1 0 0 0
0 2 1 44 66 1
0 0 0 0 0 0 1 0
1 33 0 55 77 0
0 0 0 0 0 0 0 1
0 0 0 0 0 0
0 0 0 0

Figura 2.2: Exemplos de matrizes escalonadas. A primeira 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 D
D numa matriz escalonada. Cada iterao do algoritmo comea com uma parte M N
P de M e uma matriz E . A primeira iterao comea com P = e E = D. Cada P
iterao consiste no seguinte: E

C ASO 1: E [M P, ] 6= O .
Escolha h em M P e k em N de modo que E [h, k] 6= 0.
Seja E 0 a matriz definida pelas equaes E 0 [h, ] = E [h, ] /E [h, k] e
E 0 [i, ] = E [i, ] E [i, k] E [h, ] /E [h, k] para cada i em M h.
Comece nova iterao com P + h e E 0 nos papis de P e E .
C ASO 2: E [M P, ] = O .
Devolva E e pare. 2

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 [P, Q] uma
matriz de bijeo e E [M P, 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.
Feofiloff cap. 2 Algoritmo de Gauss-Jordan 15

1 1 2 0
2 1 5 1
2 2 4 0
1 1 3 1

0 1/2 1/2 1/2


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

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 figura 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 figura define matrizes F , G e D. Verifique que


F G 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 figura define matrizes G e D e exibe GD. Observe que


GD escalonada mas no existe F tal que F G = I .
Feofiloff cap. 2 Algoritmo de Gauss-Jordan 16

2.3 Algoritmo
Para dizer, exatamente, o que o algoritmo faz preciso especificar a relao entre
as matrizes E e D. A matriz E equivalente matriz D no seguinte sentido:
existe uma matriz inversvel G tal que
E = GD .
O esboo da seo anterior no devolve G, o que impede o usurio de conferir a
equivalncia entre E e D. A verso do algoritmo que descreveremos abaixo de-
volve G e sua inversa F ; o usurio pode ento, ao preo de duas multiplicaes
de matrizes, verificar que G inversvel e que GD escalonada.

Algoritmo de Gauss-Jordan Recebe uma matriz D sobre M N e de-


volve matrizes F e G sobre M M tais que F G = I e GD escalonada.

Cada iterao comea com matrizes F , G e E e uma parte P de M . No F


incio da primeira iterao, F = G = I , E = D e P = . Cada iterao consiste G
no seguinte:

C ASO 1: E [h, ] 6= o para algum h em M P . h


Escolha k em N tal que E [h, k] 6= 0. k
Seja F 0 , G0 , E 0 o resultado da pivotao de F, G, E em torno de h, k.
Comece nova iterao com F 0 , G0 , E 0 e P + h
nos papis de F , G, E e P .
C ASO 2: E [M P, ] = O .
Devolva F , G e pare. 2 2

A operao de pivotao a que se refere o texto do algoritmo definida 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 0 , G0 , E 0 de matrizes definido pelas
equaes
F 0 [ , h] = D[ , k] , F 0 [ , i] = F [ , i] ,
0
G [h, ] = h G[h, ] , G0 [i, ] = G[i, ] + i G[h, ],
E 0 [h, ] = h E [h, ] , E 0 [i, ] = E [i, ] + i E [h, ],

para cada i em M h, onde


h = 1 / E [h, k] e i = E [i, k] / E [h, k] .

Nmero de iteraes. claro que o algoritmo de Gauss-Jordan con-


verge ou seja, sua execuo pra depois de um nmero finito 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.
Feofiloff cap. 2 Algoritmo de Gauss-Jordan 17

1 0 0 0 1 0 0 0 1 1 2 0
0 1 0 0 0 1 0 0 2 1 5 1
0 0 1 0 0 0 1 0 2 2 4 0
0 0 0 1 0 0 0 1 1 1 3 1

1 1 0 0 1 1/2 0 0 0 1/2 1/2 1/2


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

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 fi-


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

1/2 0 0 0 1 1/2 1 2 0 1/2


1/2 1 0 0 0 1/2 0 0 1 5/2
1 0 1 0 0 0 2 1 1 3
1/2 0 0 1 0 1/2 2 0 1 7/2

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

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


1 2 0 0 0 1 0 0 2 5
1/2 0 1/2 0 0 0 1 1/2 1/2 3/2
1 1 1 1 0 0 0 1 1 9

3 7/2 2 5/2 1 0 0 0 4 23
1 2 0 0 0 1 0 0 2 5
0 1/2 0 1/2 0 0 1 0 1 3
1 1 1 1 0 0 0 1 1 9

Figura 2.7: Exemplo de aplicao do algoritmo de Gauss-Jordan. A figura


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 .
Feofiloff 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 [P, Q] uma matriz de bijeo e E [M P, Q] = O ,
(i2) F G = I e
(i3) GD = E ,
onde Q uma parte de N (que poderamos chamar base de colunas da
iterao).

Q
0 0 1
P 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
definio do caso 2; alm disso, F G = I em virtude de (i2). Portanto, ao devol-
ver F e G o algoritmo estar se comportanto como prometeu.

D EMONSTRAO 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 0 , G0 , E 0 , P + h e Q + k

nos papis de F , G, E , P e Q. Para demonstrar esta afirmao basta verificar


que no fim do caso 1 tem-se

E 0 [ , Q] = E [ , Q] , (2.a)
0
E [ , k] = I [ , h] , (2.b)
F 0 G0 = I , (2.c)
0 0
E = G D. (2.d)
Feofiloff cap. 2 Algoritmo de Gauss-Jordan 19

Q k
0 0 1 0
P 0 1 0 0
1 0 0 0
0 0 0 0
h 0 0 0 1
0 0 0 0

Figura 2.9: Matriz E 0 no fim do caso 1 do algoritmo de Gauss-Jordan.

A demonstrao de (2.a) elementar. Por definio da operao de pivotao,


temos
E 0 [h, ] = h E [h, ] e E 0 [i, ] = E [i, ] + i E [h, ]

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


E 0 [ , 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 F
(veja seo 1.8) sobre M M cuja coluna saliente, h, igual a E [ , k] , isto ,
F [ , h] = E [ , k] e F [ , M h] = I [ , M h] .
a inversa de F , isto , a matriz elementar com coluna saliente h definida
Seja G
G
pelas equaes
[h, h] = 1/E [h, k]
G e [i, h] = E [i, k] /E [h, k]
G
para cada i em M h. Observe que F G
=G
F = I . Observe tambm que

F 0 = F F , G0 = GG
e E 0 = GE
.

As duas ltimas identidades so bvias. A primeira merece uma verificao


mais cuidadosa: na coluna h temos
F 0 [ , h] = D [ , k] = F G D [ , k] = F E [ , k] = F F [ , h]
e nas demais colunas temos
F 0 [ , M h] = F [ , M h] = F I [ , M h] = F F [ , M h] .
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
F = I e E 0 = GE
de (2.b) decorre das igualdades G : para cada i em M ,

E 0 [i, k] = G [i, ]E [ , k]
= G [i, ]F [ , h]
= (G F )[i, h]
= I [i, h] .
Feofiloff cap. 2 Algoritmo de Gauss-Jordan 20

A demonstrao de (2.c) fcil:

F 0 G0 = (F F )(GG)
= F (F G)G
= FG = I .
= G(GD)
A prova de (2.d) igualmente fcil: E 0 = GE
= (GG)D = G0 D. 2

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 [ , M P ] = I [ , M P ] ,
(i5) F [ , M P ] = I [ , M P ] e F [ , P ] = D [ , Q] Je ,
onde Je a transposta da matriz de bijeo E [P, Q] .

P M P Q N Q
0 0 0 0 0 1
0 0 0 0 1 0 P
0 0 0 1 0 0
1 0 0 0 0 0
0 1 0 0 0 0 M P
0 0 1 0 0 0

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.

D EMONSTRAO : 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 fim de cada ocorrncia do caso 1 temos

G0 [ , M P h] = G [ , M P h] ,

onde M P h uma abreviatura de (M P ){h}. A demonstrao anloga


de (2.a). Por definio,

G0 [h, ] = h G [h, ] e G0 [i, ] = G [i, ] + i G [h, ]


Feofiloff cap. 2 Algoritmo de Gauss-Jordan 21

para cada i em M h. Mas G [h, M P h] nulo em virtude de (i4). Logo,


G0 [ , M P h] = G [ , M P h] .
O invariante (i5) segue imediatamente da maneira como F 0 definida a par-
tir de F em cada iterao. A multiplicao por Je apenas troca os nomes das
colunas que esto em Q de modo que E [P, Q] Je 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
fim da execuo do algoritmo. 2

Invariantes No incio de cada iterao do algoritmo,


(i6) D [M P, Q] = G [M P, P ] D [P, Q] e
(i7) D [P, Q] Je G [P, P ] = I ,
onde Je a transposta da matriz de bijeo E [P, Q] .

D EMONSTRAO : Seja i um elemento de M P . Em virtude de (i4), para


cada i em M P ,

G[i, P ]D[P, Q] + D[i, Q] = G[i, P ]D[P, Q] + G[i, M P ]D[M P, Q]


= G[i, M ]D[M, Q]
= (GD)[i, Q]
= E [i, Q]
= o,

onde as duas ltimas igualdades so conseqncia de (i3) e (i1) respectivamente.


Logo, G [i, P ] D [P, Q] = D [i, Q] . Isto demonstra (i6). Agora considere (i7). Em
virtude da segunda parte de (i5),

D [P, Q] Je G [P, P ] = F [P, P ] G [P, P ] .

Mas F [P, P ] G [P, P ] = I por fora de (i2), (i4) e da primeira parte de (i5). 2

O invariante (i6) mostra que, para cada i em M P , o vetor D [i, Q] uma


combinao linear das linhas da matriz D [P, Q] . O invariante (i7) mostra que
Je G [P, P ] uma inversa direita de D [P, Q] . A propsito, os invariantes (i3) e (i4)
mostram que Je G [P, P ] uma inversa esquerda de D [P, 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
Feofiloff cap. 2 Algoritmo de Gauss-Jordan 22

algoritmo executa no mximo m tais pivotaes, o nmero total de operaes


aritmticas menor que
2m2 n .

(A ttulo de comparao, observe que a multiplicao de G por D requer m2 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
algoritmo envolve apenas as operaes de soma, subtrao, multiplicao e di- racionais
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 h, i; o primeiro
elemento do par o numerador e o segundo o denominador da representa- numerador
o. O custo de uma operao aritmtica sobre nmeros racionais depende da denominador
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 F G = I e


GD escalonada.

Vale tambm o 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 flutuante, com um n-
mero fixo 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].
Feofiloff 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

629/246 39615/16892 6827/25338 1687/12669 298/12669 955/50676 1970/12669


173/246 11887/16892 10079/25338 2704/12669 748/12669 5203/50676 2309/12669
2/41 531/8446 3/4223 72/4223 155/4223 113/8446 24/4223
130/123 7651/8446 1445/12669 896/12669 52/12669 937/25338 1109/12669
22/123 1281/4223 115/12669 1463/12669 311/12669 1462/12669 920/12669
67/82 20105/16892 125/8446 1500/4223 290/4223 1893/16892 500/4223
73/82 20509/16892 75/8446 900/4223 174/4223 2825/16892 300/4223

0 0 1 0 0 0 0 14885/8446 7482125/50676 309364/12669


0 1 0 0 0 0 0 19365/8446 2279561/50676 91123/12669
1 0 0 0 0 0 0 907/4223 33379/8446 2114/4223
0 0 0 1 0 0 0 165/4223 1419745/25338 133228/12669
0 0 0 0 1 0 0 2205/4223 256175/12669 24730/12669
0 0 0 0 0 1 0 18515/8446 1326005/16892 33380/4223
0 0 0 0 0 0 1 19555/8446 1344593/16892 36920/4223

Figura 2.11: Ao receber a primeira matriz da figura, 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 F G = I e GA escalonada.
Digamos que as bases de GA so P e Q e suponha inicialmente que o vetor
(Gb) [M P ] nulo. Seja x o nico vetor que satisfaz as equaes

x [N Q] = o e (GA) [P, Q] x [Q] = (Gb) [P ] .

Este o vetor bsico associado base Q. claro que (GA)x = Gb, donde vetor
F (GA)x = F (Gb) e portanto Ax = b.3 bsico

Suponha agora que (Gb) [h] no nulo para algum h em M P . claro que
nesse caso no existe x tal que (GA)x = Gb. Nosso problema original tambm
no tem soluo, como passamos a demonstrar. Seja g o vetor G [h, ] e observe

3
Esse mtodo de clculo de x no o mais eficiente. possvel obter x com apenas um tero
do nmero de multiplicaes se o algoritmo de Gauss-Jordan for modificado de modo a produzir
uma matriz triangular no lugar da matriz de bijeo (GA) [P, Q] . Essa variante do algoritmo
conhecida como mtodo de eliminao de Gauss [Chv83, cap.6] [CLRS01, cap.31].
Feofiloff cap. 2 Algoritmo de Gauss-Jordan 24

que
gA = (GA) [h, ] = 0 enquanto gb = (Gb) [h] 6= 0 .

Se existisse um vetor x tal que Ax = b teramos a contradio 0 = (gA)x =


g(Ax) = gb 6= 0.
O vetor g constitui, portanto, um certificado facilmente verificvel 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 afirmativo devolve o seu par de bases.
2.2 Mostre que GF = I no incio de cada iterao do algoritmo de Gauss-
Jordan.
2.3 O algoritmo descrito no texto devolve apenas as matrizes F e G. Escreva
uma verso que devolva tambm a matriz escalonada E e suas bases P
e Q.
2.4 Escreva uma verso do algoritmo de Gauss-Jordan em que a matriz F seja
calculada somente na ltima iterao.
2.5 Escreva o algoritmo de Gauss-Jordan em uma linguagem mais formal,
mais prxima de PASCAL ou C. (Veja soluo parcial E.1 no apndice E.)
Programe o algoritmo em um computador.
2.6 Escreva uma verso um pouco mais eficiente do algoritmo de Gauss-
Jordan: execute apenas implicitamente a parte da operao de pivotao
que afeta a base de colunas Q e a coluna k.
2.7 Suponha que a execuo do algoritmo de Gauss-Jordan interrompida no
incio de uma iterao e que uma pivotao executada em torno de um
elemento h de P (e no de M P , como usual) e um elemento k de
N Q. claro que isso s faz sentido se E [h, k] 6= 0. Qual o efeito de tal pi-
votao? A execuo do algoritmo pode ser retomada depois da pivotao
excepcional?
2.8 Suponha que A e B so matrizes sobre M M e que P uma parte de M .
Suponha ainda que AB = I e A [ , M P ] = B [ , M P ] = I [ , M P ] . Mostre
que A [P, P ] B [P, P ] = I .
2.9 Mostre que no incio de cada iterao do algoritmo de Gauss-Jordan a ma-
triz G [M P, P ] completamente determinada pelas matrizes D [M P, Q] ,
E [P, Q] e G [P, P ] .
2.10 Sejam G, P e Q os valores das variveis G, P e Q no incio de uma itera-
o. Sejam G, P e Q os valores das variveis G, P e Q no incio de outra
iterao. Mostre que se P = P e Q = Q
ento G [M P , ] = G
[M P , ] .
Feofiloff cap. 2 Algoritmo de Gauss-Jordan 25

2.11 Suponha que G1 e G2 so matrizes inversveis tais que G1 D e G2 D so


escalonadas. Mostre que quaisquer bases de colunas, digamos Q1 e Q2 ,
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 x1 , . . , x4 que satisfaam as equaes abaixo.

x1 + x2 + x3 + 3x4 = 6
3x1 + 4x2 + x3 + 8x4 = 18
x1 + x2 4x3 4x4 = 5

2.13 Resolva o seguinte problema: 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.
O problema sempre tem soluo? (Veja apndice E, pgina 192.)
Captulo 3

Introduo ao Simplex

Encontre nmeros no-negativos x1 , x2 , x3 e x4 que satisfaam as equaes


d11 x1 + d12 x2 + d13 x3 + d14 x4 = d15
d21 x1 + d22 x2 + d23 x3 + d24 x4 = d25
d31 x1 + d32 x2 + d33 x3 + d34 x4 = d35
e minimizem a soma d41 x1 + d42 x2 + d43 x3 + d44 x4

O algoritmo Simplex a ferramenta bsica da programao linear. O objetivo 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 refinar 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 m
elemento m de M . Diremos que n a coluna especial e que m a linha es- coluna
pecial da matriz. Nas figuras, a coluna especial ser sempre a que estiver mais especial
direita e a linha especial ser sempre a ltima. A propsito, no estamos fa- linha
especial
zendo quaisquer restries sobre os valores relativos de |M | e |N | e no estamos
presumindo qualquer relao de ordem em M ou N .

26
Feofiloff cap. 3 Introduo ao Simplex 27

Nosso estudo comea com uma descrio das caractersticas da matriz que o
Simplex calcula. Diremos que uma matriz E simples com relao ao par n, m matriz
de ndices se for de um dos trs tipos definidos abaixo: simples solvel, simples simples
invivel ou simples ilimitada. No vamos nos preocupar, por enquanto, com as
conotaes das palavras solvel, invivel e ilimitada; elas sero justifica-
das no captulo 7. As definies podero parecer indigestas, mas devero ficar
mais naturais depois que fizermos um esboo do Simplex.

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 [P, Q] de bijeo , E [P, n] o ,
E [M mP, N ] = O ,
E [m, N nQ] o , E [m, Q] = o .
A expresso M m P uma abreviatura de (M {m}) P ; analogamente, M mP
N nQ uma abreviatura de (N {n})Q. bvio que a matriz E [M m, N n] N nQ
escalonada. O conjunto P a base de linhas e o conjunto Q uma base de bases
colunas da matriz. fcil verificar que a base de linhas nica, mas podem
existir vrias bases de colunas.
H uma certa simetria entre E [m, N n] e E [M m, n] na definio de matriz
simples solvel: a condio E [P, n] o corresponde condio E [m, Q] = o; e a
condio E [M mP, n] = o corresponde condio E [m, N 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 [h, N n] o e E [h, n] > 0 ou
E [h, N n] o e E [h, n] < 0 .
O elemento h de M m o ndice de uma linha de inviabilidade.

Matriz simples ilimitada. Uma matriz E sobre M N simples ilimitada


com relao coluna n e linha m se existe uma parte P de M m, uma parte Q
de N n e um elemento k de N n Q tais que coluna de
ilimitao
E [P, k] o , E [P, Q] de bijeo , E [P, n] o ,
E [M mP, k] = o , E [M mP, Q] = O , E [M mP, n] = o ,
E [m, k] < 0 , E [m, 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 definio de matriz simples invivel e a de
matriz simples ilimitada: a condio E [h, N n] o e E [h, n] > 0 ou E [h, N n]
o e E [h, n] < 0 da primeira corresponde condio E [M m, k] o e E [m, k] <
0 da segunda.
Feofiloff cap. 3 Introduo ao Simplex 28

Q n
0 0 1
P 0 1 0
1 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
m 0 0 0

Figura 3.1: Matriz simples solvel.

> h

Figura 3.2: Matriz simples invivel.

k Q n
0 0 1
P 0 1 0
1 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
m < 0 0 0

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 definies 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- D
pectivamente. O objetivo do Simplex transformar D, por meio de sucessivas
Feofiloff 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 1/2 0 0 1/2 1 0 1/2 0
0 99 1 1 99 0 0 99 88
0 77 0 0 77 0 0 77 66

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 1/2 0 1/2 1/2 1 0 1/2 0
0 0 0 0 0 0 0 0 1
99 99 0 99 99 0 0 99 66

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 1/2 0 1/2 1/2 1 0 1/2 0
0 99 1 99 99 0 0 99 88
0 77 0 77 77 0 0 77 66

Figura 3.6: Matriz simples ilimitada. A coluna de


ilimitao 4.
Feofiloff 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 E
M m tais que P

f [P ] o ,
E [P, Q] uma matriz de bijeo e E [M P, Q] = O ,

onde f denota o vetor E [ , n] e Q uma parte de N n. As operaes executadas f


durante uma iterao modificam E e P de modo a preservar essas propriedades. Q
A primeira iterao comea com E = D e P = . Cada iterao consiste no
seguinte:

C ASO 1: E [h, k] > 0 e f [h] 0 ou E [h, k] < 0 e f [h] 0


para algum h em M m P e algum k em N n . h
Seja P o conjunto de todos os p em P para os quais E [p, k] > 0. k
P
C ASO 1A: f [h] /E [h, k] f [p] /E [p, k] para todo p em P .
Seja E 0 o resultado da pivotao de E em torno de h, k.
Comece nova iterao com P + h e E 0 nos papis de P e E .
C ASO 1B: f [h] /E [h, k] > f [p] /E [p, k] para algum p em P .
Escolha p em P de modo que f [p] /E [p, k] seja mnimo. p
Seja E 0 o resultado da pivotao de E em torno de p, k.
Comece nova iterao com E 0 no papel de E (sem alterar P ).
C ASO 2: E [h, N n] o e f [h] > 0 ou E [h, N n] o e f [h] < 0
para algum h em M m P . h
Devolva E e pare (a matriz E simples invivel).
C ASO 3: E [M mP, N ] = O, f [M mP ] = o e E [m, k] < 0
paraalgum k em N n . k
Seja P o conjunto de todos os p em P para os quais E [p, k] > 0. P

C ASO 3A: P vazio .


Devolva E e pare (a matriz E simples ilimitada).
C ASO 3B: P no vazio .
Escolha p em P de modo que f [p] /E [p, k] seja mnimo. p
Seja E 0 o resultado da pivotao de E em torno de p, k.
Comece nova iterao com E 0 no papel de E (sem alterar P ).
C ASO 4: E [M mP, N ] = O, f [M mP ] = o e E [m, N n] o .
Devolva E e pare (a matriz E simples solvel). 2

A operao de pivotao a que se referem os casos 1A, 1B e 3B definida


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 0 definida pelas pivotao
Feofiloff cap. 3 Introduo ao Simplex 31

equaes

1 E [i, k]
E 0 [h, ] = E [h, ] e E 0 [i, ] = E [i, ] E [h, ]
E [h, k] E [h, k]
para cada i em M h.
claro que os casos 1A e 1B devem ser entendidos como subcasos do caso 1;
analogamente, 3A e 3B so subcasos de 3. Os casos 1B e 3B so formalmente
idnticos. A definio de p nesses casos deve ser entendida da seguinte maneira:
escolha qualquer p em P que satisfaa a condio f [p] /E [p, k] f [i] /E [i, k] para
todo i em P .

Q n
0 0 1
P 0 1 0
1 0 0
0 0 0
0 0 0
0 0 0
m 0 0 0

Figura 3.7: Matriz E no incio de uma iterao.

A estrutura de casos. Em cada iterao, pelo menos um dos quatro casos se


aplica, como passamos a mostrar. Se os casos 1 e 2 no valem para um elemento
h de M m P ento

E [h, N n] = o e f [h] = 0 .

Por outro lado, se essa condio verdadeira para todo h em M m P 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 justifica nossas defini-
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 definio 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 definio de alguns casos devem ser entendidas como (X e Y) ou (W e Z).
Feofiloff 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

1/6 0 1 1/3 1/6


1/6 1 0 2/3 25/6
2/3 0 0 4/3 10/3
0 0 0 3 7

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

Figura 3.8: Exemplo de aplicao do Simplex. A figura 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 em torno de 3, 4 obtemos uma matriz simples
solvel.

Terminologia tradicional. Convm mencionar alguns termos consagrados entra


pelo uso em discusses sobre o Simplex. Nos casos 1 e 3, dizemos que a coluna na base
k entra na base. Nos casos 1B e 3B, dizemos que sai da base a coluna q definida sai da
base
pela relao E [p, q] = 1.
Qual o critrio para a escolha da coluna k que dever entrar na base? No
caso 1, basta que E [h, k] no seja nulo e f [h] /E [h, k] no seja negativo; no caso 3,
basta que E [m, k] 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 [P, 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 [p] /E [p, k] seja mnimo.
A propsito, o esboo que fizemos acima corresponde, essencialmente,
chamada verso tabular do Simplex.

1
Dizer que negativo o mesmo que dizer < 0. Analogamente, positivo se > 0.
Feofiloff cap. 3 Introduo ao Simplex 33

2 2 4 0 24
2 0 5 1 10
1 1 2 1 2
1 1 1 1 0

1 1 2 0 12
0 2 1 1 34
0 2 0 1 14
0 0 1 1 12

1 1 2 0 12
0 2 1 1 34
0 0 1 0 20
0 2 0 0 46

Figura 3.9: Exemplo de aplicao do Simplex. A fi-


gura registra a matriz E no incio de sucessivas itera-
es. A matriz resultante simples invivel.

2 2 4 0 24 2 2 4 8 24
2 0 5 1 10 2 0 5 4 10
1 1 2 1 2 1 1 2 0 2
1 1 1 1 0 1 1 1 8 0

1 1 2 0 12 1 1 2 4 12
0 2 1 1 14 0 2 1 4 14
0 2 0 1 14 0 2 0 4 14
0 0 1 1 12 0 0 1 4 12

1 0 5/2 1/2 5 1 0 5/2 2 5


0 1 1/2 1/2 7 0 1 1/2 2 7
0 0 1 0 0 0 0 1 0 0
0 0 1 1 12 0 0 1 4 12

1 0 0 1/2 5 1 0 0 2 5
0 1 0 1/2 7 0 1 0 2 7
0 0 1 0 0 0 0 1 0 0
0 0 0 1 12 0 0 0 4 12

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.
Feofiloff 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 [P ] o ,
(i1) E [P, Q] de bijeo e E [M P, 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 fim do
caso 1A os invariantes permanecem vlidos com E 0 , P + h e Q + k nos papis
de E , P e Q e que no fim dos casos 1B e 3B os invariantes permanecem vlidos
com E 0 e Q q + k nos papis de E e Q, onde q o nico elemento de Q tal que
E [p, q] = 1. Trocando em midos, basta mostrar que no fim do caso 1A temos

f 0 [P +h] o , (3.a)
0
E [ , Q] = E [ , Q] , (3.b)
E 0 [ , k] = I [ , h] , (3.c)

e que no fim dos casos 1B e 3B temos

f 0 [P ] o , (3.d)
0
E [ , Qq] = E [ , Qq] , (3.e)
E 0 [ , k] = I [ , p] , (3.f)

onde f 0 = E 0 [ , n] e I a matriz identidade. As demonstraes de (3.a) e (3.d)


explicam a estrutura de casos do Simplex e a elaborada escolha de p nos casos 1B
e 3B.

D EMONSTRAO DE (3.a): Considere inicialmente o componente h de f 0 .


Em virtude da definio do caso 1,

f [h] /E [h, k] 0 .

Como a pivotao no caso 1A ocorre em torno de h, k temos f 0 [h] = f [h] /E [h, k]


e portanto f 0 [h] 0. Resta considerar f 0 [i] com i em P . Suponha inicialmente
que E [i, k] no positivo. Ento f 0 [i] 0 pois

f [h]
f 0 [i] = f [i] E [i, k]
E [h, k]
Feofiloff cap. 3 Introduo ao Simplex 35

Q k n
0 0 1 0
P 0 1 0 0
1 0 0 0
0 0 0 1 h
0 0 0 0
0 0 0 0
m 0 0 0 0

Figura 3.11: Matriz E 0 no fim do caso 1A.

e f [i] 0 em virtude de (i0). Suponha agora que E [i, k] positivo. Ento f 0 [i]
0 porque
f [i] f [h]
f 0 [i] = E [i, k] ( )
E [i, k] E [h, k]
e a expresso entre parnteses no negativa, em virtude da definio do
caso 1A. Em suma, f 0 [i] 0 para cada i em P + h . 2

D EMONSTRAO DE (3.d): Como a pivotao nos casos 1B e 3B ocorre em


torno de p, k, temos f 0 [p] = f [p] /E [p, k] . Mas f [p] 0 em virtude de (i0) e
E [p, k] > 0 pois p P . Logo,
f 0 [p] 0 .

Resta considerar f 0 [i] com i em P p. Suponha inicialmente que E [i, k] no


positivo. Ento f 0 [i] 0 pois
f [p]
f 0 [i] = f [i] E [i, k]
E [p, k]
e f [i] 0. Suponha agora que E [i, k] positivo. Ento f 0 [i] 0 porque
f [i] f [p]
f 0 [i] = E [i, k] ( )
E [i, k] E [p, k]
e a expresso entre parnteses no negativa em virtude da maneira como p foi
escolhido. 2

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.

D EMONSTRAO DE (3.e): Como E [p, Qq] = 0 em virtude de (i1), a defini-


o da operao de pivotao garante que

E 0 [p, Qq] = E [p, Qq] e E 0 [i, Qq] = E [i, Qq]

para cada i em M p . 2
Feofiloff cap. 3 Introduo ao Simplex 36

q k n
0 1 0
P 1 0 0
0 0 1 p
0 0 0
0 0 0
0 0 0
m 0 0 0

Figura 3.12: Matriz E 0 no fim dos casos 1B e 3B.

D EMONSTRAO DE (3.f): Convm representar a operao de pivotao de


forma matricial, como j fizemos ao analisar o algoritmo de Gauss-Jordan.
Seja F a matriz elementar sobre M M cuja coluna saliente, p, igual a F
a inversa de F , isto , a matriz elementar com coluna saliente p
E [ , k] . Seja G G
definida pelas equaes G [p, p] = 1/E [p, k] e G
[i, p] = E [i, k] /E [p, k] para cada i
em M p. Observe que

F G
=G
F = I e E0 = G
E.

Agora, para cada i em M ,

E 0 [i, k] = G
[i, ] E [ , k] = G
[i, ] F [ , p] = (G
F ) [i, p] = I [i, p] .

Logo, E 0 [ , k] = I [ , p] . 2

Como acabamos de mostrar, os invariantes (i0) e (i1) valem no 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 infinita de ocorrncias dos casos 1B ou 3B. Isto
acontece, em especial, se o caso 1 ocorre em duas iteraes consecutivas com um
mesmo valor de P e valores distintos de h, como mostra a figura 3.13.
A convergncia melhora se insistirmos na mesma linha h, iterao aps ite-
rao, enquanto P no se alterar. A justificativa para esta poltica est na se-
guinte observao, a ser demonstrada no prximo captulo: enquanto estiver
Feofiloff cap. 3 Introduo ao Simplex 37

1 2 10 2
0 1 12 2
0 6 13 3
0 0 0 0

1/2 1 5 1
1/2 0 7 1
3 0 43 9
0 0 0 0

1 2 10 2
0 1 12 2
0 6 13 3
0 0 0 0

Figura 3.13: Exemplo de no-convergncia do esboo do Simplex na


seo 3.2. A figura 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 configurao 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 [h] diminui ou, na pior das hipteses, no aumenta. Em outras
palavras, numa seqncia de ocorrncias do caso 1B, a seqncia de valores de
f [h] 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 2 2 2 2 0
2 1 0 1 2 0 2 1 0 1 2 0

2
Diremos que uma seqncia 1 , 2 , 3 , . . . crescente se 1 2 3 e decrescente
se 1 2 3 .
Feofiloff cap. 3 Introduo ao Simplex 38

3.4 Aplique o Simplex descrito na seo 3.2 matriz abaixo (como de hbito,
a coluna especial a que est mais direita e a linha especial a ltima).
Aplique o Simplex vrias vezes, procurando obter solues diferentes.
1 2 1 0 1 0 0 12
2 5 0 1 0 1 0 10
1 3 1 1 0 0 1 2
1 2 1 0 0 1 0 0

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 [m, k] 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
fizemos no captulo anterior (seo 3.2). O prximo captulo mostrar como
refinar a heurstica para transform-la num algoritmo.

4.1 Introduo
A heurstica Simplex recebe uma matriz D, o ndice n de uma coluna e o ndice
m de uma linha e calcula uma matriz E que simples com relao ao par n,m.
Para dizer o que, exatamente, o Simplex faz preciso especificar a relao entre
as matrizes E e D. Essa relao um pouco mais restritiva que a do algoritmo
de Gauss-Jordan (captulo 2): existem matrizes F e G tais que

E = GD , G [ , m] = I [ , m] e FG = I ,

onde I a matriz identidade. A verso da heurstica que descreveremos a seguir


devolve F e G. De posse dessas matrizes, basta calcular os produtos F G e GD e
verificar 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 [ , m] = I [ , m] , cada linha de E [M m, ] uma combinao linear das
linhas de D [M m, ] e o vetor E [m, ] a soma de D [m, ] com uma combinao
linear das linhas de D [M m, ] .
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 finito de iteraes, quaisquer que
sejam os dados.

39
Feofiloff cap. 4 Heurstica Simplex 40

1 2 2 0 1 2 0 0 2 2 4 0 24
0 1 1 0 0 1 1/2 0 1 1 2 0 12
0 0 2 0 0 0 1/2 0 2 0 5 1 10
0 1 1 1 0 1 1 1 1 1 3 1 2

Figura 4.1: A figura especifica matrizes F , G e D. Verifique que


F G = 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 fizer sentido. Essa po-
ltica melhora muito a convergncia, embora no seja suficiente para garanti-la.
Para implementar a poltica, introduzimos duas novas variveis: L e h.

Heurstica Simplex Recebe uma matriz D sobre M N e elementos D


ne m de N e M respectivamente; se convergir, devolve matrizes F e G n
m
sobre M M tais que F G = I , G [ , m] = I [ , m] e GD simples (solvel,
invivel, ou ilimitada) com relao ao par n, m.

Cada iterao comea com uma parte L de M m, um elemento h de M L, L


e matrizes F , G e E . A primeira iterao comea com F = G = I , E = D, L = h
e com h em M , se possvel2 distinto de m. Cada iterao adota a abreviatura
f = E [ , n] e consiste no seguinte: f

A LTERNATIVA I: h diferente de m .
C ASO I.1: E [h, k] > 0 e f [h] 0 ou E [h, k] < 0 e f [h] 0
para algum k em N n . k
Seja L o conjunto de todos os p em L para os quais E [p, k] > 0. L

C ASO I.1A: f [h] /E [h, k] f [p] /E [p, k] para todo p em L .


Seja F 0 , G0 , E 0 o resultado da pivotao de F, G, E em torno de h, k.
Seja L0 o conjunto L + h.
Escolha h0 em M L0 , se possvel distinto de m.
Comece nova iterao com L0 , h0 , F 0 , G0 , E 0
nos papis de L, h, F , G, E .
C ASO I.1B: f [h] /E [h, k] > f [p] /E [p, k] para algum p em L .
Escolha qualquer p em L tal que f [p] /E [p, k] mnimo. p
Seja F 0 , G0 , E 0 o resultado da pivotao de F, G, E em torno de p, k.
Comece nova iterao com F 0 , G0 e E 0 nos papis de F , G e E .

2
Ou seja, se M m no vazio.
Feofiloff cap. 4 Heurstica Simplex 41

C ASO I.2: E [h, N n] o e f [h] > 0 ou E [h, N n] o e f [h] < 0 .


Devolva F e G e pare.
C ASO I.3: E [h, N n] = o e f [h] = 0 .
Seja L0 o conjunto L + h.
Escolha h0 em M L0 , se possvel distinto de m.
Comece nova iterao com L0 e h0 nos papis de L e h.
A LTERNATIVA II: h igual a m .
C ASO II.1: E [h, k] < 0 para algum k em N n . k
Seja L o conjunto de todos os p em L para os quais E [p, k] > 0. L

C ASO II.1A: L vazio .


Devolva F e G e pare.
C ASO II.1B: L no vazio .
Escolha qualquer p em L tal que f [p] /E [p, k] mnimo. p
Seja F 0 , G0 , E 0 o resultado da pivotao de F, G, E em torno de p, k.
Comece nova iterao com F 0 , G0 e E 0 nos papis de F , G e E .
C ASO II.2: E [h, N n] o .
Devolva F e G e pare. 2 3

A operao de pivotao definida como no algoritmo de Gauss-Jordan:


dados elementos h de M m e k de N n, o resultado da pivotao de F, G, E pivotao
em torno de h, k o terno F 0 , G0 , E 0 de matrizes definido pelas equaes

F 0 [ , h] = D[ , k] , F 0 [ , i] = F [ , i] ,
0
G [h, ] = h G[h, ] , 0
G [i, ] = G[i, ] + i G[h, ] ,
E 0 [h, ] = h E [h, ] , E 0 [i, ] = E [i, ] + i E [h, ] ,
onde h = 1/E [h, k] e i = E [i, k] /E [h, k] para cada i em M h. Como j vimos
em captulos anteriores,
F 0 = F F , G0 = GG
e E 0 = GE
,

onde F a matriz elementar com coluna saliente h definida pela equao F


F [ , h] = E [ , k] 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 verificamos 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 definio 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 [p] /E [p, k]
f [i] /E [i, k] para todo i em L .

3
Ver soluo do exerccio 4.2 no apndice E, pgina 192.
Feofiloff cap. 4 Heurstica Simplex 42

1 0 0 0 1 0 0 0 2 2 4 0 24
0 1 0 0 0 1 0 0 2 0 5 1 10
0 0 1 0 0 0 1 0 1 1 2 1 2
0 0 0 1 0 0 0 1 1 1 1 1 0

2 0 0 0 1/2 0 0 0 1 1 2 0 12 L
2 1 0 0 1 1 0 0 0 2 1 1 14
1 0 1 0 1/2 0 1 0 0 2 0 1 14
1 0 0 1 1/2 0 0 1 0 0 1 1 12

2 2 0 0 0 1/2 0 0 1 0 5/2 1/2 5 L


2 0 0 0 1/2 1/2 0 0 0 1 1/2 1/2 7 L
1 1 1 0 1/2 1 1 0 0 0 1 0 0
1 1 0 1 1/2 0 0 1 0 0 1 1 12

2 2 4 0 5/4 2 5/2 0 1 0 0 1/2 5 L


2 0 5 0 1/4 0 1/2 0 0 1 0 1/2 7 L
1 1 2 0 1/2 1 1 0 0 0 1 0 0 L
1 1 1 1 1 1 1 1 0 0 0 1 12

Figura 4.2: Exemplo de aplicao do Simplex. A figura 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

157/7473 334/7473 277/7473 170/7473 0


466/7473 389/7473 13/7473 19/7473 0
545/2491 332/2491 514/2491 368/2491 0
1343/7473 1522/7473 1486/7473 1597/7473 0
7690/7473 12866/7473 12326/7473 13991/7473 1

84/2491 168/2491 686/7473 0 0 1 1773/2491 0 1391/7473


68/2491 136/2491 275/7473 0 0 0 2147/2491 1 416/7473
2509/2491 5018/2491 49/2491 0 1 0 7271/2491 0 3480/2491
1258/2491 5007/2491 3631/7473 1 0 0 6364/2491 0 2714/7473
28834/2491 60159/2491 15283/7473 0 0 0 45640/2491 0 65620/7473

Figura 4.3: Exemplo de aplicao do Simplex. Ao receber a matriz D (topo


da figura) e os ndices 9 (coluna) e 5 (linha) o Simplex executou 10 iteraes e
devolveu a matriz G (meio da figura). A matriz GD (parte inferior da figura)
simples solvel com relao coluna 9 e linha 5.
Feofiloff 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 verificar 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 [P ] o ,
(i1) E [P, Q] de bijeo , E [M P, Q] = O e E [LP, ] = O ,
(i2) FG=I,
(i3) GD = E ,
(i4) G [ , M P ] = I [ , M P ] ,
onde f o vetor E [ , n] .

P m Q n
0 0 0 0 0 0 1
0 0 0 0 P 0 1 0
0 0 0 0 1 0 0 L
1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 1 0 0 0 0 0
0 0 1 0 0 0 0
0 0 0 1 m 0 0 0

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 0 = E 0 [ , n] e P 0 = P + h .
Feofiloff cap. 4 Heurstica Simplex 44

Seja q o nico elemento de Q tal que E [p, q] = 1. Basta mostrar agora que no
fim do caso I.1A

f 0 [P 0 ] o , (4.a)
E0 [ , Q] = E [ , Q] e E0 [ , k] = I [ , h] , (4.b)
E0 0 0
[L P , ]= E [LP, ] , (4.c)
G0 [ , M P 0 ] = G[ , M P 0 ] , (4.d)

que no fim dos casos I.1B e II.1B

f 0 [P ] o , (4.e)
E 0 [ , Qq] = E [ , Qq] e E 0 [ , k] = I [ , q] , (4.f)
E0 [LP, ]= E [LP, ] , (4.g)
G0 [ , M P ] = G[ , M P ] , (4.h)

e que no fim de quaisquer dos casos

F 0 G0 = I e G0 D 0 = E 0 . (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 fizemos 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 [ , m] = I [ , m] em virtude de (i4). Alm disso, F G = 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 [ , M P ] = I [ , M P ] e F [ , P ] = D [ , Q] Je ,
(i6) D [M P, Q] = G [M P, P ] D [P, Q] ,
(i7) D [P, Q] Je G [P, P ] = I ,
onde Je a transposta da matriz de bijeo E [P, Q] . Je
Feofiloff cap. 4 Heurstica Simplex 45

A demonstrao 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 fim 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 [P, Q] . O invariante (i7) mostra que
Je G [P, P ] uma inversa direita de D [P, Q] . A propsito, os invariantes (i3) e (i4)
mostram que Je G [P, P ] uma inversa esquerda de D [P, 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 [M m, Q] de bijeo e D [M m, n] o (mas D [m, Q]
no nula). Seja P o conjunto M m e G a matriz definida por

G[ , M P ] = I [ , M P ] e
G[P, P ] = I [P, P ] ,
G[M P, P ] = D[M P, Q] Je,

onde Je a transposta de D [P, 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 figura. Adote n = 8 e m = 4. Calcule


matrizes F0 e G0 que permitam comear a primeira iterao do Simplex
com L = M m, F = F0 , G = G0 e E = G0 D.

4.5 Convergncia
A heurstica Simplex nem sempre converge. A figura 4.6 d um exemplo: o
caso II.1B se aplica em todas as iteraes; no incio da stima iterao, estamos
exatamente na mesma situao que no incio da primeira; este ciclo poder se
repetir ad ternum. A experincia sugere que tais exemplos de ciclagem so
raros.4
importante examinar o fenmeno mais de perto. bvio que nos ca-
sos I.1A e I.3 a heurstica est fazendo progresso, pois L aumenta. H algum

4
Entretanto, h quem afirme [Sch86, p.138] que a ocorrncia de ciclagem em problemas prti-
cos mais freqente do que se imagina, mas mascarada pelo efeito dos erros de arredondamento
da aritmtica ponto flutuante.
Feofiloff cap. 4 Heurstica Simplex 46

1 0 0 0 0 0 1 1
0 1 0 1 1/2 3/2 1/2 0
0 0 1 9 5/2 11/2 1/2 0
0 0 0 24 9 57 10 1

1 0 2 18 5 11 0 1
0 1 1 8 2 4 0 0
0 0 2 18 5 11 1 0
0 0 20 204 41 53 0 1

1 11/4 3/4 4 1/2 0 0 1


0 1/4 1/4 2 1/2 1 0 0
0 11/4 3/4 4 1/2 0 1 0
0 53/4 27/4 98 29/2 0 0 1

1 0 0 0 0 0 1 1
0 5/2 1/2 2 0 1 1 0
0 11/2 3/2 8 1 0 2 0
0 93 15 18 0 0 29 1

1 0 0 0 0 0 1 1
0 5/4 1/4 1 0 1/2 1/2 0
0 9/2 1/2 0 1 4 2 0
0 141/2 21/2 0 0 9 20 1

1 0 0 0 0 0 1 1
0 1 0 1 1/2 3/2 1/2 0
0 9 1 0 2 8 4 0
0 24 0 0 21 93 22 1

1 0 0 0 0 0 1 1
0 1 0 1 1/2 3/2 1/2 0
0 0 1 9 5/2 11/2 1/2 0
0 0 0 24 9 57 10 1

Figura 4.6: Um exemplo [Chv83] de no-convergncia da heurstica Simplex.


A figura 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 verificar que no caso I.1B

0 < f 0 [h] f [h] ou 0 > f 0 [h] f [h] (4.j)

e no caso II.1B
f 0 [h] f [h] , (4.k)

onde f 0 = E 0 [ , 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 [h] ser estritamente monotnica, isto , estritamente
Feofiloff 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 finito, o nmero de iteraes ser finito, 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 0 [h] = f [h] . fcil
verificar que isso acontece quando f [p] = 0. Diz-se que matrizes com essa matriz
propriedade so degeneradas. fcil verificar tambm que f [p] = 0 quando, degenerada
em alguma iterao anterior, houve empate na definio de p, ou seja, quando empate
f [p] /E [p, k] 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
A heurstica Simplex recebe uma matriz D, um ndice n de coluna e um ndice m
de linha e procura determinar uma matriz inversvel G tal que G [ , m] = I [ , m]
e GD simples com relao a n, m. A heurstica nem sempre converge; mas
quando converge, produz o resultado desejado. Esta situao pode colocar em
dvida a prpria existncia de uma matriz G com as propriedades desejadas.

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 [h, ] D , GD [ , k] e GD [ , n]

apenas quando isso se fizer necessrio. Esses ajustes levam a uma variante da
heurstica conhecida como Simplex Revisto. Vamos exibir abaixo uma verso do
Simplex Revisto que se aplica a sistemas D, n, m dotadas da seguinte proprie-
dade (veja exerccio 4.4, pgina 48): existe uma parte Q0 de N n tal que

D[M m, Q0 ] de bijeo ,
D[m, Q0 ] = o e D[M m, n] o .

claro que essa verso corresponde segunda fase da heurstica geral. Cada
iterao comea com uma parte Q de N n, uma matriz G e um vetor f . A pri-
meira iterao comea com Q = Q0 , G = I e f = D [ , n] . Cada iterao consiste
no seguinte:

5
Uma seqncia 1 , 2 , 3 , . . . estritamente decrescente se 1 > 2 > 3 > .
Feofiloff cap. 4 Heurstica Simplex 48

C ASO 1: G [m, ] D [ , k] < 0 para algum k em N n Q .


Seja a o vetor GD [ , k] .
Seja P o conjunto de todos os p em M m para os quais a [p] > 0.
C ASO 1A: P vazio .
Devolva G e pare (a matriz GD simples ilimitada).
C ASO 1B: P no vazio .
Escolha qualquer p em P tal que f [p] /a [p] mnimo.
Seja q o elemento de Q tal que E [p, q] = 1.
Seja G0 , f 0 o resultado da pivotao de G, f em torno de p, k.
Comece nova iterao com Q q + k, G0 , f 0 nos papis de Q, G, f .
C ASO 2: G [m, ] D [ , k] 0 para todo k em N n Q .
Devolva G e pare (a matriz GD simples solvel). 2

O resultado da pivotao do par G, f em torno de h, k o par G0 , f 0 definido


da maneira bvia: G0 [h, ] = G [h, ] /a [h] , f 0 [h] = f [h] /a [h] e, para cada i em M h,

G0 [i, ] = G [i, ] a [i] G [h, ] /a [h] e f 0 [i] = f [i] a [i] f [h] /a [h] .

No incio de cada iterao, f [M m] o, (GD) [m, Q] nulo e (GD) [M m, Q] de


bijeo. Ademais, G inversvel e G [ , m] = I [ , m] .
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 flutuante.

Exerccios
4.1 Escreva uma verso da heurstica Simplex que devolva, alm de F e G,
tambm a matriz E e, quando apropriado, as bases P e Q, o ndice h de
uma linha de inviabilidade e o ndice k de uma coluna de ilimitao.
4.2 Escreva a heurstica Simplex em uma linguagem mais formal, mais pr-
xima de PASCAL ou C (veja apndice E, pgina 192). Programe a heurstica
em um computador.
4.3 Escreva uma verso especializada da heurstica Simplex para matrizes com
apenas duas linhas. Mostre que essa verso sempre converge. (Soluo no
apndice E.)
4.4 (S EGUNDA FASE DO S IMPLEX ) Escreva uma verso especializada da heu-
rstica Simplex para o caso em que D tem a seguinte forma: existe uma
Feofiloff cap. 4 Heurstica Simplex 49

parte Q0 de N n tal que

D [M m, Q0 ] de bijeo , D [m, Q0 ] = o e D [M m, n] o .

claro que o valor inicial de Q Q0 . claro que P = M m em todas as


iteraes.
4.5 (P RIMEIRA FASE DO S IMPLEX ) Adote as seguintes definies, 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 [P, Q] de bijeo , E [M P, ] = o e E [ , n] o .

Uma matriz E simples invivel se existe um elemento h de M tal que


E [h, N n] o e E [h, n] positivo ou E [h, N n] o e E [h, 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 F G = I e a matriz GD
simples no sentido da nova definio.
4.6 (M UDANA 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 [m, k] = 0 para algum k em N n Q e
E [p, k] > 0 para algum p em P .

Calcule matrizes F e G tais que F G = I , G [ , m] = I [ , m] e a matriz GE


simples solvel com relao a n, m e tem base de colunas Q q + 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


e [Q, P ] E [P, ] .

(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 finalmente 5, 6, 7.

1/4 60 1/25 9 1 0 0 0
1/2 90 1/50 3 0 1 0 0
0 0 1 0 0 0 1 1
3/4 150 1/50 6 0 0 0 0
Captulo 5

Algoritmo Simplex

Para transformar a heurstica Simplex (seo 4.2) num algoritmo preciso intro-
duzir um mecanismo que force a convergncia (veja seo 4.5). O mecanismo
que discutiremos neste captulo um refinamento da regra que a heurstica usa,
em cada iterao, para escolher a linha em torno da qual far a prxima pivota-
o. (Outro mecanismo de convergncia ser mencionado na seo 5.9.)

5.1 Ordem lexicogrfica


Seja N um conjunto de ndices e uma enumerao dos elementos de N , isto N
, 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 lexicograficamente menor que y em relao a se
existe k em N tal que
x [k] < y [k]

mas x [j] = y [j] para todo j que precede k em . Escreveremos l

xly

para dizer que x lexicograficamente menor que y em relao a . Assim, a


enumerao induz uma relao de ordem lexicogrfica l no conjunto dos l
vetores sobre N :
x l y se x l y ou x = y.

A relao m definida da maneira bvia: x m y se y l x. Diremos que um vetor


x lexicograficamente positivo se x m o. lexicografica-
mente
importante distinguir a desigualdade lexicogrfica x l y da desigualdade
positivo
usual x y (veja seo 1.1), que significa que x [i] y [i] para todo i. Se x y
ento x l y, mas a recproca no verdadeira.

50
Feofiloff cap. 5 Algoritmo Simplex 51

x = 88 33 44 11
u = 0 11 99 88
y = 88 33 33 99
v = 0 0 0 0
z = 88 33 44 12

Figura 5.1: Adote a enumerao h1, 2, 3, 4i do conjunto de ndices.


O vetor u lexicograficamente maior que v. O vetor x lexicografica-
mente maior que y e lexicograficamente menor que z.

5.2 Regra lexicogrfica


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 [p, n] /E [p, k] m-
nimo (veja a seo 4.5). A regra lexicogrfica 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 fixa. A regra lexicogrfica 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 [p, ]
E [p, k]
seja lexicograficamente mnimo com relao enumerao . A enu-
merao no se altera durante as ocorrncias dos casos I.1B e II.1B, mas
reajustada no fim de cada ocorrncia do caso I.1A de modo que, para
todo p em P , o vetor E [p, ] seja lexicograficamente positivo.

Como n o primeiro elemento de , a escolha de p garante que o nmero


E [p, n] /E [p, k] ser mnimo. Assim, a regra lexicogrfica um refinamento da
regra que usamos na heurstica do captulo anterior. Como veremos adiante, a
regra lexicogrfica satisfeita por um nico p.

5.3 Algoritmo
Se acrescentarmos a regra lexicogrfica heurstica Simplex (veja seo 4.2) ob-
teremos o seguinte

Algoritmo Simplex Lexicogrfico Recebe uma matriz D sobre M N D


e elementos n e m de N e M respectivamente; devolve matrizes F e G n
m
sobre M M tais que F G = I , G [ , m] = I [ , m] e GD simples com
relao a n, m.
Feofiloff cap. 5 Algoritmo Simplex 52

Cada iterao comea com uma enumerao de N , uma parte L de M m,


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] : f

A LTERNATIVA I: h diferente de m .
C ASO I.1: E [h, k] > 0 e f [h] 0 ou E [h, k] < 0 e f [h] 0
para algum k em N n . k
Seja L o conjunto de todos os p em L tais que E [p, k] > 0. L

C ASO I.1A: f [h] /E [h, k] f [p] /E [p, k] para todo p em L .


Defina 0 , L0 , h0 , F 0 , G0 e E 0 como indicado abaixo. 0
Comece nova iterao com 0 , L0 , h0 , P + h, Q + k, F 0 , G0 , E 0
nos papis de , L, h, P , Q, F , G, E .
C ASO I.1B: f [h] /E [h, k] > f [p] /E [p, k] para algum p em L .
Defina q, F 0 , G0 e E 0 como indicado abaixo.
Comece nova iterao com Q q + k, F 0 , G0 , E 0
nos papis de Q, F , G, E .
C ASO I.2: E [h, N n] o e f [h] > 0 ou E [h, N n] o e f [h] < 0 .
Devolva F e G e pare.
C ASO I.3: E [h, N n] = o e f [h] = 0 .
Seja L0 o conjunto L + h.
Escolha h0 em M L0 se possvel distinto de m.
Comece nova iterao com L0 e h0 nos papis de L e h.
A LTERNATIVA II: h igual a m .
C ASO II.1: E [h, k] < 0 para algum k em N n . k
Seja L o conjunto de todos os p em L tais que E [p, k] > 0. L

C ASO II.1A: L vazio .


Devolva F e G e pare.
C ASO II.1B: L no vazio .
Defina q, F 0 , G0 e E 0 como indicado abaixo.
Comece nova iterao com Q q + k, F 0 , G0 , E 0
nos papis de Q, F , G, E .
C ASO II.2: E [h, N n] o .
Devolva F e G e pare. 2

Resta descrever os detalhes dos casos I.1A, I.1B e II.1B. O caso I.1A consiste
no seguinte:

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


Feofiloff cap. 5 Algoritmo Simplex 53

Adote uma enumerao 0 de N na qual n seja o primeiro elemento 0


e os elementos de Q + k venham logo a seguir (em qualquer ordem).
Seja L0 o conjunto L + h.
Escolha h0 em M L0 , se possvel distinto de m.

(A operao de pivotao definida 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 [p, ] /E [p, k] p


seja lexicograficamente mnimo com relao enumerao .
Seja q o elemento de Q tal que E [p, q] = 1.
Seja F 0 , G0 , E 0 o resultado da pivotao de F, G, E em torno de p, k.

A escolha lexicogrfica de p deve ser entendida assim: escolha p em L de modo


que
1 1
E [p, ] l E [i, ] (5.a)
E [p, k] E [i, k]
para todo i em L . A propsito, L parte de P , uma vez que a matriz E [LP, ]
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, ] m o para cada i em P ,1
(i1) E [P, Q] de bijeo , E [M P, Q] = O e E [LP, ] = O ,
(i2) FG = I ,
(i3) GD = E ,
(i4) G [ , M P ] = I [ , M P ] ,
(i5) F [ , M P ] = I [ , M P ] e F [ , P ] = D [ , Q] Je ,
(i6) D [M P, Q] = G [M P, P ] D [P, Q] ,
(i7) D [P, Q] Je G [P, P ] = I ,
onde Je a transposta da matriz de bijeo E [P, Q] . Je

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 lexicogrfica em (i0) estrita; compare

1
No entanto, a proposio os elementos de Q precedem os demais elementos de N n na
enumerao no invariante!
Feofiloff cap. 5 Algoritmo Simplex 54

b c d e f g h a

1 0 0 0 0 0 1 1
0 1 0 1 1/2 3/2 1/2 0
0 0 1 9 5/2 11/2 1/2 0
0 0 0 24 9 57 10 1

1 1 1
E[3,7] E [3, ] l E[2,7] E [2, ] l E[1,7] E [1, ]

1 0 2 18 5 11 0 1
0 1 1 8 2 4 0 0
0 0 2 18 5 11 1 0
0 0 20 204 41 53 0 1

1 1
E[2,6] E [2, ] l E[1,6] E [1, ]

1 11/4 3/4 4 1/2 0 0 1


0 1/4 1/4 2 1/2 1 0 0
0 11/4 3/4 4 1/2 0 1 0
0 53/4 27/4 98 29/2 0 0 1

1 1
E[2,5] E [2, ] l E[3,5] E [3, ]

1 5/2 1/2 2 0 1 0 1
0 1/2 1/2 4 1 2 0 0
0 5/2 1/2 2 0 1 1 0
0 41/2 1/2 40 0 29 0 1

2 5 1 4 0 2 0 2
1 2 0 2 1 3 0 1
1 0 0 0 0 0 1 1
1 18 0 42 0 30 0 2

Figura 5.2: Exemplo de aplicao do Simplex Lexicogrfico (compare com a


figura 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 lexicogrficas que ditam a escolha de p em cada iterao. A exe-
cuo do algoritmo termina no caso II.2.
Feofiloff 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 l0 l0
a ordem lexicogrfica induzida por 0 . preciso mostrar ento que no fim do
caso I.1A teremos
E 0 [i, ] m0 o para cada i em P + h , (5.b)

e que no fim dos casos I.1B e II.1B teremos

E 0 [i, ] m o para cada i em P . (5.c)

D EMONSTRAO DE (5.b): J mostramos, ao analisar a heurstica Simplex,


que
E 0 [P +h, n] = f 0 [P +h] o

e que E 0 [P +h, Q+k] uma matriz de bijeo. Na enumerao 0 , o primeiro


elemento n e os elementos de Q + k precedem todos demais elementos de N .
Portanto, o vetor E 0 [i, ] lexicograficamente positivo. 2

D EMONSTRAO DE (5.c): preciso mostrar que, para todo i em P , o vetor


E 0 [i, ] lexicograficamente positivo com relao enumerao . Considere
inicialmente o caso i = p. Ento
1
E 0 [p, ] = E [p, ] .
E [p, k]
Como E [p, k] positivo e E [p, ] lexicograficamente positivo, E 0 [p, ] tambm
lexicograficamente positivo. Suponha agora que i diferente de p e E [i, k] no
positivo. Por definio,

E [i, k]
E 0 [i, ] = E [i, ] E [p, ] = E [i, ] E [i, k] E 0 [p, ] .
E [p, k]
Como E [i, ] e E 0 [p, ] so lexicograficamente positivos, tambm E 0 [i, ] lexico-
graficamente positivo. Suponha, finalmente, que i diferente de p e E [i, k]
positivo. Por definio,

1 1
E 0 [i, ] = E [i, k] ( E [i, ] E [p, ] ) .
E [i, k] E [p, k]
Portanto, E 0 [i, ] m o em virtude de (5.a). Ademais, a expresso entre parnteses
no pode ser nula uma vez que i e p so elementos distintos de P e E [P, Q]
uma matriz de bijeo. Portanto,

E 0 [i, ] m o ,

como queramos demonstrar. 2


Feofiloff 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. A situao mais delicada quando ocorre o caso I.1B
ou o caso II.1B. Em que sentido o algoritmo est fazendo progresso nesses ca-
sos? A resposta a esta pergunta est nas seguintes observaes, que dependem
crucialmente do invariante (i0).

Fato 5.1 No fim de cada ocorrncia do caso I.1B,

o l E 0 [h, ] l E [h, ] ou o m E 0 [h, ] m E [h, ] .

No fim de cada ocorrncia do caso II.1B, E 0 [h, ] m E [h, ] .

D EMONSTRAO : Por definio do caso I.1B, temos f [h] /E [h, k] >


f [p] /E [p, k] . Logo,
1 1
E [h, ] m E [p, ] .
E [h, k] E [p, k]
Suponha E [h, k] positivo. Ento
E [h, k]
E [h, ] m E [p, ] .
E [p, k]
Por outro lado, como E [p, k] positivo, o invariante (i0) garante que
E [h, k]
E [p, ] m o .
E [p, k]
Como
E [h, k]
E 0 [h, ] = E [h, ] E [p, ] ,
E [p, k]
conclumos que o l E 0 [h, ] l E [h, ] . Se E [h, k] for negativo, um racioccio an-
logo mostra que o m E 0 [h, ] m E [h, ] . Finalmente, considere o caso II.1B. Como
E [h, k] negativo, E [p, k] positivo e
E [h, k]
E 0 [h, ] = E [h, ] E [p, ] ,
E [p, k]
o invariante (i0) aplicado ao vetor E [p, ] garante que E 0 [h, ] m E [h, ] . 2

Podemos mostrar agora por que o algoritmo converge. Imagine que estamos
diante de uma seqncia de iteraes em que ocorrem somente o caso I.1B ou
somente o caso II.1B, donde L e P permanecem constantes. Sejam Q e E os
valores das variveis Q e E no incio da primeira das iteraes da seqncia e
defina Q eE analogamente para a ltima das iteraes da seqncia. Como a
enumerao no se altera ao longo da seqncia de iteraes em questo, o
fato 5.1 garante que

E [h, ] l E
[h, ] ou E [h, ] m E
[h, ] ,
Feofiloff cap. 5 Algoritmo Simplex 57

donde E [h, ] 6= E
[h, ] . Nessas condies, o lema abaixo garante que Q 6= Q.

Como o nmero de subconjuntos de N finito, nossa seqncia de iteraes
necessariamente finita.

Lema 5.2 (da repetio de bases) Se Q = Q


ento E [h, ] = E
[h, ] .

D EMONSTRAO : 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 [h, P ] D [P, Q] = G
[h, P ] D [P, Q] ,

pois ambas as expresses so iguais a D [h, Q] . Em virtude do invariante (i7),


D [P, Q] tem uma inversa direita:

D [P, Q] Je G [P, P ] = I ,

onde Je a transposta da matriz de bijeo E [P, Q] . Logo, G [h, P ] = G


[h, P ] . Em
virtude de (i4),
G [h, ] = G
[h, ] .

Finalmente, em virtude de (i3), E [h, ] = G [h, ] D = G [h, ] . 2


[h, ] D = E

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 N n 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
2n1 .

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 2n1 ser multi-
plicado por mais de 1000.) Mas a experincia mostra que, em geral, o nmero
de iteraes fica 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 2n1 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 figuras 5.3 a 5.5 o resultado da
aplicao do algoritmo ao membro n = 9 da famlia.
Feofiloff 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 L
0 4 1 1 0 0 0 0 5
0 8 4 0 1 1 0 0 85
0 16 8 0 4 0 1 1 545
0 8 4 0 2 0 1 0 40

b d c e f g h i a
1 1 0 0 0 0 0 0 5 L
0 4 1 1 0 0 0 0 5 L
0 8 0 4 1 1 0 0 65
0 16 0 8 4 0 1 1 505
0 8 0 4 2 0 1 0 60

1 1 0 0 0 0 0 0 5 L
4 0 1 1 0 0 0 0 25 L
8 0 0 4 1 1 0 0 25
16 0 0 8 4 0 1 1 425
8 0 0 4 2 0 1 0 100

e b c f d g h i a
1 1 0 0 0 0 0 0 5 L
4 0 1 1 0 0 0 0 25 L
8 0 0 4 1 1 0 0 25 L
16 0 0 8 0 4 1 1 325
8 0 0 4 0 2 1 0 150

1 1 0 0 0 0 0 0 5 L
0 4 1 1 0 0 0 0 5 L
0 8 0 4 1 1 0 0 65 L
0 16 0 8 0 4 1 1 245
0 8 0 4 0 2 1 0 190

1 1 0 0 0 0 0 0 5 L
0 4 1 1 0 0 0 0 5 L
0 8 4 0 1 1 0 0 85 L
0 16 8 0 0 4 1 1 205
0 8 4 0 0 2 1 0 210

Figura 5.3: Continua na prxima figura.


Feofiloff cap. 5 Algoritmo Simplex 59

1 1 0 0 0 0 0 0 5 L
4 0 1 1 0 0 0 0 25 L
8 0 4 0 1 1 0 0 125 L
16 0 8 0 0 4 1 1 125
8 0 4 0 0 2 1 0 250

f b g c d h e i a
1 1 0 0 0 0 0 0 5 L
4 0 1 1 0 0 0 0 25 L
8 0 4 0 1 1 0 0 125 L
16 0 8 0 0 4 1 1 125 L
8 0 4 0 0 2 0 1 375

1 1 0 0 0 0 0 0 5 L
4 0 1 1 0 0 0 0 25 L
8 0 4 0 1 1 0 0 125 L
16 0 8 0 0 4 1 1 125 L
8 0 4 0 0 2 1 0 250

1 1 0 0 0 0 0 0 5 L
0 4 1 1 0 0 0 0 5 L
0 8 4 0 1 1 0 0 85 L
0 16 8 0 0 4 1 1 205 L
0 8 4 0 0 2 1 0 210

1 1 0 0 0 0 0 0 5 L
0 4 1 1 0 0 0 0 5 L
0 8 0 4 1 1 0 0 65 L
0 16 0 8 0 4 1 1 245 L
0 8 0 4 0 2 1 0 190

1 1 0 0 0 0 0 0 5 L
4 0 1 1 0 0 0 0 25 L
8 0 0 4 1 1 0 0 25 L
16 0 0 8 0 4 1 1 325 L
8 0 0 4 0 2 1 0 150

1 1 0 0 0 0 0 0 5 L
4 0 1 1 0 0 0 0 25 L
8 0 0 4 1 1 0 0 25 L
16 0 0 8 4 0 1 1 425 L
8 0 0 4 2 0 1 0 100

1 1 0 0 0 0 0 0 5 L
0 4 1 1 0 0 0 0 5 L
0 8 0 4 1 1 0 0 65 L
0 16 0 8 4 0 1 1 505 L
0 8 0 4 2 0 1 0 60

Figura 5.4: Continua na prxima figura.


Feofiloff cap. 5 Algoritmo Simplex 60

1 1 0 0 0 0 0 0 5 L
0 4 1 1 0 0 0 0 5 L
0 8 4 0 1 1 0 0 85 L
0 16 8 0 4 0 1 1 545 L
0 8 4 0 2 0 1 0 40

1 1 0 0 0 0 0 0 5 L
4 0 1 1 0 0 0 0 25 L
8 0 4 0 1 1 0 0 125 L
16 0 8 0 4 0 1 1 625 L
8 0 4 0 2 0 1 0 0

Figura 5.5: Concluso das duas figuras anteriores. As figuras mostram a


aplicao do algoritmo Simplex Lexicogrfico a um sistema com 9 colunas.
O algoritmo executa 2(91)/2 iteraes. As figuras 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 m2 , uma vez que o resultado das comparaes lexicogrficas
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 .

(A ttulo de comparao, a multiplicao de G por D requer m2 n multiplicaes


e outras tantas adies.)
Qual o custo de uma operao aritmtica? O universo 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 lexicogrficas.
Feofiloff 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 [ , m] = I [ , m] e a
matriz GD simples com relao a n, m.
O algoritmo importante no s do ponto de vista computacional mas tam-
bm do ponto de vista conceitual: ele prova a existncia de um matriz G com as
propriedades enunciadas.
O algoritmo executa cerca de 2n1 iteraes no pior caso, onde n o nmero
de colunas da matriz D, mas em geral converge bem antes.
claro que o algoritmo Simplex pode ser executado de modo aproximado,
com aritmtica de ponto flutuante. Uma tal implementao aproximada pode
cometer erros arbitrariamente grandes. H um grande repertrio de truques
[Chv83] que procuram reduzir tais erros.

5.8 Apndice: Segunda fase do Simplex


Pode ser instrutivo examinar a verso especializada do algoritmo Simplex Lexi-
cogrfico que se aplica a matrizes D que tm a seguinte forma: existe uma parte
Q0 de N n tal que
D [M m, Q0 ] de bijeo , D [M m, n] o e D [m, Q0 ] = 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 Q0 precedam os elementos de N n Q0 . 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:

C ASO 1: E [m, k] < 0 para algum k em N n .


Seja P o conjunto dos p em M m para os quais E [p, k] > 0.
C ASO 1A: P vazio .
Devolva F e G e pare (E simples ilimitada).
C ASO 1B: P no vazio .
Escolha qualquer p em P tal que o vetor E [p, ] /E [p, k]
seja lexicograficamente mnimo em relao enumerao .
Feofiloff cap. 5 Algoritmo Simplex 62

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


Comece nova iterao com F 0 , G0 e E 0 nos papis de F , G e E .
C ASO 2: E [m, N n] o .
Devolva F e G e pare (E simples solvel). 2

No incio de cada iterao, para cada i em M m, o vetor E [i, ] lexicogra-


ficamente positivo com relao enumerao . Ademais, existe uma parte Q
de N tal que E [M m, Q] uma matriz de bijeo e o vetor E [m, Q] nulo.
O algoritmo converge porque duas iteraes diferentes jamais comeam com
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 Lexicogrfico 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 eficaz, foi demonstrada por Bland [Bla77]. A regra
de Bland consiste no seguinte:
Adote uma enumerao arbitrria sobre o conjunto N n;
essa enumerao permanece fixa 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 definio 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 [p]/E [p, k] < f [i]/E [i, k]
ou f [p]/E [p, k] = f [i]/E [i, k] mas qp < qi ,
onde qi o elemento de Q tal que E [i, qi ] = 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 2n1 iteraes no pior
caso.

Exerccios
5.1 Verifique que a ordem lexicogrfica entre vetores sobre N relativa a qual-
quer enumerao de N reflexiva (x l x), transitiva (se x l y e y l z
ento x l z) e antisimtrica (se x l y e y l x ento x = y).
Feofiloff cap. 5 Algoritmo Simplex 63

5.2 Suponha que y m o em relao a uma dada enumerao do conjunto de


ndices. Mostre que x y l 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 h1, 2, 3i e suponha que a seqncia de vetores estrita-
mente decrescente no sentido lexicogrfico (isto , a m b m c m . . .). 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 Lexicogrfico 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 Lexicogrfico limitado
pela soma

n 1  + + n1 
0 m1 .
Captulo 6

Forma tradicional do Simplex

A, b, c
GA , Gb , c + gA

O algoritmo Simplex discutido nos captulos anteriores opera sobre uma ma-
triz em que uma determinada coluna e uma determinada linha foram destaca-
das para receber tratamento especial. Para aplicar o algoritmo ao problema de
programao linear (de que trataremos no captulo 7), conveniente separar a
coluna especial e a linha especial da matriz, e tratar esses dois objetos como ve-
tores. Em outras palavras, conveniente transformar ternos da forma D, n, m
em que D uma matriz e n e m so ndices em ternos da forma A, b, c em
que A uma matriz e b e c so vetores. A reformulao meramente notacional,
mas vale a pena discut-la com algum vagar. o que faremos neste captulo.

6.1 Sistemas matriz-vetor-vetor


Um sistema sobre M N um terno A, b, c que consiste em uma 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 definio na seo 3.1) ento o correspondente sistema A, b, c definido
por
A = D [M
m,
N n] , b = D [M
m,
n ] , c = D [m,
N 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 um sistema sobre M N ento a correspondente
matriz D resulta da justaposio de A, b e c:
D [M, N ] = A , D [M, n ] = b , D [m,
N] = 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 [m,
n ] arbitrrio e irrelevante. claro que D uma matriz sobre
(N +
(M +m) n), sendo m sua linha especial e n sua coluna especial.

64
Feofiloff cap. 6 Forma tradicional do Simplex 65

0 0 0 1
0 0 1 0
A 0 1 0 0 b
1 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

c 0 0 0 0

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

0 0 0 1
0 0 1 0
A 0 1 0 0 b
1 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0

c < 0 0 0 0

Figura 6.2: Um sistema simples ilimitado. Compare com a figura 3.3.


Deduza da figura 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 g
M tais que F G = I e o sistema

GA , Gb , c + gA

simples (solvel, invivel ou ilimitado).


Feofiloff 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 1/8 3/8 0 0 1 1/8 3/8 3


0 2 1 0 3/8 1/8 0 1 0 3/8 1/8 3
0 2 3 0 1/4 1/4 1 0 0 1/4 1/4 4
1 7/8 3/8 0 0 0 7/8 3/8

Figura 6.3: Digamos que A, b, c o sistema representado no topo da figura.


Sejam F , G e g os objetos definidos na parte inferior esquerda da figura (g
est representado sob G). Verifique que F G = I . Verifique que o sistema
GA, Gb, c + gA na parte inferior direita da figura 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 ao algoritmo Simplex (veja seo 5.3), que devolver matrizes F e G
, m

tais que F G = I , G [, m]
e GD simples. Defina F , G e g da seguinte
= I [, m] F
maneira: G
g
F = F [M, M ] , G = G [M, M ] e g = G [m,
M] . (6.c)

Devolva F , G e g e pare.
o resultado da justaposio
claro que F G = I . claro tambm que GD

de GA, Gb e c + gA. Como GD simples, o sistema GA, Gb, c+gA simples.
Portanto, o algoritmo tem o comportamento que prometemos. 2
Como j observamos na seo 5.5, o nmero de iteraes do algoritmo
limitado por 2n , sendo n = |N |. Como j observamos na seo 5.6, cada iterao
executa menos que 4(m + 1)(n + 1) operaes aritmticas, onde m = |M |.
Se os componentes do sistema A, b, c so nmeros racionais ento F , G e g
tambm tero componentes racionais, uma vez que o algoritmo s envolve as
quatro operaes aritmticas.

6.4 Invariantes
A ttulo de curiosidade, eis os invariantes do Simplex (sees 4.3 e 4.4) traduzi-
dos para a nova notao: no incio de cada iterao existem partes P e Q de M
e N respectivamente, matrizes F e G, um vetor g, e um sistema A0 , b0 , c0 tais que

(i0) b0 [P ] o ,
(i1) A0 [P, Q] de bijeo, A0 [M P, Q] = O e c0 [Q] = o ,
(i2) F G = I ,
Feofiloff cap. 6 Forma tradicional do Simplex 67

(i3) A0 = GA, b0 = Gb e c0 = c + gA ,
(i4) G [ , M P ] = I [ , M P ] e g [M P ] = o ,
(i5) F [ , M P ] = I [ , M P ] e F [ , P ] = A [ , Q] Je ,
(i6) A [M P, Q] = G [M P, P ] A [P, Q] e c [Q] = g [P ] A [P, Q] ,
(i7) A [P, Q] Je G [P, P ] = I ,

onde Je a transposta da matriz de bijeo A0 [P, Q] . O vetor g que o algoritmo


devolve redundante: ele poderia ser calculado a partir de A, c, G e A0 . De
fato,
g [P ] = c [Q] JG
e [P, P ] (6.d)

de acordo com (i6) e (i7) e g [M P ] = 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 F G = I e o sistema GA, Gb, c + gA simples.
1 2 3 1 1 0 0 10
2 3 1 1 0 1 0 7
1 1 3 2 0 0 1 8
3 1 5 2 0 0 0
Parte II

Programao Linear

68
Captulo 7

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 justificativa.
A heurstica Simplex e a disciplina de programao linear foram criados
por George Dantzig[Dan63] e Leonid Kantorovich[Kan39] durante a II Guerra
Mundial (entre e aproximadamente). O Simplex foi se tornando cada
vez mais popular desde ento.1

7.1 Definio 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. Um vetor x em X(A, b) uma


soluo do problema CP(A, b, c) se cx cx0 para todo x0 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
Feofiloff cap. 7 Problema cannico primal 70

minimizar 4x1 + 1x2 + 5x3 + 3x4


sujeito a 1x1 1x2 1x3 + 3x4 = 2
5x1 + 1x2 + 3x3 8x4 = 44
1x1 1x2 4x3 + 5x4 = 3
e x1 , x2 , x3 , x4 0

Figura 7.1: Um problema cannico primal, escrito em


notao no-matricial.

vazio. Dizemos que o problema invivel2 se X(A, b) = e vivel em caso invivel


contrrio. vivel
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 verificar 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

64/9 31/9 5/3 0

Figura 7.2: A parte superior da figura exibe um sistema A, b, c, com b


direita e c abaixo da matriz A. (Compare com a figura 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 verificar que x minimiza cx.

Observao sobre terminologia. Para muitos praticantes de programao soluo


linear, uma soluo qualquer vetor x tal que Ax = b; uma soluo vivel vivel
qualquer vetor em X(A, b); e uma soluo tima qualquer vetor x em soluo
tima
2
No confundir com o conceito de sistema simples invivel definido na seo 6.2.
3
No confundir com o conceito de sistema simples ilimitado definido na seo 6.2.
Feofiloff 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 [h, ] o e b [h] > 0 ou A [h, ] o e b [h] < 0 .

Ento o problema CP(A, b, c) no tem soluo: para todo vetor x o tem-se


A [h, ] x 0 < b [h] ou A [h, ] x 0 > b [h] , donde Ax 6= 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[P, Q] de bijeo , b[P ] o ,


A[M P, N Q] = O , A[M P, Q] = O , b[M P ] = o ,
c[N Q] o , c[Q] = o .

Seja x o vetor definido pelas equaes

x [N Q] = o e Ax = b .

Existe um e um s vetor x que satisfaz estas condies. claro que x [Q] =


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

cx = 0 .

Por outro lado, cx0 o para todo x0 em X(A, b), pois c o. Logo, x soluo
do problema CP(A, b, c).

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[P, k] o , A[P, Q] de bijeo , b[P ] o ,


A[M P, k] = o , A[M P, Q] = O , b[M P ] = o ,
c[k] < 0 , c[Q] = o .
Feofiloff 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: A figura define um sistema 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 figura descreve um sistema simples


solvel A, b, c. O problema CP(A, b, c) simples solvel. Na parte
inferior da figura 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 figura define um sistema simples


ilimitado A, b, c. O problema CP(A, b, c) simples ilimitado. A parte
inferior da figura define vetores x e x0 . Para qualquer positivo, o
vetor x + x0 est em X(A, b) e tem custo 8, o que comprova o
carter ilimitado do problema.
Feofiloff cap. 7 Problema cannico primal 73

Ento o problema CP(A, b, c) ilimitado, pelas razes que passamos a expor.


Seja x o vetor definido pelas equaes

x [N Q] = o e Ax = b .

Existe um e um s vetor que satisfaz estas equaes; claro que x o. Seja x0 o


vetor definido pelas equaes

x0 [N Qk] = o , x0 [k] = 1 e Ax0 = o .

Existe um e um s vetor que satisfaz estas equaes. claro que x0 [Q] =


Ae[Q, P ] A [P, k] e portanto x0 o. Para qualquer positivo, bvio que o vetor
x + x0 est em X(A, b). Ademais,

c (x + x0 ) = c [k] ,

donde c (x + x0 ) tanto menor quanto maior for . Portanto, o problema


CP(A, b, c) ilimitado.

7.3 O Simplex resolve o problema


Para resolver um problema cannico primal arbitrrio, basta reduz-lo a um pro-
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 F G = I , os problemas CP(A, b, c) e
CP(GA, Gb, c + gA) tm o mesmo conjunto de solues.

D EMONSTRAO : Se Ax = b ento claro que (GA)x = Gb. Reciproca-


mente, se (GA)x = Gb ento

Ax = (F G)Ax = F (GA)x = F (Gb) = (F G)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. 2

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 F G = I e
o sistema A0 , b0 , c0 simples, sendo

A0 = GA , b0 = Gb e c0 = c + gA .
Feofiloff cap. 7 Problema cannico primal 74

1 2 1 0 1 0 0 12
2 5 0 1 0 1 0 10
1 3 1 1 0 0 1 2
0 1 2 1 0 1 0

Figura 7.6: Ilustrao da observao 7.1. Considere o sistema A, b, c definido


pela figura. 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 A0 , b0 , c0 simples invivel, o problema CP(A, b, c) invivel. Se A0 , b0 , c0


simples solvel, ento o vetor bsico x do sistema A0 , b0 , c0 soluo do pro-
blema CP(A, b, c). Se A0 , b0 , c0 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 tem soluo
ou invivel ou ilimitado. O algoritmo Simplex reduz qualquer problema
cannico primal a um problema equivalente que pode ser resolvido por mera
inspeo.
Convm acrescentar duas observaes sobre terminologia. Quando o n- terminologia
mero cx interpretado como custo do vetor x, diz-se que (c + gA) x o custo
reduzido de x. Diz-se que uma soluo x do problema CP(A, b, c) bsica se x
o vetor bsico do problema simples solvel CP(GA, Gb, c + gA).
Durante a discusso do Simplex, adiamos a anlise da seguinte questo de
consistncia: possvel reduzir um dado sistema A, b, c a dois sistemas simples
de tipos diferentes? A resposta a esta pergunta fica clara agora. Digamos que
F, G, g, F 0 , G0 , g 0 so tais que F G = I , F 0 G0 = I e os sistemas

GA, Gb, c + gA e G0 A, G0 b, c + g 0 A

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.
Feofiloff cap. 7 Problema cannico primal 75

7.5 Exemplo
Uma empresa fabrica quatro modelos de um produto. Digamos que xi o n-
mero de unidades do modelo i produzidas. Cada produto passa por dois est-
gios de fabricao. O primeiro estgio dispe de no mais que 600 homens-hora
e o segundo de no mais que 400 homens-hora. Digamos que o nmero de
homens-hora necessrios, em cada estgio, para a fabricao de cada modelo do
produto impe as seguintes restries:

4x1 + 9x2 + 7x3 + 10x4 600


1x1 + 1x2 + 3x3 + 40x4 400 .

Digamos que o lucro total 12x1 + 20x2 + 18x3 + 40x4 . Queremos planejar a
produo de modo a maximizar o lucro total.
Maximizar o lucro o mesmo que minimizar 12x1 20x2 18x3 40x4 .
Assim, nosso problema equivale ao seguinte problema cannico primal: encon-
trar nmeros no-negativos x1 , . . , x6 que minimizem 12x1 20x2 18x3 40x4
respeitadas as restries

4x1 + 9x2 + 7x3 + 10x4 + 1x5 + 0x6 = 600


1x1 + 1x2 + 3x3 + 40x4 + 0x5 + 1x6 = 400 .

As variveis de folga x5 e x6 correspondem a modelos fictcios 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
figura 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 figura 7.8 (verifique que G invers-


vel). O sistema GA, Gb, c+gA (figura 7.9) simples solvel; sua base composta
pelas colunas 1 e 4. O plano de produo timo
1 1
x1 = 3 400 , x2 = x3 = 0 , x4 = 3 20 , x5 = x6 = 0 .

Com este plano, teremos cx = 13 5600. Os nmeros so fracionrios porque


nosso modelo no exige que x1 , x2 , x3 , x4 sejam inteiros; tal exigncia tiraria o
problema do mundo da programao linear e o tornaria bem mais complexo. programao
Talvez nossa empresa queira adotar x1 = 133, x2 = x3 = 0 e x4 = 7 e torcer inteira
para que o arredondamento no afete muito o lucro.
Feofiloff cap. 7 Problema cannico primal 76

4/15 1/15
1/150 4/150
44/15 4/15

Figura 7.8: Matriz G e vetor g.

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 7.9: Sistema GA, Gb, c + gA.

Exerccios
7.1 Suponha que para todo x em X(A, b) existe x0 em X(A, b) tal que cx0 < cx.
O problema CP(A, b, c) ilimitado?
7.2 Suponha que c o. Mostre que o vetor nulo soluo do problema can-
nico CP(A, o, c).
7.3 Seja x um vetor em X(A, b) e g um vetor tal que c+gA o e (c+gA)x = 0.
Prove que x soluo do problema CP(A, b, c).
7.4 Os problemas cannicos CP(A, b, c) e CP(A, b, c) podem ser ambos ilimi-
tados?
7.5 A folga de x o conjunto, digamos S(x), de todos os ndices j para os
quais x [j] no nulo. Suponha que A, b, c um sistema simples solvel e
que x o correspondente vetor bsico. Mostre que a folga de x minimal,
ou seja, que no existe x0 em X(A, b) tal que S(x0 ) S(x), em que indica
subconjunto prprio. (Veja apndice C, pgina 178.)
7.6 Seja A uma matriz sobre M N , b um vetor sobre M e i um elemento
de M . Mostre que o problema de encontrar o menor valor de b [i] para o
qual X(A, b) no vazio equivale ao problema CP(A [M i, ] , b [M i] , A [i, ] ).
Captulo 8

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

O problema cannico primal, de que tratou o captulo anterior, est intimamente


relacionado com um segundo problema bsico de programao linear. A relao
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 Definio 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 reflexo da condio c + gA o,
presente na definio de sistema simples solvel (seo 6.2).

77
Feofiloff cap. 8 Problema cannico dual 78

maximize 2y1 + 44y2 3y3


sujeito a y1 + 5y2 + y3 4
y1 + y2 y3 1
y1 + 3y2 4y3 5
3y1 8y2 + 5y3 3

Figura 8.1: Um problema cannico dual (compare com fi-


gura 7.1), escrito em notao no-matricial.

Problemas solveis, inviveis e ilimitados. Um vetor y em Y (A, c) solu-


o do problema cannico dual CD(A, c, b) se yb y 0 b para todo y 0 em Y (A, c).
O problema 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.

D EMONSTRAO (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 . 2

O lema s vezes chamado, um tanto pomposamente, de teorema fraco teorema fraco


da dualidade. Vale o seguinte corolrio, bvio mas importante: Se o problema da dualidade
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).
Feofiloff 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 definido pela


parte direita da figura (o mesmo da figura 7.2). Seja y o vetor repre-
sentado esquerda de A, na vertical. Verifique 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 suficiente 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.

11/18 1 1 1 3 2
5/6 5 1 3 8 44
7/9 1 1 4 5 3
4 1 5 3

64/9 31/9 5/3 0

Figura 8.3: Sistema A, b, c (o mesmo da figura 8.2) e vetores y ( es-


querda de A) e x (abaixo de c). Verifique 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 [k] > 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
tem folgas complementares se a folga de x disjunta da folga de y. Se N denota
o conjunto de ndices de colunas de A, a definio tambm pode ser formulada
assim: existe uma parte Q de N tal que (yA) [Q] = c [Q] e x [N 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.

D EMONSTRAO : Suponha que P x, y tem folgas complementares. Ento


cx yb = cx yAx = (c yA)x = j (c yA) [j] x [j] = 0. Logo, cx = yb.
Feofiloff cap. 8 Problema cannico dual 80

P
Suponha agora que cx = yb. Ento cxyAx = 0, donde j (cyA) [j] x [j] =
0. Como x o e yA c, cada um dos termos desta soma menor ou igual a 0.
Como a soma nula, cada um de seus termos deve ser nulo. 2

8.3 Vetores de inviabilidade


A inviabilidade 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 0 b > 0 para algum vetor y 0 em


Y (A, o) ento o problema primal CP(A, b, c) invivel e o problema dual
CD(A, c, b) ilimitado ou invivel.

D EMONSTRAO : Seja y 0 um vetor como o descrito no enunciado. Para


todo x em X(A, b) teramos a contradio 0 < y 0 b = y 0 (Ax) = (y 0 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 0 )A = yA + y 0 A c + o = c, e portanto o vetor
y + y 0 est em Y (A, c). O valor desse vetor, igual a yb + y 0 b, tanto maior
quanto maior for . Portanto o problema CD(A, c, b) ilimitado. 2

Diante desse lema, razovel que todo vetor y 0 em Y (A, o) que satisfaa
a condio y 0 b > 0 seja chamado vetor de inviabilidade do problema primal. vetor de
CP(A, b, c). inviabilidade
primal

1 1/2 2 2 4 0 24
0 0 1 1 2 0 12
1 1 2 0 5 1 10
1 1 1 1 2 1 2
1 1 1 1

Figura 8.4: Ilustrao do lema 8.3. A figura mostra um sis-


tema A, b, c, um vetor y 0 ( esquerda de A) e um vetor y ( es-
querda de y 0 ). Verifique que y est em Y (A, c), que y 0 est em
Y (A, o), e que y 0 b positivo. Conclua que CP(A, b, c) invivel
e CD(A, c, b) ilimitado.

Lema 8.4 (da inviabilidade dual) Se cx0 < 0 para algum vetor x0 em
X(A, o) ento o problema dual CD(A, c, b) invivel e o problema pri-
mal CP(A, b, c) ilimitado ou invivel.
Feofiloff cap. 8 Problema cannico dual 81

D EMONSTRAO : Seja x0 um vetor como o descrito no enunciado. Para


todo y em Y (A, c) teramos a contradio 0 > cx0 yAx0 = 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 + x0 est em X(A, b), pois A(x + x0 ) =
Ax + Ax0 = b + o = b e x + x0 o. Ademais, o custo de x + x0 , igual a
cx + cx0 , tanto menor quanto maior for . Portanto, o problema CP(A, b, c)
ilimitado. 2

Esse lema justifica o uso do termo vetor de inviabilidade do problema dual vetor de
CD(A, c, b) para designar qualquer vetor x0 em X(A, o) tal que cx0 < 0. inviabilidade
dual

2 2 4 8 24
1 1 2 4 12
2 0 5 4 10
1 1 2 0 2
1 1 1 8

5 7 0 0
2 2 0 1

Figura 8.5: Ilustrao do lema 8.5. Sistema sistema A, b, c, vetor


x (abaixo de c) e vetor x0 (abaixo de x). Verifique que x est em
X(A, b), que x0 est em X(A, o) e que cx0 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 consistem em vetores 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) x0 em X(A, o) e y 0 em Y (A, o) tais que cx0 < 0 e y 0 b > 0, ou
(2) y em Y (A, c) e y 0 em Y (A, o) tal que y 0 b > 0, ou
(3) x em X(A, b) e x0 em X(A, o) tal que cx0 < 0, ou
(4) x em X(A, b) e y em Y (A, c) tais que cx = yb.
Feofiloff cap. 8 Problema cannico dual 82

Nos itens (1) e (2), y 0 um vetor de inviabilidade do problema primal


CP(A, b, c). Nos itens (1) e (3), x0 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 F G = I e o sistema GA, Gb, c + gA simples.

C ASO 1: o sistema GA, Gb, c + gA simples invivel.


Seja h uma linha de inviabilidade. Defina o vetor y 0 da seguinte maneira: se
G [h, ] b > 0 ento y 0 = G [h, ] seno y 0 = G [h, ] . Submeta o sistema A, o, c
ao algoritmo Simplex, que devolver matrizes F0 e G0 e um vetor g0 tais
que F0 G0 = I e o sistema G0 A, G0 o, c + g0 A simples solvel ou simples
ilimitado.
C ASO 1.1: o sistema G0 A, G0 o, c + g0 A simples ilimitado.
Seja Q0 uma base de colunas e k uma coluna de ilimitao do sistema.
Seja x0 o vetor definido pelas equaes x0 [k] = 1, x0 [N Q0 k] = o e
(G0 A)x0 = o. Devolva x0 e y 0 e pare.
C ASO 1.2: o sistema G0 A, G0 o, c + g0 A simples solvel.
Devolva g0 e y 0 e pare.
C ASO 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 [N Q] = o e (GA)x = Gb). Seja
x0 o vetor definido pelas equaes x0 [k] = 1, x0 [N Qk] = o e (GA)x0 = o.
Devolva x e x0 e pare.
C ASO 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 [N Q] = o e (GA)x = Gb). Devolva x e g e pare. 2

Eis a anlise do algoritmo. No caso 1, claro que y 0 A o e y 0 b positivo.


Em particular, y 0 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 x0 est em X(G0 A, o), que idntico a X(A, o) pois G0
inversvel. Ademais, cx0 negativo pois

cx0 = (c + g0 A)x0 g0 Ax0


= (c + g0 A)[k] x0 [k] g0 o
= (c + g0 A)[k]

e (c + g0 A) [k] negativo. Portanto, o par de vetores x0 , y 0 satisfaz o item (1) do


enunciado do algoritmo.
Feofiloff cap. 8 Problema cannico dual 83

No caso 1.2 temos c + g0 A o e portanto g0 est em Y (A, c). Assim, o par


g0 , y 0 satisfaz o item (2) do enunciado do algoritmo.
No caso 2, o algoritmo devolve um vetor x em X(GA, Gb) e um vetor x0
em X(GA, o). Os vetores x e x0 tambm esto em X(A, b) e X(A, o) respectiva-
mente, pois G inversvel. Ademais,

cx0 = (c + gA)x0 gAx0


= (c + gA)[k] x0 [k] go
= (c + gA)[k] ,

donde cx0 negativo. Portanto, ao devolver x e x0 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 [N 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


O algoritmo 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
afirmaes:
(1) existem x0 em X(A, o) e y 0 em Y (A, o) tais que cx0 < 0 e y 0 b > 0;
(2) existe y em Y (A, c) e y 0 em Y (A, o) tal que y 0 b > 0;
(3) existe x em X(A, b) e x0 em X(A, o) tal que cx0 < 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

minx cx = maxy yb ,

onde min tomado sobre x em X(A, b) e max tomado sobre y em Y (A, c).
Essa identidade traduz no somente o caso (4) do enunciado do teorema, mas
tambm os casos (2) e (3), se estivermos dispostos a dizer que min cx = +
quando o problema primal invivel, que min cx = quando o problema
primal ilimitado, que max yb = quando o problema dual invivel e que
max yb = + quando o problema dual ilimitado. A igualdade s no vale no
caso (1), quando os dois problemas so inviveis. (Esse o caso, por exemplo,
Feofiloff cap. 8 Problema cannico dual 84

X vazio X no-vazio
Y primal invivel primal ilimitado
vazio dual invivel dual invivel
Y primal invivel primal solvel
no-vazio dual ilimitado dual solvel

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 com componentes 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
minx cx = maxy yb.
O algoritmo Simplex pode ser usado para resolver simultaneamente os dois
problemas. Para esclarecer de forma cabal a natureza dos dois problemas (am-
bos inviveis, um invivel e outro ilimitado, ou ambos solveis), basta exibir
dois vetores convenientes extrados dos conjuntos X(A, b), Y (A, c), X(A, o) e
Y (A, o).

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
ficam 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
Feofiloff 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 x cx ou
, y tal que c
um vetor x0 em X(A, o) tal que cx0 < 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 especificamente: dada uma matriz A e um vetor b, encontrar
um vetor x tal que x o e Ax = b. No difcil verificar 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 especificamente: 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]) descrevem as condies em que 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 0 em Y (A, o) tal que y 0 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 x0 em X(A, o) tal que cx0 < 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.

D EMONSTRAO DE 8.6: Submeta A, b, o ao Simplex. O algoritmo devol-


ver objetos F , G e g tais que F G = I e GA, Gb, gA simples. fcil verificar
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 [h, ] ou
G [h, ] satisfaz (2).
Feofiloff 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 0 b = y 0 Ax ox = 0. 2

D EMONSTRAO DE 8.7: Submeta A, o, c ao algoritmo Simplex, que devol-


ver objetos F , G e g tais que F G = 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 x0 que satisfaz (1).
As duas alternativas no podem ser simultaneamente verdadeiras: se assim
fosse, teramos a contradio 0 > cx0 yAx0 = yo = 0. 2

Exerccios
8.1 Prove que o problema CD(A, c, b) vivel se e s se o problema CP(A, o, c)
tem soluo. Prove a afirmao dual: o problema CP(A, b, c) vivel se e
s se o problema CD(A, o, b) tem soluo.
8.2 Se existe um vetor y 0 em Y (A, o) tal que y 0 b > 0 ento existe um vetor
y 00 em Y (A, o) tal que y 00 b 1. Se existe um vetor x0 em X(A, o) tal que
cx0 < 0 ento existe x00 em X(A, o) tal que cx00 1.
8.3 Mostre que para todo x em X(A, o), todo y em Y (A, o) e todo ndice j
tem-se (yA) [j] = 0 ou x [j] = 0.
8.4 [Chv83] Dada uma matriz A, vetores b e c, e um nmero , dizemos que
o par A, c implica o par b, se o sistema de inequaes yA c tem pelo
menos uma soluo e se todo y que satisfaz o sistema yA c tambm
satisfaz a inequao yb . Mostre que o teorema da dualidade equiva-
lente seguinte proposio: se A, c implica b, ento existe x o tal que
Ax = b e cx .
8.5 Encontre nmeros no-negativos x1 , x2 , x3 , x4 que satisfaam as equaes

2x1 + 4x2 + 2x3 = 4


x1 + 2x2 + x3 = 2
2x1 + 5x2 x4 = 10
x1 3x2 + x3 + x4 = 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 Definio do problema


O problema (geral) de programao linear, ou ppl, consiste no seguinte: Dadas ppl
matrizes A11 , A12 , A13 , A21 , A22 , A23 , A31 , A32 , A33 e vetores b1 , b2 , b3 , c1 , c2 ,
c3 , encontrar vetores x1 , x2 , x3 que

minimizem a expresso c1 x1 + c2 x2 + c3 x3
sujeita s restries x1 o
A11 x1 + A12 x2 + A13 x3 b1
A21 x1 + A22 x2 + A23 x3 = b2
A31 x1 + A32 x2 + A33 x3 b3
x3 o.

Estamos supondo que, para i = 1, 2, 3, as matrizes Ai1 , Ai2 e Ai3 tm um mesmo


conjunto Mi de ndices de linhas, e que Mi tambm o conjunto de ndices de bi .
Analogamente, estamos supondo que o vetor cj e as colunas de A1j , A2j e A3j
tm um mesmo conjunto Nj de ndices.
A matriz do ppl a matriz D que resulta da justaposio de A11 , . . , A33 , b1 ,
. . , b3 e c1 , . . , c3 , maneira da seo 6.1 (o i-simo bloco de linhas de D for-
mado por Ai1 , Ai2 , Ai3 , bi e a nica linha do quarto bloco c1 , c2 , c3 , 0). A funo
objetivo do problema a funo que leva qualquer terno de vetores x1 , x2 , x3
no nmero c1 x1 + c2 x2 + c3 x3 . Esse nmero o custo do terno x1 , x2 , x3 .
Embora o ppl tenha sido formulado como um problema de minimizao,
nossa definio inclui, implicitamente, problemas de maximizao, uma vez que
minimizar c1 x1 + c2 x2 + c3 x3 o mesmo que maximizar c1 x1 c2 x2 c3 x3 .

87
Feofiloff cap. 9 Problema geral 88

Se todas as matrizes exceto A21 so vazias e todos os vetores exceto c1 e b2


so vazios ento o ppl o problema cannico primal CP(A21 , b2 , c1 ). Se todas as
matrizes exceto A32 so vazias e todos os vetores exceto c2 e b3 so vazios, ento
o ppl o problema cannico dual CD(A 32 , b3 , c2 ).
g

9.2 Dualidade
H uma fundamental relao de dualidade entre problemas de programao
linear. Por definio, o dual de um ppl cuja matriz D o ppl cuja matriz D,
e dual
ou seja, a transposta de D com sinal trocado. Assim, o dual do ppl descrito na
seo anterior o ppl

minimizar a expresso b1 y1 b2 y 2 b3 y 3
sujeita s restries y1 o
A
g 11 y1 A21 y2 A31 y3
g g c1
A12 y1 A22 y2 A
g g g32 y3 = c2
A13 y1 A23 y2 A33 y3
g g g c3
y3 o.

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 b1 + y2 b2 + y 3 b3
sujeita s restries y3 o
y1 A11 + y2 A21 + y3 A31 c1
y1 A12 + y2 A22 + y3 A32 = c2
y1 A13 + y2 A23 + y3 A33 c3
y1 o.

Observe que o ppl D tem uma incgnita para cada restrio de P (exceto as
restries x1 o e x3 o) e uma restrio para cada incgnita de P. Por
exemplo, a incgnita y1 corresponde restrio A11 x1 + A12 x2 + A13 x3 b1
de P; e a restrio y1 A11 + y2 A21 + y3 A31 c1 corresponde incgnita x1 de P.
Se todas as matrizes exceto A21 so vazias e todos os vetores exceto c1 e b2
so vazios ento P o problema cannico primal CP(A21 , b2 , c1 ) e D o pro-
blema cannico dual CD(A21 , c1 , b2 ).

9.3 Lema da dualidade


Digamos que P o ppl definido na seo 9.1 e D o seu dual. O conjunto dos P
D
Feofiloff cap. 9 Problema geral 89

minimizar cx + dy
sujeita a Ax + By = f , lyu 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. Identifique as
matrizes A11 , . . , A33 e os vetores b1 , b2 , b3 e c1 , c2 , c3 .

minimizar cx maximizar yb
sujeito a x o e Ax b sujeito a y o e yA c

Figura 9.2: Verifique que o ppl direita o dual do ppl esquerda.

x1 o

A11 x1 + A12 x2 + A13 x3 b1

A21 x1 + A22 x2 + A23 x3 = b2

A31 x1 + A32 x2 + A33 x3 b3

x3 o

min c1 x1 + c2 x2 + c3 x3

max
y1 A11 y1 A12 y1 A13 y1 y 1 b1
+ + + +
y2 A21 y2 A22 y2 A23 y 2 b2
+ + + +
y3 y3 A31 y3 A32 y3 A33 y 3 b3

o c1 c2 c3 o

Figura 9.3: A primeira parte da figura uma representao taquigr-


fica de um ppl. A segunda (leia na vertical, de cima para baixo) uma
representao do seu dual. As posies relativas dos smbolos Aij , bi e
cj no se alteram.
Feofiloff cap. 9 Problema geral 90

ternos x1 , x2 , x3 de vetores que satisfazem as restries do problema P ser de-


notado por X(b1 , b2 , b3 ) e o conjunto dos ternos y1 , y2 , y3 de vetores que satisfa- X(b1 , b2 , b3 )
zem as restries do problema D ser denotado por Y (c1 , c2 , c3 ). Em linguagem Y (c1 , c2 , c3 )
geomtrica, diz-se que esses conjuntos so poliedros.

Lema 9.1 (da dualidade) Para todo terno x1 , x2 , x3 em X(b1 , b2 , b3 ) e


todo terno y1 , y2 , y3 em Y (c1 , c2 , c3 ) vale a desigualdade c1 x1 + c2 x2 +
c3 x3 y1 b1 + y2 b2 + y3 b3 .

D EMONSTRAO : Para todo terno x1 , x2 , x3 e todo terno y1 , y2 , y3 ,

c1 x1 + c2 x2 + c3 x3 (y1 A11 + y2 A21 + y3 A31 ) x1 +


(y1 A12 + y2 A22 + y3 A32 ) x2 +
(y1 A13 + y2 A23 + y3 A33 ) x3
= y1 (A11 x1 + A12 x2 + A13 x3 ) +
y2 (A21 x1 + A22 x2 + A23 x3 ) +
y3 (A31 x1 + A32 x2 + A33 x3 )
y 1 b1 +
y 2 b2 +
y 3 b3 ,

como queramos demonstrar. 2

O lema (tambm conhecido como teorema fraco da dualidade) tem o se-


guinte corolrio: se c1 x1 + c2 x2 + c3 x3 = y1 b1 + y2 b2 + y3 b3 ento x1 , x2 , x3
soluo do problema P e y1 , y2 , y3 soluo do problema D.

9.4 Construo do dual


A definio 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 x1 , x2 , x3 , x4 que minimizem a expresso 1

11x1 + 12x2 + 13x3 + 14x4

1
Note que aqui x1 , x2 e x3 so nmeros e no vetores.
Feofiloff cap. 9 Problema geral 91

sob as restries
15x1 + 16x2 + 17x3 + 18x4 19
20x1 + 21x2 + 22x3 + 23x4 = 24
25x1 + 26x2 + 27x3 + 28x4 29
x1 0
x3 0.

Qual o dual de P? O dual ter trs incgnitas: uma incgnita y1 associada


primeira restrio, uma incgnita y2 associada segunda, etc. A funo objetivo
do dual ser, portanto, y1 19+y2 24+y3 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 11x1 + 12x2 + 13x3 + 14x4 y1 19 + y2 24 + y3 29. Essa desigualdade
entre as funes objetivo dever valer em virtude da seqncia de relaes

11x1 + 12x2 + 13x3 + 14x4 (y1 15 + y2 20 + y3 25) x1 +


(y1 16 + y2 21 + y3 26) x2 +
(y1 17 + y2 22 + y3 27) x3 +
(y1 18 + y2 23 + y3 28) x4
= y1 (15x1 + 16x2 + 17x3 + 18x4 ) +
y2 (20x1 + 21x2 + 22x3 + 23x4 ) +
y3 (25x1 + 26x2 + 27x3 + 28x4 )
y1 19 + y2 24 + y3 29 .

As restries mais brandas que garantem a primeira desigualdade so

11 y1 15 + y2 20 + y3 25 , pois x1 0,
12 = y1 16 + y2 21 + y3 26 , pois x2 no tem restrio de sinal ,
13 y1 17 + y2 22 + y3 27 , pois x3 0,
14 = y1 18 + y2 23 + y3 28 , pois x4 no tem restrio de sinal .

As restries mais brandas que garantem a segunda desigualdade so

y1 0 , pois 15x1 + 16x2 + 17x3 + 18x4 19, e


y3 0 , pois 25x1 + 26x2 + 27x3 + 28x4 29 .

Portanto, o dual de P consiste em encontrar nmeros y1 , y2 , y3 que maximizem


a expresso 19y1 + 24y2 + 29y3 sujeita s restries

15y1 + 20y2 + 25y3 11


16y1 + 21y2 + 26y3 = 12
17y1 + 22y2 + 27y3 13
18y1 + 23y2 + 28y3 = 14
y1 0
y3 0.
Feofiloff cap. 9 Problema geral 92

Segundo exemplo. Seja P o problema de encontrar vetores x e v que mi-


nimizem a expresso cx + f v 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? O dual 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 + f v yb + we. Essa desigualdade dever valer em virtude da seqncia de
relaes
cx + f v (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 + f v. As restries do problema dual devem garantir a validade
das relaes
yb + we y(Ax) + w(Dv)
= (yA)x + (wD)v
cx + f v .

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 + f v sujeita a essas restries.

9.5 Teorema da dualidade


Retornemos aos problema P e D e aos poliedros X(b1 , b2 , b3 ) e Y (c1 , c2 , c3 )
da seo 9.3. O problema P vivel se X(b1 , b2 , b3 ) no vazio, invivel se
Feofiloff cap. 9 Problema geral 93

X(b1 , b2 , b3 ) vazio e ilimitado se para todo nmero existe um terno x1 , x2 , x3


em X(b1 , b2 , b3 ) tal que c1 x1 + c2 x2 + c3 x3 < . Se P invivel ou ilimitado,
evidente que P no tem soluo.
Definies anlogas valem para o problema D: o problema vivel se
Y (c1 , c2 , c3 ) no vazio, invivel se Y (c1 , c2 , c3 ) vazio e ilimitado se para todo
nmero existe um terno y1 , y2 , y3 em Y (c1 , c2 , c3 ) tal que y1 b1 + y2 b2 + y3 b3 > .
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 y10 , y20 , y30
em Y (o, o, o) tal que y10 b1 + y20 b2 + y30 b3 > 0. Um vetor de inviabilidade para o
problema D qualquer terno x01 , x02 , x03 em X(o, o, o) tal c1 x01 + c2 x02 + c3 x03 < 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 afir-
mativas:
(1) existe um vetor de inviabilidade para P e
existe um vetor de inviabilidade para D;
(2) D vivel e existe um vetor de inviabilidade para P;
(3) P vivel e existe um vetor de inviabilidade para D;
(4) existem x1 , x2 , x3 em X(b1 , b2 , b3 ) e y1 , y2 , y3 em Y (c1 , c2 , c3 )
tais que c1 x1 + c2 x2 + c3 x3 = y1 b1 + y2 b2 + y3 b3 .

claro que nos casos (1), (2) e (3) os problemas P e D no tm soluo;


no caso (4), x1 , x2 , x3 soluo de P e y1 , y2 , y3 soluo de D. A demonstra-
o de que duas das afirmativas 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 afirmativas 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 algum problema cannico primal. Em virtude dessa equiva-
lncia, qualquer algoritmo (como o Simplex) que resolva problemas cannicos
Feofiloff 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 figura especifica um sistema A, b, c. Considere


o problema de minimizar cx sujeito a Ax b. Esse problema equivale
ao problema cannico CP(A0 , b0 , c0 ), onde A0 , b0 , c0 o sistema repre-
sentado na parte inferior da figura.

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 figura 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, vo e r o. (9.b)
Eis a verificao da equivalncia. Suponha que x satisfaz as restries (9.a).
Sejam u, v, r vetores definidos 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.
Feofiloff 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 ,
xo

(veja exemplo numrico na figura 9.5). Esse problema equivale ao seguinte pro-
blema cannico primal: encontrar vetores y, v, w, r que minimizem a expresso
ay dv + dw sujeita s restries

Ay + Bv Bw = b ,
Cy + Dv Dw + Ir = c ,
y o, v o, w o, r o.

Eis a verificao da equivalncia. Para qualquer par x, z de vetores, sejam y, v,


w e r os vetores definidos 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
Feofiloff cap. 9 Problema geral 96

encontrar nmeros xi e zi que maximizem


11x1 + 16x2 + 21z1 + 26z2 sujeito a
12x1 + 17x2 + 22z1 + 27z2 = 32
13x1 + 18x2 + 23z1 + 28z2 = 33
14x1 + 19x2 + 24z1 + 29z2 34
15x1 + 20x2 + 25z1 + 30z2 35
x1 0
x2 0

encontrar nmeros no-negativos yi , vi , wi e ri que minimizem


11y1 + 16y2 21v1 + 21w1 26v2 + 26w2 sujeito a
12y1 17y2 + 22v1 22w1 + 27v2 27w2 = 32
13y1 18y2 + 23v1 23w1 + 28v2 28w2 = 33
14y1 19y2 + 24v1 24w1 + 29v2 29w2 + 1r1 + 0r2 = 34
15y1 20y2 + 25v1 25w1 + 30v2 30w2 + 0r1 + 1r2 = 35

Figura 9.5: O ppl no topo da figura e o problema cannico primal


na parte inferior da figura 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 significado das incgnitas (ou variveis)
duais. Considere o problema de encontrar nmeros no-negativos x1 , x2 , x3 , x4
que minimizem a expresso 11x1 + 12x2 + 13x3 + 14x4 sob as restries

15x1 + 16x2 + 17x3 + 18x4 19


20x1 + 21x2 + 22x3 + 23x4 24
25x1 + 26x2 + 27x3 + 28x4 29 .

Esse problema pode estar modelando a tarefa de um nutricionista: encontrar


quantidades x1 , x2 , x3 , x4 de pacotes de carne, batatas, leite e goiabada respec-
tivamente que minimizem o custo 11x1 + 12x2 + 13x3 + 14x4 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,
Feofiloff 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
y1 , y2 , y3 que maximizem 19y1 + 24y2 + 29y3 sob as restries

15y1 + 20y2 + 25y3 11


16y1 + 21y2 + 26y3 12
17y1 + 22y2 + 27y3 13
18y1 + 23y2 + 28y3 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 y1 por grama de clcio, y2 por grama de carboidrato e y3 por grama de
protena. Para competir com os produtos naturais, o preo de um pacote de
carne artificial (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 artificiais no
podem ultrapassar os preos dos correspondentes produtos naturais. Satisfeitas
estas restries, o fabricante quer maximizar o preo y1 19 + y2 24 + y3 29 de uma
refeio que contenha as quantidades mnimas dos trs nutrientes.
fcil verificar (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 11x1 +12x2 +13x3 +14x4 = 19y1 +24y2 +29y3 para qualquer soluo
x1 , x2 , x3 , x4 do primeiro problema e qualquer soluo y1 , y2 , y3 do segundo.

Exerccios
9.1 Considere o problema de encontrar vetores x e z tais que x o, Ax+Dz
b e cx + f z mnimo. Verifique que o dual deste problema consiste em
encontrar um vetor y tal que y o, yA c, yD = f e yb mximo.
9.2 Seja X o conjunto dos vetores x o tais Ex f e Ax = b. Seja Y o
conjunto dos pares y, w tais que y o e yE + wA c. Prove que para todo
x em X e todo par y, w em Y tem-se cx yf + wb.
9.3 Demonstre o lema da inviabilidade 9.2.
9.4 Seja P o problema de encontrar vetores x e u que maximizem a expresso
cx + du sujeita s restries Ax + Bu = d e o u e. Mostre que P
invivel se existem vetores y 0 e z 0 tais que y 0 A = o, y 0 B + z 0 o, z 0 o e
y 0 d + z 0 e < 0. Mostre que um par y 0 , z 0 como o que acabamos de descrever
certamente existe se e tem algum componente negativo. Mostre que o dual
de P invivel se existe um vetor x0 tal que Ax0 = o e cx0 > 0.
9.5 Suponha dada uma matriz A, vetores b e c e um nmero . Seja R o
conjunto dos vetores y que satisfazem as restries yA c e yb > . Seja
S o conjunto dos vetores x que satisfazem as restries Ax = b, x o
Feofiloff cap. 9 Problema geral 98

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, ] 6= o para todo i ento ambos os
problemas tm soluo.
Parte III

Algoritmos para Dados Inteiros

99
Captulo 10

Determinantes

Os prximos captulos pretendem examinar 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 0 ,
onde e 0 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 definido em duas etapas. Primeiro, de-


finiremos o determinante de matrizes de permutao e mostraremos que este
satisfaz a lei do produto. Depois, usaremos o determinante de matrizes de
permutao para definir 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 hj, ii de elementos de M tal que J [i, j] = 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
Feofiloff cap. 10 Determinantes 101

seqncia hk1 , . . , kn i de elementos de M , distintos dois a dois, tal que

hk1 , k2 i, hk2 , k3 i, . . . , hkn1 , kn i e hkn , k1 i

so arcos de J . Por exemplo, se J [i, i] = 1 para algum i ento a seqncia hii


um circuito. Circuitos que diferem apenas por uma rotao como, por exem-
plo, hk1 , k2 , k3 i, hk2 , k3 , k1 i e hk3 , k1 , k2 i so considerados idnticos. Feitas
essas convenes, fica 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 hj, ii e hi, ji so arcos e todos os demais
arcos de T tm a forma hk, ki. 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(T J) = circ(J) + 1; caso contrrio, circ(T J) =
circ(J) 1.

D EMONSTRAO : fcil entender o efeito da multiplicao de J por T :


como (T J) [j, ] = J [i, ] , um arco de J que tem a forma hk, ii transformado
no arco hk, ji de T J ; analogamente, um arco de J que tem a forma hk, ji
transformado no arco hk, ii de T J .
Suponha que i e j pertencem a um mesmo circuito, digamos hk1 , . . , kn i,
de J . Ajuste a notao de modo que k1 = i. Seja p um ndice tal que kp = j . p
Ento
hk1 , k2 , . . , kp1 i e hkp , kp+1 , . . , kn i

so circuitos2 de T J . Todos os demais circuitos de J tambm so circuitos


de T J . Logo, circ(T J) = circ(J) + 1. Suponha agora que i e j pertencem a
circuitos distintos, digamos hh1 , . . , hm i e hk1 , . . , kn i, de J . Ajuste a notao de
modo que h1 = i e k1 = j . Ento

hh1 , h2 , . . , hm , k1 , k2 , . . , kn i

um circuito3 de T J . Todos os demais circuitos de J tambm so circuitos de


T J . Logo, circ(T J) = circ(J) 1. 2

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 p = 2 e, portanto, esses circuitos so hk1 i e hk2 i.
3
Se m = n = 1, ento esse circuito hh1 , k1 i.
Feofiloff 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 figura ento


circ(J) = 2 e portanto sig(J) = +1.

|M | circ(J)

par e negativa em caso contrrio. A matriz identidade, por exemplo, positiva; negativa
e toda matriz de transposio negativa. O sinal de uma matriz de permutao
J ser denotado por
sig(J) .

Assim, sig(J) = +1 se J positiva e sig(J) = 1 se J negativa.


O lema 10.1 mostra que sig(T J) = 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).

D EMONSTRAO : 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 hk1 , . . , kn i
com n 2. Seja T a matriz de transposio que transpe k1 e k2 . De acordo com T
o lema 10.1, circ(T J) = circ(J) + 1. Podemos pois supor, a ttulo de hiptese
de induo, que
sig(T JK) = sig(T J) sig(K) .

Por outro lado, de acordo com o lema 10.1, temos sig(T J) = sig(J) e tam-
bm sig(T JK) = sig(JK). Logo, sig(JK) = sig(J)sig(K), como queramos
demonstrar. 2

A demonstrao do teorema revela, em particular, que toda matriz de per-


mutao tem a forma T1 . . Tp I , onde T1 , . . , Tp 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
Feofiloff cap. 10 Determinantes 103

idnticos. Em outras palavras, uma matriz A sobre M N quadrada se M =


N . As definies abaixo aplicam-se apenas a matrizes quadradas.
Para qualquer matriz A sobre M M , vamos denotar por diag(A) o produto
dos elementos da diagonal de A:
Q
diag(A) = iM A [i, i] .

P determinante de uma matriz quadrada A sobre M M o nmero


O
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,
P
det(A) = J sig(J) diag(AJ) .
P P
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 definio de determinante no se altera se a expresso diag(AJ) for subs-
tituda pela expresso
diag(JA) ,

uma
Q vez que essas Q duas expresses tm o mesmo valor. De fato, diag(AJ) =
i A [i, ] J [ , i] = i A [i, i] , onde a bijeo de M em M definidaQpela equa-
o
Q J [i, i] = Q1. Se denotarmos por a inversa de teremos i A [i, i] =
j A [j, j] = j J [j, ] A [ , j] = diag(JA).

0 1 0
0 0 1
1 0 0

Figura 10.2: Digamos que A a primeira das matrizes da


figura e J a segunda. Observe que diag(AJ)e o produto
dos elementos de A que esto nas posies correspondentes
aos elementos no-nulos de J .

muito fcil verificar 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 [m, ] = o ou A [ , m] = o para algum m ento

det(A) = 0 .

Tambm fcil verificar que para qualquer matriz diagonal D

det(DA) = diag(D) det(A) .


Feofiloff 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 definio 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 m3 ,
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 [m, M m] = o ento o determinante de A o produto de
A [m, m] pelo determinante de A [M m, M m] .

D EMONSTRAO : Suponha que A [m, M m] nulo. Seja J uma matriz de


sobre M M . Se J [m, m] = 0 ento A [m, ] J [ , m] = 0 e portanto
permutao Q
diag(AJ) = i A [i, ] J [ , i] = 0. Caso contrrio,
diag(AJ) = A [m, m] diag(BK) ,
onde B = A [M m, M m] e K = J [M m, M m] . Como sig(K) = sig(J), temos
P P
J sig(J) diag(AJ) = A [m, m] K sig(K) diag(BK) ,

onde K percorre o conjunto das matrizes de permutao sobre M m M m.


Logo, det(A) = A [m, m] det(B). 2

Vale tambm a propriedade transposta: se A [M m, m] nulo ento


det(A) = A [m, m] det(A [M m, M m] ). 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 M M , det(KA) = sig(K) det(A).
P
D EMONSTRAO : Por definio, det(KA) = J sig(J) det(JKA). Em vir-
tude do teorema 10.2, sig(J) = sig(K)sig(JK). Logo,
P
det(KA) = J sig(K)sig(JK)diag(JKA)
P
= sig(K) J sig(JK)diag(JKA)
= sig(K) det(A) ,

4 P
A ttulo de curiosidade, o permanente de uma matriz quadrada A o nmero J diag(AJ),
onde a soma se estende a todas as matrizes de permutao J . No se conhece um algoritmo
eficiente isto , polinomial no nmero de componentes de A para o clculo do permanente.
Feofiloff cap. 10 Determinantes 105

uma vez que quando J percorre o conjunto de todas as matrizes de permutao


a matriz JK tambm percorre o conjunto de todas as matrizes de permutao. 2

Propriedade 10.5 (matriz com duas linhas iguais) Para dois elementos
distintos h e k de M , se A [h, ] = A [k, ] ento det(A) = 0.

D EMONSTRAO : Seja T a matriz de transposio que transpe h e k.


Como T A = A, temos
det(T A) = det(A) .

Por outro lado, det(T A) = sig(T ) det(A), em virtude da propriedade 10.4. Como
sig(T ) = 1, temos
det(T A) = det(A) .

Essas equaes s podem ser simultaneamente verdadeiras se det(A) for nulo. 2

Vale tambm a propriedade transposta: se A [ , h] = A [ , k] 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; finalmente, cuidaremos do
caso geral. As duas etapas finais so anlogas ao algoritmo de Gauss-Jordan
(veja captulo 2).
Uma matriz A sobre M M quase-identidade se existem elementos h e quase-
k de M tais que A [i, j] = I [i, j] para todo par i, j distinto do par h, k. Diremos identidade
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[h, h] det(B) se h = k e
det(AB) = det(B) em caso contrrio ,
qualquer que seja a matriz B.

D EMONSTRAO : Se h = k ento A uma matriz diagonal e portanto


det(AB) = diag(A) det(B) enquanto diag(A) = A [h, h] .
Suponha agora que h 6= k. Seja o nmero A [h, k] . claro que (AB) [i, ] =
B [i, ] para todo i distinto de h e (AB) [h, ] = B [h, ] + B [k, ] . Para toda matriz
Feofiloff cap. 10 Determinantes 106

de permutao J ,
Q
diag(ABJ) = (AB)[i, ]J [ , i]
Qi Q
= i B [i, ]J [ , i] + B [k, ]J [ , h] i6=h B [i, ]J [ , i]
= diag(BJ) + B [h, ]J [ , h] Q
i6=h B [i, ]J [ , i]
= diag(BJ) + diag(BJ) ,

onde B a matriz definida pelas equaes B [M h, ] = B [M h, ] e B


[h, ] =
B [k, ] . Portanto,
P
det(AB) = sig(J) diag(ABJ)
PJ P
= J sig(J) diag(BJ) + J sig(J) diag(BJ)
= det(B) + det(B) .

Como B = 0.
tem duas linhas iguais, a propriedade 10.5 garante que det(B)
Portanto, det(AB) = det(B). 2

Lema 10.7 (multiplicao por matriz elementar) Se A uma matriz ele-


mentar com coluna saliente h ento det(AB) = A [h, h] det(B) qualquer
que seja a matriz B.

D EMONSTRAO : Seja M o conjunto de ndices de linhas e colunas de A.


A proposio trivialmente verdadeira se A [h, h] = 0, pois nesse caso A [h, ]
nulo, donde (AB) [h, ] nulo, e portanto det(AB) = 0.
Suponha no que segue que A [h, h] 6= 0. Diremos que a complexidade de A
o nmero de componentes no-nulos do vetor A [M h, h] . 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 [M h, h]
nulo. Ento A uma matriz quase-identidade do tipo h, h. Pelo lema 10.6,
det(AB) = A [h, h] det(B), como queramos demonstrar.
a matriz
Suponha agora que A [i, h] 6= 0 para algum i em M h. Seja G
G
quase-identidade do tipo i, h definida pela equao
[i, h] = A [i, h] /A [h, h]
G

(veja a anlise de algoritmo de Gauss-Jordan, seo 2.4) e seja A0 a matriz GA. A0
0 0
fcil verificar que a matriz A elementar com coluna saliente h e que A [i, h] = 0
e A0 [M i, h] = A [M i, h] . Como a complexidade de A0 menor que a complexi-
dade de A podemos pois supor, a ttulo de hiptese de induo, que

det(A0 B) = A0 [h, h] det(B) .


quase-identidade, o lema 10.6 garante que
Como G

det(A0 B) = det(GAB)
= det(AB) .

Finalmente, como A0 [h, h] = A [h, h] , temos det(AB) = A [h, h] det(B). 2


Feofiloff cap. 10 Determinantes 107

claro que vale a propriedade transposta: det(AB) = A [h, h] det(B) para


qualquer matriz elementar A com linha saliente h e qualquer matriz B.

Teorema 10.8 (do produto de determinantes5 ) Para quaisquer matri-


zes A e B sobre M M ,

det(AB) = det(A) det(B) .

D EMONSTRAO : 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 [P, Q] de bijeo e A [M P, 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 P Q
partes de M tais que A [P, Q] de bijeo, A [M P, Q] nula e |P | igual sim-
plicidade de A. Seja h um elemento de M P . H dois casos a considerar: h

C ASO 1: A [h, ] nulo. claro que det(A) e det(AB) so nulos, uma vez que
(AB) [h, ] = A [h, ] B = o. Portanto, a identidade det(AB) = det(A) det(B) vale
trivialmente neste caso.
C ASO 2: A [h, ] no nulo. Seja k um elemento de M Q tal que A [h, k] 6= 0. k
Seja F a matriz elementar com coluna saliente h definida pela equao F

F [ , h] = A [ , k]
a matriz elementar com
(veja a anlise de algoritmo de Gauss-Jordan). Seja G
G
coluna saliente h definida pelas equaes
[i, h] = i ,
G

onde h = 1/A [h, k] e i = A [i, k] /A [h, k] para todo i em M h. fcil verificar


que
F G=G F = I .


Seja A0 a matriz GA. Ento A0 [h, ] = h A [h, ] e A0 [i, ] = A [i, ] + i A [h, ] para A0
cada i em M h. Como A [h, Q] nulo, temos

A0 [ , Q] = A [ , Q] .
[i, ] A [ , k] = G
Por outro lado, A0 [i, k] = G [i, ] F [ , h] = (G
F ) [i, h] = I [i, h] para cada
i em M , donde
A0 [ , k] = I [ , h] .
5
Publicado em , simultaneamente por Jacques P. M. Binet () e Augustin-Louis
Cauchy ().
Feofiloff cap. 10 Determinantes 108

Segue da que A0 [P +h, Q+k] uma matriz de bijeo e A0 [M P h, Q+k] nula.


Portanto, a simplicidadade de A0 maior que a simplicidade de A. Podemos
pois supor, a ttulo de hiptese de induo, que
det(A0 B) = det(A0 ) det(B) .
Como F A0 B = AB e F elementar, o lema 10.7 garante que
det(AB) = F [h, h] det(A0 B) = F [h, h] det(A0 ) det(B) .
Como A0 = GA e G elementar, o lema 10.7 garante que det(A0 ) =
[h, h] det(A). Portanto,
G
det(AB) = F [h, h] G
[h, h] det(A) det(B) .
[h, h] = h , temos a identidade desejada. 2
Como F [h, h] = 1/h e G

10.5 Delimitao do determinante


importante estabelecer uma delimitao superior para o valor absoluto de
det(A), que denotaremos por absdet(A). absdet(A)

Delimitao 10.9 Para qualquer matriz A sobre M M ,


Q P
absdet(A) iM jM ij ,
onde ij denota o valor absoluto de A [i, j] . ij

D EMONSTRAO : H uma correspondncia biunvoca bvia entre matrizes


de permutao sobre M M 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 definir o nmero sig() com sendo
sig(J), onde J a matriz de permutao que corresponde a . Podemos dizer
ento que P Q
det(A) = sig() i A [i, i] ,

onde a soma se estende a todas as bijees de M em M . Portanto,


P Q
absdet(A) i i i .

Ora, cada um dos produtos que comparecemQdoPlado direito da desigualdade


tambm est presente6 no produto de somas i j ij . Logo, absdet(A) no
maior que esse produto de somas. 2

Acabamos de mostrar que absdet(A) limitado pelo produto das somas


de
Q linhas.
P Demonstra-se analogamente que absdet(A) limitado pelo produto
j i ij das somas de colunas.

6
Da mesma forma que e esto presentes no produto de somas ( + )( + ).
Feofiloff 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 0 , em
que e 0 so somas de produtos de elementos de A e cada produto tem exata-
mente um elemento de cada linha e de cada coluna de A. A propriedade mais
importante do determinante a lei do produto: para qualquer par A, B de
matrizes
det(AB) = det(A) det(B) .

Mesmo sem conhecer os detalhes da definio de determinante, fica claro que o


determinante de uma matriz inteira um nmero inteiro. Fica claro tambm que
o valor absoluto do determinante limitado pelo produto das somas de linhas e
pelo produto das somas de colunas:
Q P Q P
absdet(A) i j ij e absdet(A) j i ij ,
em que ij o valor absoluto de A [i, j] . Estas delimitaes permitem prever,
ainda que grosseiramente, a ordem de grandeza do determinante da matriz.

Exerccios
10.1 Mostre que sig(J)
e = sig(J) para toda matriz de permutao J .

10.2 Mostre que det(A)


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

10.3 Suponha que A uma matriz elementar com coluna saliente k. Mostre que
det(A) = A [k, k] .
10.4 Mostre que o determinante de uma matriz quadrada A no depende da
indexao das linhas e colunas, ou seja, mostre que det(JAJ)
e = det(A)
para qualquer matriz de permutao J .
10.5 D exemplos de matrizes para as quais a delimitao 10.9 vale com igual-
dade. D exemplos de matrizes para as quais a delimitao de determi-
nantes de submatrizes vale com igualdade.
10.6 Deduza da delimitao produto-de-somas 10.9 a seguinte delimitao
produto-de-produtos: Para qualquer matriz A sobre M M ,
Q Q
absdet(A) iM jM (1 + ij ) ,
Feofiloff cap. 10 Determinantes 110

onde ij o valor absoluto de A [i, j] .


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 Cramer2 para soluo de
sistemas de equaes por meio de determinantes.
O algoritmo transforma qualquer matriz D numa matriz equivalente E que
escalonada a menos de um fator multiplicativo. Ademais, os componentes de
E so determinantes de submatrizes de D (em particular, se D s tem compo-
nentes inteiros ento todos os componentes de E sero inteiros). Graas a essa
propriedade, possvel formular uma boa delimitao superior para o valor ab-
soluto dos componentes de E . A delimitao permite mostrar que o consumo
de tempo do algoritmo polinomial.

11.1 Algoritmo
Antes de formular o algoritmo, preciso generalizar o conceito de matriz es-
calonada. Para qualquer nmero no-nulo , diremos que uma matriz K
-bijetora se a matriz 1 K de bijeo. Diremos que uma matriz E sobre -bijetora
M N -escalonada se a matriz 1 E escalonada, ou seja, se existem partes -escalonada
P e Q de M e N respectivamente tais que

E [M P, ] = O e E [P, Q] -bijetora.

(Veja figura 11.1.) Podemos agora descrever o algoritmo.

Algoritmo de Gauss-Jordan-Chio Recebe uma matriz D sobre M N


e devolve matrizes F e G sobre M M e um nmero no-nulo tais
que F G = 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 ().

111
Feofiloff 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:

C ASO 1: E [h, ] 6= o para algum h em M P . h


Escolha k em N tal que E [h, k] 6= 0. k
Para cada i em M , seja i o nmero E [i, k] . i = E [i, k]
Seja F 0 , G0 , E 0 o resultado da pivotao de F, G, E em torno de h, k.
Comece nova iterao com P + h, Q + k, F 0 , G0 , E 0 e h
nos papis de P , Q, F , G, E e .
C ASO 2: E [M P, ] = O .
Devolva F , G, e pare. 2

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 0 , G0 , E 0 de matrizes defi-
nido pelas equaes

F 0 [ , h] = D[ , k] , F 0 [ , i] = F [ , i] ,
h G[i, ] i G[h, ]
G0 [h, ] = G[h, ] , G0 [i, ] = ,

h E [i, ] i E [h, ]
E 0 [h, ] = E [h, ] , E 0 [i, ] = ,

para cada i em M h. (Veja exemplo numrico na figura 11.2.)

11.2 Anlise: preliminares


Para mostrar como e por que o algoritmo de Gauss-Jordan-Chio produz os re-
sultados anunciados basta verificar as seguintes propriedades.

Invariantes No incio de cada iterao do algoritmo,


(i0) 6= 0 ,
(i1) F G = I ,
(i2) E = GD ,
(i3) E [P, Q] uma matriz -bijetora e E [M P, Q] = O ,
(i4) G [ , M P ] = I [ , M P ] .

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 continuam vlidas no incio da prxima iterao basta mostrar
Feofiloff 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 figura registra os valores de G, E e no incio de cada iterao.
Feofiloff cap. 11 Algoritmo de Gauss-Jordan-Chio 114

que no fim do caso 1

h 6= 0 , (11.a)
0 0
FG = h I , (11.b)
0 0
E = G D, (11.c)
0 1
E [ , Q] = h E [ , Q] , (11.d)
E 0 [ , k] = h I [ , h] , (11.e)
0 1
G [ , M P h] = h G[ , M P h] . (11.f)

A propriedade (11.a) segue imediatamente da maneira como h e k so escolhi-


dos no caso 1.

P M P Q N Q
0 0 0 0 0
0 0 0 P 0 0
0 0 0 0 0
0 0 0 0 0
0 0 M P 0 0 0
0 0 0 0 0

Figura 11.3: Matrizes G e E no incio de uma iterao.

D EMONSTRAO DE (11.d) E (11.f): Por definio da operao de pivota-


o, E 0 [h, ] = E [h, ] e

E 0 [i, ] = h 1 E [i, ] i 1 E [h, ]

para cada i em M h. Como E [h, Q] nulo em virtude de (i3), temos a igualdade


desejada. De modo anlogo, G0 [h, ] = G [h, ] e

G0 [i, ] = h 1 G [i, ] i 1 G [h, ]

para cada i em M h. Como G [h, M P h] nulo em virtude de (i4), temos a


igualdade desejada. 2

Antes de empreender as demonstraes das demais propriedades, convm


dar uma representao matricial operao de pivotao. Seja F a matriz ele- F
mentar com coluna especial h definida pelas equaes

F [ , h] = h1 E [ , k] e F [ , M h] = h1 I [ , M h] ,
a matriz elementar com coluna especial h definida pelas equaes
Seja G
G

[M h, h] = 1 E [M h, k] ,
G
G [h, h] = 1 ,
G [ , M h] = h 1 I [ , M h] .
Feofiloff cap. 11 Algoritmo de Gauss-Jordan-Chio 115

(Veja figuras 11.4 e 11.5.) fcil verificar que


F G
=G
F = I , E 0 = GE
e G0 = 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 1 /6 6 / 0 0 0 0 1 /
0 /6 0 0 0 2 /6 0 6 / 0 0 0 2 /
0 0 /6 0 0 3 /6 0 0 6 / 0 0 3 /
0 0 0 /6 0 4 /6 0 0 0 6 / 0 4 /
0 0 0 0 /6 5 /6 0 0 0 0 6 / 5 /
0 0 0 0 0 6 /6 0 0 0 0 0 1

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.

D EMONSTRAO DE (11.b): Observe que a matriz F 0 [ , M h] igual a


h 1 F F
[ , M h] (ambas as matrizes so iguais a F [ , M h] ). Ademais,

F 0 [ , h] = D[ , k]
= ( 1 F G)D[ , k]
= 1 F (E [ , k])
= 1 F (h F [ , h]) .
Em suma, F 0 = h 1 F F . Logo,
F 0 G0 = h 1 (F F )(GG)

1
= h F (F G)G
= h 1 F G
= h I ,
em virtude de (i1). 2

D EMONSTRAO DE (11.e): Para cada i em M ,


E 0 [i, k] = G
[i, ] E [ , k] = G
[i, ] h F [ , h] = h (G
F ) [i, h] = h I [i, h] .

Logo, E 0 [ , k] = h I [ , h] . 2
Feofiloff 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 [M P, ] nula. Nesta ocasio, em virtude
de (i3),
E -escalonada

(e tem bases P e Q). Alm disso, em virtude de (i1), F G = 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 final da execuo do algoritmo,

F [ , M P ] = I [ , M P ] e F [ , P ] = D [ , Q] Je,

onde Je a transposta da matriz 1 E [P, Q] .

11.3 Anlise: invariante principal


A seo 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 ) definida pelas equaes

D [M, M ] = I e D [M, N ] = D .

No incio de cada iterao, seja E a matriz definida pela justaposio de G E


com E :
E [M, M ] = G e E [M, N ] = E

(veja figura 11.6). A relao E = G D, garantida pelo invariante (i2), leva a uma
relao simples entre determinantes de certas submatrizes de E e determinan-
tes das correspondentes submatrizes de D. O enunciado preciso dessa relao
depende da seguinte conveno de notao.
Uma funo de M em M N uma injeo se i e j so distintos
quando i e j so distintos.3 Dada uma tal injeo , denotaremos por D a D
matriz sobre M M definida pelas equaes

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

Portanto, D tem os mesmos componentes que D [ , M ] mas suas colunas so in-


dexadas por M . Diremos que D a submatriz de D definida por . Definies
anlogas valem para a matriz E. E

3
Aqui, i denota o valor de em i.
Feofiloff cap. 11 Algoritmo de Gauss-Jordan-Chio 117

M N
1 0 0 0 0 0
0 1 0 0 0 0
0 0 1 0 0 0
M 0 0 0 1 0 0
0 0 0 0 1 0
0 0 0 0 0 1

M Q M Q N Q N Q
0 0 0 0 0
M Q 0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
M Q 0 0 0 0 0
0 0 0 0 0

Figura 11.6: A primeira parte da figura 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 definidas
por . Como de hbito, m a cardinalidade de M .

D EMONSTRAO : 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 verificar que no fim do
caso 1
det(E0 ) = hm1 det(D ) ,

onde E0 a matriz definida pela justaposio de G0 e E 0 e E0 a submatriz de


E0 definida por . Em virtude de (11.g) temos E0 = GE, donde E0 = GE .

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

Como G uma matriz diagonal, det(G)


= (h /)m1 . Isso prova a igualdade
desejada. 2
Feofiloff 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 [M, Q] uma matriz
-bijetora (veja figura 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 ).

D EMONSTRAO : De acordo com o lema 11.1, det(E ) = m1 det(D ).


Mas det(E ) = m , uma vez que E = I . Como 6= 0 em virtude de (i0),
temos = det(D ) . 2

Propriedade 11.3 No incio de cada iterao do algoritmo, para cada i


em M e cada j em (M N ) Q,
E [i, j] = det(D ) ,
onde a injeo de M em M N definida pelas equaes i = j e
h = h para cada h em M i.

D EMONSTRAO : De acordo com o lema 11.1, det(E ) = m1 det(D ).


Como 6= 0, resta apenas provar que
det(E ) = m1 E [i, j] .
Para isso, preciso estudar a estrutura de E . A definio de garante que
E [ , M i] = E [ , M i] . Como E = I , temos
E [ , M i] = I [ , M i] ,
donde E [i, M i] nulo. Portanto, o desenvolvimento do determinante de E
pela linha i (propriedade 10.3) garante que
det(E ) = E [i, i] det(E [M i, M i])
= E [i, i] m1 .
Para concluir a demonstrao, resta observar que E [ , i] = E [ , j] . 2

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 .
Feofiloff 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 ,
Q P
|E [i, j] | pM (1 + qN pq ) ,

onde pq o valor absoluto de D [p, q] .

D EMONSTRAO : De acordo com as propriedades 11.2 e 11.3, E [i, j] da


forma det(D ), onde uma injeo de M em M N . De acordo com a deli-
mitao 10.9 do determinante,
Q P
absdet(D ) pM ( qM |D [p, q] |) .
A desigualdade no violada se q M for trocado por q M N (sempre
supondo M disjunto de N ). Finalmente, como D a justaposio de I e D,
P P
qM N |D [p, 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 figura D e
a segunda E. O valor de 10. A injeo definida por 1 = 5, 2 = 4, 3 = 3.
A terceira matriz da figura D . O seu determinante vale 10. A quarta matriz D
com i = 2 e j = 2. O seu determinante, 21, o valor de E [2, 2] . A quinta matriz D
com i = 3 e j = 7. O seu determinante, 0, o valor de E [3, 7] . Todas as matrizes esto
indexadas por 1, 2, 3, . . . de cima para baixo e da esquerda para a direita.
Feofiloff cap. 11 Algoritmo de Gauss-Jordan-Chio 120

como queramos demonstrar. 2

Uma demonstrao
Q Psemelhante prova que E [i, j] limitado pelo produto das
somas de colunas q p pq (desta vez sem o 1+ ). Mostraremos a seguir que
E [i, j] tambm limitado por um produto de produtos. A delimitao mais
grosseira que as anteriores, mas muito til, por ser mais fcil de manipular.

Delimitao 11.5 No incio de cada iterao do algoritmo, para cada i


em M e cada j em M N ,
Q Q
|E [i, j] | pM qN (1 + pq ) ,

em que pq o valor absoluto de D [p, q] .

D EMONSTRAO : Em virtude da delimitao 11.4, basta mostrar que


P Q
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. 2

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 figura 11.8). Ademais, de
acordo com a delimitao 11.5, todos os componentes de G e E estaro entre
e +,
Q Q
onde = p q (1 + pq ) e pq o valor absoluto de D [p,Qq] . A delimitao
P
permanece vlida se for
Q P definido pelo produto de somas p (1 + q pq ) ou
pelo produto de somas q p pq .
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 definem a operao de pivotao exatamente na ordem indicada:
primeiro a expresso no numerador e depois a diviso por , que ser exata.
(Veja a figura 11.9.)
Feofiloff 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 figura 11.2. Apesar das divi-


ses por , todos os nmeros permanecem inteiros 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 0 [4, 4] dado pela
expresso da figura. 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 figura. O algoritmo devolve o nmero 50676 e as
matrizes
Q G (meio da figura) e E (parte inferior da figura). O valor da expresso
P
p (1 + q pq ) , aproximadamente, 4 411 057 000 000.
Feofiloff cap. 11 Algoritmo de Gauss-Jordan-Chio 122

Eficincia. O nmero de dgitos na representao de vale, aproximada-


mente, log . Se adotarmos o produto-de-produtos como definio de , tere-
mos P P
log = p 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

4m2 n .

Suponhamos que o tempo necessrio para executar uma operao aritmtica


entre dois nmeros inteiros que estejam entre e limitado por log2 .
Ento o consumo total de tempo do algoritmo ser da ordem de

m2 n log2

no pior caso. Em suma, o tempo que o algoritmo consome limitado por uma
funo polinomial do espao necessrio para descrever a matriz D. Esta delimi-
tao polinomial foi originalmente demonstrada por Jack Edmonds [Edm67].

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
Feofiloff 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 m2 n log2 , 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 n log(n), onde = maxq maxp 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 overflow
de operaes aritmticas ou fazer aritmtica inteira com preciso ilimitada.
Captulo 12

Algoritmo Simplex-Chio

A operao 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 um fator 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 um par n, m de ndices e devolve
um nmero no-nulo e uma matriz E que -simples com relao a n, m.
Para simplificar 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 Lexicogrfico
(seo 5.3).

Heurstica Simplex-Chio Recebe uma matriz D sobre M N 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

F G = I , G [ , m] = I [ , m] e GD -simples

124
Feofiloff cap. 12 Algoritmo Simplex-Chio 125

n
0 0
0 0
0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0
m 0 0 0

Figura 12.1: Matriz -simples solvel.

(solvel, invivel ou ilimitada) com relao a n, m.

Cada iterao comea com matrizes F , G e E , um nmero , uma parte L de


M m e um elemento h de M L. A primeira iterao comea com F = G = I , h
E = D, = 1, L = e com h em M , se possvel distinto de m. Cada iterao
consiste no seguinte, com f = E [ , n] :

A LTERNATIVA I: h diferente de m .
C ASO I.1: E [h, k] > 0 e f [h] 0 ou E [h, k] < 0 e f [h] 0 para
algum k em N n . k
Para cada p em M m, seja p o nmero E [p, k] . p = E [p, k]
Seja L o conjunto dos ndices p em L para os quais p / > 0.
C ASO I.1 A: f [h] /h f [p] /p para todo p em L .
Seja F 0 , G0 , E 0 o resultado da pivotao de F, G, E em torno de h, k.
Seja L0 o conjunto L + h.
Escolha h0 em M L0 , se possvel distinto de m.
Comece nova iterao com F 0 , G0 , E 0 , h , L0 , h0
nos papis de F , G, E , , L, h.
C ASO I.1 B: f [h] /h > f [p] /p para algum p em L .
Escolha qualquer p em L tal que f [p] /p mnimo.
Seja F 0 , G0 , E 0 o resultado da pivotao de F, G, E em torno de p, k.
Comece nova iterao com F 0 , G0 , E 0 e p
nos papis de F , G, E e .
C ASO I.2: E [h, N n] o e f [h] > 0 ou E [h, N n] o e f [h] < 0 .
Devolva F , G, e pare.
C ASO I.3: E [h, N n] = o e f [h] = 0 .
Seja L0 o conjunto L + h.
Escolha h0 em M L0 , se possvel distinto de m.
Comece nova iterao com L0 e h0 nos papis de L e h.
A LTERNATIVA II: h igual a m .
Feofiloff cap. 12 Algoritmo Simplex-Chio 126

C ASO II.1: E [h, k] / < 0 para algum k em N n . k


Para cada p em M m, seja p o nmero E [p, k] . p = E [p, k]
Seja L o conjunto dos ndices p em L para os quais p / > 0.
C ASO II.1 A: L vazio .
Devolva F , G, e pare.
C ASO II.1 B: L no vazio .
Escolha qualquer p em L tal que f [p] /p mnimo.
Seja F 0 , G0 , E 0 o resultado da pivotao de F, G, E em torno de p, k.
Comece nova iterao com F 0 , G0 , E 0 e p
nos papis de F , G, E e .
C ASO II.2: E [h, N n] / o .
Devolva F , G, e pare. 2

A operao de pivotao definida 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) 6= 0 ,
(i1) F G = I ,
(i2) E = GD ,
e existem partes P de L e Q de N n tais que
(i3) E [P, Q] -bijetora , E [M P, Q] = O e E [LP, ] = O ,
(i4) G [ , M P ] = I [ , M P ] ,
(i5) f [P ] 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 fim 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-
Feofiloff 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 +,
Q Q
onde = p q (1 + pq ) e pq o valor absoluto de D [p, Qq] . A delimitao
P
permanece vlida se for
Q P definido pelo produto de somas p (1 + q pq ) ou
pelo produto de somas q p pq .
Quando D inteira, o Simplex-Chio pode ser executado usando somente
aritmtica inteira. De fato, a diviso por implcita na operao de pivotao
ter sempre resultado inteiro. Alm disso, a operao de diviso que aparece na
definio de L no precisa ser executada explicitamente pois p / positivo se
e s se p e tm o mesmo sinal. Analogamente, as operaes de diviso que
aparecem na definio dos casos I.1A e I.1B e na escolha de p podem ser feitas
implicitamente.

3 2 1 4 5 6 7 8 10
4 3 2 5 6 7 8 9 11
5 6 3 4 7 9 8 10 9
1 5 4 7 5 10 9 6 8
9 8 7 11 3 2 1 4 0

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


Depois de 10 iteraes, a heurstica devolver o nmero 7473, a matriz G (meio da
Q E/7473
figura) e a matriz E (parte inferior da figura). A matriz P simples solvel com
relao coluna 9 e linha 5. O valor da expresso p (1 + q pq ) 381 966 750.

Eficincia de uma iterao. Qualquer que seja o mecanismo de convergn-


cia adotado, o nmero de iteraes do algoritmo Simplex-Chio ser da ordem de
2n no pior caso, onde n o nmero de colunas de D.
Se adotarmos o mecanismo lexicogrfico, 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.
Feofiloff 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 lexicogrficas 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 log2 . Logo, o consumo de tempo de uma iterao da ordem de

mn log2 .

12.4 Concluso
Ao receber uma matriz inteira D e ndices n e m de coluna e linha respectiva-
mente, o algoritmo Simplex-Chio devolve uma matriz inversvel inteira G e um
nmero inteiro no-nulo tais que a matriz GD -simples com relao a n, m.
O valor absoluto de cada componente de G e GD (e, em particular, o n-
mero ) ser limitado pelo produto de todos os nmeros da forma 1 + , onde
o valor absoluto de um componente de D.

Exerccios
12.1 Implemente o algoritmo Simplex-Chio (com regra lexicogrfica ou regra de
Bland) em um computador. Suponha que a matriz dada inteira. Seu pro-
grama deve detectar overflow de operaes aritmticas ou fazer aritmtica
inteira com preciso ilimitada.
Captulo 13

Problemas com dados inteiros

Suponha dado um sistema de equaes lineares com coeficientes inteiros ou um


par dual de problemas cannicos de programao linear com coeficientes 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 um inteiro no-nulo e uma matriz inversvel G tal que GA -escalonada.
fcil extrair de GA e Gb, como j fizemos 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 6= 0 e gb est entre e ,
onde o tamanho do sistema A , b.

Q Q Q
O tamanho do sistema A, b o nmero i (1 + i ) i j (1 + ij ), em que
i e ij so os valores absolutos de b [i] e A [i, j] respectivamente. As concluses
Q
continuam
P vlidas se
Q P o tamanho
P do sistema for definido pelas expresses i (1+
i + j ij ) ou ( j i ij ) ( i i ).

129
Feofiloff cap. 13 Problemas com dados inteiros 130

A alternativa (1) , essencialmente, o resultado da soluo das equaes


Ax = b pela regra de Cramer. 1 A alternativa (2) um certificado 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 definido,
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 fizemos 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 afirmaes:
(1) existe um vetor inteiro x em X(A, b) e um vetor inteiro y em
Y (A, c) tais que cx = yb,
(2) existe um vetor inteiro x em X(A, b) e um vetor inteiro x0 em
X(A, o) tal que cx0 1,
(3) existe um vetor inteiro y em Y (A, c) e um vetor inteiro y em
Y (A, o) tal que y 0 b +1,
(4) existe um vetor inteiro x0 em X(A, o) e um vetor inteiro y 0 em
Y (A, o) tais que cx0 1 e y 0 b +1.
Ademais, cada componente de x, x0 , y e y 0 , bem como os nmeros , cx,
yb, cx0 e y 0 b, esto entre e , onde o tamanho do sistema A, b, c.

1
Referncia a Gabriel Cramer ().
Feofiloff cap. 13 Problemas com dados inteiros 131

Q Q Q Q
O tamanho do sistema A, b, c o nmero i j (1+ij ) i (1+i ) j (1+j ), em
que ij , i e j so os valores absolutos de A [i, j] , b [i] e c [j] respectivamente (
claro que i percorre o conjunto de ndices de linhas de A e j percorre o conjunto
de ndices de colunas de A). O teorema
Q continuaP vlido se o tamanhoP doQsistema
P b, c for definido
A, P pelas expresses i (1 + i + j ij ) (1 + j j ) ou j (j +

i ij ) (
i i ).

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: em que 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 define um
problema cannico primal da ordem de

m (m+n) 2n ,

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 ficou conhecido como algoritmo do
elipside. Outros algoritmos polinomiais, como o que pretendemos descrever,
foram publicados mais tarde.
O algoritmo que discutiremos no uma alternativa prtica para o Sim-
plex, mas tem profundas implicaes tericas (veja Schrijver [Sch86, Sch03]
e Grtschel-Lovsz-Schrijver [GLS88, GLS93]). Alm disso, algumas de suas
idias so teis em outros algoritmos polinomiais, como os algoritmo de pon-
tos interiores [Kar84, Gon89, Gon92], que esto ganhado aceitao na prtica.

133
Feofiloff cap. 14 Introduo aos algoritmos polinomiais 134

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
definio 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 um sistema A, c, encontrar


um vetor z tal que z A [ , j] < c [j] para todo j .

Finalmente, o ncleo, conhecido como algoritmo de Yamnitsky-Levin, resolve o algoritmo de


problema PI . Yamnitsky-
Levin
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 definem nossos problemas so nmeros inteiros.1
Essa hiptese no muito restritiva: qualquer sistema com dados racionais pode
ser transformado num sistema inteiro equivalente mediante multiplicao por
um nmero inteiro positivo suficientemente grande.
O nmero de linhas de qualquer matriz A ser denotado por m(A). O n- m(A)
mero de colunas ser denotado por n(A). O tamanho de A (veja captulo 13) n(A)
ser medido pelo produto (A) de todos os nmeros da forma 1 + , onde (A)
o valor absoluto de um componente de A. Analogamente, o tamanho de

1
Mas as eventuais solues do problema podem ter componentes fracionrios.
Feofiloff 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 , e b,
xA xA
e b ,
xI o , yb + xc 0 . (14.b)
(Veja figura 14.1.) O lema da dualidade 8.1 garante que para todo par y , x que
satisfaz (14.a) o vetor y uma soluo do problema CD(A, c, b). Reciprocamente,
para toda soluo y do problema CD, o teorema da dualidade 8.5 garante a
existncia de um vetor x tal que o par y , x soluo de (14.a).

Complexidade. Digamos que A0 , c0 o sistema descrito implicitamente


em (14.b). Suponha que a complexidade de nosso hipottico algoritmo para o
problema PV(A0 , c0 ) limitada por um polinmio em m(A0 ), n(A0 ) e lg (A0 , c0 ).
fcil verificar que m(A0 ) = m(A) + n(A) e n(A0 ) = 2n(A) + 2m(A) + 1. Ade-
mais,
(A0 ) = (A)3 2n(A) (b) (c) e (c0 ) = (c) (b)2 ,

donde lg (A0 , c0 ) 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 definio mais realista deveria levar em conta o tempo total dispendido na execuo
de cada operao aritmtica; os algoritmos mencionados na introduo podem ser formulados de
modo que seu consumo total de tempo seja polinomial.
Feofiloff cap. 14 Introduo aos algoritmos polinomiais 136

y A O O O b

x O A A I c

c b b o 0

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 A que resolve o problema V. Eis como
A pode ser usado para resolver o problema PV(A, c), ou seja, para encontar um
vetor y em Y (A, c):
Use A para decidir se Y (A, c) vazio. Se Y (A, c) no vazio, use A
repetidas vezes para determinar uma parte K de N que seja maximal
com relao seguinte propriedade:3 existe um vetor y tal que
yA c e yA [ , K] c [K] .4
(Veja a figura 14.2.) Seja A0 a matriz A [ , K] . Use o algoritmo de Gauss- A0
Jordan (captulo 2) para determinar matrizes F e G tais que F G = I e
GA0 escalonada. Seja P 0 a base de linhas e Q0 uma base de colunas de P0
GA0 . Seja w o nico vetor que satisfaz as equaes Q0
w
w (GA0 ) [ , Q0 ] = c [Q0 ] e w [M P 0 ] = o .
O vetor y = w G est em Y (A, c). 2

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


e yA0 = c0 para algum vetor y, onde c0 = c [K] . Mostraremos a seguir que a
maximalidade de K garante que
(GA) [M P 0 , ] = O . (14.c)
(Na terminologia do apndice D, pgina 185, o vetor y bsico em Y (A, c).
A identidade (14.c) afirma 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, ] 6= o para algum i em M P 0 . Seja v v

3
Ou seja, nenhum superconjunto prprio de K tem a propriedade.
4
Mas o algoritmo A no fornece o vetor y.
Feofiloff cap. 14 Introduo aos algoritmos polinomiais 137

y A A0

c c0

Figura 14.2: Construo do problema V que equivale ao


problema PV(A, c). Legenda: A0 = A [ , K] e c0 = c [K] .

o vetor G [i, ] . Ajuste a notao, trocando v por v se necessrio, de modo que


(vA) [j] seja positivo para algum j em N K . Seja o maior nmero tal que

(c yA) [j]

(vA) [j]

para todo j em N K tal que (vA) [j] positivo. fcil verificar que yA+vA
c. Como (vA) [K] = (GA) [i, K] = o, temos

(yA + vA) [K] = c [K] .

Ademais, em virtude da maximalidade de ,

(yA + vA) [j] = c [j]

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 verifi-
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 0 = M ento y = y
um vrtice do poliedro.) claro que y A = w GA e yA = yF GA = wGA, onde
w o vetor yF . Como (GA) [M P 0 , ] nula, temos

y A = w [P 0 ] (GA) [P 0 , ] e yA = w [P 0 ] (GA) [P 0 , ] .

Resta apenas verificar que w [P 0 ] = w [P 0 ] . Por definio, w [P 0 ] (GA0 ) [P 0 , Q0 ] =


c [Q0 ] . Por outro lado,

w [P 0 ] (GA0 ) [P 0 , Q0 ] = w [P 0 ] (GA) [P 0 , Q0 ] = yA [ , Q0 ] = c [Q0 ] ,

uma vez que Q0 parte de K . Finalmente, como (GA0 ) [P 0 , Q0 ] uma matriz de


bijeo, temos
w [P 0 ] = w [P 0 ] .

Segue da que y A = yA, como queramos demonstrar.


Feofiloff cap. 14 Introduo aos algoritmos polinomiais 138

Complexidade. Para resolver o problema PV(A, c), nossa reduo apela


ao algoritmo A no mais que 1 + n(A) vezes. Em cada apelo, resolvemos um
problema V(A0 , c0 ) tal que

n(A0 ) 2n(A) , m(A0 ) = m(A) e (A0 , c0 ) (A, c)2 .

Se a complexidade do algoritmo A limitada por um polinmio em n(A0 ),


m(A0 ) e lg (A0 , c0 ), 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 (A0 , c0 ) consiste em encontrar um ponto interior do poliedro
Y (A0 , c0 ), ou seja, um vetor z tal que zA0 [ , j] < c0 [j] para cada j . Suponha que
dispomos de um algoritmo para o problema PI e queremos resolver o problema
da viabilidade para um sistema inteiro A, c. Adote as abreviaturas n = n(A) e
= (A, c) e faa

= n , A0 = A e c0 = c + u ,

onde u o vetor de 1s (todos os componentes de u so iguais a 1). Resolva o


problema do ponto interior para o sistema A0 , c0 . Se Y (A0 , c0 ) 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 afirma 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.

D EMONSTRAO : 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 .
Feofiloff 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 x0 com componentes entre 0 e tal que
Ax0 = o e cx0 1.

Suponha por um momento que vale a segunda alternativa. Ento, por um lado,

(c + 1 u)x0 > (zA)x0 = z(Ax0 ) = 0 ,

onde a primeira desigualdade vale porque x0 no nulo, uma vez que cx0 no
nulo. Por outro lado,

(c + 1 u)x0 = cx0 + 1 ux0 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). 2

A nfase do teorema est menos nos pontos interiores que na possibilidade


de aumentar ligeiramente o lado direito das restries que definem 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 (A0 , c0 ) limitada por um polinmio em n(A0 ), m(A0 )
e lg (A0 , c0 ). Para resolver o problema V(A, c) como esboamos acima ne-
cessrio tomar A0 = A e c0 = c + u. Se observarmos que m(A0 ) = m(A) e
n(A0 ) = n(A) e adotarmos as abreviaturas m e n respectivamente para esses
dois nmeros, teremos

0 = (A0 ) (c0 )
mn (A) n (c)
= mn+n
= n mn+n mn+n+1 ,

onde e 0 so abreviaturas para (A, c) e (A0 , c0 ) respectivamente. Portanto

lg 0 = (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).
Feofiloff 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 (A0 , c0 ) tiver complexidade limitada por um polinmio em m(A0 ),
n(A0 ) e lg (A0 , c0 ) ento a complexidade do algoritmo resultante para o pro-
blema CD(A, c, b) ser limitada por um polinmio em m(A), n(A) e lg (A, c).
A menos de casos excepcionais,5 a complexidade do algoritmo de Yamnits-
ky-Levin (veja prximo captulo) para o problema PI (A0 , c0 ) limitada pelo po-
linmio
70 (m0 + 1)4 (m0 + n0 + 1) lg 0 ,

onde m0 = m(A0 ), n0 = n(A0 ) e 0 = (A0 , c0 ). Os termos mais significativos


desse polinmio so
5 4
70 m0 lg 0 e 70 m0 n0 lg 0 .

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 significativos so

70 m6 n lg e 70 m5 n2 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 um polinmio cujos termos mais
significativos so
280 m6 n2 lg e 560 m5 n3 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 significativo 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 dificilmente poder competir com o Simplex na
prtica.

5
Sistemas com menos que 7 + lg m(A0 ) componentes no-nulos.
Captulo 15

Algoritmo de Yamnitsky-Levin

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
m4 (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 suficientemente grande que ento progressivamente enco-
lhido at que o centro do tetraedro seja um ponto interior do poliedro ou at
que fique evidente que o poliedro no tem ponto interior. Embora a idia parea
simples, sua realizao tcnica bastante complexa.

15.1 Definies 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 definido 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
Feofiloff cap. 15 Algoritmo de Yamnitsky-Levin 142

Nosso problema encontrar um ponto interior do poliedro, isto , um vetor ponto


racional z tal que interior
zA < c .

A desigualdade deve ser entendida componente-a-componente: zA [ , j] < c [j]


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 definir o volume de um
poliedro arbitrrio; basta definir o conceito para certos poliedros muito simples,
que chamaremos tetraedros.
Um tetraedro1 sobre M o conjunto de todas as combinaes convexas de
m + 1 vetores sobre M , onde m = |M |. Uma combinao convexa dos vetores combinao
t0 , . . , tm qualquer vetor da forma convexa

0 t 0 + + m tm ,
onde 0 , . . , m so nmeros no-negativos tais que 0 + + m = 1. Os m + 1
vetores que definem um tetraedro so os vrtices ou geradores do tetraedro.
O tetraedro gerado pelos vetores t0 , . . , tm ser denotado por [t0 , . . , tm ]. [t0 , . . , tm ]
Antes de definir o volume do tetraedro, convm ajustar nossa notao
de modo que M seja o conjunto {1, . . , m} e adotar a abreviatura M+0 =
{0, 1, . . , m}. Feito esse ajuste, seja T a matriz definida pelas equaes M+0
T
T [i, 0] = 1 e T [i, M ] = ti
para i = 0, . . , m. claro que T definida sobre M+0 M+0. Diremos que T a
matriz do tetraedro gerado pelos vetores t0 , . . , tm . Graas ao ajuste de notao,
a matriz quadrada.
O volume do tetraedro gerado por t0 , . . , tm , por definio, o valor abso- volume
luto do determinante da matriz do tetraedro. Se o valor absoluto de det(T ) for
denotado por absdet(T ), podemos dizer que
vol [t0 , . . , tm ] = absdet(T ) .
O volume do tetraedro no depende da ordem em que tomamos seus vrtices.
De fato, se T 0 a matriz do tetraedro gerado por uma permutao t00 , . . , t0m
de t0 , . . , tm ento existe uma matriz de permutao J tal que T 0 = JT ; como
det(T 0 ) = sig(J) det(T ) = det(T ), temos absdet(T 0 ) = absdet(T ).
O nmero vol [t0 , . . , tm ] /m! o volume do conjunto [t0 , . . , tm ] no sentido
geomtrico. Nossa definio de volume deixa de lado o fator 1/m! porque o
algoritmo de Yamnitsky-Levin s depende dos valores relativos dos volumes
de certos tetraedros.
1
A rigor, o termo tetraedro s apropriado quando m = 3. Quando m = 2, o tetraedro um
tringulo. Quando m = 1, o tetraedro se reduz a um intervalo.
Feofiloff cap. 15 Algoritmo de Yamnitsky-Levin 143

4 4 4 1 4 4 4
20 4 4 1 20 4 4
4 20 4 1 4 20 4
4 4 20 1 4 4 20

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, 243 .

Propriedades do volume. O volume de um tetraedro pode ser calculado a


partir das arestas ti t0 . Esse clculo depende da matriz reduzida do tetrae-
dro: trata-se da matriz T sobre M M definida pelas equaes T

T [i, ] = ti t0 .

Propriedade 15.1 (frmula do volume) Se T a matriz reduzida do te-


traedro gerado por t0 , . . , tm ento vol [t0 , . . , tm ] = absdet(T).

D EMONSTRAO : 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 ) [M, M ] ,

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

det(GT ) = det(G) det(T ) = G [0, 0] det(T ) = det(T ) .

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

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 t0 = u e ti = u + I [i, ] , onde u um vetor de 1s (veja
figura 15.1). Ento
vol [t0 , . . , tm ] = 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 suficientes para
que o volume de um tetraedro seja nulo; a segunda mostra que se [t00 , . . , t0m ]
[t0 , . . , tm ] ento vol [t00 , . . , t0m ] vol [t0 , . . , tm ].

Propriedade 15.2 (do volume nulo) Se t0 a = t1 a = = tm a para


algum vetor no-nulo a sobre M ento vol [t0 , . . , tm ] = 0.
Feofiloff cap. 15 Algoritmo de Yamnitsky-Levin 144

D EMONSTRAO : Seja T a matriz reduzida do tetraedro gerado por


t0 , . . , tm . 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 F G = I e a matriz GT escalonada. Seja P a base de
linhas da matriz GT .
Suponha, tentativamente, que P = M e portanto que GT uma matriz
de bijeo. De acodo com nossas hipteses, T [i, ] a = ti a t0 a = 0 para cada i.
Como Ta nulo, tambm GTa nulo. Como a matriz GT de bijeo, o vetor a
necessariamente nulo. o que inconsistente com nossas hipteses. Conclumos
assim que M P no vazio.
Seja i um elemento de M P . Como o vetor (GT) [i, ] nulo, o determinante
de GT nulo. Como o determinante de GT 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. 2

Propriedade 15.3 (monotonicidade) Se os vetores t00 , . . , t0m esto todos


em [t0 , . . , tm ] ento vol [t00 , . . , t0m ] vol [t0 , . . , tm ].

D EMONSTRAO : Sejam T e T 0 as matrizes dos tetraedros gerados, respec-


tivamente, por t0 , . . , tm e t00 , . . , t0m . Basta mostrar que absdet(T 0 ) absdet(T ).
Por hiptese, cada vetor t0i uma combinao convexa de t0 , . . , tm . Por-
tanto, cada linha da matriz T 0 uma combinao convexa das linhas de T . Em
outras palavras, existe uma matriz G sobre M+0 M+0 tal que
, G
T 0 = GT [i, ] o e P G
j [i, j] = 1

para cada i em M+0. Portanto, o determinante de T 0 o produto dos determi-


e T (teorema 26). Mas
nantes de G
Q (P G
absdet(G)
i j [i, j] ) = 1

de acordo com a delimitao 10.9. Logo, absdet(T 0 ) absdet(T ). 2

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 afirmao 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 afirmao d estimativas do volume do tetraedro e da
norma de seus vrtices. A norma de um vetor z o maior componente, em valor
absoluto, de z:
|z| = maxj |z [j] | .

O teorema adota, tacitamente, a conveno M = {1, . . , m} que j usamos na


seo anterior.
Feofiloff 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 z0 , . . , zm sobre M dotados das seguintes
propriedades:
vol [z0 /, . . , zm /] 1/m

e, para cada i, zi / Y (A, c) e |zi | 2


+ 1, onde
o nmero
2 2
4 (A) (c) .

D EMONSTRAO : 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 sufici-
entemente grande, alguns dos vetores em Y (A, c) tero componentes inteiros.
So desse tipo os vetores z0 , . . , zm que estamos procurando. O vetor z0 , em
particular, dever estar suficientemente afastado de algumas das fronteiras do
poliedro Y (A, c). A prova da existncia de um tal z0 ser delegada, em parte,
ao lema 15.5 abaixo.
Seja a o vetor definido da seguinte maneira para cada j em N : se A [ , j] o
ento a [j] = 0 seno a [j] = maxi A [i, j] . bvio que

a o e a A [i, ]

para cada i em M . Ademais, a inteiro uma vez que A inteira. A definio


de a garante que para cada j existe i tal que a [j] |A [i, j] |. Segue da imediata-
mente que
(a) (A) .

Nossa primeira tarefa a determinao de um vetor inteiro z0 e um nmero


tais que a diferena entre c e z0 A seja pelo menos a. Digamos que z um
ponto interior de Y (A, c) e defina 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 z0 tais que

0 1 , z0 A + 0 a c , 1 4 e |z0 | 8 ,

onde = (A)(a)(c). Como a o e (a) (A), temos

z0 A + a c , 1
e |z0 | 2
.

(Note que z0 pertence a Y (A, c) mas no necessariamente um ponto interior.)

2
A expresso est entre e deve ser entendida como .
Feofiloff cap. 15 Algoritmo de Yamnitsky-Levin 146

Agora que temos um dos vrtices do tetraedro, podemos construir os de-


mais: para i = 1, . . , m,
zi = z0 + I [i, ] .

evidente que cada zi inteiro e |zi | 2


+ 1. Como a A [i, ] , temos

zi A = z0 A + A [i, ] z0 A + a c

para cada i em M . Como a o, podemos dizer que z0 A z0 A + a c.


Portanto, cada um dos vetores zi est em Y (A, c).
Finalmente, preciso calcular o volume do tetraedro gerado pelos vetores
z0 /, . . , zm /. Seja Z a matriz reduzida do tetraedro. De acordo com a proprie-
dade 15.1,
vol [z0 /, . . , zm /] = absdet( 1 Z)
.

Como Z [i, ] = zi z0 = I [i, ] para cada i, temos

absdet( 1 Z)
= absdet( 1 I) = m
m ,

. 2
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 t0 , . . , tm e vol [t0 , . . , tm ] <
m ento Y (A, c) no tem ponto interior. Esta , essencialmente, a condio
1/
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
suficientemente afastado das fronteiras.

Lema 15.5 Seja A uma matriz inteira sobre M N 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).

D EMONSTRAO : Considere o problema de encontrar um vetor z e um


nmero que

maximizem sujeito a z A + a c e 0 . (15.b)


Feofiloff cap. 15 Algoritmo de Yamnitsky-Levin 147

Convm mostrar explicitamente que este problema cannico dual. Seja A0 a


matriz definida por

A0 [M, N ] = A , A0 [0, N ] = a , A0 [M, 0] = o e A0 [0, 0] = 1 .

claro que A0 definida sobre M+0 N+0; a notao est sendo ajustada de
modo que 0 no esteja em N . Sejam b0 e c0 os vetores definidos por

b0 [M ] = o , b0 [0] = 1 , c0 [N ] = c e c0 [0] = 0 .

Nosso problema (15.b) essencialmente igual ao problema cannico dual


CD(A0 , c0 , b0 ), que consiste em maximizar y 0 b0 sujeito a y 0 A0 c0 . Para qualquer
soluo y 0 do segundo problema, o par y 0 [M ] , y 0 [0] uma soluo do primeiro.
Observe que (A0 )(c0 )(b0 ) = 4, uma vez que (A0 ) = 2(a)(A),
(b0 ) 0
= 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 0 e x0 tais que

y 0 A0 c0 , A0 x0 = b0 , x0 o , y 0 b0 = c0 x0 ,
|y 0 | 4 , |x0 | 4 ,

ou existem vetores inteiros y 0 e y 00 tais que

y 0 A0 c0 , y 00 A00 o , y 00 b0 1 ,
|y 0 | 4 , |y 00 | 4 .

Suponha inicialmente que vale a primeira das alternativas. Defina z = y 0 [M ] e


= y 0 [0] . Observe que z A + a c pois y 0 A0 c0 . Observe tambm que

pelos motivos que passamos a expor. Seja z 0 o vetor definido por z 0 [M ] = z e


z 0 [0] = . Como z 0 satisfaz as restries do problema CD(A0 , b0 , c0 ), o lema da
dualidade 8.1 garante que z 0 b0 c0 x0 . Logo,

= y 0 [0] = y 0 b0 = c0 x0 z 0 b0 = z 0 [0] = .

Como positivo e y 0 inteiro, temos 1.


Suponha agora que vale a segunda alternativa e adote z = y 0 [M ] + y 00 [M ] e
= y 0 [0] + y 00 [0] . claro que

y 00 [0] = y 00 b0 1 e |z | |y 0 | + |y 00 | 8 .

Ademais, z A + a c pois y 0 A0 + y 00 A0 c0 . 2
Feofiloff cap. 15 Algoritmo de Yamnitsky-Levin 148

15.4 Algoritmo
O objetivo do algoritmo encontrar um ponto interior do poliedro Y (A, c). O al-
goritmo envolve o poliedro num tetraedro suficientemente grande,3 que ento
progressivamente encolhido. A cada iterao, o algoritmo verifica se o centro
do tetraedro um ponto interior do poliedro; em caso negativo, o tetraedro de-
formado de modo que continue envolvendo o poliedro mas sofra uma reduo
de volume. Quando o volume do tetraedro se torna suficientemente pequeno, o
algoritmo conclui que o poliedro no tem pontos interiores.
O algoritmo no se aplica a matrizes com menos que duas linhas; mas nesse
caso o problema pode ser resolvido por meios elementares (veja apndice deste
captulo).

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 m2


para a expresso 4 2 . Em suma,
o tamanho do sistema A, c e a abreviatura

= (A) (c) e = 4 2 .

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

4
u + 8
mI [i, ] .

Cada iterao do algoritmo comea com vetores racionais t0 , . . , tm sobre M e t0 , . . , t m


um nmero racional . A primeira iterao comea com ti = t?i para cada i e
com = (8 m)m . Cada iterao consiste no seguinte:

C ASO 1: 1/ m .
1
Seja t o vetor m+1 (t0 + + tm ). t

C ASO 1.1: t A [ , k] < c [k] para cada k em N .


Devolva t e pare.
C ASO 1.2: t A [ , k] c [k] para algum k em N . k

C ASO 1.2A: A [ , k] = o .
Pare sem nada devolver.
C ASO 1.2B: A [ , k] 6= o .
Para cada i = 0, 1, . . , m, seja i o nmero (t ti ) A [ , k] .
Escolha h de modo que h seja mximo. h

3
Para efeito desta descrio informal, suponha que o poliedro limitado (veja exerccio 15.4,
pgina 159).
Feofiloff cap. 15 Algoritmo de Yamnitsky-Levin 149

1
Para i = 0, 1, . . , m, seja i o nmero 1 i .
m2 h
Sejam t00 , . . , t0m os vetores definidos pelas equaes t0h = th
1 1
e t0i = ti + (1 ) th para cada i distinto de h.
i i

Seja 0 o nmero Q h .
i i
Comece nova iterao com t00 , . . , t0m e 0 nos papis de t0 , . . , tm e .
C ASO 2: < 1/m .
Pare sem nada devolver. 2

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 t0 , . . , tm .
No caso 1.2B, o vetor t o centro do tetraedro gerado por t0 , . . , tm e o
nmero i a projeo do vetor t ti na direo A [ , k] .
A transformao de t0 , . . , tm em t00 , . . , t0m deixa fixo o vrtice th do te-
traedro e multiplica por 1/i a aresta que liga os vrtices ti e th .
CadaQi positivo e pode ser maior que 1 ou menor que 1. Mas o fator
h / i i estritamente menor que 1. Portanto, o volume 0 do novo
tetraedro estritamente menor que .

Operao de pivotao. Diremos que a operao que transforma t0 , . . , tm


em t00 , . . , t0m 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 0 as matrizes dos tetraedros gerados por t0 , . . , tm e t00 , . . , t0m respec- T T0
tivamente. Seja G a matriz sobre M+0 M+0 definida pelas equaes
G

[ , i] = 1 I [ , i] ,
G [i, h] = 1 1 ,
G [h, h] = 1 ,
G
i i

onde as duas primeiras equaes valem para cada i distinto de h. (Veja a fi-
gura 15.2). A matriz est bem definida pois i 6= 0 para todo i, como veremos
adiante. Diremos que G a matriz de pivotao. fcil verificar que

T 0 = GT
(15.c)

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


particular, T 0 [ , 0] = u = GT =
h / i i , donde
0 = det(G) . (15.d)
Feofiloff cap. 15 Algoritmo de Yamnitsky-Levin 150

inversvel. De fato, se F a matriz definida por


A matriz G F

F [ , i] = i I [ , i] , F [i, h] = 1 i , F [h, h] = 1 , (15.e)


onde as duas primeiras equaes valem para cada i distinto de h, ento F G
=

GF = I .

0 0 0 0 0 1 0 1/0 0 0 0 0 1 1/0
0 1 0 0 0 1 1 0 1/1 0 0 0 1 1/1
0 0 2 0 0 1 2 0 0 1/2 0 0 1 1/2
0 0 0 3 0 1 3 0 0 0 1/3 0 1 1/3
0 0 0 0 4 1 4 0 0 0 0 1/4 1 1/4
0 0 0 0 0 1 0 0 0 0 0 1

Figura 15.2: Exemplo com m = h = 5. O lado esquerdo da figura 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 [t0 , . . , tm ] ,
(i2) vol [t0 , . . , tm ] = ,
(i3) > 0 .

O primeiro invariante afirma4 que Y (A, c) [t?0 , . . , t?m ] parte de [t0 , . . , tm ].


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 [t0 , . . , tm ] que do sistema A, c. Por outro lado, a
anlise da ltima iterao no depende de t0 , . . , tm mas apenas de A, c.

15.6 O algoritmo est bem definido


Para garantir que o algoritmo est bem definido preciso verificar que h 6= 0 e
i 6= 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 (A, c) for limitado ento (i1) afirma que Y (A, c) parte de [t0 , . . , tm ], pois nesse caso
Y (A, c) parte de [t?0 , . . , t?m ].
Feofiloff cap. 15 Algoritmo de Yamnitsky-Levin 151

Comecemos
P Pcom a seguinte observao. Em cada ocorrncia do caso 1.2B
temos
P i = (t ti )A [ , P
k] . Essa ltima expresso igual a (m+1)tA [ , k]
ti A [ , k] . Como (m+1)t = ti , temos necessariamente
P
i = 0 . (15.f)

Lema 15.6 Se (i2) e (i3) valem no incio de uma iterao em que ocorre
o caso 1.2B ento h > 0.
P
D EMONSTRAO : Como i = 0, a maximalidade de h garante que h
no negativo. Suponha por um instante que h nulo. Ento i = 0 para
todo i, donde tA [ , k] = ti A [ , k] para todo i, e portanto
t0 A [ , k] = t1 A [ , k] = = tm A [ , k] .
Como A [ , k] no nulo por definio do caso 1.2B, a propriedade 15.2 do volume
nulo garante que
vol [t0 , . . , tm ] = 0 .

Mas isso inconsistente com os invariantes (i2) e (i3). Portanto, a hiptese h = 0


insustentvel e devemos ter h > 0. 2

Suponha que (i2) e (i3) valem no incio de uma iterao em que ocorre o
caso 1.2B. O lema que acabamos de mostrar, mais a maximalidade de h e a
hiptese m 2, permitem concluir que i est bem definido e tambm que m2

i > 0 (15.g)
P P
para
P todo i. Finalmente, convm calcular i . Como i = (m + 1) +
2
P
i /(m h ) e i = 0, temos
P
i = m + 1 . (15.h)

15.7 ltima iterao


Suponha que os invariantes (i1) a (i3) valem no 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 [ , k] nulo e tA [ , k] c [k] para al-


gum k. Ento
yA [ , k] = 0 c [k]

para todo vetor y. Logo, o poliedro Y (A, c) no tem ponto interior. Assim, ao
parar sem nada devolver, o algoritmo est se comportando da maneira prevista.
Feofiloff cap. 15 Algoritmo de Yamnitsky-Levin 152

Anlise do caso 2. Suponha, finalmente, que < 1/ m . Ento, de acordo


m . Suponha que, ao contrrio do que
com o invariante (i2), vol [t0 , . . , tm ] < 1/
afirma 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 z0 , . . , zm tais que

m
vol [z0 /, . . , zm /] 1/

e, para cada i,
zi / Y (A, c) e |zi | 2
+ 1.

A ltima desigualdade garante que cada vetor zi / est no tetraedro gerado por
t?0 , . . , t?m . De fato,

zi [j] / (2
1)/ 2
1 4

para todo j em M e
P
j zi [j] / m(2
+ 1)/ m(2
+ 1) 4m
.

Como Y (A, c) [t?0 , . . , t?m ] [t0 , . . , tm ] em virtude do invariante (i1), conclu-


mos que zi / est em [t0 , . . , tm ] para cada i. Nestas circunstncias, a proprie-
dade 15.3 da monotonicidade garante que

vol [z0 /, . . , zm /] vol [t0 , . . , tm ] .

m , o que inconsistente com a definio do


Segue-se que vol [t0 , . . , tm ] 1/
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 verificar os seguintes fatos.

Fato 15.7 No fim do caso 1.2B, vol [t00 , . . , t0m ] = 0 e 0 > 0 .

e observe que
D EMONSTRAO : Considere a matriz de pivotao G
= /Q .
det(G) h i

positivo. Como 0 = det(G)


Em virtude de (15.g), det(G) , o invariante (i2)
0
garante que positivo. Isto conclui a demonstrao da segunda parte. Para
demonstrar a primeira parte basta verificar que

vol [t00 , . . , t0m ] = det(G)


vol [t0 , . . , tm ] .
Feofiloff cap. 15 Algoritmo de Yamnitsky-Levin 153

Sejam T e T 0 as matrizes dos tetraedros gerados por t0 , . . , tm e t00 , . . , t0m res-


pectivamente. Como j observamos em (15.c), T 0 = GT . Pelo teorema 26, o
0
determinante de T o produto dos determinantes de G e T . Portanto,
vol [t00 , . . , t0m ] = absdet(T 0 )
absdet(T )
= det(G)
vol [t , . . , t ] ,
= det(G) 0 m

como queramos demonstrar. 2

Fato 15.8 No fim do caso 1.2B, se yA [ , k] c [k] e y est em [t0 , . . , tm ]


ento y est em [t00 , . . , t0m ] .

D EMONSTRAO : Seja y um ponto do tetraedro gerado por t0 , . . , tm . Se T


denota a matriz do tetraedo, podemos dizer que existe um vetor l sobre M+0
tal que
lT [ , M ] = y , lT [ , 0] = 1 e l o .

Seja F a inversa de G definida em (15.e) e seja l0 o vetor lF . Mostraremos a


seguir que se yA [ , k] c [k] ento
l0 T 0 [ , M ] = y , lT 0 [ , 0] = 1 e l0 o ,
onde T 0 a matriz do tetraedro gerado por t00 , . . , t0m ; isso provar que y est em
[t00 , . . , t0m ]. As duas primeiras relaes seguem imediatamente de (15.c):
l0 T 0 = (lF )(GT
) = l(F G)T
= lT .
Na demonstrao da desigualdade l0 0, vamos adotar as abreviaturas i = l [i]
e 0i = l0 [i] . Para cada i distinto de h temos
0i = lF [ , i] = i i 0 ,
uma vez que i no negativo de acordo com (15.g). Resta apenas mostrar que
0h no negativo. Como
0h = lF [ , h] = h h + (1 i )i
P
P
e h no negativo em virtude de (15.g),Pbasta mostrar que (1 i )i no
negativo. Isso equivale a mostrar que i i no negativo, uma vez que
i = m2 h (1 i ) e h positivo em virtude do lema 15.6. Mas
P P
i i = (t ti ) A[ , k]
Pi P
= ( i t i ti ) A[ , k]
= (t y) A[ , k]
= tA[ , k] yA[ , k]
c[k] c[k]
= 0,
uma vez que tA [ , k] c [k] por definio do caso 1.2 e yA [ , k] c [k] por hiptese.
Com isto, conclumos a demonstrao de que 0h no negativo. 2
Feofiloff 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

Qh .
i

Diremos que esse nmero o fator de contrao da iterao e mostraremos que contrao
ele significativamente menor que 1. mais cmodo manipular o inverso do
fator de contrao. Mostraremos que o logaritmo desse inverso maior que o
nmero positivo 1 / 2(m + 1)2 .

Delimitao 15.9 (do fator de contrao) Em cada ocorrncia do


caso 1.2B, Q
i 1 1
(1 2 )m (1 )1 .
h m m
Q P
D EMONSTRAO : 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 .

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


2
P virtude da maximalidade de h , temos i 1 1/m para todo i.
concreta. Em
Ademais, i = m + 1 de acordo com (15.h). Diante disso, o lema (15.i)
com m, i e 1 1/m2 no lugar de k, i e garante que

i (1 + 1/m) (1 1/m2 )m .
Q

Como h = 1 1/m2 = (1 1/m) (1 + 1/m), temos a delimitao desejada. 2


Feofiloff 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 m 1 1
= (1 ) (1 )1 =
m2 m 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, Q
i 1
lg > .
h 2(m + 1)2

D EMONSTRAO : 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/m2 e 1/m esto entre 0 e 1, uma vez que m 2. Portanto, m2
o logaritmo da delimitao 15.9 produz as desigualdades

1  1
m ln 1 2
ln 1
m m
1 1 1 1 1 1 1
3
5
7
+ + 2
+ +
m 2m 3m 4m m 2m 3m3
1 1 1 1  1 1 
= 2
1 + 3
1 2 + 4
1 3 +
2m m 3m m 4m m
1 1
> 1
2m2 m
m1
=
2m3
m1
>
2(m + 1)(m + 1)(m 1)
1
= .
2(m + 1)2

Como lg > ln quando ln positivo, temos a delimitao desejada. 2


Feofiloff 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).

D EMONSTRAO : No incio da primeira iterao temos Q = (8 m)m . No


fim de cada ocorrncia do caso 1.2B, substitudo por (h / i ) . No fim da
m)m Lj , onde L uma delimitaao do fator
j -sima iterao teremos < (8
de contrao. Em virtude da delimitao 15.10,
1
lg < m lg(8 m) j
2(m + 1)2
no incio da j+1-sima iterao. Quando
j 2(m + 1)2 m(lg
+ lg(8m
)) ,
teremos lg < m lg m , desigualdade esta que caracteriza o
e portanto <
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. 2

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 verificar que o algoritmo executa n
no mais 2mn + m2 + m + 2 operaes aritmticas para decidir que caso se
aplica e no mais que 6m2 + 6m + 4 operaes aritmticas ao longo da execuo
do caso 1.2B. Assim, o nmero de operaes aritmticas em cada iterao
limitado por 7m2 + 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).
Feofiloff 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
m4 (m + n) lg ,
onde o produto de todos os nmeros da forma 1+ sendo o valor absoluto
de um componente do sistema A , c.
Infelizmente, nossa anlise no leva em conta o custo de cada operao arit-
mtica; esse custo considervel, pois os nmeros envolvidos podem ter nu-
meradores e denominadores enormes. possvel reescrever o algoritmo, com
a introduo de arredondamentos apropriados [GLS88, p.80] [GLS93] [Sch86,
p.166], de modo que o consumo total de tempo que leva em conta o custo de
cada operao aritmtica ainda seja limitado por um polinmio em m, n e
lg .

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 t0 , t1 e . A primeira iterao
comea com t0 = t?0 , t1 = t?1 e = 8 , onde t?0 = 4 , t?1 = +4
e
=
2 2
4(a) (c) . Cada iterao consiste no seguinte:

C ASO 1: 1 .
Seja t o nmero 12 t0 + 12 t1 .
C ASO 1.1: ta [k] < c [k] para cada k em N .
Devolva t e pare.
C ASO 1.2: ta [k] c [k] para algum k em N .
C ASO 1.2A: a [k] = 0 .
Pare sem nada devolver.
C ASO 1.2B: a [k] 6= 0 .
Sejam 0 e 1 os nmeros (t t0 ) a [k] e (t t1 ) a [k] respectivamente.
Defina t00 e t01 da seguinte maneira:
se 0 0 ento t00 = t0 e t01 = t seno t01 = t1 e t00 = t.
Seja 0 o nmero /2.
Comece nova iterao com t00 , t01 e 0 nos papis de t0 , t1 e .
Feofiloff cap. 15 Algoritmo de Yamnitsky-Levin 158

C ASO 2: < 1 .
Pare sem nada devolver. 2

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 t0 y t1 ,


(i2) t1 = t0 + ,
(i3) > 0 .

Para mostrar a validade do invariante (i1) basta verificar que no fim do


caso 1.2B temos

se ya [k] c [k] e t0 y t1 ento t00 y t01 . (15.j)

A demonstrao desse fato um caso particular do que discutimos na seo 15.8.


Suponha que y um nmero tal que t0 y t1 e ya [k] c [k] . claro que existe
um nmero entre 0 e 1 tal que

t0 + (1 )t1 = y .

preciso mostrar que existe 0 entre 0 e 1 tal que y = 0 t00 + (1 0 )t01 . Como
estamos no caso 1.2, temos ta [k] c [k] . Como ya [k] c [k] , vale um das alterna-
tivas:
t0 a [k] c [k] t1 a [k] ou t0 a [k] c [k] t1 a [k] .

Digamos que vale a primeira alternativa (a demonstrao anloga no outro


caso). Como ya [k] c [k] , conclumos que y est mais prximo de t0 que de t1 e
portanto 1/2. Seja 0 o nmero 2 1 e observe que 0

0 0 1 .

Como ta [k] c [k] t0 a [k] , temos 0 0 e portanto t00 = t0 e t01 = t. fcil


verificar agora que

0 t00 + (1 0 )t01 = t0 + (1 t1 ) = 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


1e e nmeros inteiros z0 e z1 entre 2
e 2
+ 1 tais que

z 0 + 1 z1 , z0 a c e z1 a c ,

o nmero 4(a)2 (c)2 .


onde
Feofiloff cap. 15 Algoritmo de Yamnitsky-Levin 159

Exerccios
15.1 Verifique a proposio 15.1 (frmula do volume) e a proposio 15.2 (do
volume nulo) no caso m = 1 e no caso m = 2.
15.2 D uma prova elementar do teorema 15.4 (tetraedro interior) no caso |M | =
|N | = 1. Enuncie o teorema 15.4 e o lema 15.5 no caso |M | = 1 (e N
arbitrrio); demonstre essas verses especializadas.
15.3 Suponha que Y (A, c) tem um ponto interior. Mostre que Y (A, c) contm
um cubo suficientemente grande. Mais especificamente, mostre que existe
e um vetor inteiro z tais que |z | 4
um inteiro entre 1 e 2 e

(z + v)A c

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 [m, ] o. Para fazer isso, examina uma nova linha
da matriz em cada iterao. O Simplex Dual, ao contrrio, examina uma nova
coluna da matriz em cada iterao e procura, primeiro, estabelecer a desigual-
dade E [m, ] o e s depois a desigualdade E [ , n] o. Ambos os algoritmos
fazem pivotao de linhas, isto , em cada iterao somam a cada linha de E
uma combinao linear apropriada das outras linhas.

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-
referncias ao ltimo. Suponha que M e N so conjuntos de ndices e que m e simples
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 definidos a seguir.
Uma matriz E dual-simples solvel com relao 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 [P, Q] de bijeo , E [P, n] o ,


E [M mP, N ] = O ,
E [m, N nQ] o , E [m, 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
Feofiloff ap. A Simplex Dual 162

k Q n
0 0 1
0 1 0
1 0 0
0 0 0 0
0 0 0 0
0 0 0 0
m < 0 0 0

Figura A.1: Matriz dual-simples invivel.

< h

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 [P, k] o , E [P, Q] de bijeo ,
E [M mP, k] = o , E [M mP, Q] = O ,
E [m, k] < 0 , E [m, Q] = o .

Note que esta definio 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 [m, N ] o
e existe h em M m tal que

E [h, N n] o e E [h, n] > 0 ou E [h, N n] o e E [h, n] < 0 .

Esta definio semelhante mas no idntica de uma matriz primal-


simples invivel. O elemento h de M m 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 [N nQ] o ,


Feofiloff ap. A Simplex Dual 163

(i1) E [P, Q] uma matriz de bijeo e E [M mP, N n] = O ,

onde P uma parte de M m, Q uma parte de N n, e f a linha m da matriz, f


ou seja, f = E [m, ] . 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
P 0 1 0
1 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0
m 0 0 0

Figura A.3: Matriz E no incio de uma iterao do Simplex Dual.

Se E [M mP, n] 6= o ento E dual-simples ilimitada. Se E [M mP, n]


nulo e E [P, n] o ento E dual-simples solvel. Suponha agora que
E [M mP, n] nulo mas E [p, 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 0 definida pelas equaes
1 E [i, k]
E 0 [p, ] = E [p, ] e E 0 [i, ] = E [i, ] E [p, ]
E [p, k] E [p, k]
para cada i em M p. Ao mesmo tempo, Q substitudo pelo conjunto Q0 =
Q q + k, onde q o nico elemento de Q tal que E [p, q] = 1. Para garantir que
E 0 [p, n] no seja negativo, preciso escolher p e k de modo que

E [p, k] < 0 . (A.a)

claro que depois da pivotao o invariante (i1) continuar valendo com E 0


e Q0 no lugar de E e Q. Resta entender as condies sobre k que garantem a
preservao de (i0). Se denotarmos por f 0 o vetor E 0 [m, ] ento claro que f0

f [k]
f0 = f E [p, ] .
E [p, k]
fcil verificar que f 0 [Q0 ] nulo e portanto a primeira parte de (i0) vale. Resta
considerar a segunda parte de (i0), supondo satisfeita a condio (A.a). claro
que f 0 [q] f [q] . De modo mais geral, para cada j em N n, temos f 0 [j] f [j] se
E [p, j] 0 e f 0 [j] f [j] em caso contrrio. Portanto, para garantir f 0 [N n] o
necessrio e suficiente que k satisfaa a condio
f [k]
f [j] E [p, j] (A.b)
E [p, k]
Feofiloff ap. A Simplex Dual 164

para todo j em N n tal que E [p, 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
satisfaam as condies e executar uma pivotao em torno de p, k. Se no existe
k que satisfaa (A.a) ento p uma linha de ilimitao. A nova matriz E 0 no
necessariamente mais simples que E , uma vez que E 0 [P, n] pode ter mais
componentes negativos que E [P, 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 figura 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 M N 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 com relao a m, n. A tarefa de
escrever o algoritmo completo ficar 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 M N ,


elementos m e n de M e N respectivamente e partes P0 e Q0 de M m
e N n respectivamente tais que
D [m, Q0 ] = o , D [m, N nQ0 ] o ,
D [P0 , Q0 ] uma matriz de bijeo e D [M mP0 , N n] = O ;
se convergir, devolve matrizes F e G tais que F G = I , G [ , m] = I [ , m]
e a matriz GD dual-simples (solvel ou ilimitada) com relao ao
par m, n.
Feofiloff ap. A Simplex Dual 165

Cada iterao comea com uma parte Q de N n, uma parte P de M m e


matrizes F , G e E . A primeira iterao comea com Q = Q0 , P = P0 , F = G =
I e com E = D. Cada iterao consiste no seguinte, com f = E [m, ] :

C ASO 0: E [M mP, n] 6= o .
Devolva F e G e pare (E dual-simples ilimitada).
C ASO 1: E [M mP, n] = o e E [p, n] < 0 para algum p em P .
Seja K o conjunto de todos os k em N n para os quais E [p, k] < 0.
C ASO 1A: K vazio .
Devolva F e G e pare (E dual-simples ilimitada).
C ASO 1B: K no vazio .
Escolha k em K de modo que f [k] /E [p, k] seja mximo.
Seja F 0 , G0 , E 0 o resultado da pivotao de F, G, E em torno de p, k.
Seja q um elemento de Q tal que E [p, q] = 1.
Comece nova iterao com Q q + k, F 0 , G0 e E 0
nos papis de Q, F , G e E .
C ASO 2: E [M mP, n] = o e E [P, n] o .
Devolva F e G e pare (E dual-simples solvel). 2

A operao de pivotao definida exatamente como no Simplex Primal.


O comportamento da heurstica descrita pelos seguintes

Invariantes No incio de cada iterao,


(i0) f [Q] = o e f [N nQ] o ,
(i1) E [P, Q] uma matriz de bijeo e E [M mP, N n] = O ,
(i2) F G = I e GD = E ,
onde f o vetor E [m, ] . f

As demonstraes dos invariantes so anlogas s correspondentes demons-


trao no Simplex Primal. A cada ocorrncia do caso 1B temos

f [k]
f 0 [n] = f [n] E [p, n] f [n] ,
E [p, k]
sendo f 0 = E 0 [m, ] , pois E [p, n] e E [p, k] so negativos e f [k] 0. Portanto, numa f0
seqncia de ocorrncias do caso 1B, a correspondente seqncia de valores de
f [j] monotnica. Se for estritamente monotnica, a seqncia ser finita, pois
os valores correspondentes da varivel Q sero todos distintos. Infelizmente, a
monotonia pode no ser estrita e a heurstica pode no convergir.
Feofiloff ap. A Simplex Dual 166

1 0 0 0 6 1 2 4 1 0 0 14
0 1 0 0 3 2 1 5 0 1 0 25
0 0 1 0 2 1 0 2 0 0 1 14
0 0 0 1 5 3 3 6 0 0 0 0

1 4/5 0 0 18/5 3/5 6/5 0 1 4/5 0 6


0 1/5 0 0 3/5 2/5 1/5 1 0 1/5 0 5
0 2/5 1 0 4/5 1/5 2/5 0 0 2/5 1 4
0 6/5 0 1 43/5 3/5 9/5 0 0 6/5 0 30

5/3 4/3 0 0 6 1 2 0 5/3 4/3 0 10


2/3 1/3 0 0 3 0 1 1 2/3 1/3 0 1
1/3 2/3 1 0 2 0 0 0 1/3 2/3 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 figura 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 lexicogrfica 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 [M m, N n] , c = D [m, N n] e b = D [M m, n] . Diremos que o terno A, c, b
um sistema dual. O sistema simples se a correspondente matriz D for dual- sistema
simples. Nessa notao, o algoritmo poderia ser formulado assim: dual

Recebe um sistema dual A, c, b e devolve matrizes F e G e um vetor g


tais que F G = 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
Feofiloff ap. A Simplex Dual 167

pois y 0 b 0 para todo y 0 em Y (A, c). De fato,


y 0 b = y 0 [P ] b [P ] 0
pois b [M P ] = o, b [P ] o e y 0 [P ] 0, uma vez que y 0 [P ] A [P, Q] = y 0 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 [P ] A [P, k] = (yA) [k] c [k] < 0, donde
y [p] > 0
para algum p em P . Se q o elemento de Q para o qual A [p, q] = 1, temos
y [p] A [p, q] = y [p] > 0. Isto contradiz nossa hiptese de que yA c. Portanto,
CD(A, c, b) invivel.
Suponha, finalmente, que A, c, b simples ilimitado com linha de ilimita-
o h. Suponha A [h, ] o e b [h] positivo (o outro caso anlogo). Tome
y 0 [h] = 1 e y 0 [M h] nulo. Ento
y 0 A = y 0 [h] A [h, ] o c e y 0 b > 0 .
Para qualquer positivo, y 0 est em Y (A, c) e y 0 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 F G = 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
zG g
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. O valor
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 diferem por
gb, que constante. Segue da que (1) o primeiro problema ilimitado se e s se
o segundo ilimitado e (2) o primeiro problema tem soluo se e s se o segundo
tem soluo. Mais especificamente, se y soluo do primeiro problema ento
(y + g)F soluo do segundo; e se z soluo do segundo problema ento
zG g soluo do primeiro.
Feofiloff 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 F G = I , G [ , m] = I [ , m] e a matriz GD dual-simples (solvel,
invivel ou ilimitada) com relao ao par m, n.
A.3 Escreva e analise o algoritmo Simplex Dual com regra lexicogrfica. Es-
creva e analise o algoritmo Simplex Dual com regra de Bland.
Apndice B

Anlise de sensibilidade

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 um dos componentes de c ou b varia. A segunda 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 F G = I e o sistema GA, Gb, c yA simples solvel e tem
bases P e Q. Portanto,

(GA)[P, Q] de bijeo , (Gb)[P ] o ,


(GA)[M P, N Q] = O , (GA)[M P, Q] = O , (Gb)[M P ] = o ,
(c yA)[N 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, Gb, c yA seja simples
solvel e tenha a mesma base Q de colunas?
Suponha, em seguida, que c substitudo por um vetor ligeiramente dife-
rente c. Quo prximo c deve ser de c para que o sistema GA, Gb, c yA seja
simples solvel, com base de colunas Q, para algum y?

169
Feofiloff ap. B Anlise de sensibilidade 170

Variao de um componente de b
Suponha que b difere de b em apenas um componente: b [m] = b [m] + para
algum m em M e b [i] = b [i] para todo i distinto de m.

Fato Se G [M P, m] = o e respeita as restries a seguir ento o sistema


GA, Gb, c yA simples solvel e tem base de colunas Q. As restries
so
G [p, ] b G [p, ] b
,
G [p, m] G [p, m]
onde a desigualdade esquerda se aplica a todo p em P tal que G [p, m]
positivo e a desigualdade direita se aplica a todo p em P tal que G [p, m]
negativo.

D EMONSTRAO : bvio que Gb = Gb+G [ , m] . Como G [M P, m] nulo,


temos (Gb) [M P ] = (Gb) [M P ] = o. Como satisfaz as desigualdades, temos

G [p, m] G [p, ] b

para todo p em P , donde (Gb) [P ] o. Portanto, o sistema GA, Gb, c yA


simples solvel e tem base de colunas Q. 2

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 [M P, m] = o significa, em particular, que m deve estar em P . De fato, se
G foi gerada pelo algoritmo Simplex ento G [M P, m] = I [M P, m] 6= 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, yb, varia linearmente com :

yb = yb + y [m] .

Quanto ao problema CP(A, b, c), este ter por soluo o vetor bsico, digamos
, do sistema GA, Gb, c yA. claro que c
x x = yb.

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[j] = c [j] para j distinto de n.

Fato Se (yAc) [n] ento o sistema GA, Gb, cyA simples solvel
com base de colunas Q.
Feofiloff ap. B Anlise de sensibilidade 171

D EMONSTRAO : Como c[Q] = c [Q] , temos (yA) [Q] = c[Q] . Ademais,


(yA) [j] c[j] 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. 2

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 especificamente,
suponha que c[n] = c [n] + para algum n em Q e c[j] = c [j] para todo j distinto m
de n. Seja m o nico elemento de P tal que (GA) [m, n] = 1. m

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) [k] (c yA) [k]
,
(GA) [m, k] (GA) [m, k]

onde a desigualdade esquerda se aplica a todo k em N Q tal que


(GA) [m, k] negativo e a desigualdade direita se aplica a todo k em
N Q tal que (GA) [m, k] positivo.

D EMONSTRAO : Adote a abreviatura E = GA. Seja y o vetor y + G [m, ] .


claro que
yA = yA + E [r, ] . (B.a)

Se restringirmos (B.a) a Q teremos (


y A) [Q] = (yA) [Q] +E [m, Q] = c [Q] +I [n, Q] .
Logo,
(
y A) [Q] = c[Q] . (B.b)

Se restringirmos (B.a) a um elemento k de N Q teremos

(
y A) [k] = (yA) [k] + E [m, k] .

Se satisfaz as desigualdade expostas no enunciado ento E [m, k] c [k]


y A) [k] c [k] . Como c [N Q] = c[N Q] , temos
(yA) [k] e portanto (

y A) [N Q] c[N Q] .
(

Segue da e de (B.b) que o sistema GA, Gb, c yA simples e tem base de colu-
nas Q. 2

bvio que o lado esquerdo das restries sobre pode ser vazio; o lado
direito tambm pode ser vazio. claro tambm que as restries esto satisfeitas
quando = 0.
Feofiloff ap. B Anlise de sensibilidade 172

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:
4x1 + 9x2 + 7x3 + 10x4 600 ,
1x1 + 1x2 + 3x3 + 40x4 400 ,
onde xi o nmero de unidades do modelo i. Queremos planejar a produo
de modo a maximizar o lucro total, que dado por 12x1 + 20x2 + 18x3 + 40x4 .
Nosso problema equivale ao problema cannico primal CP(A, b, c) com A,
b e c descritos na figura B.1. Seja G a matriz e y o vetor descritos na figura B.2.

4 9 7 10 1 0 600
1 1 3 40 0 1 400
12 20 18 40 0 0

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.


Feofiloff 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, Gb, c yA.

O sistema GA, Gb, c yA (figura B.3) simples solvel; sua base composta
pelas colunas 1 e 4. Portanto, um plano de produo timo requer a fabricao
de apenas dois modelos:
1 1
x1 = 3 400 , x2 = x3 = 0 , x4 = 3 20 , x5 = x6 = 0 . (B.c)

Com este plano, teremos cx = 13 5600.


Suponha agora que a disponibilidade de mo de obra no primeiro estgio
alterada para 600 + . Nosso problema passa a ser definido pelo sistema A, b, c
descrito na figura B.4.
No difcil verificar que se 500 1000 ento o sistema GA, Gb, cyA
(figura 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:

1 1
x
1 = 3 400 + 15 4 , x
2 = x
3 = 0 ,
1 1
x
4 = 3 20 150 , x
5 = x
6 = 0 .

x = 31 5600
Com este plano de produo teremos c 1
15 44 .
Suponha a seguir que b permanece constante mas c substitudo por um
vetor c. Digamos que c2 = c2 + e c coincide com c em todos os componentes.
fcil verificar que se 13 20 ento o sistema GA, Gb, c yA simples solvel.
O plano de produo x descrito em (B.c) continua timo e e cx continua valendo
31 5600.
Suponha, finalmente, que c1 = c1 + e c coincide com c em todos os demais
componentes (figura B.6). Seja y o vetor especificado na figura B.7. claro que
o sistema GA, Gb, c yA (figura B.8) simples solvel desde que 4 2.
O vetor x descrito em (B.c) continua sendo um plano de produo timo e cx =
13 5600 + 13 400 .
Feofiloff ap. B Anlise de sensibilidade 174

4 9 7 10 1 0 600
1 1 3 40 0 1 400
12 20 18 40 0 0

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 minx cx para x variando valor
em X(A, b). Analogamente, se o segundo problema tem soluo ento o seu timo
valor timo o nmero maxy 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 fixa?
preciso comear por esclarecer o domnio da funo . Seja B o conjunto B
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) tm soluo se e s se b est em B e c est em C . Portanto, o domnio
de o produto cartesiano
BC.
Feofiloff ap. B Anlise de sensibilidade 175

fcil verificar que o conjunto B convexo, ou seja, que para todo par b1 , b2 conjunto
de elementos de B e todo par 1 , 2 de nmeros no-negativos, se 1 + 2 = 1 convexo
ento 1 b1 + 2 b2 est em B. Eis a demonstrao desse fato. Suponha que x1
um vetor em X(A, b1 ) e x2 um vetor em X(A, b2 ). Para qualquer par 1 , 2 com
as propriedades acima, seja b0 o vetor 1 b1 + 2 b2 e x0 o vetor 1 x1 + 2 x2 . Ento
x0 o e Ax0 = 1 Ax1 + 2 Ax2 = 1 b1 + 2 b2 = b0 , donde x0 est em X(A, b0 ).
A existncia de um tal x0 mostra que b0 est em B.
igualmente fcil verificar que o conjunto C convexo, ou seja, que para
todo par c1 , c2 de elementos de C e todo par 1 , 2 de nmeros no-negativos,
se 1 + 2 = 1 ento 1 c1 + 2 c2 est em C .
Mostraremos a seguir que, quando o segundo parmetro est fixo, a funo
convexa, contnua e linear por trechos.

Fato B.1 ( convexa no primeiro parmetro) Seja c um elemento


de C . Para todo par b1 , b2 de elementos de B e todo par 1 , 2 de nme-
ros no-negativos tais que 1 + 2 = 1 tem-se

(1 b1 + 2 b2 , c) 1 (b1 , c) + 2 (b2 , c) .

D EMONSTRAO : Seja x1 um vetor em X(A, b1 ) tal que (b1 , c) = cx1 . Seja


x2 um vetor em X(A, b2 ) tal que (b2 , c) = cx2 . Para todo par 1 , 2 com as
propriedades definidas no enunciado, seja b0 o vetor 1 b1 + 2 b2 e x0 o vetor
1 x1 + 2 x2 . Ento x0 est em X(A, b0 ) e b0 est em B (como mostramos acima)
e portanto (b0 , c) cx0 = 1 cx1 + 2 cx2 = 1 (b1 , c) + 2 (b2 , c). 2

Por definio, (b, c) = maxy yb para y variando em Y (A, c). Mas possvel
dizer mais: existe uma parte finita Y 0 de Y (A, c) tal que (b, c) = maxy yb para
y variando em Y 0 .

Fato B.2 ( linear por trechos e contnua no primeiro parmetro) Para


todo c em C existem vetores y1 , y2 , . . , yk sobre M tais que

(b, c) = max { y1 b, y2 b, . . , yk b }

para todo b em B.

D EMONSTRAO : Seja c um elemento fixo 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 finito.
Para cada Q em Q, escolha um par GQ , yQ de modo que, para algum b,
o sistema GQ A, GQ b, c yQ A seja simples solvel com base de colunas Q. Em
particular, yQ est em Y (A, c) para todo Q em Q. O conjunto de todos os vetores
da forma yQ com Q em Q o que estamos procurando, como mostraremos a
seguir.
Feofiloff ap. B Anlise de sensibilidade 176

Seja b um vetor em B e seja xb uma soluo do problema CP(A, b, c). claro


que (b, c) = cxb . Vamos mostrar que

cxb = maxQ yQ b ,

onde o mximo tomado sobre todo Q em Q. Para todo Q em Q, yQ est em


Y (A, c) e portanto o lema da dualidade 8.1 garante que cxb yQ b. Resta mostrar
que cxb = yQ 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 [N Q] nulo e (GA)x = Gb. Observe que cx = yb e que
cx = cxb . Mas x tambm o vetor bsico do sistema GQ A, GQ b, c yA, pois

x [N Q] = o e GQ Ax = GQ b .

Segue que (c yQ A)x = 0, donde cx = yQ b. Portanto cxb = cx = yQ b, como


queramos demonstrar. 2

Portanto, para descrever (b, c) completamente como funo de b basta cal-


cular os vetores y1 , . . , yk . 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 c1 , c2 de elementos de C e todo par 1 , 2 de nme-
ros no-negativos tais que 1 + 2 = 1 tem-se

(b, 1 c1 + 2 c2 ) 1 (b, c1 ) + 2 (b, c2 ) .

Fato B.4 ( linear por trechos e contnua no segundo parmetro) Para


todo b em B existem vetores x1 , x2 , . . , xk sobre N tais que

(b, c) = min { cx1 , cx2 , . . , cxk }

para todo c em C .

B.4 Concluso
Para qualquer matriz fixa A, os problemas cannicos CP(A, b, c) e CD(A, c, b)
tm soluo se e s se o par b, c est em B C , onde B o conjunto dos vetores
b para os quais X(A, b) no vazio e C o conjunto dos vetores c para os quais
Y (A, c) no vazio.
Feofiloff ap. B Anlise de sensibilidade 177

Para b fixo 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 fixo 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 suficiente-
mente pequenas de c. Analogamente, a soluo y do problema CD(A, c, b) no
se altera se b sofre variaes suficientemente 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
que J [P, K] uma matriz de bijeo e J [M P, K] = O. Por exemplo, se E uma de injeo
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 [ , K] de injeo;
(2) existe um vetor u tal que Au = o, u [K] 6= o e u [N K] = o.

D EMONSTRAO : De acordo com o algoritmo de Gauss-Jordan aplicado


matriz A [ , K] , existem matrizes F e G tais que F G = I e GA [ , K] 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 [k] = 1 , u [N Qk] = o e GAu = o .
claro que u [N K] = o, u [K] 6= o e Au = F GAu = o. Portanto, vale a alterna-
tiva (2).

178
Feofiloff ap. C Poliedro cannico primal 179

Resta mostrar que as duas alternativas no podem ser simultaneamente ver-


dadeiras. Suponha pois que vale (2). Como u [N K] nulo,
GA [ , K] u [K] = GAu = o ,
uma vez que Au = o. Mas u [K] no nulo, e portanto GA [ , K] no pode ser
uma matriz de injeo. Portanto, a alternativa (1) no vale. 2

Na linguagem da lgebra linear, a alternativa (1) afirma que o conjunto de


colunas da matriz A [ , K] linearmente independente enquanto (2) afirma que
o conjunto de colunas da matriz A [ , K] 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
dente e linearmente dependente. bvio que todo subconjunto de um con- ld
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 x1 , . . , xk so vetores sobre N . Uma combinao afim desses ve-
tores qualquer combinao linear 1 x1 + + k xk tal que
1 + + k = 1 .
(Em termos geomtricos, um vetor combinao afim de x1 e x2 se estiver na
reta que passa pelos pontos x1 e x2 .) Uma combinao convexa dos vetores
x1 , . . , xk qualquer combinao afim 1 x1 + + k xk tal que
i 0
para todo i. (Em termos geomtricos, um vetor combinao convexa de x1
e x2 se estiver no segmento de reta que une os pontos x1 e x2 .) O poliedro
cannico primal um conjunto convexo no seguinte sentido:

Proposio C.2 Para qualquer parte finita Z de X(A, b), toda combina-
o convexa de elementos de Z est em X(A, b).

D EMONSTRAO : Digamos
P que os elementos de Z so z1 , . . , zk e considere
uma combinao convexa i zi . Como Azi = b para todo i,
P P P P
A( i zi ) = i Azi = i b = ( i ) b = b ,
Feofiloff ap. C Poliedro cannico primal 180

P P
uma vez que i = 1.PPor outro lado, i zi 0, uma vez que i 0 e zi o
para todo i. Portanto, i zi est em X(A, b). 2

A envoltria convexa de um conjunto finito 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 finita Z de X(A, b). Em certas circunstncias, X(A, b) = [Z] para um certo
conjunto finito 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
ndices j em N para os quais x [j] > 0. A folga de x ser denotada por suporte

S(x) .

Um vetor x em X(A, b) bsico se sua folga S(x) minimal, ou seja, se no vetor bsico
existe x0 em X(A, b) tal que S(x0 ) S(x). Vetores bsicos de X(A, b) tambm
so conhecidos como vrtices. bvio que todo poliedro no-vazio X(A, b) tem
pelo menos um vrtice.

0 0 0 1 1 0 1 0 9
0 0 1 0 3 0 1 2 8
0 1 0 0 4 7 1 3 7
1 0 0 0 3 6 1 1 6

6 7 8 9 0 0 0 0
5 8 7 8 0 0 1 0
0 0 8 9 0 1 0 0

Figura C.1: O topo da figura define um sistema A, b. Os vetores x, x0 e x00 de-


finidos nesta ordem pelas trs ltimas linhas da figura esto todos em X(A, b).
A folga de x0 no minimal porque S(x0 ) S(x). A folga de x minimal
porque qualquer vetor x000 em X(A, b) tal que S(x000 ) S(x) necessariamente
igual a x. A folga de x00 menor que S(x), embora no seja parte de S(x).

Nossa definio de vetores bsicos tem um carter intrnseco: ela no de-


pende do particular sistema A, b usado para definir 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.
Feofiloff ap. C Poliedro cannico primal 181

D EMONSTRAO : Suponha que x no bsico. Ento existe um vetor x0


em X(A, b) tal que S(x0 ) S(x). Seja u o vetor x x0 e observe que Au =
Ax Ax0 = b b = o. Observe tambm que

u [S] 6= o e u [N S] = o ,

onde S uma abreviatura para S(x). A existncia de um tal vetor u mostra que
S ld.
Agora considere a recproca. Suponha que x est em X(A, b) e S(x) ld.
Ento existe um vetor u tal que

Au = o , u [S] 6= o e u [N S] = o ,

onde S = S(x). Vamos mostrar que S no minimal. Ajuste a notao, trocando


o sinal de u se necessrio, de modo que u [j] > 0 para algum j em S . Seja o
maior nmero tal que
x [j] /u [j] (C.a)

para todo j em S tal que u [j] > 0. Observe agora que x u o. De fato, se
u [j] > 0 ento x [j] u [j] 0 em virtude da maneira como foi definido e se
u [j] 0 ento x [j] u [j] 0 uma vez que 0.
Como x u 0 e A(x u) = Ax Au = Ax = b, o vetor x u est
em X(A, b). Por outro lado, como u [j] = 0 sempre que x [j] = 0, temos

S(x u) S .

Ademais, a incluso estrita, uma vez que (C.a) vale com igualdade para algum
j em S . Concluimos assim que S no minimal e portanto x no bsico. 2

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 x0 em X(A, b) tal que S(x0 ) S(x).

Corolrio C.4 Para quaisquer vrtices z e z 0 de X(A, b), se S(z) = S(z 0 )


ento z = z 0 .

D EMONSTRAO : Seja u o vetor z z 0 . claro que Au = Az Az 0 = b b =


o. claro tambm que u [N S] = o, onde S o valor comum de S(z) e S(z 0 ).
Como S li, concluimos que u [S] = o. Portanto u = o e assim z = z 0 . 2

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 .
Feofiloff 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).

D EMONSTRAO : 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 F G = 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. 2

Cada iterao da segunda fase do algoritmo Simplex (seo 4.2, pgina 43)
comea, implicitamente, com um vrtice de X(A, b). Se o vrtice no for satis-
fatrio, o algoritmo caminha para um dos vrtices vizinhos. Os mecanismos
de convergncia como a regra lexicogrfica e a regra de Bland discutidos no
captulo 5 evitam que um mesmo vrtice seja examinado mais de uma vez.
A execuo do algoritmo termina ao encontrar um vrtice que seja soluo do
problema (ou ao constatar que o problema invivel ou ilimitado).

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

D EMONSTRAO : Adote a abreviatura S = S(z). Seja c o vetor definido


pelas equaes c [S] = o e c [j] = 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 [N S] = 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 [N S] = 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. 2

C.5 Poliedros limitados


O poliedro X(A, b) limitado se existe um nmero tal que x [j] 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 verificar algorit-
micamente se um dado poliedro ou no limitado. Tambm no est claro, de
imediato, como certificar 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.
Feofiloff 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.

D EMONSTRAO : 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
x0 de X(A, b) tal que S(x0 ) S(x).
De acordo com a proposio C.3, S(x) ld em A. Portanto, existe um vetor
u tal que
Au = o , u [S] 6= o e u [N S] = o ,

onde S uma abreviatura para S(x). preciso investigar agora para que valores
de o vetor x u est em X(A, b). claro que A(x u) = b para qualquer ;
resta estudar a validade de x u 0.
Suponha por um instante que u o. Ento, para qualquer positivo, o
vetor x u estar em X(A, b). Como u [j] 6= 0 para algum j , o valor de (x
u) [j] ser tanto maior quanto maior for , e isso inconsistente com o carter
limitado de X(A, b). foroso concluir, portanto, que u tem pelo menos um
componente positivo.
A partir daqui os clculos so iguais aos da demonstrao da proposio C.3.
Seja o maior nmero que satisfaz a restrio

x [k] /u [k]

para todo k em S tal que u [k] > 0. No difcil verificar que x u est em
X(A, b). Tambm fcil constatar que S(xu) S . Nossa hiptese de induo
garante ento que x u uma combinao convexa de vrtices.
Um raciocnio paralelo ao que acabamos de fazer permite concluir que u
tem pelo menos um componente negativo e portanto existe um nmero 0 tal
que x + 0 u est em X(A, b) e S(x + 0 u) S(x). A partir da, nossa hiptese
de induo garante que x + 0 u uma combinao convexa de vrtices.
0
Como x combinao convexa de x u e x + 0 u (de fato, x = +
0 (x
0
u) + +0 (x + u)), e esses dois vetores so combinaes convexas de vrtices,
tambm x combinao convexa de vrtices. 2

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
P ou devolve
P vrtices z1 , . . , zp e nmeros no-negativos 1 , . . , p tais
que i = 1 e x = i zi .
O teorema C.7 tem o 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).
Feofiloff ap. C Poliedro cannico primal 184

Exerccios
C.1 Suponha que W um conjunto finito de vetores sobre N e c um vetor
sobre N . Mostre que o mnimo de cx para x em [W ] igual ao mnimo de
cw para w em W .
C.2 Um conjunto li K maximal se nenhum superconjunto prprio de K
li. Mostre que todos os conjuntos li maximais tm a mesma cardinalidade
(veja exerccio 2.11).

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 um vrtice. 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 finito 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 Um elemento r de X(A, o) {o} um raio se seu suporte, S(r), minimal.
Uma combinao cnica de vetores x1 , . . , xk qualquer combinao linear
1 x1 + + k xk 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 F G = I e GA uma matriz escalo-
nada cuja base de colunas parte de K ;
(2) existe um vetor v tal que (vA) [K] = o mas (vA) [N K] 6= o.

D EMONSTRAO : Seja B a matriz A [ , K] . De acordo com algoritmo de


Gauss-Jordan, existem matrizes F e G tais que F G = 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, ] 6= o
para algum i em M P , onde P a base de linhas de GB. Seja v o vetor G [i, ] .
Ento
(vA) [K] = (GA) [i, K] = (GB) [i, ] = o .

Mas (vA) [N K] 6= o, uma vez que vA = (GA) [i, ] 6= o. Assim, vale a alterna-
tiva (2).
Resta mostrar que as duas alternativas no podem ser simultaneamente
verdadeiras. Suponha que vale a alternativa (1). Seja E a matriz escalonada
GA, seja P a base de linhas de E e seja Q uma base de colunas de E tal que

185
Feofiloff ap. D Poliedro cannico dual 186

Q K . Tome qualquer vetor v tal que (vA) [K] = o e seja w o vetor vF . Como
E [M P, ] = O, temos

w [P ] E [P, ] = wE = vF GA = vA .

Em particular, w [P ] E [P, Q] = (vA) [Q] . Mas (vA) [Q] = o uma vez que Q K .
Logo,
w [P ] = o ,

j que E [P, Q] uma matriz de bijeo. Segue da que vA = w [P ] E [P, ] = o.


Portanto, a alternativa (2) no pode valer. 2

Na linguagem da lgebra linear, a alternativa (1) afirma que cada coluna


de A [ , N K] uma combinao linear das colunas de A [ , K] enquanto a alter-
nativa (2) afirma que alguma coluna da matriz A [ , N K] linearmente inde-
pendente das colunas de A [ , K] . 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 um gerador. No primeiro algoritmo
caso, o algoritmo devolve um par 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 finita Z de Y (A, c), toda combina-
o convexa de elementos de Z est em Y (A, c).

P
D EMONSTRAO : Seja i zi uma combinao convexa dos elementos
de Z . Como zi A c e i 0 para todo i,
P P P P
( i zi )A = i zi A i c = ( i ) c = c ,

i zi est em Y (A, c). 2


P P
uma vez que i = 1. Portanto,

A proposio D.2 mostra que [Z] Y (A, c) para toda parte finita Z de
Y (A, c), onde [Z] a envoltria convexa de Z . Em certas circunstncias,
Y (A, c) = [Z] para um certo conjunto finito Z . A caracterizao de um tal Z
o principal objetivo deste apndice.
Feofiloff ap. D Poliedro cannico dual 187

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) [j] < c [j] . 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 0 vetor


em Y (A, c) tal que S(y 0 ) S(y). bvio que todo poliedro no-vazio Y (A, c) bsico
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.

D EMONSTRAO : 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 0 em Y (A, c) tal que
S 0 S , onde S 0 e S so abreviaturas para S(y 0 ) e S(y) respectivamente. Vamos
mostrar que N S no um gerador de A. Seja v o vetor y y 0 e observe que

(vA) [N S] = (yA) [N S] (y 0 A) [N S] = c [N S] c [N S] = o .

Agora tome qualquer k em S S 0 e observe que

(vA) [k] = (yA) [k] (y 0 A) [k] 6= 0 ,

uma vez que (yA) [k] < c [k] enquanto (y 0 A) [k] = c [k] . Assim, de acordo com a
proposio D.1, N S no um gerador de A.
Agora considere a recproca. Seja y um vetor em Y (A, c) e suponha que
N S no gerador de A, onde S S(y). Ento existe um vetor v tal que

(vA) [N S] = o mas (vA) [S] 6= o .

Ajuste a notao, trocando v por v se necessrio, de modo que (vA) [j] > 0
para algum j em S . Seja o maior nmero tal que

(c yA) [j]
(D.a)
(vA) [j]

para todo j em S tal que (vA) [j] > 0. fcil verificar que yA+vA c. De fato,
se (vA) [j] > 0 ento (yA) [j] + (vA) [j] c [j] em virtude da maneira como foi
escolhido; e se (vA) [j] 0 ento (yA) [j] + (vA) [j] c [j] uma vez que 0.
Portanto, y + v est em Y (A, c). Por outro lado, como (vA) [j] = 0 sempre que
(yA) [j] = c [j] , temos
S(y + v) S .

Ademais, a incluso estrita, uma vez que (D.a) vale com igualdade para algum
j em S . Logo, S no minimal e portanto y no bsico. 2
Feofiloff ap. D Poliedro cannico dual 188

Essa demonstrao, juntamente com a demonstrao da proposio D.1, su-


gere um algoritmo que, ao receber um elemento y de Y (A, c), decide que y um algoritmo
vetor bsico ou devolve um vetor y 0 em Y (A, c) tal que S(y 0 ) S(y).

Corolrio D.4 Para quaisquer vetores bsicos z e z 0 , se S(z) = S(z 0 )


ento zA = z 0 A.

D EMONSTRAO : Seja v o vetor z z 0 e seja S o valor comum de S(z) e


S(z 0 ). claro que

(vA) [N S] = (zA) [N S] (z 0 A) [N S] = c [N S] c [N S] = o ,

Como N S um gerador de A, a proposio D.1 garante que (vA) [S] = o Logo,


vA = o e portanto zA = z 0 A. 2

Uma face minimal de Y (A, b) o conjunto de todos os vetores bsicos que face minimal
tm uma mesma folga. Assim, dois vetores bsicos, digamos z e z 0 , pertencem
mesma face minimal se e s se S(z) = S(z 0 ). O corolrio D.4 mostra que z e
z 0 esto na mesma face minimal se e s se zA = z 0 A. Toda face minimal um
conjunto afim, no seguinte sentido.

Proposio D.5 Toda combinao afim de vetores de uma face minimal


pertence face minimal.

D EMONSTRAO : Digamos que os vetores bsicos z1 , . . , zk pertencem a


uma 0
P face minimal Y . Agora suponha que 1 , . . , k so nmeros tais que
i = 1. Como zi A = z1 A para todo i temos tambm
P P P
( i zi )A = i (zi A) = ( i )z1 A = z1 A .

i zi um vetor bsico de Y (A, c) e pertence face minimal Y 0 . 2


P
Portanto,

Se uma face minimal contm um nico vetor diremos que esse vetor um
vrtice de Y (A, c). Em outras palavras, um vetor bsico z um vrtice se o vrtice
conjunto unitrio {z} uma face minimal.
Se o conjunto de linhas de A li ou seja, se existe uma matriz G tal que
GA escalonada e tem base de linhas M ento a igualdade zA = z 0 A implica
em z = z 0 , e portanto todo vetor bsico um vrtice.

D.4 Solues do problema cannico dual


As solues do problema cannico dual so vetores bsicos, como veremos a
seguir.
Feofiloff 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).

D EMONSTRAO : Suponha que o problema CD(A, c, b) tem soluo. Ento,


de acordo com o algoritmo Simplex, existem matrizes F e G e um vetor y tais
que F G = I e o sistema GA, Gb, cyA simples. Digamos que Q uma base de
colunas do sistema simples. claro que Q um gerador de A. Como (c yA) [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. 2

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

D EMONSTRAO : Adote a abreviatura S = S(z). Seja A0 a matriz A [ , N S]


e seja b o vetor A0 u, onde u o vetor 1s sobre N S (isto , u [j] = 1 para todo j
em N S ). Seja c0 o vetor c [N S] . evidente que yb = yA0 u c0 u para todo y
em Y (A, c). Mas zb = zA0 u = c0 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 = c0 u, temos
necessariamente yA0 = c0 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. 2

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

D EMONSTRAO : Suponha que uma face minimal contm dois vetores b-


sicos distintos, digamos z e z 0 . De acordo com a proposio D.5, o vetor
z + (1 )z 0 tambm est em Y (A, b), qualquer que seja . Seja i um ndice tal
que z [i] 6= z 0 [i] . Como

|(z + (1 )z 0 ) [i] | |(z [i] z 0 [i] )| |z 0 [i] | ,


Feofiloff ap. D Poliedro cannico dual 190

vemos que o valor absoluto do componente i de z + (1 )z 0 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. 2

Teorema D.9 (da decomposio dual) Se Y (A, c) limitado ento todo


elemento de Y (A, c) combinao convexa de vrtices.

D EMONSTRAO : - 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 0 de Y (A, c) tal que S(y 0 ) S(y).
De acordo com a proposio D.3, S(y) no gerador de A. Portanto, existe
um vetor v tal que
(vA) [N S] = o e (vA) [S] 6= 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 fizemos na demosntrao da
proposio D.3. Seja o maior nmero que satisfaz a restrio

(c yA) [j]

(vA) [j]

para todo j em S tal que (vA) [j] > 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 0 tal
que y 0 v est em Y (A, c) e S(y 0 v) S(y). A partir da, nossa hiptese de
induo garante que y 0 v uma combinao convexa de vrtices.
Como y combinao convexa de y + v e y 0 v, e esses dois vetores so
combinaes convexas de vrtices, tambm y combinao convexa de vrti-
ces. 2

Exerccios
D.1 Suponha que W um conjunto finito de vetores sobre M e b um vetor
sobre M . Mostre que o mximo de yb para y em [W ] igual ao mximo de
yw para w em W .
Feofiloff ap. D Poliedro cannico dual 191

D.2 Um conjunto gerador K minimal se nenhum subconjunto prprio de K


gerador. Mostre que todos os conjuntos geradores minimais tm a 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 0 e y 00 de Y (A, c) {y}. Suponha que y bsico.
Mostre que y 0 e y 00 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 finito 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 figura 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 figura 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 G1 e G2 so matrizes inversveis tais que G1 D e G2 D so escalona-
das. Queremos mostrar que as bases de colunas das duas matrizes escalonadas
tm a mesma cardinalidade.

Soluo: Sejam Q1 e Q2 bases de G1 D e G2 D respectivamente. Seja G


uma matriz inversvel tal que GD escalonada e possui uma base de colunas Q
de cardinalidade |Q1 |; escolha G de modo a minimizar Q2 Q. Suponha agora
que
Q2 Q 6= (E.a)
e seja q2 um elemento desse conjunto. Seja P a base de linhas da matriz E = GD.
H uma parte P 0 de P tal que E [P 0 , Q Q2 ] e E [P P 0 , QQ2 ] so matrizes de

192
Feofiloff ap. E Exerccios resolvidos 193

E, G, D, I, o
para h 1 at m faa
k1
enquanto k n e E[h, k] = 0 faa k k + 1
se k n ento
E[h, k]
para j 1 at m faa G[h, j] G[h, j]/
para j 1 at n faa E[h, j] E[h, j]/
para i 1 at m faa
se i 6= h ento
E[i, k]
para j 1 at m faa G[i, j] G[i, j] G[h, j]
para j 1 at n faa E[i, j] E[i, j] E[h, j]
[h] k
para j 1 at m faa  gera matriz F
se [j] = 0 ento
para i 1 at m faa F [i, j] 0
F [j, j] 1
seno
para i 1 at m faa F [i, j] D[i, [j]]

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 Q2 tal que

E [P 0 , Q2 ] x = o e x [q2 ] = 1 . (E.b)

Agora suponha, por um instante, que

E [P P 0 , q2 ] = o . (E.c)

Ento os vetores E [P, Q2 ] x e E [ , Q2 ] x so nulos, ou seja,

GD2 x = o , (E.d)

onde D2 denota a matriz D [ , Q2 ] . Seja F uma matriz tal que F G = I . Se multi-


plicarmos ambos os lados de (E.d) por G2 F , teremos

G2 D2 x = o .

Como Q2 uma base de colunas da matriz escalonada G2 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 G2 D2 linearmente inde-
pendente.) Conclumos assim que a hiptese (E.c) insustentvel, ou seja, que
Feofiloff ap. E Exerccios resolvidos 194

existe p em P P 0 tal que E [p, q2 ] 6= 0. possvel, agora, executar uma pivotao


em torno de p, q2 .
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 + q2 , onde q o nico elemento de Q que possui a
propriedade E [p, q] 6= 0. Est claro que |Q q + q2 | = |Q1 | e Q2 (Q q + q2 )
parte prpria de Q2 Q, o que torna a existncia da matriz GG incompatvel
com nossa escolha de G. Logo, a hiptese (E.a) insustentvel. Segue da que

|Q2 | |Q1 | .

Se repetirmos o raciocnio todo depois de inverter os papis de Q1 e Q2 conclui-


remos que |Q1 | |Q2 |.

Corolrio. Para qualquer matriz D, qualquer matriz inversvel G1 tal que


G1 D escalonada e qualquer matriz inversvel G2 tal que G2 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.


C ASO 1: (Gb) [M P ] 6= 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) [M P ] x = (Gb) [M P ] 6= o.
C ASO 2: (Gb) [M P ] = o e c gA = o. Seja, x o vetor definido pelas
condies
x [N 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 x0 tal que Ax0 = b teremos
(c gA)x0 = o, donde cx0 = gb. Portanto, x uma soluo do problema.
C ASO 3: (Gb) [M P ] = o e cgA 6= o. Seja j um ndice tal que (cgA) [j] 6= 0;
claro que j N Q. Seja x o vetor definido pelas seguintes condies:

(c gA) [j] x [j] < 0 , x [(N Q)j] = o e (GA)x = Gb .


Feofiloff ap. E Exerccios resolvidos 195

E, G, , h D, I, o, 1
repita  primeira fase
k1 k2 n
se E[h, n] 0 ento
k1 0
repita k1 k1 + 1
at que k1 = n ou E[h, k1 ] > 0
se E[h, n] 0 ento
k2 0
repita k2 k2 + 1
at que k2 = n ou E[h, k2 ] < 0
k min (k1 , k2 )
se k < n ento
p L INHA -M NIMA (h, k)
se E[p, n]/E[p, k] E[h, n]/E[h, k] ento
P IVOTAO (h, k)
hh+1
seno P IVOTAO (p, k)
seno
se E[h, n] = 0 ento h h + 1
seno pare (h linha de inviabilidade)
at que h = m
 fim da primeira fase e incio da segunda
repita
k0
repita k k + 1
at que k = n ou E[m, k] < 0
se k < n ento
p L INHA -M NIMA (m, k)
se p = m ento pare (k coluna de ilimitao)
seno P IVOTAO (p, k)
at que k = n

Figura E.2: Formalizao da heurstica Simplex (exerccio 4.2). A primeira


linha atribui valores iniciais s variveis E , G, e h respectivamente. As
funes L INHA -M NIMA e P IVOTAO esto descritas nas figuras seguintes.
A matriz F poderia ser determinada, a partir de D e , como na figura E.1.

claro que Ax = b. claro tambm que cx gb = (c gA)x = (c gA) [j] x [j] ,


donde
cx = (c gA) [j] x [j] + gb .
Logo, cx tanto menor quanto maior for o valor absoluto de x [j] . Conclumos
assim que o problema no tem soluo.
Feofiloff ap. E Exerccios resolvidos 196

L INHA -M NIMA (h, k)


p0
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
pi
devolva p

Figura E.3: A funo L INHA -M NIMA (usada no cdigo da figura E.2) recebe
ndices h e k e devolve p entre 1 e h1 tal que E[p, k] positivo e E[p, n]/E[p, k]
mnimo; se tal p no existe, a funo devolve h.

P IVOTAO (h, k)
E[h, k]
para j 1 at m faa
G[h, j] G[h, j]/
para j 1 at n faa
E[h, j] E[h, j]/
para i 1 at m faa
se i 6= h ento
E[i, k]
para j 1 at m faa
G[i, j] G[i, j] G[h, j]
para j 1 at n faa
E[i, j] E[i, j] E[h, j]
[h] k  k entra na base

Figura E.4: A funo P IVOTAO (usada no cdigo da figura E.2) recebe ndi-
ces h e k e executa uma pivotao de G, E em torno de h, k.

E.4 Soluo do exerccio 4.2


As figuras 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 tambm ndices
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 definido da
seguinte maneira: se i est em P ento [i] nico q em Q tal que E[i, q] = 1;
seno [i] = 0.
Feofiloff 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 deveriam ser executadas
apenas implicitamente). Alm disso, 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 Lexicogrfico.
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 [h, h] 6= 0, G [ , m] = I [ , m] e
GD simples com relao coluna n e linha m. claro que a matriz
G inversvel; sua inversa F definida pelas equaes F [h, h] = 1/G [h, h] ,
F [m, h] = G [m, h] /G [h, h] e F [ , m] = I [ , m] . O algoritmo consiste no seguinte:

C ASO 1: D [h, N n] o e D [h, n] > 0 ou D [h, N n] o e D [h, n] < 0 .


Devolva I e pare (D simples invivel).
C ASO 2: D [h, N ] = o .
Devolva I e pare (D simples solvel se D [m, N n] o e
simples ilimitada em caso contrrio).
C ASO 3: D [h, q] > 0 e D [h, n] 0 ou D [h, q] < 0 e D [h, n] 0 para
algum q em N n .
E o resultado da pivotao de I, D em torno de h, q.
Seja G,
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:
C ASO 3.1: E [m, k] < 0 e E [h, k] > 0 para algum k em N n .
Seja G0 , E 0 o resultado da pivotao de G, E em torno de h, k.
Comece nova iterao com G0 e E 0 nos papis de G e E .
C ASO 3.2: E [m, k] < 0 e E [h, k] 0 para algum k em N n .
Devolva G e pare (E simples ilimitada).
C ASO 3.3: E [m, N 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 verificar os seguintes inva-
riantes:
Feofiloff ap. E Exerccios resolvidos 198

no incio de cada iterao,


(i0) E [h, n] 0 e E [h, q] > 0 ,
(i1) E [ , q] = I [ , h] ,
(i2) G [h, h] 6= 0 ,
(i3) E = GD ,
(i4) G [ , m] = I [ , m] ,
(i6) G [m, h] D [h, q] = D [m, q] e
(i7) D [h, q] G [h, h] = 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
h 1 >
m 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 um nmero finito de iteraes pelos motivos que passa-
mos a expor. Os invariantes (i4), (i6) e (i7) tm a seguinte conseqncia imediata:
se duas iteraes diferentes comeam com o mesmo valor da varivel q ento os
correspondentes valores de G so iguais. Em virtude de (i3), os correspondentes
valores de E [m, q] tambm so iguais. Por outro lado, no fim de cada ocorrncia
do caso 3.1,
E 0 [m, q] > E [m, q] .
De fato, E 0 [m, q] = E [m, q] + E [h, q] , onde = E [m, k] /E [h, k] . Como e E [h, q]
so positivos, temos a desigualdade desejada.
Essas observaes levam seguinte concluso: duas iteraes diferentes ja-
mais comeam com o 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 2 2 2 2 0
2 1 0 1 2 0 2 1 0 1 2 0

E.2 Mostre como eliminar o processo iterativo dentro do caso 3 mediante uma
escolha criteriosa de k.
Referncias Bibliogrficas

[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 finite 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 nom de 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
Feofiloff Referncias Bibliogrficas 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, first 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(n3 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. A new polynomial-time algorithm for 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
Feofiloff Referncias Bibliogrficas 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 Efficiency.


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

e (transposio), 6 Bland, 49, 62


o, 1 Borgwardt, 57
O, 3 busca binria, 157
I, 5
x [n] , 1 CD(A, c, b), 77
x [Q] , 1 Chio, 111, 117
A [m, n] , 2 Chvtal, 46, 69, 86, 141
A [P, Q] , 2 ciclagem, 45
A [P, ] , 2 circ( ), 101
A [ , Q] , 2 circuito, 100
A [m, ] , 2 coluna
A [ , n] , 3 de ilimitao, 27, 65
A [P, n] , 2 de inviabilidade, 162
A [m, Q] , 2 de matriz, 3
M m, 8 especial, 26
N n, 8 saliente, 8
Ax, 5 combinao
yA, 5 afim, 179
, 76 cnica, 184
convexa, 142, 179
absdet( ), 108 linear, 10, 179
algoritmo, 26, 39 complexidade, 135
do elipside, 141 polinomial, 135
exponencial, 133 componente, 1, 2
Gauss-Jordan, 16 cone, 174
Gauss-Jordan-Chio, 111 conjunto convexo, 175
polinomial, 122 converge, 16, 39
Simplex, 51 convergncia (de algoritmo), 16, 36, 39,
forma tradicional, 65 45, 56
Simplex Dual, 166 convexo, 175
Simplex Primal, 65 CP(A, b, c), 69
Simplex-Chio, 124 Cramer, 111, 130
Yamnitsky-Levin, 133, 148 crescente, 37, 47
arredondamento, i, 22, 45, 61 custo, 69, 87
Avis e Chvtal, 57 reduzido, 74

base, 65 Dantzig, 69
de colunas, 13, 27 decrescente, 37, 47
de linhas, 13, 27 delimitao do determinante
de matriz escalonada, 13 produto de produtos, 120
de matriz simples, 27 produto de somas, 108, 119
Beale, 49 det( ), 103
bijeo (matriz de), 7 determinante, 103

202
Feofiloff ndice Remissivo 203

diag( ), 103 ndices, 1, 2


dual de um ppl, 88 1, 2, 3, . . . , 2, 3
construo, 90 invariantes, 18
interpretao, 96 invivel
dualidade, 88 problema, 70, 78, 92
lema, 78, 90 sistema simples, 65
teorema, 83, 93 invivel (matriz simples), 27
forte, 83, 93
fraco, 78, 90 Jordan, 13

Edmonds, 122 Kantorovich, 69


Edmonds e Giles, 131 Karmarkar, 133
elipside, 133, 141 Khachiyan, 133, 141
entra na base, 32 Klee e Minty, 57
enumerao de um conjunto, 50
ld (linearmente dependente), 179
envoltria convexa, 180, 186
lei do produto, 107
erro de arredondamento, i, 22, 45
lema
escalonada (matriz), 13
da dualidade, 78, 90
face minimal, 188 da inviabilidade, 93
Farkas, 85 da inviabilidade dual, 80
fase I do Simplex, 49 da inviabilidade primal, 80
fase II do Simplex, 47, 48, 61 da repetio de bases, 57
fases do Simplex, 43 de Chio, 117
fator de contrao, 154 de Farkas, 85
folga, 180, 187 do ponto profundo, 146
minimal, 180, 187 Lenstra, Rinnooy Kan, Schrijver, 69
folgas complementares, 79 Levin, 141
funo objetivo, 87 lexicograficamente positivo, 50
lexicogrfico, 50
Gcs e Lovsz, 133, 141 lg (logaritmo na base 2), 135
Gauss, 13 li (linearmente independente), 179
mtodo de eliminao, 23 limitado (poliedro), 159, 182, 189
Gauss-Jordan linearmente dependente, 179
algoritmo, 16 linearmente independente, 179
Gauss-Jordan-Chio maximal, 184
algoritmo, 111 linguagem algortmica, ii, 31
gerador linha
de uma matriz, 186 de ilimitao, 162
minimal, 191 de inviabilidade, 27, 65
Gonzaga, 133 de matriz, 2
Grtschel, Lovsz, Schrijver, 133 especial, 26
saliente, 9
heurstica, 39
Simplex, 40 m (linha especial), 26
Simplex Dual, 164 m (nmero de linhas), 60, 134
Simplex-Chio, 124 matriz, 2
-coluna, 8
I (matriz identidade), 5 de bijeo, 7
ilimitada (matriz simples), 27 de injeo, 178
ilimitado de permutao, 100
problema, 70, 78, 93 de pivotao, 149
sistema simples, 65 de transposio, 101
Feofiloff ndice Remissivo 204

de um ppl, 87 cannico primal, 69, 178


de um tetraedro, 142 limitado, 159, 182, 189
degenerada, 47 ponto flutuante, 22, 61
-bijetora, 111 ponto interior, 138, 142
-escalonada, 111 positivo, 32
-simples, 124 posto
diagonal, 8 de matriz, 25
dual-simples, 161 pleno, ii, 25
elementar, 10 ppl, 87
escalonada, 13 primeira fase do Simplex, 49
esparsa, i problema
identidade (I ), 5 cannico dual, 77
inversa, 6 cannico primal, 69
-linha, 9 da viabilidade, 134
nula (O), 3 de programao linear, 87
quadrada, 102 do ponto interior, 134, 141
simples, 27, 28 do ponto vivel, 134
ilimitada, 27 do vetor vivel, 85
invivel, 27 dual, 88
solvel, 27 ilimitado, 70, 78, 93
sobre M N , 2 invivel, 70, 78, 92
totalmente unimodular, 122 simples, 71
transposta, 6 vivel, 70, 78, 92
monotnica, 37, 46 produto
mudana de base, 49 matriz por matriz, 5
matriz por vetor, 4
n (coluna especial), 26 vetor por matriz, 4
n (nmero de colunas), 57, 60, 134 vetor por vetor, 4
negativo, 32 programao
norma, 144 inteira, 75
nmero linear, i, 69, 87
negativo, 32 propriedade associativa, 5
positivo, 32 pseudocdigo, ii, 31, 192
racional, ii, 22 PV(A, c), 134
O (matriz nula), 3 racional, 22
o (vetor nulo), 1 raio, 184
, 120, 127, 129, 130, 135 reduo entre problemas, 134
ordem lexicogrfica, 50 regra
induzida, 50 de Bland, 49, 62
otimizao, i de Cramer, 111, 130
otimizao combinatria, 122, 131 lexicogrfica, 51
restries, 69, 77
Papadimitriou e Steiglitz, 133
permanente, 104 sai da base, 32
permutao (matriz de), 100 saliente
PI (A, c), 134 coluna, 8
pivotao, 30, 112, 149 linha, 9
pivotao, 16 Schrijver, 45, 122, 131, 133, 141
representao matricial, 19 segunda fase do Simplex, 47, 48, 61
poliedro, 90 seqncia
cannico dual, 77, 185 crescente, 37, 47
Feofiloff ndice Remissivo 205

decrescente, 37, 47 variveis de folga, 75


sig( ), 102 vrtice, 180, 188
simples de um tetraedro, 142
matriz, 27, 28 vetor, 1
problema, 71 bsico, 23, 71, 180, 187
sistema, 65 de inviabilidade, 93
Simplex dual, 81
algoritmo, 51 primal, 80
forma tradicional, 65 nulo (o), 1
Dual, 161 sobre N , 1
algoritmo, 166 vetor coluna, 3
heurstica, 164 vetor linha, 3
esboo, 30 vivel (problema), 70, 78, 92
heurstica, 40 volume de um tetraedro, 142
Primal, 161
Revisto, 47 X(A, b), 69
Tabular, 32
Simplex-Chio Y (A, c), 77
algoritmo, 124 Yamnitsky, 141
heurstica, 124 Yamnitsky-Levin
sinal algoritmo, 133, 148
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
Feofiloff 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 fi
Z zeta ksi X qui
H eta o O micron psi
tta pi mega

Você também pode gostar