MATRIZES ESPARSAS ARMAZENAMENTO DE MATRIZES ESPARSAS PAULO CSAR

  • Slides: 33
Download presentation
MATRIZES ESPARSAS ARMAZENAMENTO DE MATRIZES ESPARSAS PAULO CÉSAR BARBOSA FERNANDES – 2011/1 paulo. cesar@vitoria.

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

AGENDA • Introdução • Objetivo • Tipos de armazenamento • Índice • Linha •

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

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

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:

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; Ø Armazenando

OBJETIVO • Diminuir a quantidade de memória necessária para armazenar as informações; Ø Armazenando valores zero: 48 posições ocupadas 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 6 0 7 0 3 2 5 Ø Não armazenando valores zero: 24 posições ocupadas 10 2 3 5 2 6 5 2 8 1 2 3 5 5 6 7 5 6 2 6 1

ARMAZENAMENTO POR ÍNDICE

ARMAZENAMENTO POR ÍNDICE

STOREGE-BY-INDICES A 11 13 21 22 24 32 33 36 43 44 45 61

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 J 1 3 1 2 4 2 3 5 3 4 5 1 2 5 6

STOREGE-BY-INDICES v Espaço necessário: 3 x Elementos não nulos Elementos matriz: 36 Elementos não

STOREGE-BY-INDICES v Espaço necessário: 3 x Elementos não nulos Elementos matriz: 36 Elementos não nulos: 15 Para armazenamento: 45 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 J 1 3 1 2 4 2 3 5 3 4 5 1 2 5 6

ARMAZENAMENTO POR LINHA

ARMAZENAMENTO POR LINHA

STOREGE-BY-ROWS v Armazenando linha por linha AR IA JA 11 13 21 22 24

STOREGE-BY-ROWS v Armazenando linha por linha AR IA JA 11 13 21 22 24 32 33 43 44 46 61 62 66

STOREGE-BY-ROWS v Primeiro índice de cada linha AR 11 13 21 22 24 32

STOREGE-BY-ROWS v Primeiro índice de cada linha AR 11 13 21 22 24 32 33 IA 1 3 6 8 11 11 14 JA 43 44 46 61 62 66

STOREGE-BY-ROWS v Índice do elemento na coluna AR 11 13 21 22 24 32

STOREGE-BY-ROWS v Índice do elemento na coluna AR 11 13 21 22 24 32 33 IA 1 3 6 8 11 11 14 JA 1 3 1 2 4 2 3 43 44 46 61 62 66 3 4 6 1 2 6

STOREGE-BY-ROWS (4, 3) v Espaço necessário: 2 x Elementos não nulos + Nº Linhas

STOREGE-BY-ROWS (4, 3) v Espaço necessário: 2 x Elementos não nulos + Nº Linhas + 1 Elementos matriz: 36 Elementos não nulos: 13 Para armazenamento: 33 AR 11 13 21 22 24 32 33 IA 1 3 6 8 11 11 14 JA 1 3 1 2 4 2 3 43 44 46 61 62 66 3 4 6 1 2 6

ARMAZENAMENTO POR COLUNA

ARMAZENAMENTO POR COLUNA

STOREGE-BY-COLUMNS v Armazenando coluna por coluna AR IA JA 11 21 61 22 32

STOREGE-BY-COLUMNS v Armazenando coluna por coluna AR IA JA 11 21 61 22 32 62 13 33 43 24 44 46 66

STOREGE-BY-COLUMNS v Preenchendo índice da linha de cada elemento AR 11 21 61 22

STOREGE-BY-COLUMNS v Preenchendo índice da linha de cada elemento 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

STOREGE-BY-COLUMNS v Primeiro índice de cada coluna AR 11 21 61 22 32 62

STOREGE-BY-COLUMNS v Primeiro índice de cada coluna 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

STOREGE-BY-COLUMNS (4, 3) v Espaço necessário: 2 x Elementos não nulos + Nº Colunas

STOREGE-BY-COLUMNS (4, 3) v Espaço necessário: 2 x Elementos não nulos + Nº Colunas + 1 Elementos matriz: 36 Elementos não nulos: 13 Para armazenamento: 33 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

COMPARANDO Com 50 % de posições nulas

COMPARANDO Com 50 % de posições nulas

COMPARANDO Com 65 % de posições nulas

COMPARANDO Com 65 % de posições nulas

COMPARANDO Com 70 % de posições nulas

COMPARANDO Com 70 % de posições nulas

ESTUDO DE CASO • Um sistema de informação que possa auxiliar um profissional médico

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;

EXEMPLO ATESTADO

EXEMPLO ATESTADO

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

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

MODELO VETORIAL Matriz esparsa

MODELO VETORIAL Matriz esparsa

O CALCULO • Cosseno(d 1, q) = 0, 71 • Cosseno(d 2, q) =

O CALCULO • Cosseno(d 1, q) = 0, 71 • Cosseno(d 2, q) = 0 • Cosseno(d 3, q) = 0, 63

O PROBLEMA. . . • Mais de 30. 000 diagnósticos; • Mais de 20.

O PROBLEMA. . . • Mais de 30. 000 diagnósticos; • Mais de 20. 000 palavras; • Sendo mais de 13. 000 CID; v Uma matriz : Ø 20. 000 X 13. 000 = 260. 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 Tipo Armazenamento Dimensão Matriz Linhas Colunas 19909 845 Quantidade Posições 16. 823. 105,

DEMONSTRAÇÃO Tipo Armazenamento Dimensão Matriz Linhas Colunas 19909 845 Quantidade Posições 16. 823. 105, 00 Percentual Quantidadede posições nulas posições não nulas 85, 00 2. 523. 465, 75 Linha Qtd Redução 5. 066. 841, 50 69, 88 Coluna Qtd 5. 047. 777, 50 • 16. 823. 105 x 8 bytes = 128, 35 MB • 128, 35 MB – 69, 9 % = 38, 63 MB Redução 69, 99

DEMONSTRAÇÃO

DEMONSTRAÇÃO

DEMONSTRAÇÃO

DEMONSTRAÇÃO

CONCLUSÃO • Nem sempre é vantagem utilizar matrizes esparsas; • Quando utilizado adequadamente 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 !!! Paulo César Barbosa Fernandes – paulo. cesar@vitoria. es. gov. br DÚVIDAS

OBRIGADO !!! Paulo César Barbosa Fernandes – paulo. cesar@vitoria. es. gov. br DÚVIDAS