Docsity
Docsity

Prepare-se para as provas
Prepare-se para as provas

Estude fácil! Tem muito documento disponível na Docsity


Ganhe pontos para baixar
Ganhe pontos para baixar

Ganhe pontos ajudando outros esrudantes ou compre um plano Premium


Guias e Dicas
Guias e Dicas


programaçao linear, Notas de estudo de Introdução à Programação de Computadores

programaçao linear computacional

Tipologia: Notas de estudo

2011

Compartilhado em 13/11/2011

tony-herrys-9
tony-herrys-9 🇧🇷

1 documento

1 / 215

Toggle sidebar

Esta página não é visível na pré-visualização

Não perca as partes importantes!

bg1
ALGORITMOS
DE
PROGRAMAÇÃO
LINEAR
Programação Linear Concreta
Paulo Feofiloff
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.1999
reformatado em 11.9.2005
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d
pf1e
pf1f
pf20
pf21
pf22
pf23
pf24
pf25
pf26
pf27
pf28
pf29
pf2a
pf2b
pf2c
pf2d
pf2e
pf2f
pf30
pf31
pf32
pf33
pf34
pf35
pf36
pf37
pf38
pf39
pf3a
pf3b
pf3c
pf3d
pf3e
pf3f
pf40
pf41
pf42
pf43
pf44
pf45
pf46
pf47
pf48
pf49
pf4a
pf4b
pf4c
pf4d
pf4e
pf4f
pf50
pf51
pf52
pf53
pf54
pf55
pf56
pf57
pf58
pf59
pf5a
pf5b
pf5c
pf5d
pf5e
pf5f
pf60
pf61
pf62
pf63
pf64

Pré-visualização parcial do texto

Baixe programaçao linear e outras Notas de estudo em PDF para Introdução à Programação de Computadores, somente na Docsity!

ALGORITMOS

DE

PROGRAMAÇÃO

LINEAR

Programação Linear Concreta

Paulo Feofiloff

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.

Prefácio

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.

Sumário

Capítulo 1

Vetores e Matrizes

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