Solvers con matrices (ParteII) - Vargas

Anuncio
Solvers con matrices ralas
T
T
Parte II: Factorizaciones LL , LDL y LU ralas
MC. Miguel Vargas Félix
miguelvargas@cimat.mx
http://www.cimat.mx/~miguelvargas
07/09/10
1/37
Contenido
Contenido
El plan
La famosa factorización Cholesky
Reordenamiento de renglones y columnas
Matrices de permutación
Representación de matrices ralas como grafos
Algoritmos de reordenamiento
Factorización Cholesky simbólica
Llenado de la factorización Cholesky LL’
Llenado de la factorización Cholesky LDL’
Llenado de la factorización LU (con estructura simétrica)
Un ejemplo
¿Preguntas?
Para saber más...
27/09/10
2/37
El plan
El plan
Describiremos tres estrategias para disminuir el tiempo y uso de memoria en la factorizaciones
Cholesky y LU.
1. Reordenar los renglones y columnas de la matriz del sistema de ecuaciones para reducir el
tamaño de las matrices resultantes de la factorización.
2. Utilizar la factorización Cholesky simbólica para obtener la factorización exacta y formar
con ésta matrices ralas sin elementos cero.
3. Cambiando la secuencia de llenado de la factorización es posible paralelizar [Heat91].
Las estrategias anteriores son aplicables también a la factorización LU aplicada a matrices no
simétricas en cuanto a sus valores, pero simétricas con respecto a su estructura. Veremos el
algoritmo.
27/09/10
3/37
La famosa factorización Cholesky
La famosa factorización Cholesky
Un sistema de ecuaciones
A x= y,
con una matriz A∈ℝ n×n simétrica positiva definida puede ser resuelto aplicando a esta matriz la
factorización Cholesky
A= L LT,
donde L es una matriz triangular inferior. Ésta factorización existe y es única [Quar00 p80].
Las fórmulas para determinar los valores de L son


j−1
1
Li j =
Ai j− ∑ L i k L j k , para i j
Lj j
k =1

j−1
L j j= A j j− ∑ L 2j k.
k =1
27/09/10
4/37
La famosa factorización Cholesky
Sustituyendo A x= y tenemos por la factorización A= L LT, tenemos
L L T x= y,
hagamos z= LT x y entonces tendremos dos sistemas de ecuaciones
L z= y,
LT x=z,
con L z= y se resuelve para z haciendo una sustitución hacia adelante con

i−1
1
zi=
y i −∑ Li , k z k
Li , i
k =1

y con L T x=z resolvemos para x sustituyendo hacia atrás con

n

1
x i = T z i − ∑ LiT, k x k .
Li ,i
k =i1
27/09/10
5/37
Reordenamiento de renglones y columnas
Reordenamiento de renglones y columnas
Buscamos reordenar los renglones y las columnas de A, de tal forma que se reduzca el número de
entradas no cero de la matriz factor L. Recordemos la notación   L , que indica el número de
elementos no cero de L.
A=
L=
A la izquierda está una matriz de rigidez A∈ℝ556×556, con   A =1810, a la derecha la matriz
triangular inferior L, con   L =8729, resultante de la factorización Cholesky de A.
27/09/10
6/37
Reordenamiento de renglones y columnas
Ahora con reordenamiento tenemos que la matriz de rigidez A' con   A ' =1810 (con la misma
cantidad de elementos no nulos que A) y su factorización L ' tiene   L ' =3215. Ambas
factorizaciones permiten resolver el mismo sistema de ecuaciones.
A' =
L '=
Es decir reducimos la factorización
  L'  =3215
=0.368.
  L =8729
Para determinar este reordenamiento utilizamos las rutinas de la librería METIS [Kary99].
27/09/10
7/37
Matrices de permutación
Matrices de permutación
Dada P una matriz de permutación, las permutaciones (reordenamientos) de columnas del tipo
A'  P A,
o de renglón
A'  A P
solas destruyen la simetría de A [Golu96 p148]. Para preservar la simetría de A solamente
podemos considerar reordenamiento de las entradas de la forma
A'  P A P T.
Es de notar que esta permutaciones no mueven los elementos fuera de la diagonal a la diagonal.
La diagonal de P A P T es un reordenamiento de la diagonal de A.
Dado que P A P T es además simétrica y positiva definida para cualquier permutación de la matriz
P, podemos entonces resolver el sistema reordenado
 P A P T   P x  = P y .
La elección de P tendrá un efecto determinante en el tamaño de las entradas no cero de L.
Calcular un “buen” reordenamiento de la matriz A que minimice las entradas no cero de L es un
problema NP completo [Yann81], sin embargo existen heurísticas que generan un reordenamiento
aceptable en un tiempo reducido.
27/09/10
8/37
Representación de matrices ralas como grafos
Representación de matrices ralas como grafos
Un grafo G=  X , E  consiste en un conjunto finito de nodos o vértices X junto con un conjunto
E de aristas, los cuales son pares no ordenados de vértices.
Un ordenamiento (o etiquetado)  de G es simplemente un mapeo del conjunto {1, 2, , N } en
X, donde N denota el número de nodos de G. El grafo ordenado por  será denotado como
G =  X  , E   .
Sea A una matriz simétrica de N × N, el grafo ordenado de A, denotado por G A = X A , E A  en el
A
cual los N vértices de G A están numerados de 1 a N, y { x i , x j }∈E si y solo sí ai j =a j i≠0, i≠ j.
Aquí x i denota el nodo de X A con etiqueta i.
1 2 3 4 5 6
1
2
3
4
5
6
[ ]
1
* *
*
* * * *
* *
*
*
*
*
* *
*
* *
2
3
4
5
6
Matriz A
Grafo G
27/09/10
A
9/37
Representación de matrices ralas como grafos
Para cualquier matriz de permutación P ≠ I, los grafos no ordenados (o etiquetados) de A y
P A P T son los mismos pero su etiquetado asociado es diferente.
Así, un grafo no etiquetado de A representa la estructura de A sin sugerir un orden en particular.
Esta representa la equivalencia de las clases de matrices P A P T.
Entonces, encontrar una “buena” permutación de A equivale a encontrar un “buen” ordenamiento
de su grafo [Geor81].
1 2 3 4 5 6
1
2
3
4
5
6
[ ]
6
* *
* * *
*
* * *
* * *
* * *
*
* *
Matriz P A P
2
3
1
4
5
T
Grafo G
27/09/10
P AP
T
10/37
Representación de matrices ralas como grafos
Dos nodos x , y ∈ X en un grafo G  X , E  son adyacentes si { x , y r }∈ E. Para Y ⊂ X, el conjunto
adyacente de Y, denotado como ady  Y , es
adj  Y ={ x ∈ X −Y ∣{ x , y }∈ E para algún y ∈Y }.
En otras palabras, ady  Y  es simplemente el conjunto de nodos en G que no están en Y pero son
adyacentes en al menos un nodo de Y.
1 2 3 4 5 6
1
2
3
4
5
6
[ ]
1
* *
*
* * * *
* *
*
*
*
*
* *
*
* *
2
3
4
5
6
gr  x 2 =3
Ejemplo de adyacencia de un conjunto Y ⊂ X.
Y ={ x 1 , x 2}
adj  Y = { x 3 , x 4 , x 6 }
Para Y ⊂ X, el grado de Y, denotado por gr  Y , es simplemente el número ∣ady  Y ∣, donde ∣S∣
denota el número de miembros del conjunto S. En el caso de que se trate de un solo elemento,
consideraremos gr  { x 2 }≡gr  x 2 .
27/09/10
11/37
Algoritmos de reordenamiento
Algoritmos de reordenamiento
Vamos a hablar muy brevemente de los algoritmos de reordenamiento. La heurística más común
utilizada para realizar el reordenamiento es el algoritmo de grado mínimo. La versión básica de
éste [Geor81 p116] es:
Dada un matriz A y su correspondiente grafo G 0
i  1
repetir
En el grafo de eliminación G i−1  X i−1 , E i−1 , elegir un nodo x i que tenga grado mínimo.
Formar el grafo de eliminación G i  X i , E i  como sigue:
Eliminar el nodo x i de G i−1 y sus aristas inicidentes
Agregar aristas al grafo tal que los nodos adj  x 1  sean pares adyacentes en G i.
i  i1
mientras i∣ X ∣
Cuando el grado mínimo se presenta en varios nodos, usualmente se elige uno de forma
arbitraria.
27/09/10
12/37
Algoritmos de reordenamiento
A continuación un ejemplo de una secuecia dada por el algoritmo de grado mínimo:
i
Grafo de eliminación G i−1
1
2
1
xi
gr  x i 
4
1
2
2
3
2
3
4
5
6
1
2
3
2
6
1
5
3
3
6
5
27/09/10
13/37
Algoritmos de reordenamiento
i
Grafo de eliminación G i−1
xi
gr  x i 
5
2
1
1
6
0
1
4
5
6
6
5
6
1
6
La secuencia de eliminación es entonces 4, 2, 3, 5, 1, 6. Éste es el nuevo orden para la matriz A,
lo que equivale a una matriz de permutación
 
0
0
0
P=
0
1
0
0
1
0
0
0
0
0
0
1
0
0
0
1
0
0
0
0
0
0
0
0
1
0
0
0
0
0
.
0
0
1
Versiones más avanzadas de este algoritmo pueden consultarse en [Geor89].
27/09/10
14/37
Algoritmos de reordenamiento
Ahora vamos a revisar brevemente el método de disección anidada, el cual es más apropiado para
matrices resultantes de problemas de diferencias finitas y elemento finito.
La principal ventaja de este algoritmo comparado con el de grado mínimo es la velocidad y el
poder predecir las necesidades de almacenamiento.
La ordenación producida es similar a la del algoritmo de grado mínimo.
Vamos a introducir la definición de separador. El conjunto S ⊂ X es un separador del grafo
conectado G si el grafo sección G  X −S  está desconectado.
Se muestra que S = { x 3 , x 4 , x 5 } es un separador de G, dado que G  X −S  tiene tres componentes,
los conjuntos de nodos { x 1 }, { x 2 } y { x 6 , x 7 }:
5
1
2
3
G
4
6
7
Ejemplo de un conjunto separador S.
27/09/10
15/37
Algoritmos de reordenamiento
Sea A una matriz simétrica y G A su grafo no dirigido asociado. Consideremos un separador S en
G A, cuya remoción desconecta el grafo en dos conjuntos de nodos C 1 y C 2. Si los nodos en S son
numerados después de aquellos de C 1 y C 2, entonces se inducirá una partición en la
correspondiente matriz ordenada. La observación principal es que los bloques cero en la matriz
continúan siendo cero después de la factorización. Cuando es elegido apropiadamente, una
submatriz “grande” está garantizada de permanecer cero. La idea puede ser aplicada
recursivamente, de tal forma que los ceros puedan ser preservados en la misma forma en las
submatrices.
C1
C2
[
A1 0 V 1
0 A2 V 2
V T1 V T2 AS
]
S
El efecto de un conjunto separador S en una matriz.
Esta procedimiento aplicado de forma de forma recursiva se conoce como algoritmo de disección
anidada generalizado [Lipt77].
Una versión mejorada de este algoritmo es la empleada en la librería METIS [Kary99], ésta es la
que hemos utilizado en la implementación de nuestro programa.
27/09/10
16/37
Factorización Cholesky simbólica
Factorización Cholesky simbólica
Cuando trabajamos con matrices grandes y ralas, es muy costoso calcular directamente L
utilizando

j−1


j−1
1
Li j =
Ai j− ∑ L i k L j k y L j j= A j j− ∑ L 2j k,
Lj j
k =1
k =1
dado que hay muchas entradas L i j que son cero.
La solución a este problema es determinar a priori que elementos de L son distintos de cero y
entonces sólo llenar éstos utilizando estas expresiones.
El algoritmo para determinar los elementos distintos cero en L se le denomina factorización
Cholesky simbólica [Gall90 p86-88].
27/09/10
17/37
Factorización Cholesky simbólica
Para una matriz rala A, definamos
a j ≝ {k  j
Ak j≠0 }, j=1n
como el conjunto de los índices de los elementos no nulos de la columna j de la parte
estrictamente triangular inferior de A.
De forma análoga definimos para la matriz L, los conjuntos
l j ≝ { k  j ∣ L k j ≠0 }, j=1n
∣
Requeriremos de conjuntos r j que serán usados para registrar las columnas de L cuyas
estructuras afectarán a la columna j de L.
para j  1n
rj  ∅
lj  aj
para i∈r j
l j  l j ∪l i ∖ { j }
fin para
min {i∈l j } si l j ≠∅
p 
j
otro caso
r p  r p∪ { j }
fin para
{
Factorización Cholesky simbólica.
27/09/10
18/37
Factorización Cholesky simbólica
Esta algoritmo de factorización simbólica es muy eficiente, la complejidad en tiempo y espacio
es de orden O    L  .
Vamos ahora a mostrar visualmente como funciona la factorización simbólica, ésta puede ser
vista como una secuencia de grafos de eliminación [Geor81 pp92-100].
Dado H 0 = A, podemos establecer una correspondencia entre una transformación de H 0 a H 1
como los cambios correspondientes en sus grafos respectivos. Denotamos H 0 por G H y H 1 por
H
G .
Dado un ordenamiento  implicado por G A, denotemos el nodo   i  por x i.
0
1
1
GH
0
2
3
4
5
6
27/09/10
[
x x
x x x
x x
H 0=
x
x
x
x
x
x
x
x
x
x
x
]
19/37
Factorización Cholesky simbólica
1) Eliminar el nodo x 1 y sus aristas incidentes
2) Agregar las aristas a el grafo tal que los nodos en adj  x 1  sean pares adyacentes en G H .
1
1
G
2
H0
3
4
5
6
2
G
H1
x
x
3
H 1=
4
6
[
[
x x
x x x
x x
H 0=
x
x
x
5
x
27/09/10
x
x
x
x
x
x
x
x
x
x
x
x
x
]
]
x
X
x
x
x
x
X
x
x x
x x
20/37
Factorización Cholesky simbólica
1) Eliminar el nodo x 2 y sus aristas incidentes
2) Agregar las aristas a el grafo tal que los nodos en adj  x 2  sean pares adyacentes en G H .
2
2
GH
1
H 1=
4
6
5
4
GH
[
[
3
3
2
H 2=
6
x
x
5
x
x
x
x
x
X
x
x
x
x
x
x
x
x
x
x
x X
27/09/10
x
x
x
X
x x
x x
]
]
x
x x
X
x X x X
X x
X
x
x x
X X x x
21/37
Factorización Cholesky simbólica
1) Eliminar el nodo x 3 y sus aristas incidentes
2) Agregar las aristas a el grafo tal que los nodos en adj  x 3  sean pares adyacentes en G H .
3
4
G
H2
H 2=
6
GH
[
[
3
x
x
5
4
3
x X
x
x
x
x
x
x
x
X
H 3=
6
5
27/09/10
x
x
x
x
x
x x
X
x X x X
X x
X
x
x x
X X x x
x
x
X
x
X
x
X
x
X
X
]
]
x
X
x X
X X
x x
x x
22/37
Factorización Cholesky simbólica
1) Eliminar el nodo x 4 y sus aristas incidentes
2) Agregar las aristas a el grafo tal que los nodos en adj  x 4  sean pares adyacentes en G H .
4
GH
3
4
x
x
x
x
x
X
x
x
x
x
x
x
H 3=
6
GH
[
[
4
x
x
6
5
5
H 4=
27/09/10
x
x
x
X
x
X
x
x
X
x
X X
x
X
x
X
X
x
X
x X
X X
x x
x x
x
x
X
X x X
x X X
X x x
X x x
]
]
23/37
Factorización Cholesky simbólica
1) Eliminar el nodo x 5 y sus aristas incidentes
2) Agregar las aristas a el grafo tal que los nodos en adj  x 5  sean pares adyacentes en G H .
5
GH
6
4
GH
5
5
6
[
[
x
x
x
x
x
x
x
x
X
X x X
x X X
X x x
X x x
x
x
x
x
x
x
x
X
x X
X X
x x
x x
x
x
H 4=
X
x
x X X
H 5=
27/09/10
x
x
x
X
x
X X
x
X
x
X
X
]
]
24/37
Factorización Cholesky simbólica
1) Eliminar el nodo x 6 y sus aristas incidentes
2) Agregar las aristas a el grafo tal que los nodos en adj  x 6  sean pares adyacentes en G H .
6
GH
5
6
[
[
x
x
H 5=
H 6=
27/09/10
x
x
x
x
x
x
x
x
X
x
X
X
x
X
x X
X X
x x
x x
x x
x X
X x
x X
X X
x
X
X
X
x
x
x
x
X
x
X X
x
x
x
x
x X
x
X
x
x
]
]
25/37
Factorización Cholesky simbólica
Sea L la matriz triangular factor de la matriz A. Definamos el grafo llenado de G A como el grafo
simétrico G F =  X F , E F , donde F = L LT.
Así el conjunto de aristas E F consiste de todas las aristas en E A junto con todos las aristas
agregadas durante la factorización. Obviamente X F = X A.
1
GH
2
[
3
x x
x
x x x x
x x
x
H 0=
x
x
x
x x
x
x x
4
0
5
6
1
2
[
3
4
x
x
F = L L T=
GF
5
6
x
x
x
x
x
x
x
X
x
X X
x
X
x
X
X
x
X
x X
X X
x x
x x
]
]
Grafos inicial y el resultante de la secuencia de eliminación.
27/09/10
26/37
Llenado de la factorización Cholesky LL’
Llenado de la factorización Cholesky LL’
Las fórmulas para determinar los valores de L son


j−1
1
Li j =
A − ∑ L L , para i j
L j j i j k =1 i k j k

j−1
L j j= A j j− ∑ L 2j k.
k =1
Para hacerlas más eficientes, podemos escribirlas como
1
Li j =
A − ∑
L L
L j j i j k ∈ J  i ∩J  j   i k j k , para i j


k j

L j j= A j j −
∑
k ∈J  j
k j
27/09/10
L 2j k
.
27/37
Llenado de la factorización Cholesky LL’
La secuencia de rellenado que permite la factorización en paralelo es:
L5 4
L6 4
En este ejemplo se puede ver que se pueden calcular de forma independiente L 5 4 y L 6 4. Esto es,
se puede paralelizar el algoritmo de llenado cada columna de L paralelizando en los renglones
[Heat91 pp442-445].
27/09/10
28/37
Llenado de la factorización Cholesky LL’
Una implementación del algoritmo sería:
Para j  1n
Lj j  Aj j
Para q  1∣V j  L ∣
|
|
|
|
|
|
|
|
|
|
|
|
|
q
q
| L j j  L j j −V j  L  V j  L 
L j j   Lj j
T
Lj j  Ljj
Paralelizar para q  1∣J j  LT ∣
|
|
|
|
|
|
|
|
i  J qj  LT 
L i j  Ai j
r  1
s  1
r
  J i  L
s
  J j  L
Repetir
| Mientras 
|
|
27/09/10
| r  r1
r
|   J i  L
Mientras 
| s  s1
s
|   J j  L
Mientras =
| Si = j
| | Salir del ciclo Repetir
r
s
| L i j  L i j −V i  L  V j  L 
| r  r1
r
|   J i  L
| s  s1
s
|   J j  L
L
Li j  i j
Lj j
T
L j i  Li j
|
|
|
|
|
|
|
|
|
|
|
|
|
29/37
Llenado de la factorización Cholesky LDL’
Llenado de la factorización Cholesky LDL’
Las fórmulas para determinar los valores de L son


j−1
1
Li j =
A −∑ L L D , para i j
D j i j k =1 i k j k k
j−1
2
D j = A j j − ∑ L j k D k.
k =1
Para hacerlas más eficientes, podemos escribirlas como
1
Li j =
A − ∑
L L D
D j i j k ∈ J i ∩J  j  i k j k k , para i j


k j
D j= A j j−
L 2j k D k
.
k∈J i
∑
k j
27/09/10
30/37
Llenado de la factorización LU (con estructura simétrica)
Llenado de la factorización LU (con estructura simétrica)
Las fórmulas para determinar los valores de L y U son
j−1
U i j = Ai j − ∑ L i k U k j para i j,
k =1


i−1
1
L j i=
A −∑ L U para i j,
U i i j i k =1 j k k i
i−1
U i i = Ai i − ∑ Li k U k i, L ii =1.
k =1
Para hacerlas más eficientes, podemos escribirlas como
U i j = Ai j − ∑
Li k U j k
k ∈  J  i ∩ J  j  
k j
L j i=
para i j,
1
A j i− ∑
L j k U ik
para i j,
U ii
k ∈ J  j  ∩J  i  


k i
U i i = Ai i −
∑
k ∈ J i 
k i
27/09/10
Li k U i k
, L ii =1.
31/37
Llenado de la factorización LU (con estructura simétrica)
La secuencia en la que se rellenan las entradas de L y U es:
U 4 5U 4 6
En este ejemplo se puede ver que se pueden calcular de forma independiente U 4 5 y U 4 6. Esto es,
se puede paralelizar el algoritmo de llenado de los renglones U paralelizando por columnas y las
columnas de L paralelizando por renglones.
27/09/10
32/37
Llenado de la factorización LU (con estructura simétrica)
Una implementación del algoritmo sería:
Para j  1n
U j j  Aj j
Para q  1∣V j  L ∣
q
q
| U j j  U j j −V j  L  V j  U 
Lj j  1
T
U jj  U jj
Paralelizar para q  1∣J j  L T ∣
|
|
|
|
|
|
|
|
|
|
i  J qj  LT 
L i j  Ai j
T
U ji  A ji
r  1
s  1
r
  J i  L
s
  J j  L
Repetir
| Mientras 
| | r  r1
27/09/10
r
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|   J i  L
Mientras 
| s  s1
s
|   J j  L
Mientras =
| Si = j
| | Salir ciclo Repeat
| L i j  L i j −V ri  L  V sj  U T 
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Li j
|
|
L ji
U ji
T
U Tj i  U Tj i −V sj  L  V ri  U T 
r  r1
r
  J i  L
s  s1
s
  J j  L
Li j

Ujj
 Li j
T
 Ui j
33/37
o le
245
200
190
150
141
100
50
152
101
76
44
34
62
46
142
153
95
61
56
0
27/09/10
sk
y(
1)
sk
Ch
y(
2)
o le
sk
Ch
y(
4)
ole
sk
y(
8)
LU
(1
)
LU
(2
)
LU
(4
)
LU
(8
)
CG
(1
)
CG
(2
)
CG
(4
)
CG
C
+ J G (8
)
CG aco
+ J bi (1
)
CG aco
+ J bi (2
)
CG aco
+ J bi (4
ac
)
ob
i (8
)
250
o le
350
o le
388
Ch
400
Memory [bytes]
Problem:
Dimension:
Elements:
Nodes:
Variables:
nnz(A):
nnz(L):
Solver tolerance
Ch
Ch
sk
y(
1)
o le
sk
y(
Ch
2)
o le
sk
y(
Ch
4)
o le
sk
y(
8)
LU
(1
)
LU
(2
)
LU
(4
)
LU
(8
)
CG
(1
)
CG
(2
)
CG
(4
)
CG
CG
+J
(8
)
ac
CG
ob
i
(1
+J
)
ac
CG
ob
i
(2
+J
)
ac
CG
ob
i
+J
(4
)
ac
ob
i (8
)
Ch
Time [m]
Un ejemplo
Un ejemplo
Edificio
3
264,250
326,228
978,684
69,255,522
787,567,656
1e-5
30,000,000,000
25,000,000,000
300
20,000,000,000
15,000,000,000
10,000,000,000
5,000,000,000
0
34/37
¿Preguntas?
¿Preguntas?
27/09/10
35/37
Para saber más...
Para saber más...
Bibliografía:
[Gall90]
[Geor81]
[Geor89]
[Golu96]
[Heat91]
[Kary99]
[Lipt77]
[Quar00]
[Yann81]
K. A. Gallivan, M. T. Heath, E. Ng, J. M. Ortega, B. W. Peyton, R. J. Plemmons, C. H. Romine,
A. H. Sameh, R. G. Voigt, Parallel Algorithms for Matrix Computations, SIAM, 1990.
A. George, J. W. H. Liu. Computer solution of large sparse positive definite systems. PrenticeHall, 1981.
A. George, J. W. H. Liu. The evolution of the minimum degree ordering algorithm. SIAM
Review Vol 31-1, pp 1-19, 1989.
G. H. Golub, C. F. Van Loan. Matrix Computations. Third edidion. The Johns Hopkins
University Press, 1996.
M T. Heath, E. Ng, B. W. Peyton. Parallel Algorithms for Sparse Linear Systems. SIAM Review,
Vol. 33, No. 3, pp. 420-460, 1991.
G. Karypis, V. Kumar. A Fast and Highly Quality Multilevel Scheme for Partitioning Irregular
Graphs. SIAM Journal on Scientific Computing, Vol. 20-1, pp. 359-392, 1999.
R. J. Lipton, D. J. Rose, R. E. Tarjan. Generalized Nested Dissection, Computer Science
Department, Stanford University, 1997.
A. Quarteroni, R. Sacco, F. Saleri. Numerical Mathematics. Springer, 2000.
M. Yannakakis. Computing the minimum fill-in is NP-complete. SIAM Journal on Algebraic
Discrete Methods, Volume 2, Issue 1, pp 77-79, March, 1981.
27/09/10
36/37
Para saber más...
Próximamente:
Solvers con matrices ralas
Parte III: Gradiente conjugado + precondicionadores Cholesky y LU incompletos
Solvers con matrices ralas
Parte IV: Gradiente conjugado + precondicionadores Sparse Approximate Inverse
27/09/10
37/37
Descargar