MATRIZES ESPARSAS ARMAZENAMENTO DE MATRIZES ESPARSAS PAULO CSAR
- Slides: 33
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 • 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; Ø 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
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 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
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 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 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 + 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
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 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 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 + 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 65 % 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 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
O REGISTRO ELETRÔNICO • O profissional faz o diagnóstico do paciente em seu prontuário;
MODELO VETORIAL Matriz esparsa
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. 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, 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
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
- Armazenamento de produtos químicos
- Armazenamento
- Jules csar
- Csar package
- Csar tosca
- Matriz elementar
- Diacronia
- Matriz
- Matrizes unidimensionais
- Observe as matrizes a seguir
- Matriz
- Matrizes reais
- Matrizes inversas
- Matrizes compreensivas
- Ordem da matriz
- Matrizes cientificistas
- Paulo freire educación bancaria
- Detectación
- Paulo cabello
- Paulo coelho knygos
- Paulo freire born
- Paulo roberto gaefke
- Filipenses 4:4-9
- Retirando ao acaso uma carta de um baralho comum
- Paulo frayer
- Lucije emilije paulo
- Colegio estadual paulo leminski
- Paulo freire
- Marko porcije katon
- Paulo sancho
- Ine22 são paulo
- Un bonito cuento de paulo coelho
- Un bonito cuento de paulo coelho
- Paulo coelho prayer