A pesquisa Operacional e os Recursos Renováveis 4 a 7 de novembro de 2003, Natal-RN GRAFOS CORDAIS E ÁRVORES DE ELIMINAÇÃO Maximiliano Pinto Damas Instituto Militar de Engenharia Depto. de Engenharia de Sistemas Praça General Tibúrcio 80 CEP 22290-270 Rio de Janeiro – RJ e-mail: [email protected] Claudia Marcela Justel Instituto Militar de Engenharia Depto. de Engenharia de Sistemas Praça General Tibúrcio 80 CEP 22290-270 Rio de Janeiro – RJ e-mail: [email protected] RESUMO Neste trabalho serão apresentados resultados obtidos por LIU utilizando o conceito de árvore de eliminação para grafos cordais. O conceito de árvore de eliminação foi introduzido para definir uma estrutura utilizada no método multifrontal de DUFF e REID que resolve eficientemente sistemas de equações algébricas lineares esparsos. Supondo um grafo cordal e utilizando a árvore de eliminação definido pelo método multifrontal para resolver o sistema de equações correspondente, pode-se obter um O(m½)separador do grafo cordal e descrever o mesmo como grafo de intersecção de subárvores. Palavras-Chave: grafos cordais, grafo de intersecção, conjunto separador, sistemas de equações lineares esparsos, método multifrontal. ABSTRACT In this work we present the results obtained by LIU using the elimination tree for chordal graphs. This concept was introduced to define a structure used in the multifrontal method of DUFF e REID which solves efficiently sparse linear systems. Given a chordal graph we can define the elimination tree used by the multifrontal method to solve the subjacent equation systems. With this elimination tree, a O(m½)-separator of the chordal graph can be obtained. Thus, it is possible to describe the original graph as the intersection graph of a family of subtrees of the elimination tree. Keywords: chordal graphs, intersection graphs, separator set, sparse linear systems, multifrontal. method. 1. INTRODUÇÃO O método de fatorização de matrizes de Cholesky determina um algoritmo O(n3) para resolver sistemas de equações lineares algébricas, onde a matriz de coeficientes é simétrica e definida positiva. Na atualidade, algoritmos iterativos mais complexos, por exemplo algoritmos de pontos interiores em Programação Linear, utilizam o método de Cholesky para inverter matrizes a cada iteração. É importante então obter melhoras na performance de Cholesky quando a matriz de coeficientes for esparsa. O método multifrontal proposto por (DUFF e REID, 1983) procura este objetivo computando a fatorização de uma matriz de maneira adequada para minimizar o espaço de armazenamento e os cômputos realizados durante a mesma. Nos últimos anos, estudos sobre treewidth e tree-decomposition provaram que a eficiência do método multifrontal (tamanho do menor front = tamanho da menor matriz frontal = treewidth do grafo) depende da estrutura do grafo associado à matriz de coeficientes do sistema de equações lineares (BODLAENDER, GILBERT et al. 1995) e (DAMAS, 2003). Grafos cordais são uma classe importante de grafos perfeitos (SZWARCFITER 1986). Diversos resultados e algoritmos tem sido propostos para esta classe de grafos. Um grafo G=(V,E), sendo n = |V| e m = |E|, é cordal se qualquer ciclo de tamanho maior que quatro não possui cordas. No caso da matriz de coeficientes para um sistema de equações lineares algébricas esparsas, deve-se observar que quando o grafo associado a essa matriz de coeficientes for cordal é possível utilizar algoritmos eficientes para realizar a fatorização da matriz (LIU, 1992) e (DAMAS, 2003). Um conjunto separador de vértices de um grafo conexo G = (V,E) é um conjunto de vértices S ⊆ V tal que o grafo G[V-S] obtido pela remoção S de G torna-se desconexo. Se F é uma família de conjuntos, então o grafo G sobre F com XY ∈ E(G) ⇔ X ∩Y = ∅ é chamado de grafo de intersecção de F. Referências sobre conceitos básicos em teoria de grafos podem ser encontradas em (SZWARCFITER, 1986) e (DIESTEL, 2000). Alguns resultados podem ser obtidos da utilização da árvore de eliminação definida no método multifrontal para o caso particular em que o grafo associado à matriz de coeficientes do sistema de equações lineares é um grafo cordal. O objetivo deste trabalho é apresentar resultados conhecidos na literatura que permitem determinar um O(m½)-separador do grafo cordal e descrever o mesmo como grafo de intersecção de subárvores a partir da árvore de eliminação. O trabalho está organizado da seguinte maneira. A Seção 2 apresenta uma breve descrição do método de fatorização de Cholesky e do método Multifrontal. Na Seção 3 é definido o conceito de árvore de eliminação e apresentada a sua obtenção a partir da matriz de fatorização. A Seção 4 apresenta algumas informações obtidas a partir da árvore de eliminação que serão utilizadas nas seções seguintes. As Seções 5 e 6 introduzem os resultados obtidos por Liu para grafos cordais utilizando árvore de eliminação. 2. FATORIZAÇÃO DE CHOLESKY E MÉTODO MULTIFRONTAL Seja dado o seguinte Sistemas de Equações Algébricas Lineares (1) Ax = b, onde a matriz de coeficientes A ∈ Rn×n é esparsa, simétrica e definida positiva, o vetor solução x ∈ Rn e o vetor lado direito b ∈ Rn. Uma representação que explora plenamente a característica esparsa de uma matriz A, é considerá-la na forma de um grafo GA (não-orientado) onde cada aresta unindo os vértices xi e xj indica a existência de elemento não nulo na posição aij (e aji por simetria). Consideram-se x1, x2, ..., xn os vértices do grafo, onde o vértice xj corresponde a jésima linha/coluna da matriz A. Na Figura 1 tem-se um exemplo de uma matriz de coeficientes A e o grafo associado GA. 2454 a ● ● b ● ● ● c ● d A= ● e f ● ● ● ● ● ● ● ● ● ● g ● ● ● ● ● i ● ● h ● ● j FIG. 1 - Exemplo de uma matriz de coeficientes A e seu respectivo grafo GA. Quando a matriz de coeficientes é simétrica, ela é geralmente decomposta como segue: (2) PAPT = LDLT, onde P é uma matriz de permutação que reorganiza a matriz A para preservar a esparsidade, e L e D são matrizes triangulares e diagonais, respectivamente. O processo de fatorizacão de uma matriz pode ser pensado como o processo de eliminação de vértices no grafo correspondente GA. O processo de eliminação repete os seguintes passos até não existirem mais vértices: determinar um vértice v, removê-lo do grafo, e adicionar arestas entre os vizinhos de v que ainda não são adjacentes. As arestas adicionadas durante o processo de eliminação são chamadas de arestas de preenchimento (também chamadas como elemento de preenchimento). O grafo GFπ é obtido pela adição no grafo GA de todas as arestas de preecnhimento que surgem quando a eliminação é realizada de acordo com uma ordenação π sobre os vértices de GA. No decorrer deste trabalho denominaremos grafo de preenchimento ao grafo GFπ correspondente ao processo de eliminação de vértices dado pela ordenação π descrito para um grafo G. Quando não mencionarmos a seqüência de vértices π, significa que estaremos abordando o grafo de preenchimento de um modo amplo, e nos referiremos a ele como GF. Uma seqüência de vértices cuja eliminação na ordem estabelecida produz zero elementos (arestas) de preenchimento é também chamada de um esquema de eliminação perfeita (ROSE, TARJAN , LUEKER, 1976). Um método muito utilizado na literatura para resolver sistemas de equações lineares algébricas quando a matriz de coeficiêntes A é simétrica e definida positiva é o método de fatorização de Cholesky que consiste em obter o fator de Cholesky denominado L, matriz triangular inferior, tal que A = LLT. A partir desta fatorização da matriz A pode-se solucionar o sistema (1) pela solução de dois sistemas triangulares equivalentes (3) Ly = b e LTx = y. 2455 O primeiro passo de um procedimento iterativo para obter a fatorização de Cholesky pode ser descrito da maneira seguinte: (4) A = d wT w C = d1/2 0 I 0 d1/2 wT/d1/2 w/d1/2 I 0 C –wwT/d 0 I Em (4), d denota a primeira entrada da diagonal e w é um vetor com dimensão (n-1). C é uma matriz com dimensão (n-1)(n-1). O vetor w e o valor d1/2 juntos formam a primeira coluna de L. As colunas restantes de L podem ser obtidas aplicando recursivamente a equação acima para a submatriz C – wwT/d. Esta submatriz é densa e deve ser armazenada para uso nas eliminações posteriores. Além disso, o vetor w é formado pelos elementos não nulos abaixo da diagonal na coluna que está sendo eliminada. A equação (4) também mostra que um elemento nulo em A pode tornar-se num elemento não nulo em L, pois se consideramos w = (w1...wi...wj... wn-1) com wi e wj ≠ 0, e então, wij ≠ 0 em wwT e, deste modo um elemento na matriz C – wwT/d pode ser não nulo mesmo que o correspondente elemento aij seja igual a 0. Em geral, a matriz L tem muitos mais elementos não nulos do que a matriz A e este fato influencia enormemente a performance de todo processo de fatorização. A quantidade de elementos não nulos introduzidos pela fatorização (ou elementos de preenchimento no grafo correspondente) pode ser reduzida reordenando as linhas e colunas de A antes da fatorização. Supondo que j–1 passos da fatorização foram realizados, sendo j > 1, tem-se: (5) A = B VT V C = LB 0 I 0 VLB-T I 0 C – VB-1VT LBT LB-1VT 0 I A partir da equação (5) obtém-se a igualdade B = LBLBT , que corresponde a fatorização de Cholesky para a submatriz B da matriz A cuja dimensão é (j-1)x(j-1). O Complemento de Schur definido como C – VB-1VT representa a parte da matriz A que resta para ser fatorizada após (j-1) passos. Observe na equação (5) a submatriz –VB-1VT cuja dimensão é (n-j+1)x(n-j+1) e que representa as atualizações já computadas com as (j-1) linhas e colunas na submatriz C para formar a submatriz C - VB-1VT. A submatriz de atualizações pode-se expressar em termos das primeiras (j-1) colunas do fator LB da seguinte forma: lj,k j-1 –VB-1VT = -(VLB-T) (LB-1VT) = - Σ (lj,k ... ln,k) k=1 ln,k Um método eficiente para computar a fatorização de uma matriz esparsa é o método multifrontal desenvolvido por Duff e Reid (DUFF e REID, 1983) que reorganiza a fatorização de Cholesky de uma matriz esparsa numa seqüência de fatorizações parciais de pequenas matrizes densas. A característica inovadora deste método é que as contribuições da atualização de uma coluna da matriz de fatores para a submatriz restante são computadas, mas não aplicadas diretamente às entradas da matriz. Antes da atualização da matriz ser efetivamente realizada o método espera que as demais contribuições de outras colunas do fator LB sejam calculadas, para só assim dar prosseguimento às atualizações. Assim, a matriz de atualizações é simplesmente a soma dos produtos de porções apropriadas das (j-1) colunas do fator LB. O método multifrontal oferece um gerenciamento efetivo desta soma de produtos na submatriz –VB-1VT quando a matriz A for esparsa. 2456 3. ÁRVORE DE ELIMINAÇÃO No sistema (1) a matriz A é irredutível, portanto cada uma das primeiras (n-1) colunas de L em (2) tem no mínimo um elemento não-nulo fora da diagonal principal. Denota-se por Lt a matriz resultante da remoção de todos os elementos não-nulos da coluna j < n de L com exceção do primeiro elemento fora da diagonal principal, e denota-se por Ft = Lt + LtT a matriz da árvore de eliminação. A árvore de eliminação T (ou TA quando for necessário identificar a matriz correspondente ao grafo) consiste de n nós, cada um correspondente a uma coluna na matriz L, e é definida da seguinte forma: O nó p é pai do nó j em T se e somente se p = min {i > j | lij ≠ 0}. Na Figura 2 temos um exemplo da matriz de preenchimento F e a matriz da árvore de eliminação Ft correspondentes à matriz de coeficientes A da Figura 1. Os elementos não-nulos fora da diagonal são indicados por “●” enquanto que “o” é usado para denotar um elemento de preenchimento na matriz. a ● ● b ● ● ● c ● o d F= ● ● e ● ● ● ● ● ● g o o ● o h ● ● ● ● ● i o ● ● ● o j ● b ● ● c ● d Ft = ● f ● a ● ● ● e ● ● ● ● f ● ● g o o h ● ● i O o j FIG. 2 - A matriz de preenchimento F e a matriz Ft da árvore de eliminação, relativas a matriz de coeficientes A da Figura 1. 2457 Na Figura 3 temos um exemplo do grafo de preenchimento GF e a árvore de eliminação TA correspondentes às matrizes da Figura 2. FIG. 3 - O grafo de preenchimento GF e a árvore de eliminação TA correspondentes as matrizes F e Ft apresentadas na figura anterior. Para um grafo G e um vértice v em G, utiliza-se AdjG(v) para denotar o conjunto de vértices adjacentes a v no grafo. Pode-se estender este operador Adj para subconjuntos de vértices. Para um subconjunto de vértices S, define-se que o conjunto adjacente de S em G é AdjG(S) = {x ∉ S | x ∈ Adj(v) para qualquer v ∈ S}. 4. INFORMAÇÕES OBTIDAS DA ÁRVORE DE ELIMINAÇÃO 4.1 CARACTERIZAÇÃO DAS ARESTAS DE PREENCHIMENTO Assumiremos que i, j e k são índices e satisfazem a condição i > j > k. Teorema 1 (LIU, 1992). Se lij ≠ 0, então o nó xi é um ancestral de xj na árvore de eliminação. Teorema 2 (ROSE, TARJAN e LUEKER, 1976). Seja i > j. Temos lij ≠ 0 se e somente se existir um caminho xi, xp1, ..., xpt, xj no grafo GA tal que todos índices em {p1, ..., pt} forem menores que j. Corolário 1 (LIU, 1990). O subconjunto de vértices AdjGA (T [xj]) ∪ {xj} corresponde a uma clique no grafo de preenchimento GF. 4.2. ESTRUTURA DAS LINHAS NO FATOR DE CHOLESKY Define-se Tr[xi] como a estrutura da i-ésima linha do fator de Cholesky L, isto é Tr[xi] = {xi | lij ≠ 0, j ≤ i}. Assim, deduz-se pelo Teorema 1 que Tr[xi] ⊆ T[xi], e do Teorema 2 que se aik ≠ 0, a estrutura Tr[xi] incluirá todos os nós sobre o caminho entre xk e xi na árvore de eliminação. Em (LIU, 1990) denominou-se Tr[xi] a subárvore da i-ésima linha de L. 2458 5. REPRESENTAÇÃO DOS GRAFOS DE INTERSECÇÃO DE GRAFOS CORDAIS Seja a matriz de coeficientes A, definida em (1), com o seu grafo GA e o respectivo grafo de preenchimento GF. Consideremos x1, x2, ..., xn a seqüência de eliminação de vértices. Seja TA a árvore de eliminação correspondente, com Tr[x1], ...,Tr[xn] como a seqüência de subárvores de linha, como definida na Seção 4.2. Lema 1 (LIU, 1990). lij ≠ 0 se e somente se Tr[xi] ∩ Tr[xj] ≠ ∅. Prova: ⇒) Assumir i > j. Pela definição tem-se que lij ≠ 0 se e somente se xj ∈ Tr[xi] ∩ Tr[xj] e conseqüentemente Tr[xi] ∩ Tr[xj] ≠ ∅. ⇐) Por outro lado, se a intersecção das duas subárvores de linha é não vazia, digamos xs ∈ Tr[xi] ∩ Tr[xj], isto implica que o nó xj situa-se no caminho entre xs e xi na árvore de eliminação. Assim xj ∈ Tr[xi] e isto implica que lij ≠ 0. □ Teorema 3 (LIU, 1990). O grafo cordal GF é o grafo de intersecção das subárvores de linha na árvore de eliminação TA. Prova: O resultado é obtido diretamente da aplicação do Lema 1. □ O resultado do Teorema 3 oferece um método construtivo para determinar a representação do grafo de intersecção de qualquer grafo cordal. Na verdade, para um dado grafo cordal G, primeiramente deve-se encontrar um esquema de eliminação perfeita x1, ..., xn para G. Após, obtém-se a árvore de eliminação desta seqüência de nós e as subárvores de linha associadas Tr[x1], ..., Tr[xn]. Assim o grafo cordal G é determinado pelo grafo de intersecção destas subárvores de linha na árvore de eliminação. Na Figura 4 apresentamos um exemplo de subárvore de linha para o grafo de preenchimento GF e árvore de eliminação TA apresentados na Figura 3. Sabe-se que o grafo de preenchimento GF é um grafo cordal, ou seja, um dos possíveis supergrafos do grafo associado à matriz A completado com as arestas que faltavam para ele ser considerado um grafo cordal. FIG. 4 – As subárvores de linha para a matriz A do exemplo da Figura 1. Para cada subárvore está associado um identificador (vi, 1 ≤ i ≤ 10) que será utilizado para rotular os vértices do grafo de intersecção que será gerado. 2459 Na Figura 5 tem-se o grafo de intersecção das subárvores de linha apresentadas na Figura 4.0 FIG. 5 – Grafo de intersecção das subárvores de linha da Figura 4. Comparando o grafo obtido na Figura 5 com o grafo de preenchimento da Figura 3 verifica-se que eles são isomorfos, ou seja, estão de acordo com o resultado do Teorema 3. 6. SEPARADORES PARA GRAFOS CORDAIS Seja a matriz F, apresentada na Figura 4, onde GF é um grafo cordal. Assume-se que as linhas e colunas da matriz são ordenadas de maneira tal que não existam elementos de preenchimento. Considere-se TA a árvore de eliminação correspondente. Supor, para o exemplo, o grafo GF e a árvore de eliminação TA apresentadas na Figura 3. O algoritmo separador definido por Gilbert, Rose e Edenbrandt em 1984, encontra um conjunto com no máximo O(m½) vértices, cuja remoção divide um grafo cordal em componentes conexos, sendo cada u3.82 1s0s1ada u3. exia u3a F F 2460 7. REFERÊNCIAS BIBLIOGRÁFICAS BODLAENDER, H., GILBERT, J., HAFSTEINSSON, H e KLOKS, T. Approximating Treewidth, Pathwidth, Frontsize and Shortest Elimination Tree, Journal of Algorithms 18, 238-255, 1995. DAMAS, M. Sobre a solução eficiente de problemas em grafos utilizando treewidth e treedecomposition, Dissertação de Mestrado, Instituto Militar de Engenharia, Rio de Janeiro, Brasil, 2003. DIESTEL, R. Graph Theory, 2a edição, Springer, 2000. DUFF, I. S. e REID, J. K. The multifrontal solution of indefinite sparse symmetric linear equations, ACM Transaction Math. Software 9, p. 302-325, 1983. LIU, J. W. H. The role of elimination trees in sparse factorization, SIAM Journal Matrix Anal. Appl., Volume 11, Número 1, p. 134-172, 1990. LIU, J. W. H. The multifrontal method for sparse matrix solution: Theory and Practice, SIAM Review 34, p. 82-109, 1992. ROSE, D. J., TARJAN, R. E. e LUEKER, G. S. Algorithmic aspects of vertex elimination on graphs, SIAM Journal Comput. 5, p. 266-283, 1976. SZWARCFITER, J. Grafos e Algoritmos Computacionais, 2a edição, Editora Campus Ltda, 1986. 2461