




























































































Estude fácil! Tem muito documento disponível na Docsity
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Prepare-se para as provas
Estude fácil! Tem muito documento disponível na Docsity
Prepare-se para as provas com trabalhos de outros alunos como você, aqui na Docsity
Encontra documentos específicos para os exames da tua universidade
Prepare-se com as videoaulas e exercícios resolvidos criados a partir da grade da sua Universidade
Responda perguntas de provas passadas e avalie sua preparação.
Ganhe pontos para baixar
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
programaçao linear computacional
Tipologia: Notas de estudo
1 / 215
Esta página não é visível na pré-visualização
Não perca as partes importantes!





























































































Professor do Departamento de Ciência da Computação do Instituto de Matemática e Estatística da Universidade de São Paulo
novembro de 1997 revisto em 27.7. reformatado em 11.9.
O problema básico de programação linear^1 consiste no seguinte: dada uma matriz A e vetores b e c, encontrar um vetor x tal que
x ≥ 0 , Ax = b e cx é mínimo.
O livro discute este problema, suas variantes e generalizações, 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 programação linear é deduzida desses dois algoritmos. Do ponto de vista do Simplex, o problema básico tem a seguinte forma: transformar uma matriz dada (a matriz resulta da justaposição de A, b e c) em outra equivalente que contenha um certo “padrão” ou “desenho”. Examinaremos também um representante da família de algoritmos polino- miais de programação linear que surgiu em meados da década –. O al- goritmo que discutiremos — uma variante do célebre algoritmo do elipsóide — não é uma alternativa prática para o Simplex,^2 mas tem profundas implicações teóricas. O livro não trata dos aspectos mais práticos da programação linear. Assim, por exemplo, o livro não se ocupa das implementações aproximadas do Simplex, que representam números racionais em notação ponto flutuante; em particu- lar, o livro não trata das heurísticas que procuram reduzir os erros de arredon- damento de tais implementações. O livro também não trata das dificuldades práticas associadas com a manipulação de matrizes muito grandes, nem de al- goritmos especiais para matrizes esparsas.^3 Finalmente, o livro não trata de modelagem, que é a arte de reduzir certos problemas de otimização a problemas de programação linear. Todos esses tópicos são muito importantes na prática, mas estão além dos objetivos do livro (e da competência do autor).
Como. A atitude do livro é mais matemática e conceitual que tecnológica. Em outra dimensão, a atitude é mais algébrica que geométrica. O enfoque é
(^1) Neste contexto, o termo programação significa planejamento. Não se trata de uma referência à programação de computadores. (^2) Outros algoritmos da família, entretanto, competem com o Simplex. (^3) O leitor interessado nesses tópicos deve consultar os livros de Chvátal [Chv83] e Golub e Van Loan [GL96].
i
Feofiloff iii
LATEX nas instalações do Instituto de Matemática e Estatística da Universidade de São Paulo. Informações atualizadas sobre o texto poderão ser encontradas no endereço http://www.ime.usp.br/~pf/prog-lin/ da teia WWW.
São Paulo, 1999– P. F.
“Vetor? É uma espécie de linha reta com uma flecha na ponta.” “Matriz? Acho que é onde fica a sede da empresa.”
Este capítulo faz um resumo de conceitos elementares de álgebra linear e intro- duz as convenções de notação que usaremos nos capítulos subseqüentes. O con- teúdo do capítulo é muito simples, mas algumas das definições e convenções de notação merecem atenção pois são pouco usuais.
1.1 Vetores
Um vetor é uma função que leva um conjunto finito arbitrário — o conjunto de índices — no conjunto dos números reais (mas não há mal em restringir a atenção aos números racionais). Convém não presumir qualquer relação 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 então x[n] x[n] denota o componente n de x, isto é, o valor da função x em n. Se Q é uma parte de N então x[Q]
denota a restrição de x a Q, ou seja, o vetor cujo componente q é x[q] para cada q em Q. Note a distinção entre x[n] e x[{n}] : o primeiro é um número, 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 denotado por o, qualquer que seja o seu conjunto de índices.^ o Se x é um vetor e λ é um número então λx é o vetor que se obtém mediante multiplicação de cada componente de x por λ. Analogamente, x/λ é o vetor que se obtém dividindo por λ cada componente de x. Se x e y são vetores sobre um mesmo conjunto de índices e x[n] ≥ y[n] para cada n, dizemos que x ≥ y. Analogamente, dizemos que x ≥ y
Feofiloff cap. 1 Vetores e Matrizes 2
x > y
se x[n] > y[n] para todo n. As relações ≤ e < são definidas de modo análogo.
4 3 1 2 13 22 11 14 11 14 22 13
Figura 1.1: Duas representações de um vetor sobre 1 , 2 , 3 , 4. Na se- gunda, fica subentendido que os índices são 1 , 2 , 3 e 4 da esquerda para a direita.
1 11 2 14 4 13 3 22
11 14 22 13
Figura 1.2: Mais duas representações do mesmo vetor. Na segunda, fica subentendido que os índices são 1 , 2 , 3 e 4 de cima para baixo.
1.2 Matrizes
Uma matriz é uma função que leva o produto cartesiano de dois conjuntos fini- tos no conjunto dos números reais (poderíamos restingir a definição ao conjunto dos racionais). Convém não presumir qualquer relação de ordem sobre os con- juntos de índices. Se uma matriz A tem domínio M × N , dizemos que M é o conjunto de ín- dices de linhas e N é o conjunto de índices de colunas de A. Dizemos também que A é uma matriz definida sobre M × N. Se m e n são elementos de M e N respectivamente então 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 são partes de M e N respectivamente então A[P, Q]
é a restrição 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 então 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 expressão 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 4
1.3 Produtos
Matrizes e vetores podem ser multiplicados entre si. A versão mais básica dessa operação de multiplicação 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 número ∑ n∈N
x[n] y[n] ,
que denotaremos por x · y. É óbvio que x · y = y · x. Ademais, para qualquer x · y parte Q de N , x · y = x[Q] · y[Q] + x[N −Q] · y[N −Q].
a b c d e 11 22 33 44 55
e b d c a 35 41 37 39 43
Figura 1.6: Se x e y são os vetores definidos pela figura então x · y = 11 · 43 + 22 · 41 + 33 · 39 + 44 · 37 + 55 · 35 = 6215. Imagine que a, b, c, d, e são 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 então x · y é o lucro total.
Produtos matriz-por-vetor e vetor-por-matriz. Para qualquer matriz A so- produto matriz por vetor
bre M × N e qualquer vetor x sobre N , o produto de A por x é o vetor A · x definido pela expressão (A · x) 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 expressão^ y^ ·^ A (y · A)[n] = y · A[ , n]
para cada n em N. É fácil 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 fácil 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 A · B definida pela expressão
(A · B)[l, n] = A[l, ] · B[ , n]
para cada l em L e cada n em N. É fácil verificar que, para qualquer parte P de L e qualquer parte Q de N ,
(A · B)[P, Q] = A[P, ] · B[ , Q].
É menos fácil verificar a propriedade associativa propriedade associativa (A · B) · C = A · (B · C) ,
válida 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 faça sentido.
Notação. Vamos apelar, muitas vezes, ao “princípio universal da preguiça” 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 indexação (^) [ , ] tem precedência sobre o operador de multi- AB plicação. Assim, expressões 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 condições, os dois operadores comutam: se os produtos BA e yA fazem sentido então
(BA)[ , Q] = B · (A[ , Q]) e (yA)[ , Q] = y · (A[ , Q]).
1.4 Matrizes inversíveis
O problema mais básico da álgebra linear é o da inversão das operações de mul- tiplicação 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 então 1 senão 0.
Toda matriz identidade será denotada por I , quaisquer que sejam seus conjun- I tos de índices.
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 não-inversível.
para cada par m, n. Portanto, A˜ é uma matriz sobre N × M. É claro que a transposta de A˜ é A. É fácil verificar que
Ax = x A˜
para todo vetor x tal que o produto de A por x esteja definido. Também é fácil verificar que AB^ ˜ = B˜ A˜
para toda matriz B tal que o produto de A por B esteja definido.
1.6 Matrizes de bijeção
A seguinte generalização do conceito de matriz identidade é muito útil. Uma matriz J sobre M × N é de bijeção^1 se existe uma função bijetora ϕ de M em matriz N tal que de bijeção J (^) [m, n] = se ϕ(m) = n então 1 senão 0.
Portanto, uma matriz com componentes 0 e 1 é de bijeção 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 bijeção sobre M × N. A transposta de uma matriz de bijeção sobre M × N é uma matriz de bijeção sobre N × M. Essa segunda matriz é inversa da primeira, como mostraremos a seguir.
Fato Se J é uma matriz de bijeção então J J˜ = I e J J˜ = I.
DEMONSTRAÇÃO: Para qualquer par i, j de índices de linhas de J , o com- ponente i, j de J J˜ é o produto de duas linhas de J :
(J J˜)[i, j] = J (^) [i, ] J˜ (^) [ , j] = J (^) [i, ]J (^) [ j, ].
Como J é matriz de bijeção, J (^) [i, ]J (^) [ j, ] é igual a 1 ou 0 conforme i = j ou i 6 = j. Isso mostra que J J˜ = I. O mesmo raciocínio, com J˜ no papel de J , mostra que JJ^ ˜ = I. 2
(^1) Generaliza o conceito de matriz de permutação; uma matriz de permutação é uma matriz de bijeção cujo conjunto de índices de linhas é idêntico ao conjunto de índices de colunas.
Feofiloff cap. 1 Vetores e Matrizes 8
Qual o resultado da multiplicação de uma matriz arbitrária por uma matriz de bijeção? Suponha que J é uma matriz de bijeção sobre M × N. Digamos que J (^) [m, n] = 1 para algum m em M e algum n em N. Então, para qualquer matriz A cujo conjunto de índices de linhas seja N , a linha m de JA é idêntica à linha n de A: (JA)[m, ] = A[n, ].
Analogamente, para qualquer matriz B que tenha colunas indexadas por M , a coluna n de BJ é idêntica à coluna m de B. Em suma, a pré-multiplicação de A por J apenas redefine os nomes das linhas de A, e a pós-multiplicação 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 bijeção.
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 então a matriz diagonal E definida pelas equações
E (^) [m, m] = 1/D[m, m]
é uma inversa esquerda e também 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 então é fácil verificar que D não 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 coluna saliente
da matriz.
Feofiloff cap. 1 Vetores e Matrizes 10
para cada n em M −h é a única inversa esquerda de F e também 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 são idênticos. Matrizes elementares e suas inversas terão um papel de destaque nos capítulos subseqüentes.
1.9 Combinações lineares
Suponha que a 1 ,.. , ak são vetores sobre um mesmo conjunto de índices. Uma combinação linear desses vetores é qualquer vetor da forma
λ 1 a 1 + · · · + λkak ,
onde λ 1 ,.. , λk são números. Esses números são os coeficientes da combinação linear. Suponha que A é uma matriz sobre M × N. Para todo vetor x sobre N , o vetor Ax é uma combinação linear das colunas de A com coeficientes x[j] , isto é,
Ax =
j∈N A[^ , j]^ x[j]^.
Analogamente, para todo vetor y sobre M , o vetor yA é uma combinação linear das linhas de A, isto é, yA =
i∈M y[i]^ A[i,^ ]^. Se A e B são matrizes tais que o produto AB faz sentido então cada coluna de AB é uma combinação linear das colunas de A e cada linha de AB é uma combinação linear das linhas de B:
(AB)[ , j] = A B[ , j] e (AB)[i, ] = A[i, ] B.
Exercícios
1.1 Demonstre a propriedade associativa do produto de matrizes: se cada um dos produtos faz sentido, então A(BC) = (AB)C.
1.2 Mostre que o produto de matrizes não é comutativo: AB é, em geral, dife- rente de BA (mesmo que os dois produtos estejam definidos).
1.3 Suponha que x e y são vetores e que A e B são matrizes. Quantas opera- ções de multiplicação são necessárias 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 bijeção J tal que AJ seja a segunda das matrizes. Encontre uma matriz de bijeção J tal que JA seja a terceira matriz.
a b c d e f 11 12 13 14 15 g 21 22 23 24 25 k 31 32 33 34 35
b c a f h f 11 12 13 14 15 g 21 22 23 24 25 k 31 32 33 34 35
a b c d e g 11 12 13 14 15 k 21 22 23 24 25 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 bijeção. Verifique que D EG˜ = I.
1.7 Suponha que A é uma matriz de bijeção sobre M × N e b é um vetor arbi- trário sobre M. Verifique que existe um e um só vetor x tal que Ax = b.