Sunteți pe pagina 1din 33

MATRIZES ESPARSAS

PAULO CSAR BARBOSA FERNANDES 2011/1


paulo.cesar@vitoria.es.gov.br

ARMAZENAMENTO DE MATRIZES ESPARSAS

AGENDA
Introduo
Objetivo
Tipos de armazenamento
ndice
Linha
Coluna
Comparao entre as abordagens
Estudo de caso
Concluso



INTRODUO
Uma matriz dita esparsa quando a maioria de seus
elementos so iguais a zero. Por exemplo:








Muito espao em memria seria economizado se apenas os
elementos no nulos fossem armazenados.
INTRODUO






42 posies na matriz;
7 posies com valor diferente de zero;
Supondo 4 bytes para cada posio, temos:
42 * 4 = 168 bytes
7 * 4 = 28 bytes
Uma economia de 83%

INTRODUO
A elaborao de uma representao para matrizes
esparsas deve levar em considerao:
Facilidade de acesso tanto para linhas como para colunas
(preservar a natureza bidimensional da matriz).
Eficincia nas operaes (soma, multiplicao, etc.)

OBJETIVO
Diminuir a quantidade de memria necessria para
armazenar as informaes;
10 0 2 3 5 0 2 0 6 0 5 0 0 2 5 6
0 2 6 0 1 0 3 0 0 2 0 0 0 5 0 8
1 0 2 0 0 3 0 0 5 0 5 0 6 0 7 0
10 2 3 5 2 6 5 2 5 6 2 6 1 3 2 5
8 1 2 3 5 5 6 7
Armazenando valores zero: 48 posies ocupadas
No armazenando valores zero: 24 posies ocupadas
ARMAZENAMENTO POR NDICE
STOREGE-BY-INDICES
A 11 13 21 22 24 32 33 36 43 44 45 61 62 65 66
I 1 1 2 2 2 3 3 3 4 4 4 6 6 6 6
J 1 3 1 2 4 2 3 5 3 4 5 1 2 5 6
A 11 13 21 22 24 32 33 36 43 44 45 61 62 65 66
I 1 1 2 2 2 3 3 3 4 4 4 6 6 6 6
J 1 3 1 2 4 2 3 5 3 4 5 1 2 5 6
STOREGE-BY-INDICES
Espao necessrio:
3 x Elementos no nulos

Elementos matriz: 36
Elementos no nulos: 15
Para armazenamento: 45
ARMAZENAMENTO POR LINHA
STOREGE-BY-ROWS
AR 11 13 21 22 24 32 33 43 44 46 61 62 66
IA
JA
Armazenando linha por linha
AR 11 13 21 22 24 32 33 43 44 46 61 62 66
IA 1 3 6 8 11 11 14
JA
STOREGE-BY-ROWS
Primeiro ndice de cada linha
AR 11 13 21 22 24 32 33 43 44 46 61 62 66
IA 1 3 6 8 11 11 14
JA 1 3 1 2 4 2 3 3 4 6 1 2 6
STOREGE-BY-ROWS
ndice do elemento na coluna
Espao necessrio:
2 x Elementos no nulos + N Linhas + 1

Elementos matriz: 36
Elementos no nulos: 13
Para armazenamento: 33
STOREGE-BY-ROWS
AR 11 13 21 22 24 32 33 43 44 46 61 62 66
IA 1 3 6 8 11 11 14
JA 1 3 1 2 4 2 3 3 4 6 1 2 6
(4,3)
ARMAZENAMENTO POR COLUNA
STOREGE-BY-COLUMNS
AR 11 21 61 22 32 62 13 33 43 24 44 46 66
IA
JA
Armazenando coluna por coluna
STOREGE-BY-COLUMNS
AR 11 21 61 22 32 62 13 33 43 24 44 46 66
IA 1 2 6 2 3 6 1 3 4 2 4 4 6
JA
Preenchendo ndice da linha
de cada elemento
STOREGE-BY-COLUMNS
AR 11 21 61 22 32 62 13 33 43 24 44 46 66
IA 1 2 6 2 3 6 1 3 4 2 4 4 6
JA 1 4 7 10 12 12 14
Primeiro ndice de cada coluna
STOREGE-BY-COLUMNS
AR 11 21 61 22 32 62 13 33 43 24 44 46 66
IA 1 2 6 2 3 6 1 3 4 2 4 4 6
JA 1 4 7 10 12 12 14
(4,3)
Espao necessrio:
2 x Elementos no nulos + N Colunas + 1

Elementos matriz: 36
Elementos no nulos: 13
Para armazenamento: 33
COMPARANDO
Linhas Colunas Qtd Reduo
6 6 36,00 50,00 18,00 43,00 19,44 -
100 200 20.000,00 50,00 10.000,00 20.101,00 0,50 -
20000 1000 20.000.000,00 50,00 10.000.000,00 20.020.001,00 0,10 -
20000 13000 260.000.000,00 50,00 130.000.000,00 260.020.001,00 0,01 -
Qtd Reduo
43,00 19,44 -
20.201,00 1,01 -
20.001.001,00 0,01 -
260.013.001,00 0,01 -
Qtd Reduo
54,00 50,00 -
30.000,00 50,00 -
30.000.000,00 50,00 -
390.000.000,00 50,00 -
Linha
Indice
Coluna
Tipo Armazenamento
Dimenso Matriz Quantidade
Posies
Percentual
posies nulas
Quantidadede
posies no nulas
Com 50 % de posies nulas
COMPARANDO
Linhas Colunas Qtd Reduo
6 6 36,00 65,00 12,60 32,20 10,56
100 200 20.000,00 65,00 7.000,00 14.101,00 29,50
20000 1000 20.000.000,00 65,00 7.000.000,00 14.020.001,00 29,90
20000 13000 260.000.000,00 65,00 91.000.000,00 182.020.001,00 29,99
Qtd Reduo
32,20 10,56
14.201,00 29,00
14.001.001,00 29,99
182.013.001,00 29,99
Qtd Reduo
37,80 5,00 -
21.000,00 5,00 -
21.000.000,00 5,00 -
273.000.000,00 5,00 -
Linha
Indice
Coluna
Tipo Armazenamento
Dimenso Matriz Quantidade
Posies
Percentual
posies nulas
Quantidadede
posies no nulas
Com 65 % de posies nulas
COMPARANDO
Linhas Colunas Qtd Reduo
6 6 36,00 70,00 10,80 28,60 20,56
100 200 20.000,00 70,00 6.000,00 12.101,00 39,50
20000 1000 20.000.000,00 70,00 6.000.000,00 12.020.001,00 39,90
20000 13000 260.000.000,00 70,00 78.000.000,00 156.020.001,00 39,99
Qtd Reduo
28,60 20,56
12.201,00 39,00
12.001.001,00 39,99
156.013.001,00 39,99
Qtd Reduo
32,40 10,00
18.000,00 10,00
18.000.000,00 10,00
234.000.000,00 10,00
Linha
Indice
Coluna
Dimenso Matriz Quantidade
Posies
Percentual
posies nulas
Quantidadede
posies no nulas
Com 70 % de posies nulas
ESTUDO DE CASO
Um sistema de informao que possa auxiliar um
profissional mdico na classificao da doena do
paciente;

Como feito essa classificao ?
Atravs do CID (Classificao Internacional de
Doenas);
A grande maioria dos diagnsticos mdicos pode
ser encontrado e associado a um cdigo;
O cdigo vale para qualquer pas;
O mdico vendo o cdigo j sabe qual a doena;
EXEMPLO ATESTADO
O REGISTRO ELETRNICO
O profissional faz o diagnstico do paciente em seu
pronturio;
MODELO VETORIAL
Matriz esparsa
O CALCULO
Cosseno(d1,q) = 0,71
Cosseno(d2,q) = 0
Cosseno(d3,q) = 0,63
O PROBLEMA...
Mais de 30.000 diagnsticos;
Mais de 20.000 palavras;
Sendo mais de 13.000 CID;

Uma matriz :
20.000 X 13.000 = 260.000.000
double (8 bytes)
Necessrio 1.983,64 MB
Com reduo de 40 % - 1.190,18 MB
70 % dos elementos nulos
DEMONSTRAO
16.823.105 x 8 bytes = 128,35 MB
128,35 MB 69,9 % = 38,63 MB
Tipo Armazenamento
Dimenso Matriz
Quantidade
Posies
Percentual
posies nulas
Quantidadede
posies no nulas
Linha
Linhas Colunas Qtd Reduo
19909 845 16.823.105,00 85,00 2.523.465,75 5.066.841,50 69,88
Coluna
Qtd Reduo
5.047.777,50 69,99
DEMONSTRAO
DEMONSTRAO
CONCLUSO
Nem sempre vantagem utilizar matrizes esparsas;
Quando utilizado adequadamente o ganho pode ser muito
vantajoso;
Devemos observar na nova forma de armazenamento, que:
Diminumos o espao necessrio para armazenar;
Aumentamos o custo computacional;
OBRIGADO !!!

Paulo Csar Barbosa Fernandes paulo.cesar@vitoria.es.gov.br

S-ar putea să vă placă și