Você está na página 1de 13

Introduo

O algoritmo simplex resolve problemas de PL construindo uma soluo admissvel no vrtice


do poliedro, e ento percorre os vrtices do poliedro que sucessivamente possuem valores mais
altos da funo objectivo at encontrar o mximo. Embora este algoritmo seja bastante eficiente
na prtica, e seja garantido de encontrar um ptimo global se certas condies para se
evitar ciclos forem assumidas, ele fraco no pior-caso: possvel construir um problema de
programao linear prtico para o qual o mtodo simplex realiza uma quantidade exponencial
de passos em relao ao tamanho do problema. Na verdade, por algum tempo no se soube se
problemas de programao linear eram NP-completos ou tinham soluo em tempo polinomial.

O primeiro algoritmo de programao linear em tempo polinomial no pior caso foi proposto
por Leonid Khachiyan em 1979. Foi baseado no [mtodo do elipside] da nonlinear
optimization de Naum Shor, que uma generalizao do mtodo da elipside da [optimizao
convexa] de Arkadi Nemirovski, uma dos ganhadores do John von Neumann Theory
Prize 2003, e D. Yudin.

Entretanto, a performance prtica do algoritmo de Khachiyan desapontante: geralmente, o


mtodo simplex mais eficiente. Sua grande importncia que ele encoraja a pesquisa
dos mtodos de pontos interiores. Ao contrrio de algoritmo simplex, que apenas evolui ao
longo de pontos na fronteira da regio factvel, mtodos de ponto interior podem se mover pelo
interior da regio factvel.

Em 1984, Narendra Karmarkar props seu mtodo projetivo, que tornou-se o primeiro
algoritmo a apresentar um bom desempenho tanto na teoria como na prtica: seu pior caso de
complexidade polinomial e os problemas prticos de experincia mostram que ele
razoavelmente eficiente em comparao com o algoritmo simplex. Desde o mtodo de
Karmarkar, muitos outros mtodos de pontos interiores tm sido propostos e analisados. Um
mtodo bastante popular o Mtodo Preditor-corretor de Mehrotra, cuja atuao possui bom
desempenho na prtica, ainda que pouco se saiba sobre ele na teoria.

1
A opinio mais recente entre os estudiosos que a eficincia das boas implementaes dos
mtodos baseados em simplex e dos pontos interiores so similares para a aplicao de rotina
no programa linear.

As solues do programa linear esto em uso generalizado de otimizao de diversos


problemas na indstria, como a otimizao de fluxo de transporte, que pode ser transformada
em problemas de programao linear sem muitas dificuldades.

2
Algoritmos Particulares Em Programao Linear

O problema bsico de programao linear consiste no seguinte: dada uma matriz A e


vetores b e c, encontrar um vetor x tal que

x 0, Ax = b e c x mnimo.

Eis um exemplo concreto: encontrar nmeros no negativos x1 , x2 , . . . , x8 que satisfaam

5 x1 14 x2 + 32 x3 + 2 x4 97 x5 + 8 x6 + 3 x7 + 4 x8 = 832

22 x1 + 4 x2 + 0 x3 77 x4 + 3 x5 + 8 x6 + 0 x7 + 4 x8 = 13

0 x1 + 0 x2 + 1 x3 + 11 x4 + 0 x5 66 x6 + 0 x7 + 22 x8 = 33

1 x1 2 x2 3 x3 + 0 x4 + 0 x5 + 0 x6 + 0 x7 + 33 x8 = 555

e minimizem o valor da expresso

3 x1 + 4 x2 5 x3 + 6 x4 + 0 x5 + 0 x6 + 1 x7 + 0 x8 .

O livro discute este problema, suas variantes e generalizaes, e a correspondente teoria da


dualidade.

Nosso ponto de partida o algoritmo de Gauss-Jordan e o algoritmo Simplex. Toda a teoria de


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 polinomiais para o problema


de programao linear. O algoritmo que discutiremos uma variante do clebre algoritmo do
elipside no uma alternativa prtica para o Simplex [outros algoritmos da famlia,
entretanto, competem com o Simplex] mas tem profundas implicaes tericas.

3
O presente trabalho mais algbrica que geomtrica. O enfoque algortmico: toda a teoria
derivada dos algoritmos, particularmente do Simplex.

Os algoritmos so descritos de maneira precisa, em linguagem razoavelmente informal. Para


tornar isso possvel, necessrio introduzir definies limpas para os conceitos de matriz e
vetor e uma notao suficientemente poderosa para descrever partes desses objetos. O livro
procura dizer com preciso o qu cada algoritmo faz e no apenas como faz o qu 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 exata. Uma
das verses do Simplex manipula os numeradores e denominadores dos nmeros racionais em
separado e portanto s usa aritmtica inteira. Segue da uma verso do Teorema da Dualidade
que especifica delimitaes superiores para o nmero de dgitos das solues do problema de
programao linear.

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). Tais hipteses pouco contribuem para
simplificar a discusso.

O objectivo que queira compreender as interconexes lgicas entre as vrias peas desse
quebra-cabeas que a programao linear. .

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

que denotaremos por x y. bvio que x y = y x. Ademais, para qualquer x y parte Q de N,

4
x y = x[Q] y[Q] + x[NQ] y[NQ] .

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 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- bre M N e qualquer


vetor x sobre N, o produto de A por x o vetor A x definido pela expresso:

(A x)[m] = A[m, ] x (produto matriz por vetor A x)

para cada m em M. claro que A x um vetor sobre M. Analogamente, para qualquer vetor y sobre
M, o produto de y por A o vetor y A definido pela expresso

(y A)[n] = y A[ , n] ( produto vetor por matriz y A)

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.

5
Produto matriz-por-matriz. Para qualquer matriz A sobre L M e qualquer matriz B sobre
MN, o produto de A por B a matriz AB sobre LN, A B 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]

1Algoritmo de Gauss-Jordan

De acordo com O algoritmo de Gauss-Jordan1 a ferramenta bsica da lgebra linear. O


algoritmo 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. 2Assim, comearemos com um esboo de como o algoritmo
funciona.

Exemplo;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

1.1 Matrizes escalonadas

Uma matriz E sobre M N escalonada se existem uma parte P de M e uma parte Q de N tais
que

1
Referncias ao clebre Carl Friedrich Gauss (17771855) e ao (menos clebre)Wilhelm Jordan
(18421899), que popularizou o algoritmo [Jor20].

6
E[P,Q] uma matriz de bijeo e E[MP,N] = O . matriz escalonada

Os conjuntos P e Q so as bases da matriz; o conjunto Q a base de colunas e P 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.)

Q
00001
00010
00100 P Figura 2.1: Matriz escalonada.
01000
10000
00000000000000

0 1 0 0
0 0 0 0 1 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 1 0 0 -2 1 44 66 1
0 0 0 0 0 0 0 1 1 33 0 55 77 0
0 0 0 0 0 0 0 0 0 0
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. Esboo do algoritmo

O algoritmo de Gauss-Jordan recebe uma matriz D sobre M N e transforma D numa matriz


escalonada. Cada iterao do algoritmo comea com uma parte P de M e uma matriz E. A
primeira iterao comea com P = ; e E = D. Cada iterao consiste no seguinte: E

CASO 1: E[MP, ] 6= O .

Escolha h em M P e k em N de modo que E[h, k] 6= 0.

Seja E0 a matriz definida pelas equaes E0 [h, ] = E[h, ]/E[h, k] e E0

[i, ] = E[i, ] E[i, k] E[h, ]/E[h, k] para cada i em M h.

Comece nova iterao com P + h e E0 nos papis de P e E.

CASO 2: E[MP, ] = O .

7
Devolva E e pare. 2

A expresso P + h uma abreviatura de P [ {h}. claro que se P = M noincio 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[MP,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.
1 1 2 0

2 1 5 1

2 2 4 0

1 1 3 1

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

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

8
Figura 2.4: A figura define matrizes F , G e D. Verifique que FG a identidade e que GD
escalonada.
1 0 0 0 1 0 2 3 4 1 0 2 3 4.
0 1 0 0 0 1 4 5 6 0 1 4 5 6
0 0 0 0 6 7 8 9 0 0 0 0 0 0
0 0 0 0 9 8 7 6 5 0 0 0 0 0
Figura 2.5: A figura define matrizes G e D e exibe GD. Observe que GD escalonada mas no
existe F tal que FG = I .

3.0 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 devolve G e sua inversa F ; o
usurio pode ento, ao preo de duas multiplicaes de matrizes, verificar que G inversvel e
que GD escalonada.

4.0 Algoritmo de Gauss-Jordan Recebe uma matriz D sobre M N e devolvematrizes F e G


sobre M M tais que FG = 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:

CASO 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 F0,G0,E0 o resultado da pivotao de F,G,E em torno de h, k. Comece nova iterao com
F0 , G0 , E0 e P + h nos papis de F , G, E e P .

CASO 2: E[MP, ] = O .

Devolva F , G e pare. 2

9
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 pivotao de F,G,E em torno de h, k o
terno F0,G0,E0 de matrizes definido pelas equaes.

F0 [ , h] = D[ , k] , F0 [ , i] = F[ , i]

G0 [h, ] = _h G[h, ] , G0 [i, ] = G[i, ] + _i G[h, ] ,

E0 [h, ] = _h E[h, ] , E0 [i, ] = E[i, ] + _i E[h, ] ,

Nmero de iteraes. claro que o algoritmo de Gauss-Jordan converge 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|..

5.0 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[MP,Q] = O ,

(i2) FG = I e

(i3) GD = E ,

Onde Q uma parte de N (que poderamos chamar base de colunas da iterao).

Q
0 0 1
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.

10
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, FG = I em
virtude de (i2). Portanto, ao devolver F e G o algoritmo estar se comportanto como prometeu.

DEMONSTRAO DOS INVARIANTES: evidente que as propriedades valem 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

F0, G0, E0, 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 [ ,Q] = E[ ,Q] , (2.a)

E[ , k] = I[ , h] , (2.b)

FG`= I , (2.c)

E` = G`D. (2.d)

11
Concluso
O algoritmo de Gauss-Jordan transforma qualquer matriz dada em uma matriz escalonada
equivalente. O algoritmo, juntamente com sua anlise, constitui prova do seguinte teorema:

Para toda matriz D, existem matrizes F e G tais que FG = I e GD escalonada. Vale 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 nmero fixo de dgitos, e as operaes aritmticas so executadas com erro de
arredondamento.

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 arredondamento

12
Referencias bibliograficas

Wikipdia, programao linear

https://pt.wikipedia.org/wiki/Programao linear , baixado no dia 13/11/2017 pelas 17:38 min

https://www.ime.usp.br/~pf/prog-lin/prefacio.html, baixado no dia 13/11/2017 pelas 17:42min

https://www.ime.usp.br/~pf/prog-lin/book-public.pdf baixado no dia 13/11/2017 pelas


17:44min

http://www.cos.ufrj.br/uploadfile/1338571634.pdf baixado no dia 15 de Novembro pelas


15:35min

13

Você também pode gostar