MATRIZES ESPARSAS PAULO CÉSAR BARBOSA FERNANDES – 2011/1 paulo.cesar@vitoria.es.gov.br...

Post on 16-Apr-2015

107 views 0 download

Transcript of MATRIZES ESPARSAS PAULO CÉSAR BARBOSA FERNANDES – 2011/1 paulo.cesar@vitoria.es.gov.br...

MATRIZES ESPARSAS

PAULO CÉSAR BARBOSA FERNANDES – 2011/1

paulo.cesar@vitoria.es.gov.br

ARMAZENAMENTO DE MATRIZES ESPARSAS

AGENDA

• Introdução

• Objetivo

• Tipos de armazenamento

• Índice• Linha• Coluna

• Comparação entre as abordagens

• Estudo de caso

• Conclusão

INTRODUÇÃO

• Uma matriz é dita esparsa quando a maioria de seus elementos são iguais a zero. Por exemplo:

• Muito espaço em memória seria economizado se apenas os elementos não nulos fossem armazenados.

INTRODUÇÃO

•42 posições na matriz;

•7 posições com valor diferente de zero;

•Supondo 4 bytes para cada posição, temos: 42 * 4 = 168 bytes 7 * 4 = 28 bytes Uma economia de 83%

INTRODUÇÃO

• A elaboração de uma representação para matrizes esparsas deve levar em consideração:

Facilidade de acesso tanto para linhas como para colunas (preservar a natureza bidimensional da matriz).

Eficiência nas operações (soma, multiplicação, etc.)

OBJETIVO

• Diminuir a quantidade de memória necessária para armazenar as informações;

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:

Não armazenando valores zero:

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

Espaço necessário:3 x Elementos não nulos

Elementos matriz: 36Elementos não nulos: 15Para armazenamento: 45

ARMAZENAMENTO POR LINHA

STOREGE-BY-ROWS

AR 11 13 21 22 24 32 33 43 44 46 61 62 66

IA

JA

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

Espaço necessário:2 x Elementos não nulos + Nº Linhas + 1

Elementos matriz: 36Elementos não nulos: 13Para 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) Espaço necessário:2 x Elementos não nulos + Nº Colunas + 1

Elementos matriz: 36Elementos não nulos: 13Para armazenamento: 33

COMPARANDO

Linhas Colunas Qtd Redução

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 Redução

43,00 19,44-

20.201,00 1,01-

20.001.001,00 0,01-

260.013.001,00 0,01-

Qtd Redução

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

Dimensão Matriz Quantidade

Posições

Percentual

posições nulas

Quantidadede

posições não nulas

Com 50 % de posições nulasCom 50 % de posições nulas

COMPARANDO

Linhas Colunas Qtd Redução

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 Redução

32,20 10,56

14.201,00 29,00

14.001.001,00 29,99

182.013.001,00 29,99

Qtd Redução

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

Dimensão Matriz Quantidade

Posições

Percentual

posições nulas

Quantidadede

posições não nulas

Com 65 % de posições nulasCom 65 % de posições nulas

COMPARANDO

Linhas Colunas Qtd Redução

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 Redução

28,60 20,56

12.201,00 39,00

12.001.001,00 39,99

156.013.001,00 39,99

Qtd Redução

32,40 10,00

18.000,00 10,00

18.000.000,00 10,00

234.000.000,00 10,00

Linha

Indice

Coluna

Dimensão Matriz Quantidade

Posições

Percentual

posições nulas

Quantidadede

posições não nulas

Com 70 % de posições nulasCom 70 % de posições nulas

ESTUDO DE CASO

• Um sistema de informação que possa auxiliar um profissional médico na classificação da doença do paciente;

Como é feito essa classificação ?

• Através do CID (Classificação Internacional de Doenças);

• A grande maioria dos diagnósticos médicos pode ser encontrado e associado a um código;

• O código vale para qualquer país;

• O médico vendo o código já sabe qual é a doença;

O REGISTRO ELETRÔNICO

• O profissional faz o diagnóstico do paciente em seu prontuário;

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 diagnósticos;

• Mais de 20.000 palavras;

• Sendo mais de 13.000 CID;

Uma matriz :

20.000 X 13.000 = 260.000.000

double (8 bytes)

Necessário 1.983,64 MB

Com redução de 40 % - 1.190,18 MB

70 % dos elementos nulos

DEMONSTRAÇÃO

• 16.823.105 x 8 bytes = 128,35 MB

• 128,35 MB – 69,9 % = 38,63 MB

Tipo ArmazenamentoDimensão

MatrizQuantidade

Posições

Percentual posições

nulas

Quantidadede posições não

nulas

Linha

LinhasColuna

s Qtd Redução

19909 845 16.823.105,00

85,00

2.523.465,75

5.066.841,50 69,88

ColunaQtd Redução

5.047.777,50 69,99

DEMONSTRAÇÃO

DEMONSTRAÇÃO

CONCLUSÃO

• Nem sempre é vantagem utilizar matrizes esparsas;

• Quando utilizado adequadamente o ganho pode ser muito vantajoso;

• Devemos observar na nova forma de armazenamento, que:

Diminuímos o espaço necessário para armazenar; Aumentamos o custo computacional;

OBRIGADO !!!

DÚVIDASDÚVIDAS

Paulo César Barbosa Fernandes – paulo.cesar@vitoria.es.gov.br