You are on page 1of 52

Calcul Stiin¸ific ¸ t

Capitolul 3: Matrice rare
Bogdan Dumitrescu ˘ ¸ Facultatea de Automatica si Calculatoare Universitatea Politehnica Bucuresti ¸

CS cap. 3: Matrice rare – p. 1/52

Cuprins
• No¸iuni de baza despre matrice rare ˘ t ◦ Formate de memorare

• Permutari pentru produsul MV: algoritmul Cuthill-McKee ˘ • Rezolvarea sistemelor triunghiulare • Factorizarea Cholesky ◦ umplere, arbore de eliminare, factorizare simbolica ˘ ◦ factorizare numerica ˘ • Algoritmi iterativi pentru rezolvarea sistemelor liniare

◦ Algoritmi de înmul¸ire matrice-vector t

◦ permutare, algoritmi: grad minim, nested dissection

CS cap. 3: Matrice rare – p. 2/52

Matrice rare
• O matrice rara are majoritatea elementelor egale cu zero ˘ • Lucram doar cu matrice patrate n × n ˘ ˘ • In general: N Z = O(n) • Notam N Z numarul de elemente nenule ˘ ˘ • Exemplu (didactic): matrice de dimensiune 6 × 6
0

11 15  26  21 22   32 33 34  A= 43 44 45  41  52 54 55 56  62 65 66

         

1

2

3

4

5

6

7

0

1

2

3 nz = 19

4

5

6

7

CS cap. 3: Matrice rare – p. 3/52

Memorarea matricelor rare
• În practica dimensiunile pot fi mult mai mari ˘ • Memorarea a n2 elemente (ca pentru matrice pline), ar

˘ deveni prohibitiva

• De aceea se memoreaza ˘ ◦ valorile elementelor nenule • Formate de memorare ◦ Triplet ("trivial") ◦ pozi¸iile lor t

◦ Comprimat pe linii (compressed row storage) ◦ Comprimat pe coloane (compressed column) ◦ Diagonale "zim¸ate" (jagged diagonal) t ◦ . . . si altele ¸

CS cap. 3: Matrice rare – p. 4/52

Memorare si algoritmi ¸
• Modul de memorare are efect asupra formei algoritmilor si ¸

deci asupra vitezei de execu¸ie pe diverse arhitecturi de t calcul ˘ matrice-vector (util în rezolvarea iterativa a sistemelor liniare)
A ∈ Rn×n , x, y ∈ Rn

• Vom ilustra fiecare format cu algoritmul de înmul¸ire t

• Algoritmul standard pentru calculul y ← y + Ax, cu

Pentru i = 1 : n Pentru j = 1 : n yi ← yi + aij xj
• Pentru matrice plina sunt 2n2 opera¸ii si n2 accese la ˘ t ¸

˘ memorie pentru elementele lui A (o data la fiecare element)

CS cap. 3: Matrice rare – p. 5/52

3: Matrice rare – p. de lungime N Z fiecare ˘ ¸ • Memorie necesara: N Z reali. 6/52 . II si JJ . j) ˘ t • Se utilizeaza doi vectori. 2N Z întregi ˘ nzval = 11 15 21 22 26 32 33 34 41 43 44 45 52 54 55 56 62 65 66 II = 1 1 2 2 2 3 3 3 4 4 4 4 5 5 5 5 6 6 6 JJ = 1 5 1 2 6 2 3 4 1 3 4 5 2 4 5 6 2 5 6 • Elementele nenule pot fi aranjate în orice ordine • Acces dificil la un element oarecare • Informa¸ie redundanta ˘ t CS cap.Formatul triplet • Pentru fiecare element nenul aij se memoreaza pozi¸ia (i.

3: Matrice rare – p. 2N Z accese la memorie.Formatul triplet — produsul MV • Înmul¸ire matrice-vector: t Pentru k = 1 : N Z y(II(k)) ← y(II(k)) + nzval(k) · x(JJ(k)) • 2N Z opera¸ii. 7/52 . exact cât e nevoie t • Algoritmul nu depinde de ordinea de memorare în nzval • Accesele la x si y nu sunt neaparat localizate ˘ ¸ CS cap.

se pune rowptr(n + 1) = N Z + 1 t • Memorie necesara: N Z reali. N Z + n + 1 întregi ˘ CS cap.Formatul comprimat pe linii (CL) • Elementele nenule se memoreaza în ordinea liniilor ˘ • Indicii de coloane se memoreaza integral ˘ • Indicii primelor elemente ale unei linii se memoreaza ˘ separat nzval = 11 15 21 22 26 32 33 34 41 43 44 45 52 54 55 56 62 65 66 colind = 1 5 1 2 6 2 3 4 1 3 4 5 2 4 5 6 2 5 6 rowptr = 1 3 6 9 13 17 20 • Daca nzval(k) = aij . 3: Matrice rare – p. atunci rowptr(i) ≤ k < rowptr(i + 1) ˘ • Conven¸ional. 8/52 .

9/52 . 2N Z accese la memorie t • Accesele la x nu sunt localizate • Vectorii care apar in produsul scalar din a doua bucla sunt ˘ ˘ de regula scur¸i t • Exerci¸iu: algoritm pentru y ← y + AT x ! t CS cap.Formatul CL — produsul MV • Înmul¸ire matrice-vector: t Pentru i = 1 : n Pentru k = rowptr(i) : rowptr(i + 1) − 1 y(i) ← y(i) + nzval(k) · x(colind(k)) • 2N Z opera¸ii. 3: Matrice rare – p.

3: Matrice rare – p. atunci colptr(j) ≤ k < colptr(j + 1) ˘ • Memorie necesara: N Z reali.Formatul comprimat pe coloane (CC) • Similar cu CL. N Z + n + 1 întregi ˘ CS cap. 10/52 . dar pe coloane • Identic cu CL pentru AT • Numit si formatul Harwell-Boeing ¸ nzval = 11 21 41 22 32 52 62 33 43 34 44 54 15 45 55 65 26 56 66 rowind = 1 2 4 2 3 5 6 3 4 3 4 5 1 4 5 6 2 5 6 colptr = 1 4 8 10 13 17 20 • Daca nzval(k) = aij .

2N Z accese la memorie t • Accesele la y nu sunt localizate • Vectorii care apar in SAXPY din a doua bucla sunt de ˘ ˘ regula scur¸i t CS cap. 11/52 .Formatul CC — produsul MV • Înmul¸ire matrice-vector: t Pentru j = 1 : n Pentru k = colptr(j) : colptr(j + 1) − 1 y(rowind(k)) ← y(rowind(k)) + nzval(k) · x(j) • 2N Z opera¸ii. 3: Matrice rare – p.

unde L este ˘ ˘ numarul cel mai mare de elemente nenule pe o linie  11 21 32 41 42 62 15 22 33 43 54 65 0 0  26 0   34 0   44 45    55 56  66 0     nzval =           colind =       1 1 2 1 2 2 5 2 3 3 4 5 0 6 4 4 5 6 0 0 0 5 6 0           • Prima coloana din nzval e o "diagonala zim¸ata". 12/52 . ˘ ˘ t ˘ • Memorie necesara: nL ≥ N Z reali.Formatul diagonale zimtate (DZ-ITPACK) ¸ • Forma simplificata: ITPACK ˘ • Idee: memorare într-o matrice plina n × L. etc. 3: Matrice rare – p. nL întregi ˘ • Eficient când numarul de elemente nenule de pe fiecare ˘ linie este cam acela¸ i s CS cap.

j) · x(colind(i. j)) • 2nL ≥ 2N Z opera¸ii (apar înmul¸iri cu 0) t t • Accesele la x nu sunt localizate • Vectori lungi (N ) ! • Eficient pe calculatoare vectoriale CS cap. 3: Matrice rare – p. 13/52 .Formatul DZ-ITPACK — produsul MV • Înmul¸ire matrice-vector: t Pentru i = 1 : n Pentru j = 1 : L y(i) ← y(i) + nzval(i.

ca în formatul CC ˘ ˘ • La fel indicii de coloane • Format avantajos tot pe calculatoare vectoriale CS cap. 14/52 .Formatul DZ • Rafinare a formatului ITPACK • Liniile matricii sunt permutate în ordinea descrescatoare a ˘ ˘ numarului de elemente nenule (permutarea trebuie ˘ memorata într-un vector suplimentar) • Matricea redusa memorata într-un vector. 3: Matrice rare – p.

se calculeaza P T y ← P T y + (P T AP )(P T x). 15/52 . Calculul permutarii depinde de scopul propus. 3: Matrice rare – p.Cresterea vitezei produsului MV ¸ • Am vazut ca formatul dicteaza algoritmul MV si deci timpul ˘ ˘ ˘ ¸ de execu¸ie t • Alte idei de cre¸ tere a vitezei: s ◦ Format pe blocuri—chiar daca matricele sunt rare. CS cap. t ˘ unde P e o matrice de permutare. ele ˘ pot con¸ine blocuri aproape pline t ◦ Matricea poate fi permutata (explicit sau nu) înainte de ˘ ˘ înmul¸ire.

˘ ˘ memorând însa blocuri în loc de elemente • Blocurile se memoreaza ca fiind pline. 16/52 . 3: Matrice rare – p.Format comprimat pe blocuri • Presupunem ca matricea A este parti¸ionata în blocuri ˘ ˘ t nb × nb 15 11   21 22   32 33 34  A=  41 42 43 44  51 52 55  62 65  16  26        56  66  • Se utilizeaza unul din formatele prezentate anterior. deci inclusiv zerourile ˘ • Format avantajos pe calculatoare cu memorie ierarhica ˘ CS cap.

Format CL pe blocuri • Format comprimat pe linii (un bloc e memorat pe coloane) nzval = 11 21 0 22 15 0 16 26 . 55 65 56 66 colind = 1 3 1 2 2 3 rowptr = 1 3 5 7 • NZB – numarul de blocuri nenule (6 mai sus) ˘ • Memorie necesara: ˘ ◦ N ZB · n2 ≥ N Z reali b ◦ N ZB + n/nb + 1 întregi • Exerci¸iu: produsul MV ! t • Se memoreaza mai pu¸ini întregi decât în formatul CL scalar ˘ t CS cap. . 17/52 . 3: Matrice rare – p. .

3: Matrice rare – p.˘ ¸ Permutari si produsul MV • Matrice de permutare: matricea unitate cu liniile (coloanele) permutate • P T y ← P T y + (P T AP )(P T x): se schimba doar ˘ numerotarea variabilelor • Scop posibil: cre¸ terea localita¸ii accesului la x (în formatul ˘t s CL) sau la y (CC) • Produsului MV pentru CL • Ideal ar fi ca indicii lui x sa fie apropia¸i pentru valori k ˘ t Pentru k = rowptr(i) : rowptr(i + 1) − 1 y(i) ← y(i) + nzval(k) · x(colind(k)) ˘ ˘ apropiate. 18/52 . astfel încât valorile x respective sa ramâna in ˘ memoria rapida ˘ grupa¸i în jurul valorii corespunzatoare diagonalei. t • Situa¸ia ideala: matrice banda—indicii de coloana sunt ˘ ˘ ˘ t CS cap.

19/52 . se utilizeaza metode euristice ˘ ˘ • Reverse Cuthill-McKee: algoritm de reducere a benzii 0 0 10 10 20 20 30 30 40 40 50 50 60 0 10 20 30 nz = 180 40 50 60 60 0 10 20 30 nz = 180 40 50 60 CS cap.Permutarea ”reverse Cuthill-McKee” • Se poate deci cauta o permutare P astfel încât P T AP sa ˘ ˘ ˘ ˘ aiba elementele cât mai aproape de diagonala • Problema e dificila. 3: Matrice rare – p.

dar cu alta ˘ ˘ ˘ • Exerci¸iu: matrice rara 4 × 4. 3: Matrice rare – p. graful asociat. efectul unei ˘ t ˘ ˘ ˘ permutari elementare (care schimba între ele doua linii/coloane) CS cap.Graf de conectivitate • (Ne gândim de acum înainte doar la matrice simetrice) • Asociem matricei A un graf de conectivitate • Nodurile sunt numerotate de la 1 la n • Arcul (i. 20/52 . j) exista daca aij = 0 ˘ ˘ • Gradul unui nod este numarul de arce adiacente: numarul ˘ ˘ ˘ de elemente nenule de pe linia (coloana) respectiva a matricei numerotare a nodurilor • Matricea P T AP are un graf cu structura identica.

Algoritmul Cuthill-McKee • Se porne¸ te de la graful de conectivitate al unei matrice s • Scop: reordonarea nodurilor într-o lista L astfel încât ˘ ˘ ˘ ˘ matricea asociata are largime de banda maxaij =0 |i − j| cât ˘ mai mica acela¸ i grad. 21/52 . în ordine crescatoare a gradului nu sunt deja în L). ordinea e aleatoare) s • Primul în L e nodul cu grad minim (între mai multe noduri cu • Urmatoarele pozi¸ii în L sunt ocupate de vecinii primului ˘ t ˘ nod. 3: Matrice rare – p. • Se continua punând în L vecinii celui de-al doilea nod (daca ˘ ˘ • Ordonarea corespunde unei traversari în la¸ime a unui ˘ ˘t arbore de acoperire al grafului • "Reverse": în final L se ordoneaza invers ˘ CS cap. etc.

1. 4. 6 • Matricea reordonata este cea din dreapta ˘ 1 2 3 4 5 6  × × × ×    × × ×      × × ×   −→  × × ×      × ×   × × ×  5 3 2 1 4 6  × ×   × × ×   × × ×   × × × ×   × × ×  × × ×           CS cap. 3: Matrice rare – p. 22/52 . 2. 3.Cuthill-McKee: exemplu • Pentru matricea din stânga. rezultatul este: 5.

3: Matrice rare – p. 23/52 . pe linia i) n i=1 di • Profilul este • Un profil mai mic înseamna o mai buna localitate a ˘ ˘ acceselor la x în produsul MV. de fapt) profilul ˘ s s • Notam fi indicele celui mai mic j pentru care aij = 0 ˘ • Notam di = i − fi (cât de departe este cel mai departat ˘ ˘ ˘ element de diagonala.De ce ”reverse” ? • Inversarea ordinii nu modifica la¸imea de banda ˘ ˘t ˘ • În schimb mic¸ oreaza (nu cre¸ te. format CL CS cap.

3: Matrice rare – p. dar pornind de s la ambele capete rapid • Rezultatele nu sunt mult mai bune. adica doua noduri ˘ s ˘ ˘ ˘ aflate la distan¸a aproape maxima unul de altul t˘ • (Distan¸a dintre doua noduri este lungimea drumului cel mai ˘ t scurt între ele) • Se construie¸ te lista L ca în Cuthill-McKee. 24/52 .Algoritmul GPS • Al¸i algoritmi de reducere a largimii benzii utilizeaza euristici ˘ ˘ t sau optimizare • Un exemplu: algoritmul Gibbs-Poole-Stockmeyer (GPS) • Se gase¸ te întâi un pseudo-diametru. dar algoritmul e mai CS cap.

pe coloane x←b Pentru j = 1 : n xj ← xj /ajj Pentru i = j + 1 : n xi ← xi − aij xj • Fiecare element al matricei A e folosit exact o data ˘ CS cap. 25/52 . 3: Matrice rare – p. pe linii x←b Pentru i = 1 : n Pentru j = 1 : i − 1 xi ← xi − aij xj xi ← xi /aii • Algoritm pentru rezolvarea Ax = b.Rezolvarea sistemelor triunghiulare • Fie A o matrice inferior triunghiulara: aij = 0. ∀i < j ˘ • Algoritm pentru rezolvarea Ax = b.

2N Z ˘ t • (Elementul diagonal este ultimul pe linia lui !) x←b Pentru i = 1 : n Pentru k = rowptr(i) : rowptr(i + 1) − 2 x(i) ← x(i) − nzval(k) · x(colind(k)) x(i) ← x(i) / nzval(rowptr(i + 1) − 1) CS cap.Rezolvare sisteme triunghiulare ˆn format CL ı • Matricea A este rara. deci e ˘ ˘ t • Matricea fiind memorata pe linii. nu se efectueaza nici o opera¸ie. 26/52 . 3: Matrice rare – p. folosim algoritmul pe linii ˘ ˘ suficient sa parcurgem elementele nenule • Numar de opera¸ii: aprox. memorata în format CL ˘ ˘ • Presupunem ca toate elementele diagonale sunt nenule ˘ • Daca aij = 0.

Rezolvare sisteme triunghiulare ˆn format CC ı • Matricea A este acum memorata în format CC ˘ • Transformam algoritmul pe coloane: ˘ • (Elementul diagonal este primul pe coloana lui !) x←b Pentru j = 1 : n x(j) ← x(j) / nzval(colptr(j)) Pentru k = colptr(j) + 1 : colptr(j + 1) − 1 x(rowind(k)) ← x(rowind(k)) − nzval(k) · x(j) • Exerci¸iu: cum se transforma algoritmul în cazul unui format ˘ t CC pe blocuri ? • Exerci¸iu: algoritm pentru rezolvarea unui sistem superior t ˘ triunghiular (matrice memorata CC sau CL) CS cap. 3: Matrice rare – p. 27/52 .

3: Matrice rare – p. • La nivel de element (ne intereseaza doar triunghiul inferior): ˘ aij = i≥j • De aici rezulta ca se poate calcula ˘ ˘ ℓjj = ajj − ℓij = aij − 1/2 j−1 2 .Factorizarea Cholesky • Fie A o matrice simetrica si pozitiv definita ˘ ¸ ˘ • Factorizarea Cholesky: A = LLT . k=1 ℓjk j−1 k=1 ℓik ℓjk /ℓjj . i>j • ℓjj depinde doar de elementele de pe linia j din L • ℓij depinde de elementele de pe liniile i si j din L ¸ CS cap. cu L inferior triunghiulara ˘ j k=1 ℓik ℓjk . 28/52 .

29/52 . 3: Matrice rare – p.Algoritm pe coloane • Factorul L se poate calcula pe loc în A (din care e memorat doar triunghiul inferior) • Algoritm de calcul Pentru j = 1 : n Pentru k = 1 : j − 1 % calcul element diagonal ajj ← ajj − a2 jk √ ajj ← ajj Pentru i = j + 1 : n % restul elementelor de pe coloana j Pentru k = 1 : j − 1 aij ← aij − aik ajk aij ← aij /ajj • Algoritmul se poate scrie mai compact (dar cu acela¸ i s ˘ numar de opera¸ii). prin unificarea unor bucle t CS cap.

3: Matrice rare – p.Algoritm compact • Algoritmul compact: Pentru j = 1 : n Pentru k = 1 : j − 1 Pentru i = j : n % cmod(j. 30/52 . n3 /3 ˘ t CS cap. k) aij ← aij − aik ajk √ ajj ← ajj Pentru i = j + 1 : n % cdiv(j) aij ← aij /ajj • Numar de opera¸ii: aprox.

în acest caz ˘ t • Caz favorabil extrem:   A=   × × × × × × × × × ×       =⇒ L =     × × × × × × ×      • Caz nefavorabil extrem:   A=   × × × × × × × × × ×       =⇒ L =     × × × × × × × × × ×      CS cap. 3: Matrice rare – p.Cholesky pentru matrice rare • Daca A este rara. L rezulta de obicei rara ˘ ˘ ˘ ˘ • Numar de opera¸ii mai mic. 31/52 .

32/52 . doua elemente nenule pe coloana k . 3: Matrice rare – p. ˘ • Umplerea poate fi caracterizata minimal de un arbore ˘ (numit arbore de eliminare) CS cap. daca ℓ21 = 0. umplere) • Unele elemente ale lui L ar putea rezulta nule în urma • j = 1: prima coloana a lui L e identica cu cea a lui A ˘ ˘ • j = 2: ℓi2 = (ai2 − ℓi1 ℓ21 )/ℓ22 • Rezulta ca ℓi2 = 0 daca ℓ21 = 0 SI ℓi1 = 0 ˘ ˘ ˘ ¸ ˘ calculelor. coloana 2 se "umple" cu toate ˘ ˘ elementele coloanei 1 (pe lânga cele mo¸ tenite de la A) s ℓjk (i > j ) produc un element nenul nou ℓij • În general. anume ℓik .˘ Ce structura are L ? • L mo¸ tene¸ te elementele nenule ale lui A s s • În plus. dar nu ne intereseaza decât zerourile structurale • Deci. în L apar elemente nenule noi (fill-in.

i>j min i • În arborele de eliminare. 3: Matrice rare – p. 33/52 .Arbore de eliminare • Notam p(j) = ˘ ℓij =0. p(j) este parintele nodului j ˘ • Legenda: × – nenule în A. • – umplere ˘ × × × × × × • × × × • • × • • × • × • × × ¯¬ 5 Æ­  d   d ¯¬ ¯¬ 3 4 Æ­ Æ­ ¯¬ ¯¬ 1 2 Æ­ Æ­ CS cap.

3: Matrice rare – p. coloana 1 transmite structura sa coloanei 5. arborele trebuie parcurs de la ˘ ˘ ˘ frunze spre radacina) • În exemplul anterior: ◦ coloana 1 transmite structura sa coloanei 3. structura lui t ˘ L se calculeaza dinamic. deoarece ℓ53 a devenit nenul ◦ indirect. deci nu mai trebuie studiat explicit CS cap.Comentarii • Coloana p(j) mo¸ tene¸ te întreaga structura a coloanei j ˘ s s ˘ (vezi de exemplu în pagina anterioara p(1) = 3) • Pentru a determina structura unei coloane. e suficient sa ne ˘ ˘ uitam la nodurile "fiu" ale unui nod (aten¸ie însa. dar transferul se face prin intermediul coloanei 3. 34/52 . deoarece a31 = 0 ◦ coloana 3 transmite structura sa coloanei 5.

Graful asociat lui L • O coloana k din L transmite structura sa tuturor coloanelor i ˘ pentru care ℓik = 0 • În graful asociat lui L. 35/52 . completând pâna la 9 coloane (matricea are 9 linii) CS cap. ace¸ ti indici i formeaza o clica ˘ ˘ s (conexiune fiecare cu fiecare) • Arborele de eliminare este un arbore de acoperire a acestui graf • Exerci¸iu: construi¸i graful asociat matricei din exemplul t t ˘ anterior. 3: Matrice rare – p.

p(j)) = cstruct(L. j) = cstruct(A. j) CS cap. 3: Matrice rare – p.˘ Factorizare simbolica • Factorizarea Cholesky se face în doi pa¸ i s ◦ Factorizare simbolica: se determina structura lui L si se ˘ ˘ ¸ • Notam cstruct(X. 36/52 . j) Pentru j = 1 : n ˘ calculeaza p(j) cstruct(L. j) mul¸imea pozi¸iilor elementelor nenule ˘ t t ˘ ˘ rezerva memoria corespunzatoare ◦ Factorizare numerica: se calculeaza efectiv L ˘ ˘ din coloana j a matricei X • Algoritm de factorizare simbolica ˘ Pentru j = 1 : n cstruct(L. p(j)) ∪ cstruct(L.

e de preferat sa se ˘ ˘ • Algoritmul devine determine necesarul de memorie în ordinea coloanelor Pentru j = 1 : n cstruct(L. j) = cstruct(L.˘ Factorizare simbolica pe coloane • Algoritmul precedent are defectul ca se opereaza de mai ˘ ˘ ˘ multe ori cu aceea¸ i coloana s • În cazul unei memorari pe coloane. 3: Matrice rare – p. k) ˘ calculeaza p(j) • Pentru eficien¸a. j) ∪ cstruct(L. având în vedere ca un element e folosit o singura ˘ data CS cap. vectorul p se poate organiza sub forma t˘ ˘ ˘ unei liste. j) Pentru k = 1 : j − 1 Dac˘ p(k) = j atunci a cstruct(L. j) = cstruct(A. 37/52 .

j) ◦ gasirea elementelor din cstruct(L. k) în cstruct(L. i ≥ j aij ← aij − aik ajk √ ajj ← ajj Pentru i ∈ cstruct(L. j) \ {j} aij ← aij /ajj % cmod(j. 38/52 . i) mul¸imea indicilor coloanelor cu ˘ t elemente nenule pe linia i din L • Presupunem ca factorizarea simbolica a fost efectuata ˘ ˘ ˘ • Algoritmul compact pe coloane devine Pentru j = 1 : n Pentru k ∈ lstruct(L. Dificulta¸i: ˘t t t ◦ parcurgerea lstruct(L. 3: Matrice rare – p. j) \ {k} Pentru i ∈ cstruct(L. j) ˘ CS cap. k) % cdiv(j) • Exerci¸iu: scrie¸i algoritmul cu L în format CC.˘ Factorizare numerica—algoritm fan-in • Notam lstruct(L. k).

de aici numele "fan-in" • Numarul de opera¸ii este minim.Comentarii • În algoritmul anterior. toate opera¸iile pe coloana j se fac în t ˘ ultimul moment. 3: Matrice rare – p. în sensul ca opera¸iile din ˘ ˘ t t cmod se fac doar când ambii factori sunt nenuli CS cap. 39/52 . dupa calculul coloanelor anterioare dat algoritmului • Coloana j e "beneficiarul" calculelor.

3: Matrice rare – p. nu e necesara cautare ˘ ˘ ˘ pe linii • Numar minim de opera¸ii ˘ t CS cap. ea este utilizata pentru actualizarea ˘ coloanelor urmatoare • Rezulta algoritmul "fan-out": ˘ Pentru k = 1 : n √ akk ← akk Pentru i ∈ cstruct(L. k) \ {k} Pentru i ∈ cstruct(L. k). k) \ {k} aik ← aik /akk Pentru j ∈ cstruct(L. 40/52 . k) • Avantaj: se acceseaza doar coloane.Algoritm fan-out • Se poate adopta strategia opusa: de îndata ce o coloana ˘ ˘ ˘ ˘ ˘ este calculata. i ≥ j aij ← aij − aik ajk % cdiv(k) % cmod(j.

3: Matrice rare – p. 41/52 .Algoritmi la nivel de bloc • Algoritmii de mai sus func¸ioneaza si daca se lucreaza la ˘ ¸ ˘ ˘ t nivel de bloc • Factorizarea simbolica e identica ! ˘ ˘ • Pentru factorizarea numerica ¸inem seama ca A = LLT ˘t ˘ ˘ implica Aij = j Lik LT . unde X este s solu¸ia sistemului superior triunghiular XAT = Aik t kk ◦ aij ← aij − aik ajk devine Aij ← Aij − Aik AT kj CS cap. jk k=1 i≥j • Modificari în factorizarea numerica: ˘ ˘ ◦ √akk se înlocuie¸ te cu o factorizare Cholesky a blocului s Akk = Lkk LT kk ◦ aik ← aik /akk se înlocuie¸ te cu Aik ← X .

3: Matrice rare – p. triunghiular Ly = P T b ˘ ◦ Se rezolva sistemul sup. compensând permutarile CS cap. triunghiular LT z = y ˘ ◦ Solu¸ia este: x = P z t • Mic¸ orarea umplerii reduce numarul de opera¸ii în ˘ s t factorizarea Cholesky si rezolvarea de sisteme ¸ ˘ triunghiulare. calculam factorizarea ˘ ˘ Cholesky a matricei P T AP • De obicei calculam factorizarea Cholesky pentru rezolvarea ˘ sistemului Ax = b • Permutarea revine la a rezolva (P T AP )(P T x) = P T b: ◦ Se factorizeaza P T AP = LLT ˘ ◦ Se rezolva sistemul inf. 42/52 .Permutare • O permutare a matricei A poate modifica umplerea • Daca P este o matrice de permutare.

43/52 . 3: Matrice rare – p.Exemplu • Matrice sageata cu factor L plin ˘ ˘   A=   × × × × × × × × × ×      4 3 2 1 • Matrice sageata fara umplere ˘ ˘ ˘ ˘   A=   × × × × × × × × × ×      4 1 2 3 • A doua matrice se ob¸ine din prima prin permutarea inversa ˘ t CS cap.

j)| minim) adâncime. se aduce pe prima pozi¸ie libera ˘ t • Algoritmul e "lacom": nu se evalueaza umplerea în ˘ nodul cu grad minim (coloana cu |cstruct(L. cu atât umplerea este ˘ ˘ ˘ • Idee: la un moment dat. 3: Matrice rare – p. ci doar la pasul curent CS cap. 44/52 . j). nodurile din ˘ ˘ cstruct(L. În concluzie. j) formeaza o clica în graful asociat ˘ mai mica • Cu cât aceasta clica este mai mica.Ordonare pe baza gradului minim • Calculul permutarii optime este dificil ⇒ folosim euristici ˘ • Reamintire: o coloana j din L transmite structura sa tuturor ˘ coloanelor din cstruct(L.

3: Matrice rare – p. etc. symamd t CS cap. 45/52 .Algoritmul ”grad minim” • Pas 1: se aduce în prima pozi¸ie nodul cu grad minim din t graful asociat lui A • Se adauga la graf arcele necesare pentru a forma o clica ˘ ˘ între nodurile legate de nodul cu grad minim • Se actualizeaza gradele nodurilor ˘ • Se elimina nodul din prima pozi¸ie ˘ t • Pas 2: se continua similar pe graful ramas ˘ ˘ • Diverse variante ale algoritmului folosesc diverse metode de ˘ alegere între noduri cu acela¸ i grad. • Func¸ii Matlab: amd. aproximeaza gradul în s ˘ loc sa-l calculeze exact.

factorul Cholesky din dreapta are 519 elemente nenule 0 0 10 10 20 20 30 30 40 40 50 50 60 0 10 20 30 nz = 240 40 50 60 60 0 10 20 30 nz = 519 40 50 60 CS cap. 46/52 . 3: Matrice rare – p. cu 150 de elemente nenule în triunghiul inferior.˘ Exemplu: matrice originala • Pentru matricea din stânga.

47/52 . 3: Matrice rare – p.Exemplu: permutare AMD • Dupa permutarea cu func¸ie symamd (stânga). factorul ˘ t Cholesky (dreapta) are 351 elemente nenule 0 0 10 10 20 20 30 30 40 40 50 50 60 0 10 20 30 nz = 240 40 50 60 60 0 10 20 30 nz = 351 40 50 60 CS cap.

astfel t   ˘ încât graful asociat sa nu con¸ina arce între noduri din prima t ˘ si a doua ¸ aceluia¸ i algoritm s ˘ cât mai mica • B si C se factorizeaza separat.Nested dissection B 0 ∗ • Idee: o permutare care aduce A la forma  0 C ∗    ∗ ∗ S   LB 0 0 • Factorul Cholesky va avea forma  0 LC 0    ˜ ∗ ∗ L • Interpretare: nodurile sunt grupate în trei mul¸imi. 48/52 . 3: Matrice rare – p. Fiecare e permutat conform ˘ ¸ • Dificultate: gasirea rapida a unui separator S de dimensiune ˘ ˘ CS cap.

dupa doua bisec¸ii ˘ ˘ t             B1 0 ∗ 0 0 0 ∗ 0 C1 ∗ 0 0 0 ∗ ∗ ∗ S1 0 0 0 ∗ 0 0 0 B2 0 ∗ ∗ 0 0 0 0 C2 ∗ ∗ 0 0 0 ∗ ∗ S1 ∗ ∗ ∗ ∗ ∗ ∗ ∗ S             • Blocurile B1 . eficien¸a buna ˘ ˘ t˘ CS cap. Bloc liniile 3 si 6.Utilitate • Permutarea e utila pentru factorizarea pe calculatoare ˘ paralele • Exemplu. 49/52 . C1 . idem ¸ • Daca blocurile au dimensiuni apropiate. 3: Matrice rare – p. B2 . C2 pot fi factorizate în paralel.

Renumerotare ˘ (dreapta) 5 10 15 20 25 4 3 2 1 9 14 19 24 8 13 18 23 7 12 17 22 6 11 16 21 ¯¬ Æ­ « 3 ª 4 2 1 5 10 25 15 20 9 24 14 19 ¯¬ Æ­ ¨ « 18 ¨ 8 © ª 23 13 © 7 22 12 17 6 21 11 16 • Fiecare grup de coloane poate fi separat de linia centrala. 50/52 . 3: Matrice rare – p.Exemplu standard – grila • Graful asociat matricei A are forma regulata pentru diverse ˘ ˘ probleme de discretizare • Exemplu: grila ordonata natural (stânga) ˘ ˘ • Un separator evident este coloana centrala. ˘ Exerci¸iu: renumerota¸i ! t t CS cap.

Rezolvarea sistemelor liniare • Metode pentru rezolvarea sistemului Ax = b ◦ directe. atât ˘ ˘ ca viteza. QR) ˘ ◦ iterative. metodele iterative pot fi eficiente. LU. dar sunt mai complicate bune ale solu¸iei t • Metodele iterative construiesc aproxima¸ii din ce în ce mai t • Pentru sisteme mari. factorizare ˘ numerica). 3: Matrice rare – p. cât si ca memorie (se memoreaza doar A) ¸ CS cap. 51/52 . factorizare simbolica). în care fiecare itera¸ie consta în produs ˘ t • Factorizarile LU si QR utilizeaza acelea¸ i etape ca ˘ ˘ ¸ s matrice-vector si/sau rezolvare de sisteme triunghiulare ¸ ˘ Cholesky (permutare. bazate pe factorizari (Cholesky.

Gauss-Seidel. între 0 si 3 ˘ t ¸ din metodele Jacobi. GMRES.Metode iterative • Tipuri de metode iterative: ◦ metode de relaxare (Jacobi. reziduu maxim) t ◦ metode pe subspa¸ii Krylov (Arnoldi. Gauss-Seidel. 52/52 . Lanczos. proiec¸ie t CS cap. supra-relaxare) ◦ metode de proiec¸ie (steepest descent. în masura timpului disponibil. t gradient conjugat) • Cursul va con¸ine. 3: Matrice rare – p.