Escolar Documentos
Profissional Documentos
Cultura Documentos
Esparsidade, Estrutura, Estabilidade e Escalamento em Algebra Linear Computacional
Esparsidade, Estrutura, Estabilidade e Escalamento em Algebra Linear Computacional
por
Julio M. Stern
Departamento de Ci^ encia de Computac~ ao do Instituto de Matematica e Estat stica da Universidade de S~ ao Paulo
Abril de 1994
Conteudo
Prefacio para a IX Escola de Computac~ ao
0.1 0.2 0.3 0.4 0.5 0.6 Import^ ancia da Area . . . . . . . . . . . . . Interdisciplinaridade . . . . . . . . . . . . . Serventia do Livro Texto . . . . . . . . . . . Plano de Aulas . . . . . . . . . . . . . . . . Comentario sobre a Bibliogra a de Suporte . Agradecimentos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2 2 3 3 3 4
~O 1 INTRODUCA
1.1 Panorama do Livro e seu Tema . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2 Notac~ oes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.3 Representac~ ao de Matrizes Esparsas . . . . . . . . . . . . . . . . . . . . . . . . . . Permutac~ oes e Operac~ oes Elementares Metodo de Gauss . . . . . . . . . . . . Pivoteamento . . . . . . . . . . . . . . Lema da Fatorac~ ao . . . . . . . . . . . O Metodo de Doolittle . . . . . . . . . Complexidade . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5 6 9
~ O LU 2 FATORACA
2.1 2.2 2.3 2.4 2.5 2.6
13
13 15 16 18 19 21
23
ii
Conteudo
3.3 Busca em Profundidade . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 3.4 Grafos Simetricos e Casamentos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 3.5 O Algoritmo Hungaro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
~ O ASSIMETRICA 4 ELIMINACA
4.1 Preenchimento Local . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 4.2 Pre-Posicionamento de Piv^ os . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 5.1 5.2 5.3 5.4 5.5 5.6 5.7 Matrizes Ortogonais . . . . . . . . . . Fatorac~ ao QR . . . . . . . . . . . . . . Espacos Vetoriais com Produto Interno Projetores . . . . . . . . . . . . . . . . Quadrados M nimos . . . . . . . . . . Programac~ ao Quadratica . . . . . . . . Fatorac~ ao de Cholesky . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
37
45
45 45 47 47 48 48 49
~ O SIMETRICA 6 ELIMINACA
6.1 Grafos de Eliminac~ ao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 6.2 Grafos Cordais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 6.3 Ordenac~ oes por Dissecc~ ao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 Estrutura Triangular Blocada Estrutura Angular Blocada . . Partic~ ao de Hipergrafos . . . . Paralelismo . . . . . . . . . . Fatorac~ oes Blocadas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 73 74 75 76
53
7 ESTRUTURA
7.1 7.2 7.3 7.4 7.5
65
8 ESCALAMENTO
8.1 O Sistema de Ponto Flutuante . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79 8.2 Erros no Produto Escalar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 8.3 Escalamento de Matrizes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
79
Conteudo
9 ESTABILIDADE
9.1 Normas e Condic~ ao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89 9.2 Perturbac~ oes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91 9.3 Erro na Fatorac~ ao LU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92 Formulas de Modi cac~ ao Atualizac~ oes Estaveis . . Preservando Esparsidade Preservando Estrutura . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
89
10 MUDANCA de BASE
10.1 10.2 10.3 10.4
97
Matlab Bibliogra a
113 119
Conteudo
Propomos, para a IX Escola de Computac~ ao, o curso acompanhado de livro texto: Esparsidade, Estrutura, Escalamento e Estabilidade em Algebra Linear Computacional. Embora abrangente o su ciente para a compreens~ ao dos principais problemas da area, a t^ onica do curso e a soluc~ ao de sistemas lineares esparsos e-ou estruturados. Na primeira sec~ ao da introduc~ ao damos uma vis~ ao panor^ amica sobre o tema e a organizac~ ao do livro. Neste prefacio ressaltamos algumas motivac~ oes para a inclus~ ao do curso na IX Escola de Computac~ ao, e esclarecemos a forma e o conteudo das palestras a serem dadas durante o mesmo.
0.2 Interdisciplinaridade
Um aspecto que, a nosso ver, torna o tema interessante para um evento como a Escola de Computac~ ao e sua interdisciplinaridade, vejamos: A resoluc~ ao dos problema de algebra linear envolve os aspectos classicos de complexidade, converg^ encia e estabilidade de analise numerica. O tratamento de esparsidade e estrutura e um problema essencialmente combinatorio, envolvendo teoria de grafos, hipergrafos, e heur sticas para soluc~ ao de problemas de programac~ ao matematica discreta. A paralelizac~ ao destes algoritmos, ou o desenvolvimento de novos metodos, em ambientes t~ ao diversos como maquinas de memoria compartilhada ou redes de estac~ oes de trabalho, vem liderando as pesquisas na area nos ultimos anos.
Conteudo
Bertsekas-89] e Dongarra-91]. Colet^ aneas de artigos sobre algebra linear computacional em ambiente paralelo, trazendo alguns artigos sobre matrizes esparsas, s~ ao muito poucos; como: Carey89], Vorst-89] e Gallivan-90]. Nestas resenhas encontra-se tambem uma extensiva bibliogra a comentada da area.
0.6 Agradecimentos
No DCC-IME-USP, Departamento de Ci^ encia da Computac~ ao da Instituto de Matematica e Estat stica da Universidade de S~ ao Paulo, contei sempre com a ajuda e o encorajamento de muitos colegas, como os Professores Marcos D. Gubitoso, Arnaldo Mandel, Kunio Okuda, Siang W. Song e Routo Terada. Sou especialmente grato ao coordenador do grupo de Programac~ ao Matematica, Professor Carlos Humes Jr. No CEMCAP-IME-USP, Centro de Matematica e Computac~ ao Aplicadas, tive sempre o apoio dos Professores Marco Antonio Raupp, Pedro A. Morettin e Carlos A. B. Pereira. No NOPEFUSP, Nucleo de Otimizac~ ao e Processos Estocasticos Aplicados a Economia e Financas, contei com o companheirismo dos Professores Marcos Eug^ enio da Silva, Jose Carlos Santos e Jo~ ao Carlos Prandini. Em varias oportunidades recebi a colaborac~ ao do Eng. Fabio Nakano e do Prof. Jacob Zimbarg sobrinho. Partes deste livro baseiam-se em trabalhos feitos com o Professor Stephen A. Vavasis, da Universidade de Cornell. A apresentac~ ao de alguns topicos foi inspirada em disciplinas ministradas pelo Professor Thomas F. Coleman, na mesma Universidade. Em 1992 montamos a disciplina MAC-795, Metodos Computacionais da Algebra Linear, para o programa de mestrado do DCCIME-USP. A apostila que acompanhou o curso serviu de base para este livro. Devo a Paulo Regis Zanjacomo, presentemente na Universidade de Cornell, e a Professora Celma O. Ribeiro, da Escola Politecnica da USP, varias cr ticas, comentarios, e sugest~ oes que em muito melhoraram aquela primeira vers~ ao deste texto. Dos promotores da IX Escola de Computac~ ao, inclusive do an^ onimo, cr tico e bem humorado referee, e da Universidade Federal de Pernambuco (UFP-Recife), recebi todo o necessario suporte. A todos estes amigos, a minha esposa, Marisa, e a meus lhos, Rafael, Ana Carolina e Deborah, minha gratid~ ao.
Esparsidade: Como resolver e cientemente sistemas cujas matrizes tenham baixa densi-
Estrutura: Como resolver e cientemente sistemas esparsos cujos elementos n~ ao nulos est~ ao
dispostos com uma certa regularidade na matriz de coe cientes.
Estabilidade: Como lidar com o efeito cumulativo dos erros de arredondamento na soluc~ ao
As ferramentas relevantes para a analise e implementac~ ao de algoritmos e cientes de algebra linear est~ ao espalhados entre diversas areas, areas estas a ns-mas-nem-tanto, como Teoria de Grafos e Hipergrafos, Algebra Linear, Analise Numerica, e Teoria de Processamento Paralelo. O proposito destas notas e apresentar este material de forma razoavelmente coerente e didatica. O Cap tulo 2 exp~ oe o metodo de Gauss para soluc~ ao de sistemas lineares, invers~ ao, ou fatorac~ ao de matrizes. Os metodos para matrizes esparsas lidam com a estrutura da disposic~ ao dos elementos n~ ao nulos dentro da matriz, e esta estrutura e convenientemente descrita e manipulada em termos da teoria de grafos. O Cap tulo 3 e um resumo de conceitos basicos desta teoria. Conceitos mais avancados (ou menos usuais) como grafos cordais, separadores, e hipergrafos, s~ ao tratados em outros cap tulos. 5
No Cap tulo 4 estudamos tecnicas para tratar sistemas esparsos assimetricos, principalmente preenchimento local, e a heur stica P3. Desenvolvimentos posteriores deste tema encontram-se tambem no cap tulo 7. O Cap tulo 5 exp~ oem as Fatorac~ oes QR e de Cholesky, e sua utilizac~ ao na soluc~ ao de problemas de quadrados m nimos, programac~ ao quadratica, e construc~ ao de projetores. No Cap tulo 6 estudamos tecnicas para tratar sistemas esparsos simetricos; incluindo toda a necessaria teoria de grafos cordais. O capitulo 7 trata da estrutura de um sistema, que pode ser vista como regularidades no padr~ ao de esparsidade, ou como a decomposic~ ao do sistema em sub-sistemas acoplados. Neste cap tulo estudamos brevemente a paralelizac~ ao de alguns dos algoritmos, tema que ja aparece implicitamente em cap tulos anteriores. O Capitulo 8 e dedicado a analise do efeito dos inevitaveis erros de arredondamento nos procedimentos computacionais. No Capitulo 9 analisamos quanto estes erros podem degradar a soluc~ ao nal de um problema. Estes dois cap tulos tratam dos aspectos de Analise Numerica que, embora n~ ao sendo a t^ onica do curso, n~ ao podem ser desprezados. O Cap tulo 10 trata do problema de mudanca de base, i.e., de atualizar a inversa de uma matriz quando nesta se substitui uma unica coluna. Este problema e de fundamental import^ ancia para muitos algoritmos de Otimizac~ ao. Parte da avaliac~ ao numa disciplina como a proposta deve ser feita com exerc cios-programa, como os dados ao longo das notas. E recomendavel o uso de uma linguagem estruturada, que inclua entre seus tipos basicos, numeros reais de precis~ ao simples e dupla, inteiros, campos de bits e ponteiros, que permita a facil construc~ ao e manipulac~ ao de estruturas, e para a qual haja compiladores em computadores dos mais diversos portes. As linguagens C, C++ e FORTRAN-90 s~ ao sugest~ oes naturais. Ambientes iterativos para calculo matricial, como Matlab, s~ ao um grande est mulo a experimentac~ ao e comparac~ ao de diversos de metodos numericos, facilitando a rapida prototipagem e teste de algoritmos. Apresentamos uma introduc~ ao a este tipo de ambiente como ap^ endice.
emplo: se b e c s~ ao vetores linha a = b c e um vetor linha cujos primeiros elementos s~ ao os elementos de b, e os elementos seguintes s~ ao os elementos de c. Analogamente, A A A A= A A A A A A representa uma matriz blocada, desde que as dimens~ oes dos blocos sejam compat veis. Se A e uma matriz, Ai representa a i-esima linha de A, e Aj sua j -esima coluna, de modo que se A e mxn, A A A = A A : : : An = .. . Am
2 1 1 6 6 1 4 2 1 3 2 1 2 2 2 3 3 1 3 2 3 3 3 7 7 5 2 6 6 6 6 6 4 3 7 7 7 7 7 5 1 2 h 1 2 i
3 1
diag(d) = D =
...
dn
7 7 7 7 7 5
d d ; d = .. . dn
2 6 6 6 6 6 4 1
7 7 2 7 7 7 5
O vetor unitario, 1, e o vetor, linha ou coluna, em que todos os elementos s~ ao iguais a 1, isto e, 1 = 1 1 : : : 1 . Assim a matriz identidade e I = diag(1). O j -esimo versor de dimens~ ao n e I j , a j -esima coluna da matriz identidade de dimens~ ao n. A transposta, a inversa e a transposta da inversa de uma matriz A s~ ao denotadas, respectivamente, por A0, A e A t. O determinante de uma matriz A, nxn, e
h i 1
det(A) =
h 1 2 i
S (p)Ap Ap : : : An pn
1 (1) 2 (2)
( ) h i
onde p = p p : : : pn e uma permutac~ ao dos elementos de p = 1 2 : : : n . O sinal de permutac~ ao, S (p), e +1 ou -1 conforme o numero de trocas de pares de elementos que e necessario fazer em p para retornar a p, seja par ou mpar. O conjunto dos elementos em cada um dos termos na somatoria da de nic~ ao do determinante e denominado uma diagonal da matriz. A diagonal correspondente a pemutac~ ao p e denominada diagonal principal. Uma matriz quadrada e singular se tiver determinante nulo. O posto de uma matriz A, rank(A), e a dimens~ ao de sua maior sub-matriz quadrada n~ ao singular. Dado um sistema Ax = b, com matriz de coe cientes A nxn n~ ao singular, a Regra Cramer nos diz que o sistema tem por unica soluc~ ao
0 0 0
x j xi = det( A : : : Ai
1
b Ai
+1
An )=det(A):
tr(A) =
i=1
Aii :
A matriz booleana associada a matriz A; B (A), e a matriz, da mesma dimens~ ao de A, em j j j j que B (A)i = 1 se Ai 6= 0, e B (A)i = 0 se Ai = 0. O complemento de uma matriz booleana B , e a matriz booleana B , da mesma dimens~ ao de B , tal que Bij = 1 , Bij = 0. Os conjuntos N = f1; 2; :::; ng e M = f1; 2; :::; mg ser~ ao frequentemente usados como dom nios de ndices. Assim, se A e uma matriz mxn, faz sentido falar dos elementos Aji ; i 2 M; j 2 N , O numero de elementos n~ ao nulos, ENNs, numa matriz A, mxn, e
enn(A) =
m;n X i;j =1
de modo que enn(Ai) e enn(Aj ) s~ ao, respectivamente, o numero de elementos n~ ao nulos na i-esima linha e na j -esima coluna de A. Dada uma func~ ao '(), de nida num dom nio D, e X D, de nimos seu argumento m nimo V = arg minx2X '(x) e argumento maximo U = arg maxx2X '(x) como, respectivamente, os conjuntos V; U D que minimizam ou maximizam a func~ ao ' em X . Assim, se por exemplo, ' = x ; x 2 <, X = 5; 5] e Y =] 5; 5 , ent~ ao arg minX '(x) = arg minY '(x) = f0g, arg maxX '(x) = f 5; 5g, arg maxY '(x) = ;. Para realizar experi^ encias computacionais utilizaremos por vezes os sistemas lineares de dimens~ ao n e soluc~ ao x = 1, com as seguintes matrizes de coe cientes e vetores independentes:
2
Binomial:
nB j i
j 1 0
2 , j = 1; 2; : : : i ; n b = 2 . . . , j>i 2n
1 6 6 6 6 6 4 X
7 2 7 7 7 7 5
Hilbert: Tridiagonal:
nT j i
nH j i
= 1=(i + j 1) ; n hi =
j =1
1=(i + j 1)
102
104 405
3 7 7 7 7 7 7 7 5
; l = enn(A) = 9 :
10
h
Representac~ ao estatica por linhas: aias = 102 104 201 301 304 405 501 502 503 ; aijs = 2 4 1 1 4 5 1 2 3 ; aif = 2 3 5 6 9 :
i h i h i
Representac~ ao estatica por colunas: ajas = 201 301 501 102 502 503 104 304 405 ; ajis = 2 3 5 1 5 5 1 3 4 ; ajf = 3 5 6 8 9 : Representac~ ao de lista ligada por linhas:
h i h i h i
ancorai(1) ! (2, 102, !) (4, 104, a) ancorai(2) ! (1, 201, a) ancorai(3) ! (1, 301, !) (4, 304, a) ancorai(4) ! (5, 405, a) ancorai(5) ! (1, 501, !) (2, 502, !) (3, 503, a) Representac~ ao de lista ligada por colunas: ancoraj(1) ancoraj(2) ancoraj(3) ancoraj(4) ancoraj(5) (2, 201, #) (1, 102, #) (5, 503, ?) (1, 104, #) (4, 405, ?) (3, 301, #) (5, 502, ?) (3, 304, ?) (5, 501, ?) Representac~ ao em rede: ancoraj(1) ancoraj(2) ancoraj(3) ancoraj(4) ancorai(1) ! ancorai(2) ! ancorai(3) ! ancorai(4) ! ancorai(5) !
1 2 102
!
2 1 201 3 1 301
# !
1 4 104
ancoraj(5)
# !
# a
# !
3 4 304
? a
4 5 405
5 1 501
? !
5 2 502
? !
5 3 503
? a
? a
11
Exerc cios
1. Prove que (a) (AB )0 = B 0A0. (b) (AB ) = A B . (c) (A0) = (A )0.
1 1 1 1 1
2. Na representac~ ao estatica por linhas, e realmente necessario termos aif alem de aias e aijs? 3. Considere uma matriz esparsa de estrutura regular e conhecida, por exemplo tri-diagonal, para a qual bastaria conhecermos o valor dos ENNs numa dada sequ^ encia, por exemplo linha por linha. Suponha que um inteiro ou ponteiro ocupa 2 bytes e que um real ocupa 4 bytes. D^ e o coe ciente de uso de memoria de cada uma das outras representac~ oes em relac~ ao a esta representac~ ao minimal. 4. (a) Considere uma matriz esparsa A de densidade, i.e. frac~ ao de elementos n~ ao nulos, . Suponha que A esta representada em rede. Queremos adicionar um novo ENN Aj i a matriz. Supondo que os ENN est~ ao aleatoriamente distribu dos, e tomando acesso a uma celula como operac~ ao elementar, qual a complexidade esperada desta operac~ ao? Explique sucintamente como realizar a operac~ ao. (b) Nas mesmas condic~ oes, queremos substituir duas linhas Ai e Ai , respectivamente, ~i = c Ai + s Ai e A ~i = c Ai s Ai. Novamente pelas combinac~ oes lineares A queremos um algoritmo, descrito sumaria mas claramente, e a complexidade esperada. Dicas e curiosidades: i. Assumindo que << 1, o caso em que estamos interessados, a densidade esperada das novas linhas e 2 . Por qu^ e? ii. O algoritmo para a segunda quest~ ao deve ser algo melhor que a mera repetic~ ao do algoritmo da primeira quest~ ao. iii. Esta transformac~ ao linear, tomando as constantes c e s como o coseno e o seno de um ^ angulo , e uma \rotac~ ao de Givens", a ser estudada no cap tulo 3.
2 +1 +1 +1 +1
5. Dados u e w n 1, A e B n n, e k 2 N , prove que (a) tr(A + B ) = tr(A) + tr(B ). (b) tr(AB ) = tr(BA). (c) tr(uw0) = w0u. (d) tr(Auw0) = tr(uw0A) = w0Au. (e) (uw0A)k = (tr(uw0A))k (uw0A). (f) (Auw0)k = (tr(Auw0))k (Auw0).
1 1
12
q = 1 2 ::: n Q
~, equivale a multiplica-la, a esquerda (a direita), pela correspondente obter a matriz permutada A matriz de permutac~ ao de linhas (de colunas). Ademais, se p (q ) e o correspondente vetor de ndices de linha (de coluna) permutados,
j j ~j A i = (PA)i = Ap i
( )
Lema 2.1 Realizar uma permutac~ ao de linhas (de colunas) numa matriz qualquer A, de modo a
qj j ~j A i = (AQ)i = Ai :
( )
13
0 0 1 ; P= 1 0 0 0 1 0
6 6 4 2 6 6 4
3 7 7 5
0 1 0 ; Q= 0 0 1 1 0 0
6 6 4 2 6 6 4
3 7 7 5
;
3 7 7 5
31 32 33 p = q = 3 1 2 ; PA = 11 12 13 21 22 23
3 7 7 5
13 11 12 ; AQ = 23 21 22 33 31 32
Uma matriz quadrada, A, e simetrica sse for igual a transposta, isto e, sse A = A0. Uma ~ = PAP 0, permutac~ ao simetrica de uma matriz quadrada A e uma permutac~ ao da forma A onde P e uma matriz de permutac~ ao. Uma matriz quadrada, A, e ortogonal sse sua inversa for igual a sua transposta, isto e, sse A = A0.
1
Lema 2.2 (a) Matrizes de permutac~ ao s~ ao ortogonais. (b) Uma permutac~ ao simetrica de uma
Estudaremos a seguir alguns algoritmos para soluc~ ao do sistema Ax = b. Tais algoritmos s~ ao denominados diretos pois, a menos do erro de arredondamento, fornecem diretamente a soluc~ ao do sistema. A ess^ encia destes algoritmos s~ ao transformac~ oes sobre o sistema que deixam inalteradas sua soluc~ ao. S~ ao operac~ oes elementares sobre uma matriz, n m, qualquer: 1. Multiplicar uma linha por um escalar n~ ao nulo. 2. Adicionar, a uma linha, uma outra linha da matriz. 3. Subtrair de uma linha, uma outra linha da matriz multiplicada por um escalar n~ ao nulo. Uma operac~ ao elementar aplicada a matriz identidade I , n n, produz a matriz elementar correspondente, E .
la, a esquerda, pela matriz elementar correspondente.
Lema 2.3 Realizar uma operac~ ao elementar sobre uma matriz qualquer, A, equivale a multiplicaExemplo 3. 1 0 0 11 12 13 A = 21 22 23 ; E = 0 1 0 ; 31=11 0 1 31 32 33 11 12 13 : EA = 21 22 23 0 32 12 31=11 33 13 31=11
6 6 4 7 7 5 6 6 4 7 7 5 2 6 6 4 3 7 7 5 2 3 2 3
15
Lema 2.4 Toda matriz elementar e invers vel. Ademais, Ax = b , EAx = Eb.
A matriz aumentada correspondente ao sistema Ax = b, A n n e a matriz A b], n n + 1. Obviamente a matriz aumentada do sistema EAx = Eb e a matriz E A b]. Uma matriz quadrada A e dita triangular superior se todos os elementos abaixo da diagonal principal s~ ao nulos, e e dita triangular estritamente superior se tambem os elementos da diagonal s~ ao nulos. Analogamente, de nimos matriz triangular inferior e estritamente inferior. Assim, A e Triangular Superior , (i > j ) Aj i = 0). Triangular Estritamente Superior , (i j ) Aj i = 0). Triangular Inferior , (i < j ) Aj i = 0). Triangular Estritamente Inferior , (i j ) Aj i = 0). Os metodos diretos que estudaremos funcionam por ser facil resolver um sistema Ux = b se U e triangular superior, isto e Em um tal sistema podemos calcular por substituic~ ao, nesta ordem, as componentes xn; xn ; : : :; x , pois
1 1
n xn = bn =Un xn k = (bn k
j =n k+1
j x )=U n Un k j n
Q
k k
j ao equivale a Tal metodo funciona se Ujj 6= 0; 8j 2 N . Como det(U ) = n j Uj , esta condic~ termos um sistema bem determinado. Estudaremos a seguir como levar, atraves de operac~ oes elementares, um sistema qualquer a forma triangular.
=1
2 1 3 1 A b = 2 3 6 2 4 4 6 6
0 i 6 6 4
3 7 7 5
1 ! 2
2 1 3 1 A b = 0 2 3 1 0 2 0 4
1 i 6 6 4
3 7 7 5
16
h 2
2 1 A b = 0 2 0 0
2 i 6 6 4
3 1 3 1 3 3
3 7 7 5
! x=
6 6 4
1 2 1
3 7 7 5
Em cada etapa denominaremos a linha que esta sendo multiplicada e subtra da as demais de linha piv^ o, seu elemento diagonal de elemento piv^ o e os fatores de multiplicac~ ao de multiplicadores. Posteriormente faremos uso dos multiplicadores utilizados no processo e, portanto, devemos armazena-los. Com este m, de nimos as matrizes, n n, M , M , . . . n M = M , onde: Se j k e i > j , ent~ ao k Mij e o multiplicador utilizado na k-esima etapa para anular o elemento na i-esima linha e j -esima coluna; Caso contrario, k Mij = 0. Observe que os elementos n~ ao nulos de k M correspondem a elementos nulos em k A, e vice-versa. Podemos pois poupar memoria, guardando uma unica matriz, k A + k M . Assim, no Exemplo 4, k A +k M j k b ; k = 0; 1; 2, pode ser representado como:
1 2 1 h i 2 6 6 4
2 1 3 1 2 3 6 2 4 4 6 6
3 7 7 5
6 6 4
2 1 3 1 1 2 3 1 2 2 0 4
3 7 7 5
6 6 4
2 1 1 2 2 1
3 1 3 1 3 3
3 7 7 5
2.3 Pivoteamento
Consideremos a hipotese do surgimento de um zero na posic~ ao do piv^ o da etapa seguinte do k Ak k k processo de triangularizac~ ao, isto e, em A anula-se o elemento Ak k . Se na coluna houver algum elemento n~ ao nulo na linha l, l > k, podemos permutar as linhas k e l e continuar o processo de triangularizac~ ao. Uma permutac~ ao de linhas, para trocar o elemento piv^ o a ser utilizado, denomina-se um pivoteamento. A cada etapa queremos lembrar-nos de quais os pivoteamentos realizados durante o processo. Para tanto, guardamos os vetores de ndices de linha permutados da permutac~ ao corrente em relac~ ao ao sistema original. Estes s~ ao os vetores de n permutac~ ao, p, p, . . . p = p. No que tange ao armazenamento dos multiplicadores, devemos convencionar se estes ser~ ao ou n~ ao permutados, junto com as respectivas linhas de A + M , nas operac~ oes de pivoteamento. Adotaremos, por hora, a convenc~ ao de SIM, permuta-los, junto com os pivoteamentos. O exemplo 5 ilustra o processo para uma matriz de dimens~ ao k = 4, apresentando a matriz k A +k M juntamente com o vetor de permutac~ k ao, p para cada etapa da triangularizac~ ao:
1 1 1 1 2 1 h i 2 6 6 6 6 4
2 1 2 3
1 3 8 9
9 7 4 6
1 7 2 6
3 7 7 7 7 5
1 2 ! 3 4
2 6 6 6 6 4
3 1 =3 2 =3 2 =3
9 0 2 5
6 5 0 5
6 5 2 5
3 7 7 7 7 5
4 2 ! 3 1
2.3. Pivoteamento
2 6 6 6 6 4
17 9 5 2 =5 0 6 5 2 5 6 5 4 5
3 7 7 7 7 5
3 2 =3 2 =3 1 =3
4 1 ! 3 2
2 6 6 6 6 4
3 2 =3 1 =3 2 =3
9 6 5 5 0 5 2 =5 2 =5
6 5 5 6
3 7 7 7 7 5
4 1 2 3
prosseguimento do processo de triangularizac~ ao e sempre poss vel: Se na k-esima etapa, para l = k : : : n, k Ak = 0, isto e o elemento na posic~ ao piv^ o e todos os elementos abaixo dele l k k k na coluna A se anulam, ent~ ao as linhas Al, l = k : : : n, s~ ao linearmente dependentes e k det( A) = 0 ) det( A) = 0, o que contraria a hipotese do sistema ser bem determinado.
1 1 1 1 0
Observac~ ao 2.1 Note que se o sistema e bem determinado, um pivoteamento que permite o
processo de triangularizac~ ao de um dado sistema A b]. Neste caso, poder amos permutar as linhas do sistema original como indicado no vetor de permutac~ ao, obtendo um novo sistema P A b], cujas equac~ oes s~ ao as mesmas que as do sistema original, a menos da ordem em que est~ ao escritas. Poder amos ent~ ao triangularizar este sistema sem necessidade de nenhum pivoteamento, obtendo ao nal o mesmo sistema equivalente, n A n b].
0 0 0 0 1 1
Note que a triangularizac~ ao da matriz dos coe cientes de um sistema e completamente independente do vetor dos termos independentes. Suponha termos triangularizado o sistema A b], isto e, que temos um sistema equivalente e triangular n A = U n b], tendo sido preservados os multiplicadores e as permutac~ oes utilizadas, M e p. Se for necessario resolver um segundo sistema A b], que difere do primeiro apenas pelo vetor dos termos independentes, n~ ao sera necessario retriangularizar a matriz A; Bastara efetuar no novo vetor de termos independentes, c, as operac~ oes indicadas pelo vetor de permutac~ ao p e pela matriz de multiplicadores M . Uma pol tica, que mais tarde demonstraremos util, e realizarmos pivoteamentos para colocar como elemento piv^ o, em cada etapa, o elemento de maximo modulo. Esta estrategia, o pivoteamento parcial, garante termos todos os multiplicadores j Mij j 1. O pivoteamento parcial e de fundamental import^ ancia para a estabilidade numerica do processo, controlando a propagac~ ao de erros de arrendondamento.
0 0 1 1 0 0 0
mutar linhas da matriz A: Basta, na k-esima etapa da triangularizac~ ao utilizar o ndice k p(i) ao inves do ndice de linha i.
1
Observac~ ao 2.3 Para realizar uma operac~ ao de pivoteamento n~ ao e necessario efetivamente per-
armos a coluna j permutamos para a posic~ ao de pivo (linha j ) o elemento na linha i. O vetor de 0 pivoteamentos do exemplo anterior e 4 1 2 3 . Com o vetor de pivoteamentos adotaremos ~ O permutar os multiplicadores na coluna j M , nos pivoteamentos k > j . a convenc~ ao de NA
h i
Observac~ ao 2.4 Uma maneira alternativa de guardar pivoteamentos realizados ao longo do processo de triangularizac~ ao e o vetor de pivoteamentos, t, onde t(j ) = i signi ca que ao elimin-
18
Lema 2.5 (da Fatorac~ ao) Seja A uma matriz invers vel triangularizavel pelo metodo de Gauss
0
Demonstrac~ ao. Veri quemos inicialmente que a transformac~ ao linear que leva k A em k A e dada por k T , i.e. k A =k T k A, onde 1 0 . 0 .. . . 1 . ; kT = ... Mkk . ... 0 . . k 0 Mn 1 de modo que U = n A = n T n T : : : T T A = TA. Observando ainda que k T e invers vel e que 1 0 . 0 .. . . 1 . ; kT = kL = . . . +Mkk . ... 0 . . k 1 0 +Mn Ademais, temos que T = T T : : : n T = L : : : n L e e facil veri car que L L : : : n L = L, donde A = LU . Q.E.D.
1 1 2 6 6 6 6 6 6 6 6 6 6 6 6 4 3 7 7 7 7 7 7 7 7 7 7 7 7 5 +1 1 1 2 2 1 2 6 6 6 6 6 6 6 6 6 6 6 6 4 3 7 7 7 7 7 7 7 7 7 7 7 7 5 1 +1 1 1 1 2 1 1 1 1 1 1 2 1
Teorema 2.1 (LU) Seja A uma matriz invers vel n n. Ent~ ao existe uma (matriz de) per~ = PA e triangularizavel pelo metodo de Gauss e A ~ = LU . mutac~ ao de linhas P de modo que A Demonstrac~ ao. O teorema segue trivialmente do lema da fatorac~ ao e das observac~ oes 2.1 e 2.2. A soluc~ ao de um sistema linear Ax = b pode ser expressa diretamente em termos da fatorac~ ao 0 ~ = PA = LU , ent~ LU da matriz dos coe cientes, i.e., se A ao P LUx = b, e x = U L Pb. Assim, em muitas aplicac~ oes, o conhecimento expl cito de A pode ser substitu do com vantagem pelo conhecimento da fatorac~ ao da matriz.
1 1 1
19
Li U = Ai para i = 1 : : : n LU i = Ai
(
temos
P P
Note que so escrevemos as equac~ oes para os termos incognitos, isto e, ou acima da diagonal em U, e abaixo da diagonal em L. Tambem as somatorias foram interrompidas quando os termos remanescentes s~ ao todos nulos. O calculo do elemento (M + U )j i , envolve, na ordem prescrita, apenas elementos ja calculados ao em que se necessita os elementos Aj de (M +U ). Ademais, o calculo de (M +U )j i; i e a ultima ocasi~ j j n portanto podemos armazenar (M + U )i no lugar de Ai . Estas s~ ao as matrizes A = D; : : : ; D = M + U. Exemplo 6 - Usando o metodo de Doolittle para triangularizar a matriz do Exemplo 4, onde n~ ao ha necessidade de pivoteamento, temos
0
20 2 1 3 D=A= 2 3 6 4 4 6
6 6 4 3 7 7 5 2 2 3 7 7 5
!
3
2 6 6 4
2 1 3 2 3 6 4 4 6 2 1 3 1 2 3 2 4 6
2
2 1 3 7 6 6 = 1D ! ! 41 3 67 5 2 4 6 2 1 3 7 6 = 2D ! ! 6 2 3 7 5 4 1 2 1 6 3 3 3
3 7 7 5 2 3
2 6 6 4
3 7 7 5
2 1 6 6 1 2 4 2 1
= D =M +U
3 +1
Para realizar os pivoteamentos necessarios a passagem de k D a k D e necessario examinar os poss veis elementos piv^ os nas linhas i = k : : : n, isto e, os elementos em k Ak . Para tanto, basta calcular, para i = k : : :n,
kv k i = Ai
0
k 1 X l=1
MilUlk :
Exemplo 7 - Triangularizando pelo metodo de Doolittle a matriz, A, com pivoteamento parcial, temos os k p; k D; k v, para k = 0 : : : n, como segue: 1 2 3 4 4 1 3 2
2 2 6 6 6 6 4
2 1 2 3
1 3 8 9
9 7 4 6
6 5 4 7
1 7 2 6
3 7 7 7 7 5
4 2 1 ! 2 3 2 1 3
3 7 7 7 7 5
2 6 6 6 6 4
3 1 =3 2 =3 2 =3
2 6 6 6 6 4
9 3 8 1
6 7 4 9
6 7 2 1
3 7 7 7 7 5
0 ! 2 5
6 5 5 2
3 7 7 7 7 5
3 6 6 2 =3 6 6 4 2 =3 1 =3
9 5 2 =5 0
6 5 2 7
4 1 ! 2 2 3 5
3 2 =3 1 =3 2 =3 6 5 5 6
9 6 5 5 0 5 2 =5 2 =5
3 7 7 7 7 5
4 1 2 3
3 6 6 2 =3 6 6 4 1 =3 2 =3
9 6 5 5 0 5 2 =5 2 =5
2.6. Complexidade
21
2.6 Complexidade
Contemos agora o numero de operac~ oes aritmeticas necessarias a triangularizac~ ao de uma matriz de coe cientes e a soluc~ ao de um sistema linear. Na fase de triangularizac~ ao da matriz dos k k coe cientes, vemos que o calculo de A a partir de A requer (n k) divis~ oes e (n k) somas e produtos. No total s~ ao portanto requeridos
1 2
n 1 X n 1 X k=1 k=1
2
(n k ) = n(n
isto e, s~ ao necessarios da ordem de n =3 + O(n ) produtos e subtrac~ oes, e n =2 + O(n) divis~ oes. Analogamente, dada a matriz dos multiplicadores e o vetor das permutac~ oes, M e p, o tratamento de um vetor de termos independentes requer n(n 1)=2 produtos e subtrac~ oes. Finalmente, a soluc~ ao do sistema linear triangularizado requer n divis~ oes e n(n 1)=2 produtos e subtrac~ oes.
Exerc cios
1. Comente como cada forma de representac~ ao da matriz A, por linhas ou por colunas, favorece o uso de um dos algoritmos apresentados na observac~ ao 2.5. Escreva algoritmos similares para a soluc~ ao do sistema Lx = b. 2. Programe e implemente, em linguagem C, C++, ou FORTRAN-90, func~ oes para: (a) Fatorac~ ao LU com pivoteamento parcial. (b) Soluc~ ao dos sistemas Lx = b e Ux = b, (c) Um argumento adicional deve indicar a forma de representac~ ao das matrizes, densa, estatica por linha, ou estatica por coluna. (d) No caso da representac~ ao densa, um segundo argumento deve indicar o uso do vetor de permutac~ oes ou pivoteamentos. No caso das representac~ oes estaticas, escreva o programa como lhe parecer mais conveniente. 3. Mostre que calcular explicitamente a inversa de A implica saber resolver n sistemas lineares, Ax = I j . Dada a fatorac~ ao A = LU , qual o custo de computar explicitamente a inversa A ?
1
22
0 0 0 BG = 0 0 0
6 6 6 6 6 6 6 6 6 6 4
0 1 0 0 0 0
0 0 0 1 1 0
0 0 0 0 1 0
0 0 0 1 1 1
0 0 0 1 0 0
3 7 7 7 7 7 7 7 7 7 7 5
,! 2
" %. " 4 ! 6
w 2W
5 -
V , de nimos (W )
23
24
0 1
(i) = fig, (i) (i) e, para k > 1, k (i) ( k (i)). Estes s~ ao, para k = 1; 2; 3; : : : os lhos, netos, bisnetos, etc. do vertice i. Finalmente de nimos os descendentes de i por k (i), e o fecho transitivo G = (VG ; G ). ( i) = 1 k Exemplo 2: Damos a matriz de adjac^ encia de um grafo, e do respectivo fecho transitivo:
=0
0 0 B= 0 0
2 6 6 6 6 4
1 1 0 0
0 1 0 0
0 0 1 0
1
3 7 7 7 7 5
1 0 ; B= 0 0
2 6 6 6 6 4 1
1 1 0 0
1 1 1 0
1 1 1 1
3 7 7 7 7 5
Dado o grafo G = (V; ) de nimos a func~ ao de paternidade i 2 De nimos tambem seu grafo inverso, G = (V; ).
e G 1 = (N; B 0 ).
(j ) , j 2 (i).
Lema 3.1 Dado um grafo de nido por sua matriz de adjac^ encia, G = (N; B ), seu grafo inverso
Um sub-grafo de G = (V; A) e um grafo G0 = (V 0; A0), onde V 0 V e A0 e um subconjunto de arestas de A que tem ambos os vertices em V 0. O sub-grafo induzido por um subconjunto de vertices V 0 e G = (V 0; A0) onde A0 e maximo, e o sub-grafo induzido por um subconjunto de arestas A0 e G = (V 0; A0) onde V 0 e m nimo. Uma aresta que parte e chega no mesmo vertice e dita um loop. Duas arestas, (i; j ) e (k; h), s~ ao ditas cont guas se a primeira chega no vertice de que parte a segunda, isto e se j = k. Um passeio e uma sequ^ encia n~ ao vazia e nita de arestas cont guas. Um circuito e um passeio que parte e chega no mesmo vertice, isto e, o primeiro vertice da primeira aresta e o segundo vertice da ultima aresta. Uma trilha e um passeio onde n~ ao se repete nenhuma aresta e um caminho e uma trilha na qual n~ ao ha (subsequ^ encias que sejam) circuitos. Uma trilha na qual o unico circuito e toda a trilha e uma ciclo. Notemos que um passeio C = (w ; w ); (w ; w ); : : : (wk ; wk )), e igualmente bem determinado pela sequ^ encia de seus vertices C = (w ; w ; w ; : : :wk ). Ter amos assim, no Exemplo 1, exemplos de:
0 1 1 2 1 0 1 2
loop: ((2; 2)). passeio: ((4; 5); (5; 5); (5; 5); (5; 4); (4; 5). circuito: (5; 5; 4; 6; 5; 5). trilha: (5; 4; 6; 5; 5; 3). caminho: (6; 5; 4; 3).
25
ciclo: (5; 4; 6; 5)ou(5; 5). Um grafo e ac clico se n~ ao contem ciclos. Uma arvore de raiz v e um grafo ac clico, H = (VH ; H ) ; v 2 VH , onde todos os vertices t^ em no maximo um pai e apenas a raiz n~ ao tem pai. Os vertices sem lhos de uma arvore dizem-se folhas da arvore. Uma colec~ ao de arvores e denominada oresta. Uma oresta cobre um grafo G sse e um subgrafo de G que contem todos os seus vertices. Seguem exemplos de orestas que cobrem o grafo do Exemplo 1, estando assinaladas as ra zes.
1 2
" . " 4 6
1 2
2
" % 4 ! 6
(w );
1
Lema 3.2 Dada uma arvore, H = (V; ), de raiz v, e um vertice w 2 V , existe um unico passeio
k (w ); : : :
total, sse a 6 b ) b a. parcial, sse (a b ^ b a) ) a = b. boa, se e parcial e total. Lema 3.3 Dado um grafo, G = (N; ), a func~ ao de descend^ encia, , de ne uma ordem em seus vertices, a ordem natural, , de nida por por j i , j 2 (i). Note, porem, que a ordem natural
Exemplo 3:
26
2 6 6 6 6 4 3 7 7 7 7 5 2 6 6 6 6 4
0 0 0 0
1 0 0 0
0 1 0 0
0 0 1 0
3 7 7 7 7 5
em G : Nem parcial, pois 1 2 1, nem total, pois 1 6 3 6 1. em G : Total, mas n~ ao parcial, pois 1 4 1. em G : Parcial, mas n~ ao total, pois 2 6 3 6 2. em G : Boa.
2 3 4
Uma equival^ encia num conjunto S e uma relac~ ao, , tal que 8a; b; c 2 S : 1. a a. 2. a b ^ b c ) a c. 3. a b ) b a. i.e., uma relac~ ao re exiva, transitiva e simetrica. A classe de equival^ encia de um elemento qualquer, a 2 S , e o sub-conjunto de S : a] = fx 2 S j x ag. Uma partic~ ao de um conjunto S e uma colec~ ao P de sub-conjuntos n~ ao vazios de S tal que: 1. 8X; Y 2 P; X 6= Y ) X \ Y = ;. 2. X 2P X = S . i.e., uma colec~ ao de conjuntos disjuntos que reunidos e igual a S .
uma relac~ ao de equival^ encia. Esta e a equival^ encia induzida pela ordem. Dado S um conjunto munido de uma equival^ encia, o conjunto das classes de equival^ encia em S e uma partic~ ao de S .
As componentes fortemente conexas, CFC, de um grafo G s~ ao as classes de equival^ encia induzida pela ordem natural nos vertices de G. G e dito fortemente conexo sse possui uma unica CFC. Exemplo 4: As CFC dos grafos do Exemplo 3 s~ ao:
27
~ ; ~ ), que tem por vertices as O grafo reduzido, de um grafo G = (V; ), e o grafo G = (V ~ = fV ; V ; : : : Vk g, e a func~ CFCs de G: V ao de liac~ ao, ~ , de nida por
1 2
0 1 0 0 0 0 ; 0 0 0
7 7 5
2 "
0 0 ; 0 0
6 6 6 6 4
0 0 0 0
1 0 0 0
1 0 0 0
0 1 ; 1 0
3 7 7 7 7 5
2 6 6 6 6 4
0 0 0 0
1 0 0 0
0 1 0 0
0 0 : 1 0
3 7 7 7 7 5
Dado um conjunto S e uma ordem em S , a ordem reduzida e a relac~ ao de ordem no ~ conjunto das classes (da equival^ encia induzida pela ordem ), S , de nida por ~ ; X Y , 9x 2 X; ^9y 2 Y j x y : 8X; Y 2 S
Lema 3.5 A ordem reduzida (nas CFCs) de um grafo G = (V; ), e a ordem natural do grafo ~ = (V ~ ; ~ ), i.e., se V ~ = fV ; : : :Vk g, reduzido G
1
Vr Vs , Vs 2 ~ (Vr ) , 9i 2 Vr ; j 2 Vs j j 2 (i) , 9i 2 Vr ; j 2 Vs j j i :
Ademais, 1. A ordem natural de G e parcial sse, a menos de loops, G e ac clico. 2. Grafos reduzidos s~ ao ac clicos e ordens reduzidas s~ ao parciais.
Teorema 3.1 (Ho man) : Um grafo G = (V; ) e fortemente conexo sse dado qualquer subconjunto proprio dos vertices W V , W = 6 V , houver uma aresta de um vertice em W para um
vertice fora de W .
28
Demonstrac~ ao: Se houver W um subconjunto proprio de V tal que (W ) = ;, ent~ ao n~ ao ha caminho de nenhum vertice w 2 W para nenhum vertice v 2 V , e G n~ ao e fortemente conexo. Presupondo a condic~ ao 6 9W 6= V j (W ) = ;, provemos que existe um caminho do vertice w ao vertice v, 8w; v 2 V . Tomemos inicialmente W = fwg. A condic~ ao garante a exist^ encia de um caminho de comprimento (numero de arestas) 1 de w a algum vertice x 6= w. Se x = v a prova esta completa. Caso contrario tomemos W = fw; x g. A condic~ ao garante a exist^ encia de um caminho c de comprimento jc j 2 de w para algum vertice x 6= w; x . Repetindo o argumento ate obtermos xk = v, k < n, conclu mos a demonstrac~ ao, QED. Dado um conjunto S , munido de uma ordem , a ordem de S , uma boa ordem, <=, em S e dita uma ordem coerente (com ) sse:
0 1 1 1 1 2 2 2 1
1. 8a; b 2 S; a b ^ b 6 a ) a <= b : 2. 8a; b; c 2 S; a <= b <= c ^ a c ) a b c : O primeiro criterio de coer^ encia determina que o reordenamento se subordine a ordem parcial do grafo reduzido; O segundo criterio determina que se discriminem (n~ ao se misturem) vertices em CFCs incomparaveis porem distintas. Uma boa ordem, ou reordenamento, no conjunto N = f1; 2; : : : ng, q <= q <= : : : <= qn, corresponde a um vetor de permutac~ ao q = q ; q ; : : : qn] = (1); (2); : : : (n)]. Um reordenamento coerente dos vertices de um grafo G e um reordenamento coerente com a ordem natural do grafo. Um reordenamento coerente num grafo ac clico e tambem dito um (re)ordenamento topologico (dos vertices) deste grafo. Exemplo 6: Listamos a seguir alguns reordenamentos nos grafos do Exemplo 3, indicando se satisfazem aos dois criterios de coer^ encia. No grafo G : q = 4; 1; 2; 3] (1; 2), q = 1; 3; 2; 4] (1), q = 3; 4; 1; 2] (2), q = 1; 3; 4; 2] (). No grafo G : q = 3; 4; 1; 2] (1; 2), q = 1; 3; 2; 4] (1). No grafo G : q = 1; 3; 2; 4] (1; 2), q = 1; 2; 3; 4] (1; 2), e estes s~ ao os unicos reordenamentos coerentes. No grafo G : O unico reordenamento coerente e q = 1; 2; 3; 4]. Para reordenar coerentemente os vertices de um grafo precisamos pois determinar o grafo reduzido, e no grafo reduzido uma ordem topologica. Esta tarefa pode ser levada a cabo com o algoritmo de Tarjan, a ser visto a seguir.
1 2 1 2 1 2 3 4
29
Na busca em profundidade, partindo de v, seguiremos um caminho, sempre por vertices n~ ao visitados, o mais longe poss vel. Ao passar por um vertice, marca-lo-emos como \ja visitado". N~ ao sendo mais poss vel prosseguir de um dado vertice, isto e, quando estivermos num vertice sem lhos n~ ao visitados, retornaremos ao vertice de onde este foi atingido e prosseguimos na busca em profundidade. Quando tivermos voltado ao vertice inicial, v, e ja tivermos visitado todos os seus lhos, teremos terminado a busca em profundidade. Os vertices visitados e as arestas utilizadas para ating -los formam uma arvore de raiz v, que e a arvore da busca. Iniciando novas buscas em profundidade, nas quais consideramos \n~ ao visitados" apenas os vertices que n~ ao pertencem a nenhuma arvore previamente formada, teremos uma oresta que cobre o grafo G, a oresta de busca. Uma maneira de rotularmos (ou reordenarmos) os vertices de G durante a busca em profundidade e pela ordem de visitac~ ao, Ov(), onde Ov(i) = k signi ca que o vertice i foi o k-esimo vertice a ser visitado na formac~ ao da oresta de busca. Uma maneira alternativa de rotular (reordenar) os vertices de uma oresta de busca e a ordem de retorno: Or(), e a ordem em que veri camos ja termos visitado todos os lhos de um vertice e retornamos ao seu pai na arvore (ou terminamos a arvore se se tratar de uma raiz). Estando os vertices de um grafo bem ordenados por algum criterio, por exemplo pelos seus ndices, a oresta de busca em profundidade can^ onica e aquela em que tomamos os vertices, tanto para ra zes de novas arvores quando para visitac~ ao dentro de uma busca, na ordem estabelecida por este criterio. No exemplo 7, a primeira e a oresta can^ onica. Exemplo 7: Um grafo G, e varias das poss veis orestas de busca que o cobrem, est~ ao dadas na gura seguinte. Apresentamos estas orestas com os vertices numerados primeiro pela ordem de visitac~ ao, depois pela ordem de retorno. Indicamos com um circun exo as raizes da busca. 3 ! 6
. # - # 1 ! 4 7 . # 2 5 ! 8
^ 6 ! 7 ^ 1 ! 2 3 ^ 1 ! 7 2 ^ 6 ! 7 ^ 5 ^ 1 4 ^ 2 ! 3
#
8
. #
6 3
. # . #
#
8
4 ! 5
4 ! 5
30 ^ 8 ! 7 ^ 5 ! 4 1
#
6
. #
5 1
. # . #
4
^ 8 ! 7
#
6
^ 8 ! 7 ^ 5 ^ 1 2 ^ 4 ! 3
3 ! 2
3 ! 2
Descrevemos agora o algoritmo de Tarjan para determinac~ ao das componentes fortemente conexas de um grafo G. 1. Considerando a boa ordem dos ndices, construa a oresta de busca can^ onica em G, marcando seus vertices pela ordem de retorno; 2. Considere G com os vertices reordenados, isto e rotulados, na ordem inversa da ordem de retorno estabelecida no passo 1;
1
3. Considerando a boa ordem estabelecida no passo 2, construa a oresta de busca can^ onica em G .
1
cobre os vertices de exatamente uma componente fortemente conexa de G. Mais ainda, a ordem de visitac~ ao (bem como a ordem de retorno), na oresta can^ onica do passo 3 do Algoritmo de Tarjan, e um reordenamento coerente dos vertices de G.
Demonstrac~ ao: Se v; w 2 V est~ ao numa mesma componente de G ent~ ao certamente pertencem a uma mesma arvore em G (bem como em G). Se x e um vertice de G, denotaremos o numero que marca o vertice x, pela ordem de retorno em G, por Or(x). Se w e um vertice de uma arvore de raiz v, em G , ent~ ao:
1 1
2. w descende de v, em G. Para justi car a segunda a rmac~ ao notemos que, por construc~ ao Or(v) > Or(w). Isto signi ca que ou w foi visitado durante a busca em profundidade a partir de v, ou w foi visitado antes de v. A primeira hipotese implica em (2) enquanto a segunda hipotese e imposs vel pois, como por (1) v descende de w, jamais poder amos ter deixado v \n~ ao visitado" apos concluir uma busca em profundidade que visitasse w. Q.E.D. Exemplo 8: A gura seguinte apresenta os passos na determinac~ ao pelo algoritmo de Tarjan, das CFCs do exemplo 7, e nos da um reordenamento coerente de seus vertices. A oresta de BEP em G esta
31
rotulada pela ordem de retorno, e a oresta em G pela ordem de visitac~ ao. O reordenamento coerente dos vertices do grafo original obtido neste exemplo e q = 3; 6; 7 j 1 j 4; 5; 8 j 2].
3 ! 6
^ 8 ! 7 ^ 5 ! 4 1 ^ 4 ^ 8
#
6
. #
^ 5 7
3 ! 2 ^ 1 3
Teorema 3.3 (Berge) : Dado um grafo simetrico, G = (V; E ) e nele um m-casamento, M = ffu ; u g; fu ; u g; : : : fu m; u mgg, este casamento e maximo se n~ ao houver caminho de aumento.
1 2 3 4 2 2
M 0 = M C = M ffw ; w g; fw ; w g; : : : fw k ; w k gg +ffw ; w g; fw ; w g; : : : fw k ; w k gg
1 2 3 4 2 1 2 0 1 2 3 2 2 +1
32
e um m + 1-casamento. Se, por outro lado, M n~ ao e maximo, seja M 'um m+1-casamento e considere o grafo auxiliar 0 H de lados EH = M M , sendo VH = VG . Cada vertice de H e isolado, ou pertence a algum lado de EH e no maximo a dois lados, um de M e outro de M 0. Cada componente de H e pois, ou um vertice isolado, ou um ciclo de lados alternadamente em M e M 0, ou um caminho de lados alternadamente em cada um dos casamentos. Como H tem mais lados de M 'que de M , ha ao menos uma componente de tipo caminho que comeca e termina com lados de M 0. Este caminho e M -alternado e seus vertices extremos s~ ao,por construc~ ao, solteiros em M . Temos assim um caminho de aumento para M . Q.E.D. Exemplo 9: Apresentamos agora: Na primeira linha: M : um m-casamento num grafo, C : um caminho de aumento, e M 0: o m + 1-casamento M 0 = M C . Na segunda linha: M : um m-casamento, M 0: um m + 1-casamento, e H : o grafo H = M 0 M . 1 4 . . . 7 1 4 . . . 7
2 5 . . . 8 2 5 . . . 8
3 . . . 6 9 3 . . . 6 9
1 4 . . . 7 1 . . . 4 . . . 7
2 5 8 2 . . . 5 . . . 8
3 6 9 3 6 . . . 9
1 . . . 4 7 1 4 7
2 . . . 5 . . . 8 2 5 8
3 . . . 6 . . . 9 3 . . . 6 9
Um grafo G = (V; ) e bipartido se houver uma bipartic~ ao de seus vertices tal que todos os lados tenham um vertice em cada pedaco da bipartic~ ao, i.e. se for poss vel encontrar conjuntos X; Y j V = X Y ^ X \ Y = ; ^ 8e 2 E; e = fx; yg x 2 X; y 2 Y .
Teorema 3.4 (Hall) : Dado G = (V; ) um grafo simetrico e bipartido, com bipartic~ ao V =
X Y , existe em G um casamento que casa todos os vertices de X sse vale a condic~ ao de Hall: 8S X; # (S ) #S . isto e, qualquer subconjunto de X tem, coletivamente, ao menos tantos
lhos quanto elementos.
Demonstrac~ ao Se existe um casamento M que casa todos os vertices em X , ent~ ao os lados do casamento garantem ao menos a igualdade na condic~ ao de Hall. Por outro lado, se houver um casamento maximo, M , que deixe algum x 2 X solteiro, exibiremos um S X que viola a condic~ ao de Hall.
33
Seja Z o conjunto dos vertices conexos a x por caminhos M-alternados. Pelo teorema de Berge sabemos que n~ ao ha solteiro em Z , pois caso contrario ter amos um caminho de aumento e M n~ ao seria maximo. Assim, um caminho M-alternado maximal, isto e, que n~ ao pode ser continuado, que comeca no solteiro x 2 S X , deve necessariamente terminar, com um numero par de lados, num casado x0 2 S X . Considerando, pois, S = (Z \ X ) + x e T = Z \ Y , temos que #S = #T + 1 e (S ) = T , donde # (S ) = #T = #S 1 < #S , mostrando que S viola a condic~ ao de Hall. Q.E.D.
34
Na Heur stica do M nimo Simples, HMS, dado um m-casamento imperfeito, procuraremos obter um m+1-casamento adicionando ao casamento um lado que una vertices ainda solteiros. Escolhemos este lado, de modo a casar um vertice de m nimo peso, entre os ainda solteiros, com um de m nimo peso dentre seus pretendentes. Sempre que houver um vertice isolado, i.e. sem pretendentes ou de peso zero, procuraremos casa-lo pelo algoritmo Hungaro. Na Heur stica do M nimo Par, HMP, escolhemos um lado a ser acrescentado ao casamento onde um dos vertices e de peso m nimo, e o outro tenha peso m nimo dentre todos os pretendentes a vertices de peso m nimo. Como a HMP pode ser bem mais custosa podemos, por exemplo, utilizar a HMS enquanto o peso m nimo dos vertices ainda solteiros for grande, i.e. acima de um dado limite, e a HMP caso contrario. Exemplo 11: O exemplo seguinte ilustra aaplicac~ ao do algoritmo hungaro com a heur stica min-min. No exemplo indicamos o peso, ou numero de pretendentes, de cada vertice. Indicamos ainda, a cada passo, o vertice de n nimo peso a ser casado, bem como, em italico, seu pretendente de m nimo peso. 3 y 3 3 y
2 2 3 y
2 2 2 y
2 2 2 y
x 2
-
@ @ @ A A A @ A@ A A@ @ A @ A A @ @A @A A @ @A @A A @ @ @ @ A A A
1
x 2 1
2
-
x 4 4 3
x 3 3 3
A arvore M-alternada com raiz em x , que cou isolado, nos fornece o caminho de aumento
2
c= x
35 y
1
2 y
1 2
5
x -
A @ A @ @ A A@ @ A@ A A @ @ A @ A A @ @A @A A @ @A @A A @ A @ @ A
1
x -
x -
2
-
x 2
36
k A1
0 . . .
...
:::
k Ak+1 k+1 k Ak+1 n
k An
1
0 . . . 0
. . .
: : : k An k :::
. . .
k An n
7 7 7 7 7 7 +1 7 7 7 5
seja k B , (n k ) (n k ), a matriz Booleana associada a submatriz das n k ultimas linhas e colunas de k A, i.e. k B = B (Ak+1:n); ou k B q = 1 , k Ak+q 6= 0 ; p k+1:n k +p
37
38
e seja
onde o operador complemento aplicado a matriz B , B , troca 0's por 1's e vice-versa. +j k j A escolha do piv^ o k Ak oes. k+i 6= 0 implica no prenchimento de exatamente Gi posic~
Demonstrac~ ao: ~ a matriz obtida de k A por permutac~ Seja k A ao da k + 1-esima linha e coluna com, respectivamente, a k + i-esima linha e a k + j -esima coluna. Os novos elementos de k A ser~ ao, para p; q = 2 : : : (n k),
+1
k+1 Ak+q = k +p +q ~k = kA k +p +q ~k = kA k +p +s = k Ak k +r
onde
r = p se p 6= i; e r = 1 se p = i ; e s = q se q 6= j; e s = 1 se q = j :
+1
^ k Brj = 1 ^ k Bis = 1
n k X kBs kBj kBs r r i
Observac~ ao 4.1 Uma aproximac~ ao para a matriz k G e a matriz de Markowitz: k F j = ( k B 1 k B )j ; i i onde denotamos por 1 a matriz quadrada de 1's. A aproximac~ ao F e exatamente o numero de
multiplidores n~ ao nulos vezes o numero de elementos n~ ao nulos, fora o piv^ o, na linha piv^ o. Esta k aproximac~ ao e bastante boa se B e muito esparsa.
39
Exemplo 1: Dada a matriz A, cujos elementos n~ ao nulos est~ ao indicados na matriz boleana associada B ( A), indique uma escolha de piv^ os que minimize preeenchimentos locais. Assuma que ao longo do processo de triangularizac~ ao n~ ao ha cancelamentos, i.e., que um elemento n~ ao nulo uma vez preenchido, n~ ao volta a se anular. Tomando 0 3 1 5 3 1 1 1 0 0 0 1 0 3 2 0 1 1 0 0 B = B ( A) = B = 0 1 0 1 0 ; G = 2 3 3 1 2 3 6 5 1 1 0 0 0 1 1 1 6 3 6 3 1 1 1 0 1
0 2 6 6 6 6 6 6 6 4 3 7 7 7 7 7 7 7 5 2 6 6 6 6 6 6 6 4 3 7 7 7 7 7 7 7 5 0 0 0 0
Assim, arg min i;j j 1B Gj i = f(1; 2)g. Escolhendo (i; j ) = (1; 2), i.e. A como piv^ o, temos o preenchimento de G = 0 posic~ oes em A, 1 1 1 0 0 1 1 2 0 1 1 0 0 B = B( A + M ) = 0 0 1 1 0 ; G = 2 1 1 1 2 1 0 0 0 1 1 1 1 1 0 1 Assim, arg min i;j j 2B Gj i = f(1; 1); (1; 2); (2; 2); (2; 3); (3; 1); (3; 3)g. Escolhendo (i; j ) = (1; 1), i.e. A como piv^ o, temos o preenchimento de G = 1 posic~ oes em A, 1 1 1 0 0 0 1 1 0 0 1 1 B = B( A + M ) = 0 0 1 1 0 ; B = 1 1 0 0 0 1 1 1 1 1 1 1
( )
j =1 i
Assim, arg min i;j j 0B Gj i = f(1; 1); (2; 3)g. oes em o, temos o preenchimento de G = 0 posic~ Escolhendo (i; j ) = (1; 1), i.e. A como piv^ A, 1 1 1 0 0 1 0 3 2 0 1 1 0 0 2 1 2 B = B( A + M ) = 0 1 0 1 0 ; G = 2 4 3 1 1 0 0 0 1 1 3 1 4 2 1 1 1 0 1
( )
j =1 i
1 1
1 1
2 6 6 6 6 6 6 6 4
3 7 7 7 7 7 7 7 5
2 6 6 6 6 4
3 7 7 7 7 5
3 2
2 1
2 6 6 6 6 6 6 6 4
3 7 7 7 7 7 7 7 5
2 6 6 4
3 7 7 5
j =1 i
3 3
1 1
2 6 6 6 6 6 6 6 4
3 7 7 7 7 7 7 7 5
"
Como B = 1, e obvio que n~ ao havera mais preenchimento, quaisquer que que sejam os piv^ os ao doravante selecionados. Tomando, por exemplo, o piv^ o A , temos nalmente temos a fatorac~
3 3 4 5
40 ~ = PAQ = LU , com A
2 6 6 6 6 6 6 6 4 3 7 7 7 7 7 7 7 5
1 1 1 0 0 1 1 1 0 0 0 1 1 0 0 0 1 1 0 0 ~ B (A) = 0 0 1 1 0 ; B (M + U ) = 0 0 1 1 0 1 1 1 1 1 1 1 1 0 1 0 0 0 1 1 0 0 0 1 1 sendo os vetores de indices permutados p = 1; 2; 3; 5; 4] e q = 1; 3; 2; 4; 5]. Neste processo de triangulazirac~ ao, tivemos assim o preenchimento de apenas 1 posic~ ao, em A . //
4 4 3 4 5
preenchimento local, desprezando assim completamente os apectos de estabilidade numerica, podemos \vetar" escolhas de piv^ os muito pequenos, i.e., que impliquem no uso de multiplicadores muito j grandes, jMi j multmax 1. Se nosso sistema for bem equilibrado, podemos usar como criterio de veto o tamanho do proprio piv^ o, jUiij pivomin 1.
Observac~ ao 4.2 Para n~ ao fazer a selec~ ao de piv^ os apenas pelos criterios para minimizac~ ao de
41
2. Compute h = arg mini pr(i) e = pr(h). 3. Compute a -altura de cada coluna, (j ), o numero de ENNs na coluna j em linhas de peso . 4. Compute t = arg maxj (j ).
(a) Se = 1, seja h 2 fi j pr(i) = 1 ^ A(i; t) 6= 0g; posicione t como a primeira coluna de A, h como a primeira linha, e aplique P3 recursivamente a A(2:m,2:n). A coluna exclu da torna-se a ultima coluna de B . (b) Se > 1, posicione a coluna t como a ultima coluna de A, e aplique P3 recursivamente a A(:,1:n-1). A coluna exclu da torna-se a primeira coluna de S . (c) Se = 0, posicione h como a primeira linha, reposicione a primeira coluna de S (ultima a ser exclu da de A) como a ultima coluna de B , e aplique P3 recursivamente a A(2:m,:). Em P3, o caso = 1 corresponde ao posicionamento de uma coluna triangular em B .
> 1 corresponde a impossibilidade de posicionar uma coluna triangular. Assim (temporariamente) eliminamos uma coluna de A e prosseguimos com P3. O criterio de selec~ ao para a coluna a eliminar visa produzir o caso = 1 nos proximos passos de P3. Em caso de empate na -altura, poder amos usar como desempate a ( + 1)-altura.
= 0 corresponde a n~ ao haver em A uma coluna que pudessemos posicionar em B de modo a continuar formando B n~ ao singular. Ent~ ao reintroduzimos, como proxima coluna de B , a primeira coluna em S . Escolhemos a primeira em S visando minimizar a altura do espinho acima da diagonal. Existe o perigo de que este espinho n~ ao venha a prover um piv^ o n~ ao nulo, ou que apos cancelamentos, o piv^ o seja muito pequeno para garantir a estabilidade numerica da fatorac~ ao. Se A e esparsa e tivermos apenas alguns espinhos, a melhor soluc~ ao e intercalar a fatorac~ ao numerica e simbolica, o que nos da a chance de rejeitar piv^ os instaveis. Metodos para lidar com piv^ os inaceitaveis na fase de fatorac~ ao numerica, apos termos completado uma fase independente de fatorac~ ao simbolica, s~ ao discutidos posteriormente. Exemplo Apliquemos o P3 a matriz booleana A. A medida que o P3 prossegue representaremos a matriz particionada B; A; S , cujos ENNs ser~ ao denotados respectivamente b, a e s. Os ndices de linha e coluna est~ ao a esquerda e acima da matriz. Os pesos, , e as -alturas, , a direita e abaixo da matriz. Os piv^ os, ou espinhos, escolhidos a cada passo est~ ao em negrito.
h i
42
pnq 1 2 3 4 5 1 a a a a 2 a a 3 a a a a a 4 a a a 5 1 1 1 1 0 1 3 1 3 : 2 4 2 4 :
2 3 4
4 2 2 3 ; 3
pnq 1 3 4 5 2 1 a a a s 2 a s 3 a a a a s 4 a a s 5 1 0 0 0 :
1
3 1 2 2 2
pnq 1 3 4 5 2 2 b s s 1 b a a 3 a a a a s 4 5 a a s : 2 4 2 :
2
: 2 2 ; 2 2
pnq 1 3 5 4 2 b s 1 b a 3 a s a s 4 5 a s : 2 2 :
1
2 s : s 1 1 s 1 s 1 :
pnq 1 3 5 4 2 b 1 b b s b s 3 4 a s a s 5
2 s : s : 0 ; s 1 s 1
pnq 1 3 4 5 2 2 b s 1 b b b s b b 3 4 b a s b a s 5 : : : 2 :
1
: : : 1 1
pnq 1 3 4 5 2 2 b b 1 b b b b 3 b b + b b b 4 5 b b b
Na permutac~ ao nal obtida pela P3, dada pelos vetores de permutac~ ao p e q, indicamos com um + as posicc~ oes a serem preenchidas no processo de eliminac~ ao. Uma notac~ ao mais compacta para o mesmo exemplo seria:
43 4
1 2 p nq 1 5 2 3 2 x x x x 1 x x x x 3 4 x x x x 5 1 1 1 1 1 3 1 3 : : 1 4
2 3 2
4 2 2 x 3 x 3 0 : 1
3 1 2 2 2
2 : 2 2 2
1 : 1 1 1
: : 0 1 1
: : : 1 1
No exemplo seguinte reintroduzimos um espinho com 0 na posic~ ao piv^ o. Todavia, no processo de eliminac~ ao, esta posic~ ao sera preenchida antes da sua utilizac~ ao como piv^ o.
s p nq 1 2 3 5 4 6
2 3 2 3
1 1 6 x x x x x x x 1 1 : :
2 x x 3 x x 3 x x x 4 0 x x 4 x x x x 4 1 0 0 0 0 3 : : : : : 2 0 2 2 : 4 : 3 3
2 4 5 3 2
1 2 2 4 3 3
: 2 2 3 2 3
: 1 1 2 2 2
: : 1 2 1 2
: : : 1 0 1
: : : : : 0
pnq 1 2 3 5 4 6
1 6 5 3 4 2 x x x x x x x x x x x x x x x x + x x x x
Observac~ ao 4.3 Da maneira como descrevemos o P3, poder amos aplica-lo tambem a uma matriz
retangular. No caso de Programac~ ao linear e comum ordenarmos pelo P3 todas as colunas da matriz de restric~ oes, A, e depois tomarmos, a cada reinvers~ ao, as colunas na base, B , conforme a ordem estabelecida por P3 em A Orchard-Hays68].
44
Exerc cios
1. Implemente a fatorac~ ao LU usando a heur stica de Markowitz. Antes de aceitar um piv^ o, assegure-se que este tem modulo maior que pivmin = 10 , substituindo-o caso contrario. Use a representac~ ao estatica por colunas e de rede da matriz.
4
2. Implemente o P3 para ordenar as colunas de uma matriz retangular, conforme a observac~ ao 6.3. Use a representac~ ao estatica por coluna da matriz. 3. Considere a possibilidade de termos um espinho problematico que, apos o processo de eliminac~ ao das colunas precedentes, apresente um 0 na posic~ ao piv^ o. Mostre que necessariamente existe um espinho, a direita do problematico, cujo elemento na mesma linha do piv^ o do espinho problematico, neste estagio da fatorac~ ao da matriz, e diferente de zero. Descreva um procedimento para lidar com estes casos excepcionais atraves da permutac~ ao de colunas espinhos. Discuta a viabilidade de resolver o problema atraves de permutac~ ao de linhas.
kvk
2
permanece inalterada por uma transformac~ ao ortogonal, pois kQvk = (Qv)0(Qv) = v0Q0Qv = v0Iv = v0v = kvk :
2
i=1
(vi) = v0v
2
5.2 Fatorac~ ao QR
Dada uma matriz real A m n, m n, podemos existe uma matriz ortogonal Q tal que A = ao e dita uma Q R 0 , onde R e uma matriz quadrada e triangular superior. Esta decomposic~ fatorac~ ao QR, ou fatorac~ ao ortogonal, da matriz A. Descrevemos a seguir um metodo para fatorac~ ao ortogonal. A rotac~ ao de um vetor x angulo e dada pela transformac~ ao linear x 2 < por um ^ ) sin( ) x : rot( )x = cos( sin( ) cos( ) x
" # " # 1 2 2 " #" # 1 2
45
46
"
rot(
)0rot(
0 : = 1 0 1
"
Alem disso podemos tomar o ^ angulo = arctan(x =x ) de modo que a rotac~ ao correspondente anule a segunda componente do vetor rodado (se x = 0, tome = =2). Como o produto de transformac~ oes ortogonais continua ortogonal (prove), podemos usar uma sequ^ encia de rotac~ oes para levar a matriz A a forma triangular superior, como veremos a seguir. A rotac~ ao de Givens e um operador linear cuja matriz coincide com a identidade, exceto num par de linhas onde imergimos uma matriz de rotac~ ao bidimencional:
1 2 6 6 6 6 6 6 6 6 6 6 6 6 6 6 4
...
G(i; j; ) =
cos( ) sin( )
...
7 7 7 7 7 7 7 7 7 7 7 7 7 7 5
Dizemos que a aplicac~ ao deste operador numa matriz A, GA, roda as linhas i e j de A de um angulo . ^ Abaixo ilustramos uma sequ^ encia de rotac~ oes de linhas que leva uma matriz 5 3 a forma triangular superior. Cada par de ndices, (i; j ), indica que rodamos estas linhas do ^ angulo apropriado para zerar a posic~ ao na linha i, coluna j . Supomos que, inicialmente, a matriz e densa, i.e. todos os seus elementos s~ ao diferentes de zero, e ilustramos o padr~ ao de esparsidade da matriz nos estagios assinalados com um asterisco na sequ^ encia de rotac~ oes. (1; 5) (1; 4)(1; 3)(1; 2) (2; 5)(2; 4)(2; 3) (3; 5)(3; 4)
2 6 6 6 6 6 6 6 4
x x x x 0
x x x x x
x x x x x
3 7 7 7 7 7 7 7 5
2 6 6 6 6 6 6 6 4
x 0 0 0 0
x x x x x
x x x x x
3 7 7 7 7 7 7 7 5
2 6 6 6 6 6 6 6 4
x 0 0 0 0
x x 0 0 0
x x x x x
3 7 7 7 7 7 7 7 5
2 6 6 6 6 6 6 6 4
x 0 0 0 0
x x 0 0 0
x x x 0 0
3 7 7 7 7 7 7 7 5
Tomando Q como a produtoria das rotac~ oes de Givens, temos a fatorac~ ao A = QR, como procurada.
47
< x j y > x0 y =
i=1
xi y i :
Com esta de nic~ ao, o produto escalar e um operador que satisfaz as propriedades fundamentais de produto interno, a saber: 1. < x j y >=< y j x >, simetria. 2. < x + y j z >= < x j z > + < y j z >, linearidade. 3. < x j x > 0 , n~ ao negatividade. 4. < x j x >= 0 , x = 0 , de nitividade. Atraves do produto interno, de nimos a norma:
e de nimos tambem o ^ angulo entre dois vetores n~ ao nulos: (x; y) arccos(< x j y > =kxkkyk):
5.4 Projetores
Consideremos o subespaco linear gerado pelas colunas de uma matriz A, m n, m n:
De nimos a projec~ ao de um vetor b 2 <m no espaco das colunas de A, pelas relac~ oes:
y = PC A b , y 2 C (A) ^ (b y) ? C (A)
( )
48 ou, equivalentemente,
y = PC A b , 9x j y = Ax ^ A0(b y) = 0:
( )
No que se segue suporemos que A tem posto pleno, i.e. que suas colunas s~ ao linearmente independentes. Provemos que o projetor de b em C (A) e dado pela aplicac~ ao linear
PA = A(A0A) A0:
1
Se y = A((A0A) A0b), ent~ ao obviamente y 2 C (A). Por outro lado, A0(b A(A0A) A0)b = (A0 IA0)b = 0.
1 1
y ) = A0 ( I
Dizemos tambem que y = Ax e a melhor aproximac~ ao, no sentido dos quadrados m nimos de b em C (A). Como a multiplicac~ ao por uma matriz ortogonal deixa inalterada a norma quadratica de um vetor, podemos procurar a soluc~ ao deste sistema (no sentido dos quadrados m nimos) minimizando a transformac~ ao ortogonal do res duo usada na fatorac~ ao QR de A,
c k = kRx ck + k0x dk : x b)k = k R d 0 Da ultima express~ ao v^ e-se que a soluc~ ao, a aproximac~ ao e o res duo do problema original s~ ao dados, respectivamente, por 0 : x = R c ; y = Ax e z = Q d Como ja hav amos observado, as m n ultimas colunas de Q formam uma base ortonormal de N (A0), logo z ? C (A), de modo que conclu mos que y = PA b!
kQ0(Ax
"
"
"
49
ry f = y0W + c0 ; e ry gi = Ni0 :
As condic~ oes de otimalidade de primeira ordem (condic~ oes de Lagrange) estabelecem que as restric~ oes sejam obedecidas, e que o gradiente da func~ ao sendo minimizada seja uma combinac~ ao linear dos gradientes das restric~ oes. Assim a soluc~ ao pode ser obtida em func~ ao do multiplicador de Lagrange, i.e. do vetor l de coe cientes desta combinac~ ao linear, como
N 0y = d ^ y0W + c0 = l0N 0 ; y = d : N0 0 c l W N Este sistema de equac~ oes e conhecido como o sistema normal. O sistema normal tem por matriz de coe cientes uma matriz simetrica. Se a forma quadratica W for positiva de nida, i.e.se 8x x0Wx 0 ^ x0Wx = 0 , x = 0, e as restric~ oes N forem lineramente independentes, a matriz de coe cientes do sistema normal sera tambem positiva de nida. Estudaremos a seguir como adaptar a fatorac~ ao de Gauss a matrizes simetricas e positivas de nidas.
" #" # " #
ou em forma matricial,
50
Exerc cios
1. Use as propriedades fundamentais do produto interno para provar: (a) A desigualdade de Cauchy-Scwartz: j < x j y > j kxkkyk. Sugest~ ao: Calcule kx yk para =< x j y > =kyk. (b) A Desigualdade Triangular: kx + yk kxk + kyk. (c) Em que caso temos igualdade na desigualdade de Cauchy-Schwartz? Relacione sua resposta com a de nic~ ao de ^ angulo entre vetores.
2 2
2. Use a de nic~ ao do produto interno em <n para provar a Lei do Paralelogramo: kx + yk + kx yk = 2kxk + 2kyk .
2 2 2 2
(a) R = (I P ) e idenpotente. (b) <n = C (P ) + C (R). (c) Todos os autovalores de P s~ ao 0 ou +1. Sugest~ ao: Mostre que se 0 e uma ra z do polin^ omio caracter stico de P , 'P ( ) det(P I ), ent~ ao (1 ) = 1 e ra z de 'R( ). 4. Prove que 8P idempotente e simetrico, P = PC P . Sugest~ ao: Mostre que P 0(I P ) = 0.
( )
5. Prove que o operador de projec~ ao num dado sub-espaco vetorial V , PV , e unico e simetrico. 6. Prove o teorema de Pitagoras: 8b 2 <m; u 2 V temos que kb uk = kb PV bk + kPV b uk .
2 2 2
7. Formule o problema de quadrados m nimos como um problema de programac~ ao quadratica. (a) Assuma dada uma base N de N (A0). (b) Calcule diretamente o res duo, z = b y, em func~ ao de A. 8. O traco de uma matriz A e de nido por tr(A)
P
i i Ai .
Mostre que
(a) Se A, m n, tem posto pleno (A) = n, ent~ ao tr(PA ) = n. (b) Nas condic~ oes do item anterior, de nindo RA = (I PA ), temos que tr(RA) = m n. 9. Metodo de Hauseholder: A re ex~ ao de nida por um vetor unitario u j u0u = 1, e a transformac~ ao linear H = I 2uu0. (a) Interprete geometricamente a opereac~ ao de re ex~ ao. (b) Prove que H = H 0, H 0 = H , e H = I .
1 2
51
2 6 6 6 6 6 4 3 7 7 7 7 7 5
; u = v=kvk e H = I 2uu0 :
Mostre que (Hx) = kxk, e que todas as demais componentes de Hx se anulam. (d) Discuta como poderiamos usar uma serie de re ex~ oes para obter a fatorac~ ao QR de uma matriz.
52
Assim como no cap tulo 4 a linguagem de teoria de grafos foi util para descrever o processo de eliminac~ ao simetrica, usaremos agora grafos simetricos para estudar a eliminac~ ao simetrica. O primeiro destes conceito a ser de nido e o de grafos de eliminac~ ao, que nada mais s~ ao que k os grafos que tem por matriz de adjac^ encia as submatrizes A do processo de fatorac~ ao (veja cap tulo 2): Dado um grafo simetrico G = (N; E ), N = f1; 2; : : : ng, e uma ordem de eliminac~ ao q = (1); : : : (n)], onde e uma permutac~ ao de 1; 2; : : : n], de nimos o processo de eliminac~ ao dos vertices de G na ordem q como a sequ^ encia de grafos de eliminac~ ao Gi = (Ni; Ei) onde, para 53
54
Ni = fq(i); q(i + 1); : : : q(n)g; E = E; e, para i > 1 ; fa; bg 2 Ei , fa; bg 2 Ei ou fq(i 1); ag; fq(i 1); bg 2 Ei De nimos tambem o inverso ordem de eliminac~ ao, q(i) = k , q(k) = i, signi cando que i foi o k-esimo vertice de G a ser eliminado. O grafo preenchido e o grafo P = (N; F ), onde F = n Ei. Os lados originais e os lados preenchidos em F s~ ao, respectivamente, os lados em E e em F E .
1 1 1
i = 1 : : : n,
Exemplo 2: Os grafos de eliminac~ ao e o grafo preenchido correspondentes a segunda ordem de eliminac~ ao do exemplo 1, q = 1; 3; 6; 2; 4; 5], s~ ao:
1 j
2 5
n 6 j
4
3 = j n 2 6 j
5
2 5
6 j
4
2 j n
5
1 4 5
2 5
j n 6 j j =
Lema 6.1 (Parter) Se f = fi; j g 2 F , ent~ ao ou f e um lado original, i.e. F 2 E , ou f foi preenchido quando da eliminac~ ao de um vertice k j q (k ) < minfq(i); q(j )g. Lema 6.2 (do caminho) Considere a eliminac~ ao dos vertices de G = (N; E ) na ordem q . Temos que fi; j g 2 F sse existe um caminho de i a j em G, passando apenas por vertices eliminados antes de i ou j , i.e., 9C = (i; v ; v ; : : :vp ; j ), em G, com q (1) : : : q(p) < minfq(i); q(j )g.
1 2
Demonstrac~ ao: (: trivial. ): por aplicac~ ao recursiva do lema de Parter. Dada a matriz A, G = (N; E ) = (N; B (A)), a ordem de eliminac~ ao q, e o respectivo grafo preenchido, consideremos o conjunto de ndices de linha de ENNs na coluna j do fator de Cholesky, Lj j QAQ0 = LL0: enn(Lj ) = fi j i > j ^ fq(i); q(j )g 2 F g + fj g :
55
(
Para n~ ao sobrecarregar a notac~ ao usaremos h() = H ( ) e g() = H ( ). Assim h(j ), o pai de j em H , e simplesmente o primeiro ENN (n~ ao diagonal) na coluna j de L. Exemplo 3: As as arvores de eliminac~ ao correspondentes ao exemplo 1 s~ ao:
1
6 ! 5 & 4 ! 3 ! 2 ! 1 ;
6 ! 5 ! 4 1 2
% 2 # ; 6 ! 5 ! 3 : 3 & 4 ! 1
Teorema 6.1 (da arvore de eliminac~ ao) Dado i > j , i 2 enn(Lj ) ) j 2 g(i) ;
i.e., qualquer ndice de linha abaixo da diagonal na coluna j de L e um ascendente de de j na arvore de eliminac~ ao.
j . . . ... x ::: k
...
l . . . ... x ::: i
...
n
+1
Se i = h(j ) o resultado e trivial. Caso contrario (vide gura 1) seja k = h(j ). Mas Lj i 6= j k 0 ^ Lk 6= 0 ) Li 6= 0, pois fq(j ); q(i)g; fq(j ); q(k)g 2 Gj ) fq(k); q(i)g 2 Gj . Agora, ou i = h(k), ou aplicamos o argumento recursivamente, reconstruindo o ramo de H , (i; l; : : :k; j ), i > l > : : : > k > j . QED. Pela demonstrac~ ao do teorema vemos que a arvore de eliminac~ ao retrata as depend^ encias entre as colunas para o processo de fatorac~ ao numerica da matriz. Mais exatamente, podemos eliminar
56
a coluna j de A (i.e. calcular todos os multiplicadores na coluna j , denotados por M j no cap tulo 2, e atualizar os elementos afetados por estes multiplicadores) sse ja tivermos eliminado todos os descendentes de j na arvore de eliminac~ ao. Se pudermos realizar processamento paralelo (veja cap tulo 8), podemos eliminar simultaneamente todas as colunas em um mesmo n vel da arvore de eliminac~ ao, comecando pelas folhas, e terminando por eliminar a raiz. Exemplo 4: Consideremos a eliminac~ ao de uma matriz com o mesmo padr~ ao de esparsidade da ultima permutac~ ao do exemplo 1. Sua arvore de eliminac~ ao e a ultima apresentada no exemplo 3. Esta arvore tem 3 n veis que, das folhas para a raiz s~ ao: f1; 3; 2g, f4; 5g, e f6g. Assim, podemos fatorar uma matriz com este padr~ ao de esparsidade em apenas 3 etapas, como ilustrado no exemplo numerico seguinte: 1 7 1 7 1 7 2 8 2 8 2 8 3 6 9 3 6 9 3 6 9 7 4 2 7 4 2 7 53 2 4 2 5 5 4 2 5 5 8 6 49 23 1 3 2 1 6 3 2 5 12 9 2 23 39
2 6 6 6 6 6 6 6 6 6 6 4 32 76 76 76 76 76 76 76 76 76 76 54 32 76 76 76 76 76 76 76 76 76 76 54 3 7 7 7 7 7 7 7 7 7 7 5
O proximo teorema mostra uma forma computacionalmente mais e ciente de obter o grafo preenchido, P = (N; F ), e a arvore de eliminac~ ao, H , dado o padr~ ao de esparsidade da matriz original, G = (N; E ), e a ordem de eliminac~ ao, q. Nesta vers~ ao simpli cada dos grafos de eliminac~ ao, Gj , ao eliminarmos o vertice q(j ), preenchemos apenas os lados incidentes ao seu vizinho mais proximo de ser eliminado.
Teorema 6.2 (da fatorac~ ao simbolica) De nimos agora a vers~ ao simpli cada do processo de
eliminac~ ao:
Gj E h (j ) Ej
1 +1
(Nj ; Ej ); E; minfi > j j fq(j ); q(i)g 2 Ej g ffa; bg 2 Ej j q(a); q(b) > j g ffq(h(j )); vg; v j q(v) j ^ fq(j ); vg 2 Ej g F = n Ej = = = =
1
A rmamos que o grafo preenchido e a arvore de eliminac~ ao obtidos no processo simpli cado coincidem com a de nic~ ao anterior, i.e., F = F e h = h.
Exemplo 5: Os grafos de eliminac~ ao simpli cados e o grafo preenchido referentes a segunda ordem de eliminac~ ao no exemplo 1, q = 1; 3; 6; 2; 4; 5], s~ ao:
57 1
4 5
1 j
2 5
3 6 2 = j n 2 n = j j n 6 j 6 j 2
4
4 2 j
5
3 4
j n 6 j j =
Lema 6.3
enn(Lj ) =
Demonstrac~ ao: :
k k2g(j ) enn(L )
enn(Aj ) J + fj g ; J = f1; 2; : : : j g :
...
k x . . . ... j x ::: j
... ...
n Consideremos k 2 g(j ) (vide gura 2). Se i > j 2 enn(Lk ), ent~ ao se Lj ao e um ENN, sera i ja n~ k preenchido ao eliminarmos L . : 1 ... l . . . ... x : : : h(l) . . j . ... x : : : h (l ) ... j . . . . . . . 7! . . 7! . . . ... n
2
58
Seja l < j j j 2 enn(Ll), i.e., consideremos uma coluna e cuja eliminac~ ao poderia causar preenchimentos na coluna j (vide gura 3). Pelo teorema da arvore de eliminac~ ao, j e um ascendente de p l, i.e., 9p n j j = h (l). Mas pela primeira parte da prova,
+1
( )
de modo que qualquer vertice que poderia causar, durante a eliminac~ ao da coluna l, uma preenchip mento na coluna j , deve necessariamente aparecer em h (l) 2 g(j ). QED.
Teorema 6.3 (da caracterizac~ ao de grafos cordais) Dado G = (N; E ), as tr^ es propriedades
seguintes s~ ao equivalentes: 2. G e cordal. 3. Se S e um separador minimal entre a; b 2 N , ent~ ao S e um clique. 1. Existe em G uma ordem de eliminac~ ao perfeita.
Demonstrac~ ao: 1 ) 2:
59
1
Seja q = (1); (2); : : : (n)] uma ordem de eliminac~ ao perfeita em G, e seja C = (v ; v ; : : :vp; v ) um ciclo em G. Consideremos vk o primeiro vertice de C a ser eliminado, k = arg min i p fq(vi)g. Como q e uma ordem de eliminac~ ao perfeita, a corda fvk ; vk g 2 E . 2 ) 3: Seja S um separador minimal entre A e B , a 2 A, b 2 B , v; w 2 S . Como S e minimal, existe um caminho C = (a; c ; : : :cp; v) j c ; : : :cp 2 A, pois, caso contrario, S v continuaria separando a de b. Analogamente existe um caminho D conectando a a w, com os vertices intermediarios todos em A. Existe pois um caminho de v a w, cujos vertices intermediarios est~ ao todos em A. Seja P um tal caminho de comprimento m nimo, P = (v; a ; : : :ap; w). Analogamente seja Q = (w; b ; : : :bq ; v) um caminho de w a v atraves de B com comprimento m nimo. Concatenando P e Q obtemos um ciclo R = (v; a ; : : : ap; w; b ; : : :bq ; v). Como G e cordal, R contem ao menos uma corda, fx; yg. Como S e um separador, n~ ao podemos ter x 2 A e y 2 B . Como P tem comprimento m nimo, n~ ao podemos ter x; y 2 P e, analogamente n~ ao podemos ter x; y 2 Q. Assim, fv; wg e a unica corda poss vel em R, e conclu mos que 8v; w 2 S; fv; wg 2 G. Antes de 3 ) 1, provemos 2 lemas auxiliares:
1 +1 1 1 1 1 1 1
Lema 6.4 (hereditariedade) Se G satisfaz a propriedade 3, ent~ ao qualquer subgrafo de G inDemonstrac~ ao: ~ = (N; ~ E ~ ) o subgrafo de G induzido por N ~ N, e S ~ minimal em G ~ separando a de b. Seja G ~, com vertices de N N ~ , de modo a obter S , um separador minimal Podemos, em G, completar S ~ e um subgrafo de em G entre a e b. Mas se G satisfaz a propriedade 3, S e um clique, e como S ~ tambem e um clique. S, S
Demonstrac~ ao: Provemos o lema por induc~ ao no numero de vertices de G, n. Para n = 1 o lema e trivial. Se G = (N; E ); n > 1, n~ ao e completo, 9a; b 2 G j fa; bg 2 = E. Seja S um separador minimal entre a e b, partindo G S em ao menos 2 componentes conexas distintas, A e B , a 2 A, b 2 B . G(S A), o subgrafo induzido pelos vertices de S A, hereditariamente satisfaz a propriedade 3, e pela hipotese de induc~ ao, ou G(S A) e um clique, ou contem (ao menos) 2 vertices simpliciais n~ ao adjacentes. Se G(S A) n~ ao for completo, ent~ ao um dos seus 2 vertices simpliciais n~ ao adjacentes deve estar em A (pois S e um clique). Se G(S A) e completo, ent~ ao qualquer vertice de A e simplicial (pois S e um separador). Logo, existe ao menos um vertice simplicial, v 2 A. Analogamente, existe um vertice simplicial w 2 B , e v n~ ao e adjacente a w (pois S separa v de w).
60
3 ) 1: Seja G = (N; E ) satisfazendo a propriedade 3. Se G e completo, qualquer ordem q e perfeita. Caso contrario, existem 2 vertices simpliciais n~ ao adjacentes. Podemos pois eliminar um deles, q(1), sem preenchimento, e pelo lema da hereditariedade o subgrafo resultante continua satisfazendo a propriedade 3. Podemos ent~ ao usar o argumento recursivamente para obter uma ordem de eliminac~ ao perfeita. QED.
entre (vertices de) d e (vertices em) nos ancestrais de d (em D), ou ainda entre (vertices em) ascendente de d (em D).
Lema 6.6 (Dissecc~ ao) Consideremos a eliminac~ ao dos vertices de G na ordem de dissecc~ ao q . A eliminac~ ao de um dado verice, v 2 d, so pode preencher lados dentro do seu no em D, d, ou
Demonstrac~ ao: Trivial, pelo lema do caminho. Exemplo 7: Vejamos um exemplo de eliminac~ ao usando uma ordem de dissecc~ ao
3 8
j j
= j 4 5
10
11
j n j n
12
j n
7 13
61
1 2 3 4 5 6 7 8 9 10 11 12 13
9 x x x 8 0 x x 0 10 0 x x 0 3 0 x 0 4
11
x 12 x x 13 x x x 5 0 x x 0 6
x 0 0 0 x
x 0 0 0 x
x 0 x 7 x x 0 1 0 x x 0 2
~ , e em, G, um separador entre cada uma O ultimo conjunto da partic~ ao, Sk ou a raiz de G ~ k. Para minimizar a regi~ das componentes de G ao de poss vel preenchimento (em G ou QAQ0) gostar amos de ter o separador Sk \pequeno e balanceado", i.e. tal que #Sk seja o menor poss vel. Sub-arvores tenham aproximadamente o mesmo numero de vertices de G. Recursivamente, gostar amos de ter como raiz de cada uma das sub-arvores um bom separador, i.e., pequeno e balanceado. Veremos a seguir varias heur sticas para obter num grafo qualquer, G, um bom separador. Heur stica de Busca em Largura: Uma busca em largura, BEL, a partir uma raiz v 2 N , particiona os vertices de G em n veis L ; L ; : : :Lk , de nidos por
0 1
A profundidade do n vel Li e i, e a largura do n vel Li e #Li. A profundidade e a largura da BEL s~ ao, respectivamente, a maxima profundidade e a maxima largura nos n veis da BEL.
Lema 6.7 O n vel Li separa, em G, os vertices em n veis mais profundos dos em n veis menos
profundos que i.
P
A heur stica de BEL procura um separador balanceado S Li, tomando i k=2, ou ent~ ao i n tomando i j #Lj < n=2 ^ i #Lj < n=2 : Para obter um separador pequeno a heur stica procura uma raiz, v, que gere uma BEL de maxima profundidade, com o intuito de reduzir a largura da BEL. A dist^ ancia (em G) de um
1 1 P +1
62
vertice v a um vertice w, dist(v; w), e o comprimento, ou numero de lados, do caminho mais curto entre ambos os vertices. A excentricidade de um vertice v e exc(v) = maxw2N dist(v; w). Um vertice de maxima excentricidade se diz periferico, e sua excentricidade e o di^ ametro de G. Uma BEL com raiz v tera profundidade igual a excentricidade de v. Isto motiva querermos iniciar a BEL por um vertice periferico. Encontrar um vertice periferico e um problema computacionalmente dif cil. A heur stica de Gibbs encontra um vertice quase-periferico como segue: 1. Escolha como raiz um vertice de grau m nimo. 2. Forme os n veis da BEL com raiz v, L : : : Lk . Particione o n vel mais profundo em suas componentes conexas, Lk = l Sj , e tome um vertice de grau m nimo, vj , em cada componente.
1 1
Ate que k0 > k ou j = l. 4. Se o passo 3 terminou com k0 > k, volte ao passo 2. Caso contrario a atual raiz e um vertice quase-periferico. Exemplo 8: Retomando o exemplo 7, a heuristica de Gibbs encontra 3 como vertice quase-periferico. Tomando 3 como raiz geramos a arvore H por BEL:
H= L=
1
3 1
5
8 2
9 3
10 1 4
4 5 5 12 6
2
6 7
13 2 8
3 3
7 9
7
Escolhendo S = L como primeiro separador, e depois S = L e S = L como separadores dentro de cada uma das componetes separadas por S , obtemos a odem por dissecc~ ao q = 3; 8; 1; 10; 9; 11; 12; 2; 13; 7; 6; 4; 5].
1
63
3 x 1 x 8 x 2 1 x x 3 10 x x 4 x x 9 0 5 11 x 6 12 x x 7 2 x x 8 13 x 9 x 7 0 10 x x x 0 6 0 11 x x 0 4 0 12 x x x 0 0 5 13 Note que nas linhas (colunas) correspondentes aos vertices do primeiro separador, S = f1g, pode haver ENN's em qualquer posic~ ao. Note tambem que o resto da matriz esta em forma diagonal blocada (vide de nic~ ao no cap tulo 8), onde cada bloco correspnde a uma das componentes separadas por S . Esta estrutura se repete em cada bloco, formando a estrutura \espinha de peixe" caracter stica de ordens por dissecc~ ao. Note que esta estrutura e preservada pela fatorac~ ao de Cholesky.
1 1
Exerc cios
1. Implemente a eliminac~ ao simbolica num grafo G, com a ordem q, computando F e H , em tempo O(#enn(L)). 2. Qu~ ao e ciente (k em tempo O(nk )) poder amos implementar o algoritmo impl cito na ultima parte do teorema de caracterizac~ ao de grafos cordais? 3. Considere o seguinte algoritmo para numerar os vertices de um grafo na ordem n; n 1; : : : 2; 1: Ordenamento Reverso por Grau Maximo (ORGM): (a) Escolha, como vertice n, um vertice qualquer. (b) Escolha, como vertice seguinte um vertice ainda n~ ao numerado adjacente a um numero maximo de vertices ja numerados Prove que ORGM de ne uma ordem perfeita. 4. Qu~ ao e cientemente podemos implementar o ORGM? 5. De um exemplo de vertice quase-periferico que n~ ao seja periferico.
64
B 0 0 . . . 0
2 1 2 2
hB 1 hB 2 hB
3
3 7 7 7 7 7 7 7 7 5
2 6 6 6 6 6 6 6 6 4
1 1
. . . hB h
B 0 . . . 0 0
2 2
0 0
h h
hB 1 hB
2
3 7 7 7 7 7 7 7 7 5
1 1
. . .
hB h
Estas estruturas blocadas propiciam grandes facilidades computacionais. Em particular triangulariza-las corresponde a triangularizar os blocos diagonais, sendo que nenhum elemento n~ ao nulo e criado, durante a triangularizac~ ao, nos blocos nulos.
65
66
1 2
q = q; q : : : h q]. Conforme a de nic~ ao de ordem coerente, cada bloco, k q = k q ; : : : k qn k ], contem os vertices de uma CFC (componente fortemente conexa) de G, vk , e (v ; : : : vh ) est~ ao ~ topologicamente ordenados. Neste caso a matriz de adjac^ encia do grafo reordenado, B = QBQ0, e triangular blocada superior, de blocos r s B , n(r) n(s).
1
Lema 7.1 Considere o reordenamento coerente dos vertices de G = (N; B ) numa ordem coerente
Uma matriz que n~ ao possa ser, por permutac~ oes de linhas e de colunas, reduzida, isto e, posta na forma triangular-blocada, e dita irredut vel. Dada uma matriz A, n~ ao singular, procuraremos permutac~ oes de linhas e colunas, isto e, por ~ matrizes de permutac~ ao R e Q, encontrar A = RAQ que seja a \mais na" partic~ ao poss vel de A. Observemos que a hipotese de n~ ao singularidade de A implica na n~ ao singularidade dos blocos diagonais, pois ~) = det(A) = det(A
Y
k=1
~) : det(k kA
ou seja, podemos escrever qualquer transformac~ ao do tipo RAQ como uma permutac~ ao de linhas, 0 PA, seguida de uma permutac~ ao simetrica Q (PA)Q. Consideremos agora o grafo associado a matriz PA, G(PA), que tem por matriz de adjac^ encia o padr~ ao de esparsidade de PA, B (PA), i.e.,
67
Teorema 7.1
1. Qualquer permutac~ ao propria induz a mesma estrutura de partic~ ao, isto e, h blocos de dimens~ oes n(1) : : : n(h), com os mesmos ndices em cada bloco. ~. 2. Qualquer permutac~ ao impropria n~ ao pode induzir uma partic~ ao mais na em A
Demonstrac~ ao: Pelo lema de Ho mann G(PA) e fortemente conexo, i.e., PA e irredut vel se qualquer conjunto de k < n linhas tiver elementos n~ ao nulos em ao menos k + 1 colunas. Como esta caracterizac~ ao independe da ordem das linhas, mostramos que a irredutibilidade da matriz PA independe da permutac~ ao propria considerada. ~ bem como a exist^ Da mesma forma, a irredutibilidade do bloco sudeste, h encia da CFC vh hA entre as \ultimas" (no sentido da ordem natural do grafo reduzido) componentes associadas a qualquer outra permutac~ ao propria, P , esta garantida, de modo que a invari^ ancia da estrutura de ~ A segue por induc~ ao no numero de componente fortemente conexas (blocos). Mostramos agora que se A tiver algum elemento diagonal nulo, ent~ ao as componentes fortemente conexas de G(A) s~ ao fus~ oes de componentes fortemente conexas de G(PA): Distinguamos os zeros na diagonal de A e consideremos o grafo G (PA) obtido de G(PA) ao adicionarmos as arestas correspondentes aos zeros distinguidos em PA. As CFCs em G(A) s~ ao exatamente as CFCs em G (PA), sendo que as arestas adicionais (se quando adicionadas ao grafo reduzido de G(PA) formarem ciclos) so podem tornar equivalentes alguns vertices antes em CFCs distintas. QED. A permutac~ ao propria, P , pode ser vista como um casamento perfeito entre linhas e colunas, onde casamos a coluna j com a linha p(j ), entre seus pretendentes (j ) = fi j Bij 6= 0g. Podemos portanto encontra-la atraves do algoritmo Hungaro, de prefer^ encia com o emprego de alguma heur stica e ciente para evitar a frequente gerac~ ao de arvores de caminhos de aumento. Exemplo 1: Considere as matrizes de adjac^ encia B , sua permutac~ ao propria PB , e o posterior ordenamento 0 coerente Q PBQ. 1 1 1 0 1 0 j B = 0 1 1 ; PB = Bp i = 0 1 0 ; 0 1 1 1 1 1 1 1 1 q j 0 Q PAQ = Bp q i = 0 1 1 : 0 0 1 Observe que G(B ) e fortemente conexo. Em B destacamos a diagonal a ser posicionada por P na diagonal principal de PB , e o zero inicialmente na diagonal principal. Em PB destacamos o mesmo zero originalmente na diagonal de B . G(PB ) tem 3 CFCs, que voltariam a fundir-se
+ + 1 2 6 6 4 3 7 7 5 2 6 6 4 3 7 7 5 ( ) 2 6 6 4 3 7 7 5 ( ) ( ( ))
68
numa so, caso adicionassemos a aresta correspondente ao zero destacado em PB . Neste exemplo tivemos p = 3; 1; 2], q = 1; 3; 2]. O procedimento P4 (Partic~ ao e Pre-Posicionamento de Piv^ os) explora esparsidade estrutural, e posteriormente a esparsidade local a cada bloco, como segue: 1. Encontre uma permutac~ ao propria, PA, atraves do algoritmo hungaro complementado com uma heur stica e ciente. 2. Encontre, atraves do algoritmo de Tarjan, um ordenamento coerente Q0PAQ. 3. Inverta este ultimo ordenamento, QPAQ0, de modo a colocar a matriz na forma triangular blocada inferior. Em seguida aplique a heur stica P3 a cada bloco diagonal. S~ ao apresentados tr^ es exemplos de aplicac~ ao do P4. A disposic~ ao original dos ENNs da matriz original, A, corresponde aos sinais +, , ou numeros de 1 a 9 no corpo da matriz. Como prescrito no primeiro passo do P4, primeiramente encontramos uma diagonal n~ ao nula, ou equivalentemente uma permutac~ ao propria PA. O vetor inverso de ndices de linha permutados, p, e dado a esquerda da numerac~ ao original das linhas. Os asteriscos indicam os elementos desta diagonal. Como prescrito no segundo passo do P4, devemos em seguida encontrar um reordenamento coerente, q, em G(PA). Para tanto aplicamos o algoritmo de Tarjan: Primeiramente fazemos a busca em profundidade can^ onica em G(PA). Para tanto percorremos as linhas de PA, gerando a primeira oresta de cada exemplo. As ra zes desta busca s~ ao assinaladas por um acento circun exo, tanto na oresta como no vetor p. Os numeros no corpo da matriz correspondem a ordem de visitac~ ao nesta busca. A inversa da ordem de retorno e dada pelo vetor b. O algoritmo de Tarjan exige em seguida a busca em profundidade can^ onica no grafo inverso 0 reordenado por b, G((BPAB ) ); na verdade basta tomarmos as ra zes desta busca na ordem can^ onica. Percorrendo as colunas da matriz, constru mos a segunda oresta em cada exemplo, cujas ra zes est~ ao assinaladas por um acento circun exo, tanto na oresta como no vetor b. A ordem de visitac~ ao nesta segunda busca em profundidade nos da o reordenamento coerente QPAQ0; apresentado explicitamente em cada exemplo para que se reconheca a estrutura triangular superior. Finalmente, ao nal dos exemplos, apresentamos o terceiro passo do P4: a invers~ ao deste 0 ordenamento coerente, Q PAQ, (portanto triangular inferior), com posterior aplicac~ ao do P3 a cada bloco diagonal. Neste ponto ca claro que o segundo e o terceiro exemplos diferem apenas pela permutac~ ao original da matriz. Neste ponto indicamos tambem os zeros preenchidos durante a fatorac~ ao.
69
Exemplo 2:
q p b p 7 7 2 4 6 5 1 1 8 8 5 6 3 2 4 3 9 9
p 4 5 9 ^ 1 8 7 6 3 2
q 1 9 1 9 b ^ 1 2 1 2 + + 3 4 7 5 6 + 7 8 9
4 3 3
7 2 3 5 ^ 7 4 2 6 4 5 6 7
2 + 5 + + 3
8 6 ^ 8 5 8 9 6 4 8 + 9 + + + +
#
6
^ 1 ! 3 ! 5 ! 7 ! 4 ! 8 ! 2
#
9
# #
2
^ 1
^ 7
4 ! 3
#
9
^ 8
6 ! 5
p=q 1 2 3 4 5 6 7 8 9 1 + + + 2 + + + 3 + + + 4 + + 5 + + + 6 + + 7 + 8 + + 9
70 Exemplo 3:
q p b p 1 1 9 8 6 4 3 6 2 9 7 5 8 7 5 3 4 2
p ^ 1 8 9 2 4 7 6 5 3
q 1 3 b ^ 1 6 1 2 1 2 3 4 5 + 6 7 8 9 3
4 2 3 2 + +
2 5 8 7 9 9 3 ^ 7 5 8 4 5 6 7 8 + + 9 + 4 5 6 + 7
6 ^ 4 9
+ 8
^ 1 ! 3 ! 2 ! 4
^ 1 9 6
# # #
2 ! 3
^ 4 5
^ 7 8
6 ! 8
5 ! 9 ! 7
p=q 1 2 3 4 5 6 7 8 9 1 + + 2 + + 3 + + 4 + + + 5 + + 6 + + 7 + 8 + 9 +
71
Exemplo 4:
q p b p 1 1 8 8 7 7 3 3 2 4 6 6 9 9 5 5 4 2
p ^ 2 5 7 8 6 ^ 1 9 4 3
q 6 1 4 b ^ 6 ^ 1 2 1 2 3 1 6 2 3 + 4 5 + + 6 7 + 8 9
5 5 4
8 2 7 3 9 ^ 8 4 7 3 9 5 6 7 8 9 + 4 3 + + + 2 8 + 9
^ 1 ! 7 ! 5 ! 9 ^ 2 ! 3 ! 4
# # #
^ 1 4 3
#
7
^ 6
#
9
^ 8
# &
6
2 ! 5
p=q 1 2 3 4 5 6 7 8 9 1 + + 2 + + 3 + + 4 + + + 5 + + 6 + 7 + + 8 + 9 +
+ + + + 0
+ + 0 +
+ + 0 +
73
C . ... . . hB hC
1
3 7 7 5
6 6 6 6 6 6 6 6 4
V 0
W Z . ... . . hV h W 0 hZ
1 1
3 7 7 7 7 7 7 7 7 5
Para completar a fatorac~ ao QR da matriz original, respeitando a estrutura de blocos, permuk tamos os blocos Z para as ultimas linhas da matriz, formando o bloco quadrado Z de dimens~ ao h d(k ) = n(h + 1). Finalmente completamos a fatorac~ ao QR do bloco sudeste, Z = QS .
P 1 2 6 6 6 6 6 6 6 6 6 6 6 4 1
W . ... . . hV hW Z . . . hZ
1 1
3 7 7 7 7 7 7 7 7 7 7 7 5 2 6 6 6 6 6 4 1
W . ... . . hV hW S
1
3 7 7 7 7 7 5
Como permutac~ oes s~ ao apenas um tipo especial de transformac~ oes ortogonais, obtivemos o fator triangular da fatorac~ ao QR respeitando a estrutura diagonal blocada da matriz original, B = QU . A inversa da matriz original seria dada por B = U Q0, mas usando que Q0 = U t B 0 temos B = U U tB 0. Isto e, obtivemos uma fatorac~ ao de B onde todos os fatores herdam (e s~ ao computados de acordo com) a estrutura angular blocada da matriz original. Observando que B 0B = U 0Q0QU = U 0U , vemos que uma maneira alternativa de computar o fator triangular da fatorac~ ao ortogonal de B , e computar o fator de Cholesky da matriz simetrizada B 0B : B0 B B0 C . ... . . hB 0hB hB 0hC : C 0 B : : : h C 0h B Z Ao eliminarmos os h blocos das linhas residuais de B 0B , formamos o bloco sudeste Z = Z + h k Z , a ser fatorado na ultima etapa do processo, Z = S 0S . Ao nal, obtemos exatamente o fator
1 1 1 1 2 6 6 6 6 6 4 1 1 1 1 3 7 7 7 7 7 5 1 1 0 0 P 1
f (p) = c(p) +
k=1
(m=h s(k)) ;
2
onde c(p) = jfj 2 N j jq(j )j 2gj ; e s(k) = jfi 2 M j p(i) = kgj : Mesmo casos especiais deste problema s~ ao NP-dif ceis. Por exemplo: Seja A a matriz de incid^ encia de um grafo, m um multiplo exato de h = 2, e faca su cientemente grande para garantir que todos os blocos tenham exatamente m=h linhas. Este e o problema exato de 2partic~ ao em grafos, e a vers~ ao de reconhecimento deste problema e NP-Completa; veja problema ND14 em Garey79]. Um algoritmo de anulamento simulado com perturbac~ oes metricas para resolver este problema e apresentado em Stern92].
7.4. Paralelismo
75
7.4 Paralelismo
Um dos fatores mais importantes no desenvolvimento de algoritmos e a possibilidade de realizar varias etapas de um procedimento em paralelo. No restante deste cap tulo adaptaremos algumas das fatorac~ oes anteriormente estudadas para as estruturas blocadas, visando paralelizar etapas independentes. Vejamos a seguir alguns conceitos basicos de computac~ ao paralela. Existem varios modelos teoricos de computador paralelo, e inumeras inst^ ancias e implementac~ oes destes modelos em maquinas reais. O modelo mais simples e o de memoria compartilhada. Neste modelo varios processadores, t^ em acesso a uma memoria comum. Neste modelo, a descric~ ao de uma algoritmo paralelo envolve basicamente dois fatores: Como distribuir o trabalho entre os processadores. Como sincronizar as diversas etapas do algoritmo. Este modelo e conceitualmente simples e elegante; todavia limitac~ oes da nossa tecnologia inviabilizam a construc~ ao de maquinas de memoria compartilhada com mais de uns poucos (da ordem de dez) processadores. O modelo de rede e mais generico. Nele o computador e visto como um grafo: cada vertice, no, ou processador representa: um processador propriamente dito, uma memoria local, i.e., acess vel somente a este processador, e portas de comunicac~ ao. Cada aresta representa uma via de comunicac~ ao inter-nos. Note que no modelo de memoria compartilhada, a comunicac~ ao entre os processadores podia ser feita de maneira trivial atraves da memoria; todavia no modelo de rede e preciso saber os detalhes da arquitetura da maquina para especi car um terceiro aspecto do algoritmo: A comunicac~ ao entre os processadores. Estes detalhes incluem a disposic~ ao das vias de comunicac~ ao, ou topologia, a velocidade de comunicac~ ao em relac~ ao a velocidade de processamento, a possibilidade ou n~ ao de haver comunicac~ oes simult^ aneas em vias distintas, etc. Algumas destas topologias comumente empregadas, s~ ao: Estrela, Barra, Anel, Grade, Toro, Hipercubo e Borboleta. Como exemplo de algoritmo paralelo, calculemos a media de n numeros numa rede com p processadores. Suponhamos que inicialmente tenhamos n=p destes numeros em cada uma das memorias locais. Por simplicidade suponhamos que n e um multiplo de p, e que n >> p. Na primeira fase do algoritmo cada processador, k, calcula a media dos n=p numeros em sua memoria local, m(p). Se os processadores s~ ao todos iguais (rede homog^ enea), cada processador completa sua tarefa em 1=p do tempo necessario para calcular a media geral num computador com apenas um processador deste mesmo tipo. Na segunda fase do algoritmo reunimos as medias parciais para calcular a media geral, m(0) = (1=p) p k m(k ). Examinemos como calcular esta media geral em duas redes com topologia de anel, onde cada qual:
P =1
2. Permite comunicac~ oes em paralelo via segmentos de arco n~ ao superpostos. Novamente por simplicidade, suporemos que p = 2q . Na primeira rede, para k = 1 : p, 1. Calcule no, no k, s(k) = s(k 1) + m(k). 2. Transmita s(k) ao processador k + 1. ao de inicialNeste procedimento temos as somas parciais das medias s(k) = k i m(k ), a condic~ izac~ ao e s(0) = 0, e ao termino do algoritmo podemos computar, no no p, a media m(0) = s(p)=p. Na segunda rede, para i = 1 : q,
P =1
77
" #
V W t u = y y u O I onde V e n n triangular superior, W e n l, 0 e I s~ ao as matrizes zero e identidade, e u e y s~ ao vetores coluna. Isto requer (1=2)n + nl + O(n + l) FLOPs. 3. Reduza a triangular superior uma matriz de Hessenberg, i.e., aplique a sequ^ encia de rotac~ oes de Givens G(1; 2; ); G(2; 3; ) : : : G(n 1; n; ) a matriz blocada V W onde V e n n Hessenberg superior, e W e n l, para reduzir V a triangular superior. Isto requer 2n + 4nl + O(n + l ) FLOPs. 4. Reduza a triangular superior uma matriz blocada coluna { tri^ angulo superior, i.e., aplique a sequ^ encia de rotac~ oes de Givens G(n 1; n; ); G(n 2; n 1; ); : : : G(1; 2; ) a matriz blocada u V onde u e um vetor coluna n 1, e V e n n triangular superior, de modo a reduzir u a um unico ENN na primeira linha, assim transformando V de triangular para Hessenberg superior. Isto requer 2n + O(n) FLOPs.
" # " 1 2 # " 1 2 # 2 h i 2 2 2 h i 2
V W 0 Z onde F = F t e n n, e G e n l. Isto requer (1=6)n + (1=2)n l + (1=2)nl + O(n + l ) FLOPs. 2. Compute a transformac~ ao inversa parcial, i.e. u, em
3 2 2 2 2
para obter
Em ambas as fatorac~ oes, A = QU e A0A = U 0U , muitas das operac~ oes nos blocos podem ser feitas independentemente. Portanto a estrutura angular blocada n~ ao so nos da a possibilidade de preservar esparsidade, mas tambem a oportunidade de fazer varias operac~ oes em paralelo. Descreveremos uma forma de paralelizar a fatorac~ ao de Cholesky numa rede de h +1 nos. Para k = 1 : : : h alocamos blocos das matrizes A e U a nos espec cos, como segue: Os blocos Dk E k , V k e W k s~ ao alocados ao no k. Os blocos sudeste, Z e S , s~ ao alocados ao no 0 (ou h + 1). Expressaremos a complexidade do algoritmo em termos da soma e do maximo das dimens~ oes dos blocos. h dbsum = m(k)
X 1
78
1. No no k=1:h compute os blocos (B k )tB k , (B k )tC k , e (C k )tC k . pTime = m(k)n(k) + m(k)n(k)n(h + 1) + m(k)n(h + 1) 3dbmax , INC = 0.
2 2 3
h (C k )t C k .
1
pTime = h n(h +
3. No no k compute a fatorac~ ao de Cholesky parcial, eliminando as primeiras n(k) colunas, da matriz blocada (B k )t B k (B k )t C k (C k )tB k 0 obtendo V k Wk 0 Zk pTime = (1=6)n(k) + (1=2)n(k) n(h + 1) + (1=2)n(k)n(h + 1) (7=6)dbmax , INC = 0.
" # 3 2 2 3
4. Envie Z k do no k para o no 0, onde acumulamos Z = h Z k . pTime = h n(h + 1) h dbmax , INC = h n(h + 1) h dbmax .
P 2 2 2 0 2
5. No no 0 fatore o bloco sudeste S = chol(Z ), onde chol() indica a fatorac~ ao de Cholesky padr~ ao. pTime = (1=6)n(h + 1) (1=6)dbmax , INC = 0.
3 3
Nos passos 2 e 4, se a rede permite comunicac~ oes em paralelo, a reuni~ ao da matriz acumulada pode ser feita em log(h) passos, e podemos substituir h por log(h) no ultimo teorema.
fl( ) =
onde
dk ; n; b 2 N 0 dk b; d 6= 0 0 n emax; b 6= 0 :
1
Dado um real com representac~ ao exata num dado SPF, a frac~ ao normalizada sera denominada mantissa. A mantissa e o expoente de ser~ ao denotados, respectivamente,
mant( ) = expo( ) =
0:d : : : dt; n
1
Ha duas maneiras normalmente empregados para obter fl( ) a partir de : truncamento e arredondamento. Para trunc( ) simplesmente truncamos a representac~ ao em base b de 79
80
obtendo uma mantissa de t digitos. No arredondamento tomamos a mantissa de t digitos que melhor aproxima . Assim, para = = 3:141592653 : : :, e o SPF com b = 10 e t = 5, trunc( ) = +0:31415 E + 1 e round( ) = +0:31416 E + 1. Note que = 0 n~ ao pode ser representado devido a condic~ ao d 6= 0. Portanto, alguma representac~ ao inamb gua deve ser convencionada, por exemplo, fl(0) = +0:00 : : : 0 E + 0. Se n > emax n~ ao ha representac~ ao poss vel no SPF, e dizemos que houve \over ow" ou transbordamento.
1
Lema 8.1 Dado 2 R e fl( ) sua representac~ ao, num dado SPF de unidade de erro u, 9 2 u; u] j fl( ) = (1 + ).
Demonstrac~ ao: Pela de nic~ ao de SPF, se expo(fl( )) = e, v^ e-se que jfl( ) j = j j ube = u : jj be
1 1
Se e s~ ao numeros em ponto utuante, isto e numeros reais com representac~ ao exata num dado SPF, e perfeitamente poss vel que uma operac~ ao aritmetica elementar entre eles resulte num numero sem representac~ ao exata. Do lema anterior, porem, sabemos que, qualquer que seja a operac~ ao aritmetica, ? 2 f+; ; ; =g, fl( ? ) = ( ? )(1 + ), para algum j j j u. QED. Exemplo 1: Consideremos um computador que armazena um numero real em 4 bytes, sendo 3 bytes para os d gitos da mantissa e 1 byte para o sinal do numero, o sinal do expoente e os 6 bits restantes para o modulo do expoente como um inteiro em base 2. Supondo que todos os calculos s~ ao feitos com arredondamento, calculamos, a unidade de erro do SPF, u, e o maior real representavel, rmax = bemax, no caso de usarmos base b = 256, b = 16 ou b = 2.
b 2 16 = 2 256 = 2
4
t 24 6 3
7 6 5
64
19 75 150
Um recurso frequentemente dispon vel, concomitantemente ao uso de um SPF de base b e t d gitos, e o sistema de representac~ ao em ponto utuante normalizado de precis~ ao dupla, SPFD, com mantissa de 2t d gitos, que denotamos fld( ).
81
Este recurso e extremamente util, se utilizado parcimoniosamente. Podemos trabalhar com a maior parte dos dados no SPF, de precis~ ao simples, e utilizar a precis~ ao dupla apenas nas passagens mais cr ticas do procedimento. Em analogia ao SPF, de nimos a unidade de erro do SPFD, ud como b t no caso de usarmos truncamento, e b t=2 no caso de usarmos arredondamento. E interessante notar que se e s~ ao numeros reais com representac~ ao exata no SFP, de precis~ ao simples, a representac~ ao do produto destes numeros no SPFD e exata, isto e fld( )= , pois o produto de dois inteiros de t d gitos tem, no maximo, 2t d gitos. Estudamos agora o efeito cumulativo dos erros de representac~ ao, em todas as passagens intermediarias num produto interno. Sejam x, 1 n e y, n 1, vetores cujas componentes t^ em representac~ ao exata, num dado SPF. De nimos
1 2 1 2
< 1, e i j j ij u; i = 1 : : : n, ent~ ao
(1 + i) 1 + (1 + )nu :
(1 nu)n
Y 1
(1 + i) (1 + nu)n ;
Da n~ ao negatividade do ultimo termo segue a primeira inequac~ ao. Considerando que 8 2 0; ], 1+ temos que QED.
e
(
1+ +
(1 + u)n e nu) 1 + nu + nu :
(1 + i) = 1 + (1 + )nu :
i=1
Demonstrac~ ao: 9 i; j ij ud, e i; j ij 1 j fl(xy) = fl(fl(xnyn) + fl(fl(xn yn ) + : : : +(x y (1 + ) + (x y (1 + ) + x y (1 + ))(1 + ))(1 + ) : : :)) = fl(fl(xnyn) + fl(fl(xn yn ) + : : : + x y (1 + )(1 + ) +x y (1 + )(1 + )(1 + ) + x y (1 + )(1 + )(1 + ) : : :)) = xnyn(1 + n )(1 + n ) + +xn yn (1 + n )(1 + n )(1 + n ) + : : : +x y (1 + )(1 + ) : : : (1 + n )(1 + n ) +x y (1 + )(1 + ) : : : (1 + n )(1 + n ) = xnyn(1 + n(1 + )2u) + xn yn (1 + n (1 + )3u) + : : : +x y (1 + (1 + )nu) + x y (1 + (1 + )(n + 1)u) :
1 1 3 3 4 2 2 2 1 1 1 3 5 1 1 3 3 4 5 2 2 2 3 5 1 1 1 3 5 2 2 2 1 1 1 2 4 2 3 2 1 2 2 2 3 2 3 2 1 1 1 1 3 2 3 2 1 1 1 1 2 2 2 1 1 1
X 1
Demonstrac~ ao: 9 i; j ij ud, e i; j ij 1 j fld(xy) = fld(xn yn + fld(xn yn + : : : +(x y + (x y + x y )(1 + ))(1 + ) : : :)) = xn yn(1 + n ) + xn yn (1 + n )(1 + n ) + : : : x y (1 + ) : : : (1 + n ) + x y (1 + ) : : : (1 + n ) = xn yn(1 + n(1 + )ud) + xn yn (1 + n (1 + )2ud) + x y (1 + (1 + )(n 1)ud) + x y (1 + (1 + )nud)
1 1 3 3 2 2 1 1 1 2 1 1 1 2 1 2 2 1 1 1 1 1 1 1 1 1 2 2 2 1 1 1
83
E frequente o calculo em dupla precis~ ao, de produtos de vetores armazenados em precis~ ao simples, e o posterior armazenamento do resultado em precis~ ao simples, isto e o calculo fl(fld(xy)). Do ultimo lema vemos que
fl(fld(xy)) = (1 + )
X 1
xiyi i(1 + )(n i + 1)ud, o que ocorre se nu 1 e n~ ao houver \cancelamentos cr ticos" na somatoria, o resultado nal do produto e afetado de um erro da ordem do erro introduzido por uma unica operac~ ao aritmetica, em precis~ ao simples. Assumiremos esta hipotese no restante do cap tulo.
P
Observac~ ao 8.1 Se xy
Exemplo 2: Calculemos, no SPF decimal de 2 d gitos com arredondamento, fl(xy), fld(xy) e fl(fld(xy)), onde x = 7:5; 6:9; 1:3] e y = 0:38; 0:41; 0:011]0 .
fld(xy) = fld(2:85 2:829 + 0:0143) = fld(0:021 + 0:0143) = 0:0353 : fl(fld(xy)) = fl(0:0353) = 0:035 : fl(xy) = fl(2:9 2:8 0:014) = fl(0:1 + 0:014) = 0:11 :
1 0 0 EAD = 0 2 0 0 0 3
6 6 4
32 76 76 54
1 1 1 1 1 1 1 1 1
32 76 76 54
11 12 13 11 0 0 0 12 0 = 22 24 26 31 36 39 0 0 13
7 7 5 6 6 4
3 7 7 5
84
Estudaremos o problema de escolher um escalamento que \melhor equilibre" uma dada matriz. Em primeiro lugar, vale notar que, estando num SPF de base b, a escolha de E e D da forma Eii = be . Djj = bd , onde e e d s~ ao vetores de elementos inteiros, e muito conveniente, pois ~ A = EAD e A ter~ ao elementos de mesma mantissa, sendo o efeito do escalamento apenas o de alterar os expoentes dos elementos da matriz, j j j ~j ~j mant(A i ) = mant(Ai ) ; expo(A i ) = expo(Ai ) + ei + d :
i j
um inteiro ao expoente de um numero real, devemos conhecer detalhadamente o SPF usado e manipular diretamente os campos de bits envolvidos. Uma maneira de medir o grau de desequilibrio de uma matriz, A e atravez da media e da vari^ ancia dos expoentes de seus elementos:
mex(A) = vex(A) =
X
expo(Aji )=enn(A) ;
2
Nas somatorias que de nem mex e vex excluimos os elementos nulos da matriz, os elementos nulos da matriz podem ser eliminados das operac~ oes de produto interno. Para n~ ao sobrecarregar a notac~ ao, doravante escrevemos
X
0=
i=1 jA 6
j =0 i
0=
j =1 jA 6
j =0 i
i;j
0=
m;n X i;j =1 jA 6
j =0 i
O primeiro metodo de escalamento que estudaremos e justamente o metodo da reduc~ ao de vari^ ancia em que procuramos minimizar a vari^ ancia dos expoentes de EAD. Tomemos as matrizes de escalamento esquerda e direita como, respectivamente, E = diag(round(ei )) e D = diag(round(dj )), sendo os vetores e e d argumentos que minimiz~ ao a vari^ ancia dos expoentes da matriz escalada,
vex(EAD) =
i;j
0(expo(Aj ) + ei + dj i
mex(A)) :
2
Um ponto de m nimo deve obedecer ao sistema @vex(EAD) = 0 = 2 0(expo(Aj ) + e + d mex(A)) i i j @ei j @vex(EAD) = 0 = 2 0(expo(Aj ) + e + d mex(A)) i i j @dj i
X X
85
+ X
0e+ + d+ i j 0e+ + d+ i j
= =
0expo(Aj ) i 0expo(Aj ) i
Esta equac~ ao pode nos dar uma boa aproximac~ ao da soluc~ ao em matrizes densas, i.e, com poucos elementos nulos, como se considerassemos o \expoente dos elementos nulos" como sendo expoente medio de A. Este e o metodo aproximado da reduc~ ao de vari^ ancia. Procuremos agora metodos heur sticos para determinac~ ao de escalamentos, que sejam menos trabalhosos que o metodo da reduc~ ao de vari^ ancia. O metodo da media geometrica consiste em tomar
dj = ei =
int((
Assim os fatores de quilibramento s~ ao uma aproximac~ ao do inverso da media geometrica dos elementos n~ ao nulos das colunas, ou linhas, i.e.,
dj = ei =
int((
Uma variante do metodo da media geometrica e o metodo da media max-min, no qual tomamos
dj = ei =
0 expo(Aj ) + min 0 expo(Aj ))=2) int((max i i i i 0 (expo(Aj ) + d ) + min 0(expo(Aj ) + d ))=2) int((max j j i i j j
ei = dj =
86
A escolha do particular metodo a ser empregado depende bastante do tipo de matriz a ser equilibrada e da exig^ encia que temos sobre vex(A). Em pacotes comerciais de otimizac~ ao e comum a aplicac~ ao do metodo max-min um numero pre-determinado de vezes, ou ate que vari^ ancia dos expoentes se reduza a um valor limite aceitavel. Este limite deve ser tomado em func~ ao das condic~ oes do problema, como por exemplo o numero de condic~ ao da matriz, ser de nido no cap tulo 9, e da unidade de erro do SPF. Exemplo 4: Equilibremos a matriz A, dada abaixo, num SPF de base 10, 1. 2. 3. 4. pelo metodo aproximado de reduc~ ao de vari^ ancia, pelo metodo da media geometrica, pelo metodo max-min, pelo metodo da norma 1.
Para A e para cada um dos escalamentos, calculemos mex, vex, e o di^ ametro da matriz, de nido como a diferenca entre o maior e o menor expoente dos elementos de A. 1 0:7E 4 0:5E 1 0:9E 0 0:2E 2 0 0:3E 1 0 0:3E 4 A = 1 0:80 E 3 0 0 0:3E 6 0 0:3E 1 0:8E 0 0:1E 3 0:7E 9 0 4 1 0 2 +1 x 1 x 4 expo(A) = x 160 0 3 x x 6 13 x 1 0 3 9 Pelo metodo aproximado de reduc~ ao de vari^ ancia, temos e, d, expo(EAD) e mex; vex;diam], respectivamente int(4=4) = 1 3 1 3 2 0 int(8=5) = 2 1:57 int (12 = 4) = 3 x x 1 x 0 int(2=5) = 0 23:4 int(6=4) = 2 0 0 x x 2 int(2=5) = 0 4 int(1=4) = 0 x 3 1 2 4 int( 6=5) = 1 int( 17=4) = 4 Analogamente, pelo metodo da media geometrica, temos int(0=2) = 0 1 0 1 1 2 int(4=5) = 1 0:214 int ( 8 = 3) = 3 x x 1 x 0 int( 1=2) = 1 14:4 int( 2=4) = 1 0 0 x x 1 int(1=3) = 0 4 int(3=2) = 2 x 0 1 1 2 int(8=4) = 2 int(21=4) = 5
2 6 6 6 6 4 3 7 7 7 7 5 2 6 6 6 6 4 3 7 7 7 7 5 2 6 6 6 6 6 6 6 4 3 7 7 7 7 7 7 7 5 2 6 6 6 6 4 3 7 7 7 7 5 2 6 6 6 6 4 3 7 7 7 7 5 2 6 6 6 6 6 6 6 4 3 7 7 7 7 7 7 7 5 2 6 6 6 6 4 3 7 7 7 7 5 2 6 6 6 6 4 3 7 7 7 7 5
87
2
3 7 7 7 7 5
6 6 6 6 6 6 6 4
3 7 7 7 7 7 7 7 5 2 6 6 6 6 4
2 x 0 x
1 2 2 x 1 x 1 0 x x 0 0 1 1
3 7 7 7 7 5
0:143 14:3 4
0 1 0 0
2 3 7 7 7 7 5 6 6 6 6 6 6 6 4
0 1 0 3 9
0 3 1 3 7 x x 0 x 4 0 2 x x 3 x 0 0 0 0
3 7 7 7 7 5
1:64 59:2 7
Escalamentos visando equilibrar as matrizes do problema s~ ao uma etapa importante na soluc~ ao de sistemas lineares de grande porte. Note que operac~ oes de escalamento n~ ao afetam os elementos nulos de uma matriz, e portanto n~ ao alteram sua estrutura e esparsidade. O desempenho das heur sticas estudadas variam conforme a area de aplicac~ ao; vale pois testar experimentalmente as heur stcas escalamento e suas variac~ oes.
88
jj : jj : E ) R j 8x; y 2 E; 2 R :
1. jjxjj 0; e jjxjj = 0 , x = 0. 2. jj xjj = j j jjxjj. 3. jjx + yjj jjxjj + jjyjj, a desigualdade triangular. S~ ao de grande interesse em Rn as p-normas
jjxjjp = ( jxijp) =p ;
X 1 1
e de particular interesse a norma 1, a norma 2 (ou norma quadratica, ou Euclidiana) e a norma p = +1. No caso da norma in nito, devemos tomar o limite da de nic~ ao de p-norma para p ! +1, ou seja, n jjxjjp = max jxij : i
=1
Dado um espaco vetorial normado (E; jj jj) de nimos a norma induzida sobre as transformac~ oes lineares limitadas, T : E ! E tq 9 2 R j 8x 2 E; jjT (x)jj jjxjj como sendo
89
jjT jj
xj jjxjj=1
Em (Rn ; jj jj) falamos da norma induzida sobre as matrizes n n como sendo a norma da transformac~ ao associada, isto e jjAjj = jjT jj, onde T (x) = Ax,
Lema 9.1 A norma induzida sobre as matrizes em (Rn; jj jj), goza das propriedades, para 8A; B n n; 2 R;
1. jjAjj 0 e jjAjj = 0 , A = 0 2. jjA + B jj jjAjj + jjB jj 3. jjAB jj jjAjj jjB jj
Lema 9.2 Para a norma 1 e para norma 1 temos as seguintes express~ oes expl citas da norma
induzida sobre as transformac~ oes, ou matrizes,
1
n jj j A jjAjj = max i j
X =1
i=1 n n
j =1
Demonstrac~ ao: Para veri car a validade das express~ oes observe que
jjAxjj =
1
Aji xj j
XX
n n
jjAxjj1 = max j i
=1 =1
j =1
Aji xj
=1
j =1
j =1
e que, se k e o ndice que realiza o maximo na de nic~ ao da norma, ent~ ao as igualdades s~ ao j k realizadas pelos vetores x = I , para a norma 1, e x j xj = sig(Ai ), para a norma 1. De nimos o numero de condic~ ao de uma matriz como
91
Exemplo 1: Calcule a norma da matriz de binomial de dimens~ ao 3, e de sua inversa, nas normas 1 e 1. Para cada uma das normas calculadas exiba um vetor x que, multiplicado pela matriz, seja \esticado" de um fator igual a propria norma, i.e. x j kAxk = kAkkxk.
2 6 6 6 6 6 6 6 6 6 6 4
B=
1 0 2 0 3 0
3 7 7 5
1 1 2 1 3 1
1
0 2 2 3 2
7 7 7 ! 7 7 7 7 7 ! 7 7 5
1 1 0 3 3 1 B= 1 2 1 B = 2 3 1 1 3 3 1 2 1 ao, respectivamente, Para B a soma da norma dos elementos jAj i j por linha e por coluna s~ 7 6 4 e 6 8 3 . Para B , analogamente, temos 7 6 4 e 7 6 4 . Assim, para a norma 1, jj B jj, jj B jj, e cond( B ) s~ ao respectivamente 6, 8, e 48. Analogamente, para 0 0 ao vetores como os procunorma 1, temos 7, 7, e 49. Finalmente, 0 1 0 e 1 1 1 s~ rados.
3 6 6 4 3 6 6 4 7 7 5 h 3 i h i 3 1 h i h i 3 3 1 3 h i h i
Teorema 9.1 (da pertubac~ ao) Se os dados do sistema Ax = b forem pertubados, isto e, alterjj xjj cond(A) jj bjj + jj Ajj : jjxjj 1 cond(A) jj Ajj=jjAjj jjbjj jjAjj
!
ados de uma matriz A de um vetor b, a resposta sera pertubada por um x, isto e (A + A)(x + x) = (b + b), tal que, se jj Ajj jjA 1jj < 1, ent~ ao
Ax
A x, e
bjj + jj Ajj jjA jj jj jjxjj jjjj bjj + jj Ajj : jjA jj jjAjj bjj
! 1 ! 1
Usando a hipotese jj AjjjjA jj 1, temos o teorema, QED. Exemplo 2: Considere o sistema (B + A)x = (b + b), onde a matriz de coe cientes, e o vetor de termos independentes correspondem a matriz binomial de dimens~ ao 3, B , e b j B 1 = b. Os elementos j da matriz e do vetor de pertubac~ ao, Ai e bi, s~ ao aleatorios. A distribuic~ ao de cada um destes elementos de perturbac~ ao e independente e e uma func~ ao de dois parametros ( ; p): Tomemos cada elemento da perturbac~ ao e no cojunto f0; ; g com probabilidade, respectivamente, 1 p; p=2; p=2]. Com os dados do Exemplo 1, determine um limite maximo para 0 alfamax que garanta a hipotese do teorema da pertubac~ ao. Faca uma experi^ encia comparando limites de erro e pertubac~ ao da soluc~ ao do sistema proposto. Na norma 1, jj Ajj 3 , e do Exemplo 1 sabemos que jjB jj 7. Assim, a condic~ ao jj AjjjjA jj 1 esta garantida para 0:04 < 1=21. Tomando como experimento de perturbac~ ao,
1 3 3 3 3 1 1
0:01 0 0:01
3 7 7 5
e b=
6 6 4
0 0:01 0
3 7 7 5
a soluc~ ao do sistema pertubado e x = 1:0408; 0:9388; 1:0622]0 , i.e. x = 0:04; 0:06; 0:06]0 e jj xjj = 0:16. Por outro lado, o Teorema da pertubac~ ao nos da o limite
93
como a soluc~ ao exata, x, mais um termo de pertubac~ ao x. Assumiremos que um produto escalar em dupla precis~ ao e afetado de um erro da ordem do erro de passagem para precis~ ao simples, conforme a observac~ ao 8.1. Nestas condic~ oes,, a soluc~ ao calculada, (x + x), e soluc~ ao exata de j um sistema. (A + A)(x + x) = b, tal que jj Ajj1 (2n + 1)gu, onde g = maxi;j jUi j.
Teorema 9.2 (Wilkinson) A soluc~ ao, afetada pelos erros de arredondamento, pode ser escrita
Demonstrac~ ao. Consideremos as linhas da matriz A ja ordenadas de modo a n~ ao haver necessidade de pivoteamentos. A decomposic~ ao da matriz A sera dada por, para i = 1 : : : n
LiU = Ai LU i = Ai
ou, para i = 1 : : : n, para
j = i:::n j = i+ 1:::n
1 X
k=1 i 1 X
k=1
j = i : : :n j = i + 1:::n
1 X
k=1 i 1 X
k=1
Como supomos desprez veis os termos de O(ud) (vide observac~ ao 8.1) temos, para i = 1 : : : n, para
j = i : : :n j = i + 1:::n
Portanto, para i = 1 : : : n, para
1 X
k=1 i 1 X
k=1
j = i:::n j = i+ 1:::n
1 X
k=1 i 1 X k=1
~ iU ~ j = Aj ~ij ij =(1 + ii) ~ ik U ~kj + 1Uii = L M i +U ~ jk U ~ki + M ~ jiU ~ii = L ~j U ~ i = Aij + M ~ jiU ~ii ji =(1 + ji ) M
94
Notemos agora que: j ij j=(1 + ij ) j ij j u, que jMij j 1, pelo pivoteamento parcial, e ~U ~ = A + E , onde jEij j gu, donde jjE jj1 ngu. de nindo g = maxi;j jUij j, temos que L ~ y = b e Ux ~ = y calculamos, para i = 1 : : : n, Na soluc~ ao do sistema L
y ~i = fl(fld((bi
e novamente, para i = 1 : : : n,
1 X
j =1 n
x ~i = fl(fld((~ yi
Supondo desprez veis os termos de 0(ud)
j =i+1
y ~i = (1 + i)(bi x ~i = (1 + i0)(yi
ou
X
1 X
j =1 n X
j =i+1
j =1 n
~j ~ iy ~j L ~j = L ~ = bi + L ~i i=(1 + i) iy iy
j =i
isto e ~ + L)~ (L y = b ~ + U )~ (U x = y ~ onde para as matrizes diagonais L e U , temos j Liij u e j Uiij gu. Em suma, ~ + L)~ ~ + L)(U ~ + U )~ b = (L y = (L x ~U ~ +L ~ U + LU ~ + L U )~ = (L x ~ U + LU ~ + L U )~ = (A + E + L x = (A + A)~ x ~ U + LU ~ , donde Desprezando o termo L U , de O(ud), A = E + L ~ U + LU U ~ jj ngu + (n + 1)gu jj Ajj1 = jjE jj + jjL
95
2 6 6 4
1 gu
... ...
0 1
32 76 76 54
gu
0 +
3 7 7 5 2 6 6 4
...
3 7 7 5
3 7 7 5
gu
0
gu
...
6 6 4
u
0
...
32 76 76 54
g
0
gu gu
3 7 7 5
...
g g
3 7 7 5
2 6 6 4
gu 2gu gu
...
gu gu
2gu
= (n + 1)gu QED:
Para frisar a import^ ancia do uso conjugado do metodo de Doolittle e dupla precis~ ao daremos, sem demonstrac~ ao, a vers~ ao do teorema ora demonstrado para o metodo de Gauss, que equivale ao metodo de Doolittle sem o recurso da dupla precis~ ao: De nindo h = maxi;j;k j k Aj i j, ter amos jjE jj1 O(n hu) e jj Ajj1 O(n hu). Estes resultados tornam evidente a obrigatoriedade de calcularmos os produtos escalares envolvidos no processo, sempre em dupla precis~ ao, a menos que tratemos de sistemas de pequena dimens~ ao. Alem do pivoteamento parcial, isto e, da escolha como elemento piv^ o do maior elemento em modulo na coluna, poder amos usar o pivoteamento total, isto e, encolher como elemento piv^ o o maior elemento em modulo em qualquer linha ou coluna utilizavel (isto e, poderiamos tomar por piv^ o da transformac~ ao k A ! k A, um elemento em arg maxk i;j n j k Aj i . Usando pivoteamento total, podemos demonstrar a exist^ encia de um limite superior para a constante h, supondo que j a matriz original A e tal que jAi j 1, da ordem de O(n = n ), contra limites de O(2n ) para pivoteamento parcial. O uso do pivoteamento total e todavia, extremamente custoso, pois exige a cada passo da O(n ) comparac~ oes, contra O(n) no pivoteamento parcial. Ademais, estes limites de h tendem a ser extremamente pessimistas, principalmente se A for bem equilibrada.
2 3 1 1 (1 4) ln( ) 2
Exerc cios
1. Estabilidade de Fatorac~ oes Simetricas. (a) Adapte os resultados de estabilidade da faorac~ ao LU para o caso particular da fatorac~ ao de Cholesky. (b) Qual o numero de condic~ ao de uma matriz ortogonal? Usando a relac~ ao entre o fator triangular da fatorac~ ao QR e a fatorac~ ao de Cholesky, discuta a estabilidade da fatorac~ ao QR.
4. Prove o Lema 1. 5. Equival^ encia das normas 1, 2 e 1: Prove em Rn que (a) (b) (c) (d) (e)
jjxjj1 jjxjj njjxjj1 jjxjj1 jjxjj n = jjxjj1 jjAjj = , onde e o maior autovalor de A0A. jjA0Ajj = jjAjj jjAjj ( jjAjj jjAjj1) =
1 2 1 2 2 2 2 2 2 2 1 1 2
6. Calcule computacionalmente cond(A), para as matrizes de teste nT , A = nB e A = nH , para n = 2; 4; 8; 16. Estime gra camente o crescimento do numero de condic~ ao das matrizes teste em func~ ao da dimens~ ao. 7. Resolva computacionalmente os sistemas teste Tx = t, Bx = b e Hx = h.
8 8 8 8 8 8
Pelo metodo de Gauss com pivoteamento parcial; Pelo metodo de Gauss com pivoteamento total; Pelo metodo de Doolittle com pivoteamento parcial e dupla precis~ ao; Pelo metodo de Doolittle com pivoteamento total e dupla precis~ ao.
No item c, veri que se o erro nal esta dentro do esperado, em func~ ao da unidade de erro do SPF utilizado.
( A + A) = V +
1
k=1
)k (V A)k V :
Demonstrac~ ao: Em virtude da regra de Cramer podemos, para 2 0; alphamax], escrever a serie de Taylor para cada elemento de (A + A) ,
1
( A + A) = V +
1
=1
(A + A)(V +
V+ 2
V + 3! V + : : :) = I
3
97
98 donde
2 2 3
Teorema 10.2 (formula de Sherman e Morrison) Dada A, n n e invers vel, u e w n 1, ^ = A + uw0 e dada por e 2 R , ent~ ao a inversa de A
^ = A + A uw0A ; A = ( + w0A u) :
1 1 1 1 1 1 1
Demonstrac~ ao: Da formula geral de modi cac~ ao, supondo que < alfamax, e das propriedades do operador traco (exerc cio 1.5) temos: (A + uw0) = 1 = V + ( )k (V uw0)V
1 X
=V
k=1
V uw0V
uw0V = V 1 + Vtr( V uw0) V uw0V =V + tr(V uw0) = V ( + w0V u) V uw0V : o que prova o teorema para 0 < < alphamax. A formula de Sherman e Morrison e todavia uma identidade que podemos provar diretamente para qualquer > 0 j ( + w0A u) 6= 0: Usando a formula de Sherman e Morisson para ^ A ^ = I , obtemos, desenvolver a identidade A
1 1 1 1 1 1
tr(V uw0))k
99
=1 ;
#
^= 1 0 + 3 4 = 4 4 A 8 9 6 8 2 1 calculando ^ = A
1 1 " 1
"
"
"
= (1 + 3) = 1=4 ; 5 4 = 9=4 1 1 0 (1 = 4) 2 1 0 0 2 1
# " # " 1 +1
^ = A ; : : :Aj ; a; Aj ; : : : An], ent~ ^ = A + (a Aj ) Ij , de modo que a Morrison, pois se A ao, A inversa da nova base seria, tomando V = A , ^ = V + V ( a Aj ) Ij V A = V + V (a Aj )Vj
1 1
Observac~ ao 10.1 Note que uma mudanca de base poderia ser feita pela formula de Sherman e
onde Exemplo 2: Se
= (1 Ij V (a Aj )) = (Vj a) :
1 1
0 ; a= 1 e j =2; A= 1 3 2 1 ^ , pose ser calculada como segue ent~ ao a inversa da nova base, A
1
"
"
= (
" # 1 1
2 1
"
1 ) = 1 3
1
^ =( 1 1 ) = A 2 3 1 0 + 1 0 ( 1)( 1 = 2 1 2 1 3 1 0 + 1 = 2 1 = 2 1 0
" # " # " " # " # h i
"
0 ) 1 3 1 2 1
"
2 1
100
^ Consideremos agora a permutac~ ao de colunas que comuta a s-esima e a n-esima colunas, Q ^ em A = A ^Q ^, e T A ^ em Esta permutac~ ao leva A U : : : Us T a Us : : : Un . . . . . . . . . . . ... . s s n 0 Us Ts a Us Us s ^ ^ 0 Tsa Us Usn Q = T AQ = 0 0 0 Ts a Uss Usn . . ... . . . . n 0 : : : 0 Tna 0 : : : Un
2 6 6 6 6 6 6 6 6 6 6 6 6 6 6 4 1 1 1 1 1 1 +1 3 1 1 1 +1 1 +1 +1 +1 +1 7 7 7 7 7 1 7 7 7 7 7 7 +1 7 7 7 5 1
Un T a U : : : Us Us : : : Un . . . 0 ... . . . . . . Uss Uss Usn Usn Ts a Usn Tsa Usn 0 Uss H= 0 0 0 Uss . . . Usn Usn Ts a . . ... ... . . . . n n 0 0 0 Un Un Tn a n Tna 0 ::: 0 0 : : : 0 Un H e uma matriz de Hessenberg superior, isto e, apenas os elementos paralelos a diagonal principal podem ser n~ ao nulos no tri^ angulo inferior. O metodo de Bartels e Golub consiste na aplicac~ ao de metodo de Gauss, com pivotamento parcial, a matriz H . Observemos que a aplicac~ ao do metodo de Gauss a matriz H e extremamente simples, pois
6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 4 1 1 1 1 1 +1 1 1 1 1 1 1 +1 1 +1 1 1 1 1 1 +1 +1 1 +1 +1 +1 1 1 1 1 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 5
1. As primeiras s 1 etapas de transformac~ ao n~ ao s~ ao necessarias, pois nas colunas 1; : : :s 1, H ja e triangular superior. 2. As etapas j = s; : : :n 1, que transformam
0
resumem-se em ~. (a) Permutar as linhas j e j + 1 se j j Hjj j > j j Hjj j, obtendo uma nova matriz j H
1 +1 1 1
H=
H ! sH ! : : : j H ! : : :
^ H= U
101
+1 1 +1 1 1 1
~ jj = j H ~ jj . (b) Calcular um unico multiplicador j Njj = j H jNj j H ~j ~j. (c) Atualizar uma unica linha j Hj = j H j
+1 +1 +1
~ =L ^U ^ , onde H ~ = RH ^ e a matriz obtida A aplicac~ ao do metodo de Gauss nos da a fatorac~ ao H de H pelas permutac~ oes de linhas realizadas durante a triangularizac~ ao. Assim, ~ = RH ^ = RT ^ A=L ^U ^ ; donde H ^t L ^U ^ ; ou A = LR ^ =A = U ^ T ^RT ^ V
1 1
Apos uma sequ^ encia de mudancas de base, nossa representac~ ao da inversa teria a forma
kV
= kU
k T k R : : :1 T
RT :
102
~ a matriz obtida de U pela permutac~ Seja U ao simetrica, Q0UQ, que leva os espinhos, preservando sua ordem de posicionamento, para as ultimas colunas a direita. No Exemplo 3, ter amos, 1 2 3 5 6 7 9 4 8 10 1 x 2 x x x x 3 5 x 0 ~ U = Q UQ = 6 x 7 x x x x x 9 4 x 8 x x x 10 ~ = D E , onde D e diagonal e F e triangular superior. Esta matriz tem estrutura U 0 F ~ 0 para a nova base O algoritmo de Saunders atualiza a decomposic~ ao A = LQUQ
" #
^ = A ^Q ^ = A como segue:
h h
A : : : As A : : : As
1 1
1 1
a As : : : An As : : : An a
+1 +1
i i
ou
~s U
+1
~ n Q0Ta : ::: U
i
^ E ^ F Ws
^ nn c W ^ nn c n W ^ nn W
1: :
3 1 7 7 1 5
^ e diagonal e Ws so pode ter elementos n~ onde D ao nulos nas ultimas posic~ oes a direita (sob n ^eW ^ ). F
103
^ , isto e, N ^ , pelo metodo de Gauss com pivotamento parcial. A matriz N ^, 3. Triangulariza W ^ e dos ultimos elementos da linha Ws e da coluna W ^ n , e denominada nucleo constitu da de F ^ . Nas rotinas numericas pode ser conveniente guardar apenas o nucleo, c c; c << n de W como uma matriz densa na memoria principal, enquanto o resto da matriz, usada apenas para leitura, pode ser guardada em uma representac~ ao esparsa, e na memoria secundaria.
x x x x x x x x x x x x x x x x x x x x x x
1 2 5 6 7 9 4 8 10 1 x x x 2 3 x 5 x W= 6 x x 7 x x x x x 9 4 x 8 x x 10 x
3 y
y y y
104
1 2 5 6 7 9 4 8 10 3 1 x y 2 x x 5 x 6 x x ^ W= 7 x x x y 9 x x 4 x y 8 x x 10 x y 3 x 0 ^ teremos, sendo R ^ as permutac~ Apos a triangularizac~ ao de W oes de linhas realizadas ao trian^ gularizar W , ^W ^ = L ^U ^ =R ^Q ^ 0Q0T AQ ^ Q ^ portanto R ^ = LQQ ^R ^0L ^U ^Q ^ 0 Q0 e A ^ = QQ ^U ^ T ^R ^Q ^ 0Q0T : A
1 1
Em geral, apos uma sequ^ encia de mudancas de base, nossa representac~ ao da inversa tera a forma k A = Q Q : : : k Q k U k T k R k Q0 : : : T R Q Q T :
1 1 1 1 1 1
Observac~ ao 10.2
1. A regi~ ao dos preenchimentos em k W esta restrita ao tri^ angulo superior do nucleo e sua ultima linha. 2. A matriz k L so tera elementos nulos na ultima linha do nucleo. 3. A cada nova mudanca de base, a dimens~ ao do nucleo: (a) Aumenta de 1, se a coluna que sai da base e uma coluna triangular da base original. (b) Permanece constante, se a coluna que sai da base e um espinho, ou uma coluna ja anteriormente substitu da. 4. Cada mudanca de base aumenta um termo na fatorac~ ao da base, o que leva a uma gradativa perda de e ci^ encia e acumulo de erros. Depois de um numero pre-determinado de mudancas sobre uma base original, ou quando o acumulo de erros assim o exigir, devemos fazer uma reivers~ ao, i.e., reiniciar o processo aplicando a P4 e triangularizando a proxima base desejada.
105
Caso I ink 6= outk; ink 6= h + 1; outk 6= h + 1. Caso II ink = outk; ink 6= h + 1. Caso III ink = 6 h + 1; outk = h + 1. Caso IV ink = h + 1; outk = 6 h + 1. Caso V ink = outk; ink = h + 1.
Vejamos em detalhe o caso I, quando ink and outk s~ ao blocos diagonais distintos, como mostrado na gura 1. Neste caso os unicos ENN's na coluna saindo est~ ao no bloco outkB outj. Analogamente os unicos ENN's na coluna entrando na base, a, est~ ao em inka. De nimos y A0a, e u Q0a = U t A0a = U ty. Notamos que os vetores y e u preservam a estrutura blocada da base. Assim, os ENN's em u est~ ao nos blocos ink u e h u,
+1 "
ink u h+1 u
"
ink V
ink W
Para atualizar U removemos a coluna outj do bloco outk, e inserimos u como a ultima coluna de ink U . Depois apenas temos que reduzir U a uma matriz triangular superior atraves de transformac~ oes ortogonais. 1. Leve 2. Leve
h
outk V h+1 u
outk W
i
S a triangular.
+1
3. Insira a primeira linha de h U , como a ultima linha de ink U . 4. Insira a ultima linha de outk U como a primeira de h U .
Os outros casos s~ ao bastante similares. Os esquemas nas guras 2, 3 e 4 s~ ao os analogos do esquema na gura 1, e d~ ao uma descric~ ao sumaria de cada um dos casos. Estes s~ ao os passos para o caso I : 1. No no ink, compute yink = (B ink )taink e yb = (C ink )taink . pTime = m(ink)n(ink) + m(ink)n(b + 1) 2dbmax , INC = 0 .
+1 2
Ent~ ao insira uink como a ultima coluna de V ink . pTime = (1=2)n(ink) + n(ink)n(b + 1) (3=2)dbmax , INC = 0 .
2
3. Do no ink envie z ao no 0. pTime = 0 , INC = n(b + 1) dbmax . 4. No no 0 compute ub = S tz. pTime = (1=2)n(b + 1) (1=2)dbmax , INC = 0.
+1 2 2
outk . Ent~ 5. (a) No no outk, remova a coluna V outk ao reduza V outk W outk de Hes;outj de V senberg para triangular superior. (b) No no 0, reduza ub S para triangular superior. Observe que as operac~ oes nos passos 5a e 5b s~ ao independentes, portanto pTime = 2n(ink) + 4n(ink)n(b + 1) ^ 2n(b + 1) 6dbmax , INC = 0.
h +1 i 2 2 2
6. Do no 0 envie o vetor S ; ao no ink, onde ele e inserido como a ultima coluna de W ink . Do ink no 0 envie o elemento ub ao no ink, onde ele e inserido como Un ink ;n ink . Do no outk outk envie vetor Wn outk ; ao no 0, onde ele e inserido como a primeira linha de S . pTime = 0 , INC = 2n(b + 1) + n(outk) 3dbmax.
1 +1 1 ( )+1 ( )+1 ( )
107
"
pTime = 4n(b + 1) 4dbmax , INC = n(b + 1) dbmax. ink 7. (a) Do no 0 envie o vetor modi cado Vnink ink ;n ink Wn ink ; de volta ao no ink . (b) No no 0, reduza S de Hessenberg para triangular superior. pTime = 2n(b + 1) 2dbmax , INC = n(b + 1) dbmax.
h i ( ) ( ) ( ) 2 2
Estes s~ ao os passos do caso III : Os passos 1|4 s~ ao exatamente como no caso I. 5. (a) No no k = 1 : b remova a coluna W k;outj de W k . (b) No no 0 reduza ub S para triangular superior. Remova S ;outj de S . pTime = 2n(b + 1) 2dbmax , INC = 0.
h +1 i 2 2
6. Do no 0 envie ao no ink, ub para ser inserido em V ink como Vnink ink ser inserido como a ultima coluna de W ink . pTime = 0 , INC = n(b + 1) dbmax.
+1 1 (
)+1
;n(ink)+1 ,
e S ; para
1
Estes s~ ao os passos do caso IV : 1. No no k=1:b, compute yk = (B k )tak e xk = (C k)tak . pTime = ^b m(k)n(ink) + m(k)n(b + 1) 2dbmax , INC = 0.
1 2
uk = V k W k 0 I zk
# "
t " ink y xk
2
3. Do no k=1:b envie zk ao no 0, onde acumulamos z = b zk . pTime = b n(b + 1) b dbmax , INC = b n(b + 1) b dbmax.
P 1
4. No no 0 compute ub = S tz, e insira ub como a ultima coluna de S . pTime = (1=2)n(b + 1) (1=2)dbmax , INC = 0.
+1 +1 2 2
108
h 2 2
outk , e reduza V outk W outk para triangular superior. 5. remova a coluna V outk ;outj de V pTime = 2n(outk) + 4n(outk)n(b + 1) 6dbmax , INC = 0.
6. Envie o vetor Wnoutk ouk ; do no outk ao no 0, onde o inserimos como a primeira linha de S , e reduza S a triangular. pTime = 2n(b + 1) 2dbmax , INC = n(b + 1) dbmax.
( ) 2 2
Estes s~ ao os passos do caso V : Os passos 1|4 s~ ao exatamente como no caso IV. 5. No no k=1:b, remova a coluna W k;outj de W outk , e insira uk como a ultima coluna de W k . No no 0 remova a coluna S ;outj de S , e insira ub como a ultima coluna de S . pTime = 0 , INC = 0.
+1
A complexidade do procedimento de atualizac~ ao de U por blocos, bup(), e dada pelo seguinte h teorema: Como na sec~ ao 7.4, dbmax = maxk n(k).
=1
h dbmax h dbmax
Caso o ambiente permita comunicac~ oes em paralelo, podemos substituir h por log(h) nas express~ oes de complexidade.
109
B
outk
B C
1
V
6
W W V
3
=1
B
ink
=2
C B
3
outj = 2
2
u
0 0
? @ @ @
@ @ @
@ @
* 0 0
@ @ @ -
0 Caso I
110
* 0 0 0 0
x x x Caso II 0 0
@ @ @
0 @@ 0 @@ 0 0 0
@ @
Caso III
@ @ @ @
x@@ @
111
@ @ @ @
0 Caso IV
0 Caso V
112
Matlab
Historico
Matlab, de Matrix Laboratory, e um ambiente interativo para computac~ ao envolvendo matrizes. Matlab foi desenvolvido no inicio da decada de 80 por Cleve Moler, no Departamento de Ci^ encia da Computac~ ao da Universidade do Novo Mexico, EUA. Matlab coloca a disposic~ ao do usuario, num ambiente interativo, as bibliotecas desenvolvidas nos projetos LINPACK e EISPACK. Estes projetos elaboraram bibliotecas de dom nio publico para Algebra Linear. LINPACK tem rotinas para soluc~ ao de sistemas de equac~ oes lineares, e EISPACK tem rotinas para calculo de autovalores. Os manuais destes projetos s~ ao portanto documentac~ ao complementar a documentac~ ao do Matlab. Vers~ oes posteriores de Matlab, atualmente na vers~ ao 4.0, foram desenvolvidas na rma comercial MathWorks Inc., que det^ em os direitos autorais destas implementac~ oes. As vers~ oes recentes do produto Matlab melhoram signi cativamente o ambiente interativo, incluindo facilidades gra cas de visualizac~ ao e impress~ ao; todavia a \Linguagem Matlab" manteve-se quase inalterada. Existem varios interpretadores da linguagem Matlab em dom nio publico, como Matlab 1.0, Octave e rlab. Existem tambem outros interpretadores comerciais de Matlab, como CLAM. Existem ainda varias Tool Boxes, bibliotecas vendidas pela MathWorks e por terceiros, com rotinas em Matlab para areas espec cas. Usaremos a gra a de nome proprio, Matlab, como refer^ encia a linguagem, o nome em maiusculas, MATLAB, como refer^ encia ao produto comercial da MathWorks, e a gra a em minusculas, matlab, como refer^ encia a um interpretador generico da linguagem Matlab.
O Ambiente
Para entrar no ambiente matlab, simplesmente digite \matlab". O prompt do matlab e >> , que espera por comandos. Para sair use o comando quit. Dentro do ambiente matlab, um comando precedido do bang, !, e executado pelo sistema operacional, assim: usando !dir ou !ls caremos sabendo os arquivos no diretorio corrente, e usando !edit , !vi ou !emacs , seremos capazes de editar um arquivo. Normalmente Matlab distingue maiusculas de minusculas. 113
114
Matlab
O comando help exibe todos os comandos e s mbolos sintaticos dispon veis. O comando help nomecom fornece informac~ oes sobre o comando de nome nomecom. O comando diary nomearq abre um arquivo de nome nomearq, e ecoa tudo que aparece na tela para este arquivo. Repetindo o comando diary fechamos este arquivo. O formato dos numeros na tela pode ser alterado com o comando format. Os comandos who e whos listam as variaveis em exist^ encia no espaco de trabalho. O comando clear limpa o espaco de trabalho, extinguindo todas as variaveis. O comando save nomearq guarda o espaco de trabalho no arquivo nomearq, e o comando load nomearq carrega um espaco de trabalho previamente guardado com o comando save. Em Matlab ha dois terminadores de comando: a v rgula, , , e o ponto-e-v rgula, ; . O resultado de um comando terminado por v rgula e ecoado para a tela. O terminador ponto-e-v rgula n~ ao causa eco. Resultados ecoados na tela s~ ao atribu dos a variavel do sistema ans (de answer, ou resposta). O terminador v rgula pode ser suprimido no ultimo comando da linha. Para continuar um comando na linha seguinte devemos terminar a linha corrente com tr^ es pontos, ... , o s mbolo de continuac~ ao. O sinal de porcento, % , indica que o resto da linha e comentario.
Matrizes
O tipo basico do Matlab e uma matriz de numeros complexos. Uma matriz real e uma matriz que tem a parte imaginaria de todos os seus elementos nula. Um vetor linha e uma matriz 1 n, um vetor coluna uma matriz n 1, e um escalar uma matriz 1 1. As atribuic~ oes A = 1, 2, 3; 4, 5, 6; 7, 8, 9]; ou A = 1 2 3; 4 5 6; 7 8 9]; , s~ ao equivalentes, e atribuem a variavel A o valor 1 2 3 A= 4 5 6 7 8 9
2 6 6 4 3 7 7 5
Matrizes s~ ao delimitadas por colchetes, elementos de uma mesma linha s~ ao separados por v rgulas (ou apenas por espacos em branco), e linhas s~ ao separadas por ponto-e-v rgula (ou pelo caracter nova-linha). O apostrofe, ' , transp~ oem uma matriz. E facil em Matlab compor matrizes blocadas, desde que os blocos tenham dimens~ oes compat veis! Por exemplo: 1 2 5 7 5 1 2 A = 3 4 ; B = 6 ; C = 8 ; D= A,B;C']; D = 3 4 6 7 8 9 9 Cuidado ao concatenar matrizes com os espacos em branco, pois estes s~ ao equivalentes a v rgulas, separando elementos. Assim: 1,2+3]== 1 5] mas 1,2 +3]== 1,2,3].
" # " # 6 6 4 7 7 5 6 6 4 7 7 5 2 3 2 3
Matlab
115
Ha varias func~ oes para gerar matrizes e vetores especiais: zeros(m,n), ones(m,n) e rand(m,n) s~ ao matrizes de dimens~ ao m n com, respectivamente, zeros, uns, e numeros aleatorios em 0,1]. O vetor i:k:j e o vetor linha i; i + k; i + 2k; : : : i + nk], onde n = max m j i + mk j . Podemos suprimir o \passo" k = 1, escrevendo o vetor i:1:j simplesmente como i:j. Se v e um vetor, diag(v) e a matriz diagonal com diagonal v , se A e uma matriz quadrada, diag(A) e o vetor com os elementos da diagonal principal de A. A matriz identidade de ordem n e eye(n), o mesmo que diag(ones(1,n)). A(i,j) e o elemento na i-esima linha, j -esima coluna de A, m n. Se vi e vj s~ ao vetores de ndices em A, i.e. vetores linha com elementos inteiros positivos, em vi n~ ao excedendo m, e em vj n~ ao excedendo n, A(vi,vj) e a sub-matriz do elementos de A com ndice de linha em vi e ndice de coluna em vj . Em particular A(1:m,j), ou A(:,j) e a j -esima coluna de de A, e A(i,1:j), ou A(i,:), e a i-esima linha de A. Exemplo: 11 12 13 A = 21 22 23 31 32 33
6 6 4 2 3 7 7 5
vi = 3 1
"
vj = 2 3
"
33 A(vi; vj ) = 32 12 13
"
As operac~ oes de adic~ ao, subtrac~ ao, produto, divis~ ao e pot^ encia, + - * / ^, s~ ao as usuais da algebra linear. O operador de divis~ ao a esquerda, \, fornece em x = A\b; uma soluc~ ao x j A x = b. O operador de divis~ ao a direita, / , fornece em a = b/A; uma soluc~ ao x j x A = b. Quando o sistema e bem determinado isto e o mesmo que, respectivamente, inv(A)*b ou b*inv(A). (Quando o sistema e super-determinado x e uma soluc~ ao no sentido dos m nimos quadrados.) Os operadores aritmeticos de produto, pot^ encia e divis~ ao tem a vers~ ao pontual, .* .^ ./ .\ , que s~ ao executados elemento a elemento. Exemplo:
x= 5 5 5 ; y=
1 0 1 ; x: y =
5 0 5
Matlab e uma linguagem declarativa (em oposic~ ao a imperativa) onde as variaveis s~ ao declaradas, dimensionadas e redimensionadas dinamicamente pelo interpretador. Assim, se A presentemente n~ ao existe, A=11; declara e inicializa uma matriz real 1 1. Em seguida, o comando A(2,3)=23; redimensionaria A como a matriz 2 3 11, 0, 0; 0, 0, 23]. A nome da matriz nula e ]. A atribuic~ ao A(:,2)= ]; anularia a segunda coluna de A, tornado-a a matriz 2 2 11, 0; 0, 23].
Controle de Fluxo
Os operadores relacionais da linguagem s~ ao < <= > >= == ~=, que retornam valor 0 ou 1 conforme a condic~ ao seja verdadeira ou falsa. Os operadores logicos, n~ ao e ou, s~ ao, respectivamente, ~ & | . Matlab possui os comandos de uxo for { end, while { end e if { elseif { else { end, que tem a mesma sintaxe do Fortran, exempli cada a seguir. Lembre-se de n~ ao escrever a palavra elseif como duas palavras separadas.
116
for i=1:n for j=1:m H(i,j)=1/(i+j-1); end end if(x<0) signx=-1; elseif(x>0) signx=1; else signx=0; end fatn=1; while(n>1) fatn=fatn*n; n=n-1; end
Matlab
Uma considerac~ ao sobre e ci^ encia: Matlab e uma linguagem interpretada, e tempo de interpretac~ ao de um comando simples pode ser bem maior que seu tempo de execuc~ ao. Para tornar o programa rapido, tente operar sobre matrizes ou blocos, evitando loops expl citos que operem numa matriz elemento por elemento. Em outras palavras, tente evitar loops que repetem um comando que atribui valores a elementos, por atribuic~ oes a vetores ou matrizes. As facilidades no uso de vetores de ndices, os operadores aritmeticos pontuais, e func~ oes como max , min , sort , etc., tornam esta tarefa facil, e os programas bem mais curtos e leg veis.
Matlab
%para operar sobre blocos, e nao elementos! m,n]=size(v); if( m ~= 1 erro; else K=max( m,n]); mabel= abs(v(1)); mabin= 1; for k=2:K if( abs(v(k)) > mabel ) mabel= abs(v(k)); mabin= k; end%if end%for end%else & n ~= 1 )
117
Para referir-mo-nos, dentro de uma func~ ao, a uma variavel externa, esta deve ter sido declarada uma variavel global com o comando global. A forma de especi car uma variavel como global muda um pouco de interpretador para interpretador, e mesmo de vers~ ao para vers~ ao: Diga help global para saber os detalhes de como funciona a sua implementac~ ao.
Bibliogra a
Colema-88] T.F.Coleman and C.F.van Loan. A Matrix Computation Handbook. SIAM Publications, Philadelphia. Moler-81] C.B.Moler. Matlab Manual. Department of Computer Science, University of New Mexico. Dongar-79] J.J.Dongarra, J.R.Bunch, C.B.Moler, G.W.Stewart. LINPACK Users' Guide. Society for Industrial and Applied Mathematics, Philadelphia. Smith-76] B.T.Smith, J.M.Boyle, J.J.Dongarra, B.S.Garbow, Y.Ikebe, V.C.Klema, C.B.Moler. Matrix Eigensystem Routines: EISPACK Guide. Lecture Notes in Computer Science, volume 6, second edition, Springer-Verlag. Garbow-77] B.S.Garbow, J.M.Boyle, J.J.Dongarra, C.B.Moler. Matrix Eigensystem Routines: EISPACK Guide Extension. Lecture Notes in Computer Science, volume 51, Springer-Verlag. Moler-92] C.B.Moler, J.N.Litte and S.Bangert. PC-MATLAB User's Guide. The MathWorks Inc. Sherborn, Massachusetts. Eaton-92] J.W.Eaton. Octave Manual. Chemical Engineering Department, University of Texas at Austin. Austin, Texas.
118
Matlab
Bibliogra a
Bibliogra a SUMARIA de suporte para o curso: Bertsekas-89] D.P.Bertsekas J.N.Tsitsiklis. Parallel and Distributed Computation, Numerical Methods. Prentice Hall, 1989. Bunch-76] J.R.Bunch D.J.Rose. Sparse Matrix Computations. Academic Press, 1976. Carey-89] G.F.Carey. Parallel Supercomputing. John Wiley, 1989. Dongarra-91] J.J.Dongarra et all. Solving Linear Systems on Vector and Shared Memory Computers. SIAM, 1991. Du -79] I.S.Du G.W.Stewart. Sparse Matrix Proceedings 1978. SIAM, 1979. Du -86] I.S.Du A.M.Erisman J.K.Reid. Direct Methods for Sparse Matrices. Oxford, 1986 Gallivan-90] K.A.Gallivan et all. Parallel Algorithms for Matrix Computations. SIAM, 1990. George-81] A.George J.W.H.Liu. Computer Solution of Large Sparse Positive-De nite Systems. Prentice Hall, 1981. Golub-83] G.H.Golub C.F.van Loan. Matrix Computations. John Hopkins, 1983. Pissan-84] S.Pissanetzky. Sparse Matrix Technology. Academic Press 1984. Rose-72] D.J.Rose R.A.Willoughby. Sparse Matrices. Plenum Press, 1972. Stern-92] J.M.Stern. Simulated Annealing with a Temperature Dependent Penalty Function. ORSA Journal on Computing, V-4, N-3, p-311-319, 1992. Stern-93] J.M.Stern S.A.Vavasis. Nested Dissection for Sparse Nullspace Bases. SIAM Journal on Matrix Analysis and Applications, V-14, N-3, p-766-775, 1993. Stern-94] J.M.Stern S.A.Vavasis. Active Set Algorithms for Problems in Block Angular Form. Computational and Applied Mathematics, V-13, 1994. Stewart-73] G.W.Stewart. Introduction to Matrix Computations. Academic Press, 1973. Tewarson-73] R.P.Tewarson. Sparse Matrices. Academic Press, 1973. Vorst-89] H.A.van der Vorst P.van Dooren. Parallel Algorithms for Numerical Linear Algebra. North Holland, 1989. 119
120
Bibliogra a