Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Cuprins
Noiuni 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
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
3 nz = 19
deveni prohibitiva
De aceea se memoreaza valorile elementelor nenule Formate de memorare Triplet ("trivial") poziiile lor t
Comprimat pe linii (compressed row storage) Comprimat pe coloane (compressed column) Diagonale "zimate" (jagged diagonal) t . . . si altele
Memorare si algoritmi
Modul de memorare are efect asupra formei algoritmilor si
deci asupra vitezei de execuie pe diverse arhitecturi de t calcul matrice-vector (util n rezolvarea iterativa a sistemelor liniare)
A Rnn , x, y Rn
Formatul triplet
Pentru ecare element nenul aij se memoreaza poziia (i, j) t Se utilizeaza doi vectori, II si JJ , de lungime N Z ecare Memorie necesara: N Z reali, 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 aranjate n orice ordine Acces dicil la un element oarecare Informaie redundanta t
separat
Formatul CL produsul MV
nmulire matrice-vector: t
de regula scuri t
Formatul CC produsul MV
nmulire matrice-vector: t
regula scuri t
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 zimata", etc. t Memorie necesara: nL N Z reali, nL ntregi Ecient cnd numarul de elemente nenule de pe ecare
Formatul DZ
Ranare a formatului ITPACK
Matricea redusa memorata ntr-un vector, ca n formatul CC La fel indicii de coloane Format avantajos tot pe calculatoare vectoriale
de execuie t
Alte idei de cre tere a vitezei: s Format pe blocurichiar daca matricele sunt rare, ele
pot conine blocuri aproape pline t Matricea poate permutata (explicit sau nu) nainte de nmulire; se calculeaza P T y P T y + (P T AP )(P T x), t unde P e o matrice de permutare. Calculul permutarii depinde de scopul propus.
nb nb
15 11 21 22 32 33 34 A= 41 42 43 44 51 52 55 62 65
16 26 56 66
Blocurile se memoreaza ca ind pline, deci inclusiv zerourile Format avantajos pe calculatoare cu memorie ierarhica
Format CL pe blocuri
Format comprimat pe linii (un bloc e memorat pe coloane)
Permutari si produsul MV
Matrice de permutare: matricea unitate cu liniile (coloanele)
permutate
numerotarea variabilelor
Produsului MV pentru CL
apropiate, astfel nct valorile x respective sa ramna in memoria rapida grupai n jurul valorii corespunzatoare diagonalei. t
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
Graf de conectivitate
(Ne gndim de acum nainte doar la matrice simetrice) Asociem matricei A un graf de conectivitate Nodurile sunt numerotate de la 1 la n Arcul (i, j) exista daca aij = 0
Matricea P T AP are un graf cu structura identica, dar cu alta Exerciiu: matrice rara 4 4, graful asociat, efectul unei t
Algoritmul Cuthill-McKee
Se porne te de la graful de conectivitate al unei matrice s Scop: reordonarea nodurilor ntr-o lista L astfel nct
matricea asociata are largime de banda maxaij =0 |i j| ct mai mica acela i grad, ordinea e aleatoare) s
Primul n L e nodul cu grad minim (ntre mai multe noduri cu Urmatoarele poziii n L sunt ocupate de vecinii primului t
Se continua punnd n L vecinii celui de-al doilea nod (daca Ordonarea corespunde unei traversari n laime a unui t
Cuthill-McKee: exemplu
Pentru matricea din stnga, rezultatul este: 5, 3, 2, 1, 4, 6 Matricea reordonata este cea din dreapta
1 2 3 4 5 6
5 3 2 1 4 6
De ce reverse ?
Inversarea ordinii nu modica laimea de banda t n schimb mic oreaza (nu cre te, de fapt) prolul s s Notam fi indicele celui mai mic j pentru care aij = 0 Notam di = i fi (ct de departe este cel mai departat
Prolul este
Algoritmul GPS
Ali algoritmi de reducere a largimii benzii utilizeaza euristici t
sau optimizare
xb Pentru i = 1 : n Pentru j = 1 : i 1 xi xi aij xj xi xi /aii Algoritm pentru rezolvarea Ax = b, pe coloane xb Pentru j = 1 : n xj xj /ajj Pentru i = j + 1 : n xi xi aij xj
Presupunem ca toate elementele diagonale sunt nenule Daca aij = 0, nu se efectueaza nici o operaie, deci e t
xb 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)
xb 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)
CC pe blocuri ?
Factorizarea Cholesky
Fie A o matrice simetrica si pozitiv denita Factorizarea Cholesky: A = LLT , cu L inferior triunghiulara
j k=1 ik jk ,
aij =
ij
jj = ajj ij = aij
i>j
Algoritm pe coloane
Factorul L se poate calcula pe loc n A (din care e memorat
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
Algoritm compact
Algoritmul compact:
Pentru j = 1 : n Pentru k = 1 : j 1 Pentru i = j : n % cmod(j, k) aij aij aik ajk ajj ajj Pentru i = j + 1 : n % cdiv(j) aij aij /ajj
Numar de operaii: aprox. n3 /3 t
A=
= L =
A=
= L =
Ce structura are L ?
L mo tene te elementele nenule ale lui A s s n plus, n L apar elemente nenule noi (ll-in, 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
n general, doua elemente nenule pe coloana k , anume ik , Umplerea poate caracterizata minimal de un arbore
Arbore de eliminare
Notam p(j) =
ij =0, i>j
min
5 d d 3 4 1 2
Comentarii
Coloana p(j) mo tene te ntreaga structura a coloanei j s s
uitam la nodurile "u" ale unui nod (atenie nsa, structura lui t L se calculeaza dinamic, arborele trebuie parcurs de la frunze spre radacina)
a31 = 0 coloana 3 transmite structura sa coloanei 5, deoarece 53 a devenit nenul indirect, coloana 1 transmite structura sa coloanei 5, dar transferul se face prin intermediul coloanei 3, deci nu mai trebuie studiat explicit
pentru care ik = 0
graf
Factorizare simbolica
Factorizarea Cholesky se face n doi pa i s Factorizare simbolica: se determina structura lui L si se
Pentru j = 1 : n cstruct(L, j) = cstruct(A, j) Pentru j = 1 : n calculeaza p(j) cstruct(L, p(j)) = cstruct(L, p(j)) cstruct(L, j)
Pentru j = 1 : n cstruct(L, j) = cstruct(A, j) Pentru k = 1 : j 1 Dac p(k) = j atunci a cstruct(L, j) = cstruct(L, j) cstruct(L, k) calculeaza p(j)
Pentru eciena, vectorul p se poate organiza sub forma t
Pentru j = 1 : n Pentru k lstruct(L, j) \ {k} Pentru i cstruct(L, k), i j aij aij aik ajk ajj ajj Pentru i cstruct(L, j) \ {j} aij aij /ajj
% cmod(j, k) % cdiv(j)
Exerciiu: scriei algoritmul cu L n format CC. Dicultai: t t t parcurgerea lstruct(L, j) gasirea elementelor din cstruct(L, k) n cstruct(L, j)
CS cap. 3: Matrice rare p. 38/52
Comentarii
n algoritmul anterior, toate operaiile pe coloana j se fac n t
Coloana j e "beneciarul" calculelor, de aici numele "fan-in" Numarul de operaii este minim, n sensul ca operaiile din t t
Algoritm fan-out
Se poate adopta strategia opusa: de ndata ce o coloana
Pentru k = 1 : n akk akk Pentru i cstruct(L, k) \ {k} aik aik /akk Pentru j cstruct(L, k) \ {k} Pentru i cstruct(L, k), i j aij aij aik ajk
% cdiv(k) % cmod(j, k)
pe linii
nivel de bloc
implica
Aij =
j Lik LT , jk k=1
ij
Akk = Lkk LT kk aik aik /akk se nlocuie te cu Aik X , unde X este s soluia sistemului superior triunghiular XAT = Aik t kk
aij aij aik ajk devine Aij Aij Aik AT kj
Permutare
O permutare a matricei A poate modica umplerea
Cholesky a matricei P T AP
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. triunghiular Ly = P T b Se rezolva sistemul sup. triunghiular LT z = y Soluia este: x = P z t
Exemplu
Matrice sageata cu factor L plin
A=
4 3 2 1
A=
4 1 2 3
coloanelor din cstruct(L, j). n concluzie, nodurile din cstruct(L, j) formeaza o clica n graful asociat mai mica
Cu ct aceasta clica este mai mica, cu att umplerea este Idee: la un moment dat, se aduce pe prima poziie libera t Algoritmul e "lacom": nu se evalueaza umplerea n
nodul cu grad minim (coloana cu |cstruct(L, j)| minim) adncime, ci doar la pasul curent
alegere ntre noduri cu acela i grad, aproximeaza gradul n s loc sa-l calculeze exact, etc.
triunghiul inferior, 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
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
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 mulimi, astfel t
nct graful asociat sa nu conina arce ntre noduri din prima t si a doua aceluia i algoritm s ct mai mica
B si C se factorizeaza separat. Fiecare e permutat conform Dicultate: gasirea rapida a unui separator S de dimensiune
Utilitate
Permutarea e utila pentru factorizarea pe calculatoare
paralele
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
liniile 3 si 6, idem
probleme de discretizare
(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
Exerciiu: renumerotai ! t t
Cholesky (permutare, factorizare simbolica), factorizare numerica), dar sunt mai complicate bune ale soluiei t
Metodele iterative construiesc aproximaii din ce n ce mai t Pentru sisteme mari, metodele iterative pot eciente, att
Metode iterative
Tipuri de metode iterative: metode de relaxare (Jacobi, Gauss-Seidel,
supra-relaxare) metode de proiecie (steepest descent, reziduu maxim) t metode pe subspaii Krylov (Arnoldi, GMRES, Lanczos, t gradient conjugat)