Algorítmos e estrutura de dados III
description
Transcript of Algorítmos e estrutura de dados III
![Page 1: Algorítmos e estrutura de dados III](https://reader035.fdocumentos.com/reader035/viewer/2022062323/5681538f550346895dc19312/html5/thumbnails/1.jpg)
Algorítmos e estrutura de dados III
Carlos Oberdan Rolim
Ciência da Computação
Sistemas de Informação
![Page 2: Algorítmos e estrutura de dados III](https://reader035.fdocumentos.com/reader035/viewer/2022062323/5681538f550346895dc19312/html5/thumbnails/2.jpg)
Compressão e Compactação de dados
![Page 3: Algorítmos e estrutura de dados III](https://reader035.fdocumentos.com/reader035/viewer/2022062323/5681538f550346895dc19312/html5/thumbnails/3.jpg)
Compressão de Dados X Compactação de Dados
São dois processos distintos
Compressão: reduz a quantidade de bits para representar algum dado
Compactação: união dados que não estejam unidos.
Ex.: Desfragmentação de discos
![Page 4: Algorítmos e estrutura de dados III](https://reader035.fdocumentos.com/reader035/viewer/2022062323/5681538f550346895dc19312/html5/thumbnails/4.jpg)
Compressão de Dados
A compressão de dados, como o próprio nome sugere, é o ato de comprimir dados
Comprimir algo é torná-lo menor, através de algum algoritmo de compressão, reduzindo a quantidade de bits para se representar um dado
Comprimir dados destina-se também a retirar a redundância, baseando-se que muitos dados contém informações redundantes que podem ou precisam ser eliminadas de alguma forma
Ex. A seqüência ‘AAAAAA’, que ocupa 6 bytes, poderia ser comprimida para ‘6A’, que ocupa 2 bytes
![Page 5: Algorítmos e estrutura de dados III](https://reader035.fdocumentos.com/reader035/viewer/2022062323/5681538f550346895dc19312/html5/thumbnails/5.jpg)
Compressão de Dados
Além da eliminação de dados redundantes, a compressão de dados apresenta algumas vantagens:
A economia de espaço em disco: quanto mais a informação for comprimida, maior a quantidade de informação pode ser armazenada;
Rapidez no tempo de transmissão de dados: informações comprimidas são transmitidas mais rapidamente daquelas que não estão;
MAS
Tem-se um Preço a pagar => o custo computacional para codificar e decodificar o texto.
![Page 6: Algorítmos e estrutura de dados III](https://reader035.fdocumentos.com/reader035/viewer/2022062323/5681538f550346895dc19312/html5/thumbnails/6.jpg)
Compressão de Dados
Com o avanço da tecnologia, a velocidade de processamento aumentou aproximadamente 2 mil vezes. Melhor investir mais poder de computação em compressão com o objetivo de obter mais espaço em disco ou menor tempo de transmissão.
Além disso, métodos recentes de compressão têm permitido:
Obter maior compressão em relação a métodos tradicionais, gerando maior economia de espaço.
Acessar diretamente qualquer parte do texto comprimido sem necessidade de descomprimir todo o texto desde o início
![Page 7: Algorítmos e estrutura de dados III](https://reader035.fdocumentos.com/reader035/viewer/2022062323/5681538f550346895dc19312/html5/thumbnails/7.jpg)
Razão de Compressão
Uma das formas de se verificar a eficiência de um algoritmo é através da razão de compressão
Ela é definida pela porcentagem que o arquivo comprimido representa em relação ao tamanho do arquivo não comprimido.
Exemplo: se o arquivo não comprimido possui 100 bytes e o arquivo comprimido resultante possui 30 bytes, então a razão de compressão é de 30%, ou 10:3
![Page 8: Algorítmos e estrutura de dados III](https://reader035.fdocumentos.com/reader035/viewer/2022062323/5681538f550346895dc19312/html5/thumbnails/8.jpg)
Tipos de Compressão
Existem dois tipos de compressão:
Compressão sem perda de dados
Compressão com perda de dados
![Page 9: Algorítmos e estrutura de dados III](https://reader035.fdocumentos.com/reader035/viewer/2022062323/5681538f550346895dc19312/html5/thumbnails/9.jpg)
Compressão sem Perda de Dados
![Page 10: Algorítmos e estrutura de dados III](https://reader035.fdocumentos.com/reader035/viewer/2022062323/5681538f550346895dc19312/html5/thumbnails/10.jpg)
Compressão sem Perda de Dados
Definido como uma operação sem perdas de nenhum dado
A informação é comprimida por algum algoritmo e, ao descomprimir, todas as informações são recuperadas
Exemplo típico: arquivos bzip, gzip, .gz
Os mais conhecidos são o .zip ou .rar.
![Page 11: Algorítmos e estrutura de dados III](https://reader035.fdocumentos.com/reader035/viewer/2022062323/5681538f550346895dc19312/html5/thumbnails/11.jpg)
Compressão sem Perda de Dados
Ele é usado quando é importante que a informação original e a descompactada sejam idênticas
Ex.: executáveis e documentos texto
E com relação às imagens?
Alguns formatos usam apenas esse tipo. Ex. PNG e GIF*
Outros formatos usam ambos. Ex.: TIFF e MNG
Outros formatos usam algoritmos com perdas. Ex.: .bmp, .jpeg
![Page 12: Algorítmos e estrutura de dados III](https://reader035.fdocumentos.com/reader035/viewer/2022062323/5681538f550346895dc19312/html5/thumbnails/12.jpg)
Técnicas de Compressão sem Perda de Dados
Antes de se utilizar a técnicas de compressão, é necessário saber qual o tipo de informação que será compactada
Texto
Imagens
Sons
Algoritmos de compactação de textos não são eficientes na compactação de sons
![Page 13: Algorítmos e estrutura de dados III](https://reader035.fdocumentos.com/reader035/viewer/2022062323/5681538f550346895dc19312/html5/thumbnails/13.jpg)
Existem basicamente dois tipos de algoritmos de de compressão sem perda de dados :
Algoritmos de Modelos Estatísticos
Transformação de Burrows-Wheeler
LZ77
LZW
Algoritmos codificados que produzem seqüência de bits
Codificação Aritmética ou Freqüência de Caracteres
Codificação de Huffman
Existem algoritmos que são mesclas dos dois tipos de algoritmos. Ex.: o algoritmo DEFLATE utiliza uma combinação do algoritmo LZ77 e de Huffman.
Técnicas de Compressão sem Perda de Dados
![Page 14: Algorítmos e estrutura de dados III](https://reader035.fdocumentos.com/reader035/viewer/2022062323/5681538f550346895dc19312/html5/thumbnails/14.jpg)
Freqüência de Caracteres
Idéia bastante simples: determina-se a quantidade de símbolos idênticos consecutivos na cadeia
Cada uma das sub-seqüências máximas de símbolos na cadeia é substituída por um número
Esse número indica a freqüência do símbolo em questão
![Page 15: Algorítmos e estrutura de dados III](https://reader035.fdocumentos.com/reader035/viewer/2022062323/5681538f550346895dc19312/html5/thumbnails/15.jpg)
Freqüência de Caracteres – Exemplo
BBBEAAAAFFHHHHHCBMMALLLCDDBBBBBBBCC
3B1E4A2F5HCB2MA3LC2D7B2C
E se a conjunto de caractere tivesse um símbolo numérico?
Nesse caso, emprega-se um símbolo especial, ex., @, para anunciar que o ítem após esse símbolo representa um número
![Page 16: Algorítmos e estrutura de dados III](https://reader035.fdocumentos.com/reader035/viewer/2022062323/5681538f550346895dc19312/html5/thumbnails/16.jpg)
Freqüência de Caracteres – Exemplo
AAA33333BA6666888DDDDDDD99999999999AABBB1
3A5@3BA4@63@87D11@92A3B1@1
![Page 17: Algorítmos e estrutura de dados III](https://reader035.fdocumentos.com/reader035/viewer/2022062323/5681538f550346895dc19312/html5/thumbnails/17.jpg)
Codificação de Huffman - Motivação
Um dos métodos mais conhecidos
Cada caracter ASCII usa 7 bits – 8 bits para ASCII extendido
Em um texto a letra E aparece mais vezes que a letra Z
Como o padrão é fixo os caracteres usam a mesma quantidade de bits
A idéia do algoritmo é atribuir códigos mais curtos a símbolos com freqüências altas
Usar número variável de bits de acordo com a freqüência
A = 0 E = 110 I =10 O= 11 U=101 !=111
![Page 18: Algorítmos e estrutura de dados III](https://reader035.fdocumentos.com/reader035/viewer/2022062323/5681538f550346895dc19312/html5/thumbnails/18.jpg)
Necessidade de compactar dados
Coleção de dados com 50.000 ocorrencias de a, e, i, o, u, !. Caracteres com a seguinte frequencia:
Para armazenar 6 caracteres com sequencia fixa de bits 2 bits não serve, sendo necessários 3 bits.
Então total de bits será 50.000 x 3 = 150.000 bits
Caracter A E I O U !
Frequencia 52 8 12 11 7 10
![Page 19: Algorítmos e estrutura de dados III](https://reader035.fdocumentos.com/reader035/viewer/2022062323/5681538f550346895dc19312/html5/thumbnails/19.jpg)
Necessidade de compactar dados
Agora vamos supor que os caracteres são representados com uma sequencia variavel de bits
Abaixo está o cálculo do total de bits usado
Caracter A E I O U !
Sequencia variavel 0 110 10 11 101 111
Caracter A E I O U !
Qtd de bits 1 3 2 2 3 3
Frequencia 52 8 12 11 7 10
Total por carac. 26.000 12.000 12.000 11.000 10.500 15.000
![Page 20: Algorítmos e estrutura de dados III](https://reader035.fdocumentos.com/reader035/viewer/2022062323/5681538f550346895dc19312/html5/thumbnails/20.jpg)
Necessidade de compactar dados
Novo total são 86.500 bits
Representa uma economia de 42 % de espaço de armazenamento utilizando bits variáveis
Ganhe-se em economia mas aumenta-se a compexidade no uso
Como saber quando a sequencia de bits de um caracter termina e quando outro comeca
Com sequencia fixa seria só contar de n em n bits
Algoritmo de Huffman auxilia justamente nesse ponto propondo que uma arvore binaria auxiliar na construcao da tabela e identificacao dos bits
![Page 21: Algorítmos e estrutura de dados III](https://reader035.fdocumentos.com/reader035/viewer/2022062323/5681538f550346895dc19312/html5/thumbnails/21.jpg)
Codificação de Huffman
No algoritmo, forma-se uma árvore binária com arestas rotuladas
0 para o filho da esq uerda
1 para o filho da direita
Cada símbolo si está associado a uma folha da árvore
O código de si é igual à seqüência dos rótulos das arestas, desde a raiz até a folha
![Page 22: Algorítmos e estrutura de dados III](https://reader035.fdocumentos.com/reader035/viewer/2022062323/5681538f550346895dc19312/html5/thumbnails/22.jpg)
Codificação de Huffman - Exemplo
Suponha que um certa cadeia de caracteres S={s1, s2, ..., sn}
Seja a seqüência de caracteres
s4s3s3s1s3s1s4s5s1s3s3s3s3s3s2s3s5s2s2s2s4
E baseado na tabelaDúvidas:
Como montar a tabela?
Como ficaria minha árvore de Huffman?
Símbolo Código
S1 101
S2 111
S3 0
S4 110
S5 100
![Page 23: Algorítmos e estrutura de dados III](https://reader035.fdocumentos.com/reader035/viewer/2022062323/5681538f550346895dc19312/html5/thumbnails/23.jpg)
Codificação de Huffman - Exemplo
A seqüência dos 4 primeiros caracteres (S4 S3 S3 S1) da cadeia anterior ficaria:
11000101S4 S3S3 S1
Símbolo Código
S1 101
S2 111
S3 0
S4 110
S5 100S5 S2S4S1
0 1 0 1
10
1
S3
0
![Page 24: Algorítmos e estrutura de dados III](https://reader035.fdocumentos.com/reader035/viewer/2022062323/5681538f550346895dc19312/html5/thumbnails/24.jpg)
Codificação de Huffman
O objetivo então é construir uma árvore com custo mínimo, ou seja, a árvore mínima ou árvore de Huffman
Para construir:
Conte a quantidade de vezes que cada item aparece na seqüência
Some os dois itens com menores valores e adicione à árvore resultante
Itens com menor valor ficam à esquerda; os maiores à direita;
Proceda até que todos os itens tenham sido colocados na árvore
![Page 25: Algorítmos e estrutura de dados III](https://reader035.fdocumentos.com/reader035/viewer/2022062323/5681538f550346895dc19312/html5/thumbnails/25.jpg)
Árvores de Huffman - Construção
Na seqüência apresentada:
s4s3s3s1s3s1s4s5s1s3s3s3s3s3s2s3s5s2s2s2s4
Símbolo Frequencia
S1 3
S2 4
S3 9
S4 3
S5 2
S1 S2 S3 S4 S5
![Page 26: Algorítmos e estrutura de dados III](https://reader035.fdocumentos.com/reader035/viewer/2022062323/5681538f550346895dc19312/html5/thumbnails/26.jpg)
Árvores de Huffman - Construção
S5
S2 S3 S4
S1
50 1
S5 S2
S3
S4S1
5 70 1 0 1
Símbolo Frequencia
S1 3
S2 4
S3 9
S4 3
S5 2
![Page 27: Algorítmos e estrutura de dados III](https://reader035.fdocumentos.com/reader035/viewer/2022062323/5681538f550346895dc19312/html5/thumbnails/27.jpg)
Árvores de Huffman - Construção
S5 S2
S3
S4S1
5 70 1 0 1
1210
S5 S2
21
S4S1
5 70 1 0 1
1210
1
S3
0
Símbolo Frequencia
S1 3
S2 4
S3 9
S4 3
S5 2
![Page 28: Algorítmos e estrutura de dados III](https://reader035.fdocumentos.com/reader035/viewer/2022062323/5681538f550346895dc19312/html5/thumbnails/28.jpg)
Árvores de Huffman - Construção
Percorrendo a árvore de Huffman a tabela seria montada
Símbolo Código
S1 101
S2 111
S3 0
S4 110
S5 100
![Page 29: Algorítmos e estrutura de dados III](https://reader035.fdocumentos.com/reader035/viewer/2022062323/5681538f550346895dc19312/html5/thumbnails/29.jpg)
Compressão com Perda de Dados
![Page 30: Algorítmos e estrutura de dados III](https://reader035.fdocumentos.com/reader035/viewer/2022062323/5681538f550346895dc19312/html5/thumbnails/30.jpg)
Compressão com Perda de Dados
Definido como operação que admite alguma perda de qualidade dos dados
A informação é comprimida por algum algoritmo e, ao descomprimir, a informação é diferente da original, mas suficientemente parecida para que seja útil
Exemplo típico: a maioria das imagens .jpg na internet em que se percebe uma diminuição da qualidade próximo às bordas ou trocas de cor na imagem
![Page 31: Algorítmos e estrutura de dados III](https://reader035.fdocumentos.com/reader035/viewer/2022062323/5681538f550346895dc19312/html5/thumbnails/31.jpg)
Compressão com Perda de Dados
Dependendo do algoritmo aplicado, essa compressão sofre de perda constante
Perdem-se dados sucessivamente, à medida em que se aplica o algoritmo várias vezes, ao comprimir e descomprimir. Isso resulta numa maior perda de dados do que a aplicação do algoritmo de uma só vez
![Page 32: Algorítmos e estrutura de dados III](https://reader035.fdocumentos.com/reader035/viewer/2022062323/5681538f550346895dc19312/html5/thumbnails/32.jpg)
Compressão com Perda de Dados
Existem dois esquemas básicos de compressão:
Métodos de Transformação
Métodos Preditivos
Em alguns sistemas, as duas técnicas são combinadas.
![Page 33: Algorítmos e estrutura de dados III](https://reader035.fdocumentos.com/reader035/viewer/2022062323/5681538f550346895dc19312/html5/thumbnails/33.jpg)
Métodos de Transformação
Amostras de figuras ou sons são transformados em pequenos segmentos
Esses pequenos segmentos são transformados em um novo espaço base, e quantizado (limitação de possíveis valores)
Os valores quantizados são codificados para entropia
![Page 34: Algorítmos e estrutura de dados III](https://reader035.fdocumentos.com/reader035/viewer/2022062323/5681538f550346895dc19312/html5/thumbnails/34.jpg)
Métodos Preditivos
Informações decodificadas são usadas para prever qual será o próximo pacote, ex., próximo frame de imagem;
O erro entre o dado previsto e o dado real, junto com qualquer informação extra necessária para reproduzir a previsão, são quantizados e codificados;
![Page 35: Algorítmos e estrutura de dados III](https://reader035.fdocumentos.com/reader035/viewer/2022062323/5681538f550346895dc19312/html5/thumbnails/35.jpg)
Comparação entre os Métodos com e sem Perda de
Dados
![Page 36: Algorítmos e estrutura de dados III](https://reader035.fdocumentos.com/reader035/viewer/2022062323/5681538f550346895dc19312/html5/thumbnails/36.jpg)
Compressão com Perda de Dados
A compressão com perda consegue uma dimensão menor em disco
Possui, porém, uma qualidade mínima com relação ao original
Mais comumente usada em sons, vídeos e imagens, principalmente na troca de informações pela internet
Vídeos podem ser comprimidos numa razão de 300:1, perdas imperceptíveis ao ouvido humano;
Sons e imagens são comprimidos numa razão 10:1, mas imagem tem a qualidade afetada
![Page 37: Algorítmos e estrutura de dados III](https://reader035.fdocumentos.com/reader035/viewer/2022062323/5681538f550346895dc19312/html5/thumbnails/37.jpg)
Exemplo de Compressão com Perda
Imagem Original (12KB)
Imagem Comprimida (85% menos
informação, 1.8KB)
Mesma Imagem Altamente Comprimida (96% menos
informação, 0.56KB)