Compressão de Dadostiagodemelo.info/wp-content/uploads/2019/09/compressao...15/150 Histórico A...

150
Algoritmos e Estruturas de Dados II Compressão de Dados Prof. Tiago Eugenio de Melo [email protected] www.tiagodemelo.info

Transcript of Compressão de Dadostiagodemelo.info/wp-content/uploads/2019/09/compressao...15/150 Histórico A...

Page 1: Compressão de Dadostiagodemelo.info/wp-content/uploads/2019/09/compressao...15/150 Histórico A compressão de dados é oriunda da Criptografia: algoritmo de compressão é um codificador

Algoritmos e Estruturas de Dados II

Compressão de DadosProf. Tiago Eugenio de Melo

[email protected]

www.tiagodemelo.info

Page 2: Compressão de Dadostiagodemelo.info/wp-content/uploads/2019/09/compressao...15/150 Histórico A compressão de dados é oriunda da Criptografia: algoritmo de compressão é um codificador

2/150

Observações

● As palavras com a fonte Courier indicam as palavras-reservadas da linguagem de programação.

Page 3: Compressão de Dadostiagodemelo.info/wp-content/uploads/2019/09/compressao...15/150 Histórico A compressão de dados é oriunda da Criptografia: algoritmo de compressão é um codificador

3/150

Referências

● Projetos de Algoritmos – com implementações em Pascal e C. Nivio Ziviani. 2a edição. Thomson, 2005.

Page 4: Compressão de Dadostiagodemelo.info/wp-content/uploads/2019/09/compressao...15/150 Histórico A compressão de dados é oriunda da Criptografia: algoritmo de compressão é um codificador

4/150

SIGLAS

● RI – Recuperação de Informação.● NLP – Natural Language Processing

(Processamento de Linguagem Natural).

Page 5: Compressão de Dadostiagodemelo.info/wp-content/uploads/2019/09/compressao...15/150 Histórico A compressão de dados é oriunda da Criptografia: algoritmo de compressão é um codificador

5/150

INTRODUÇÃO

Page 6: Compressão de Dadostiagodemelo.info/wp-content/uploads/2019/09/compressao...15/150 Histórico A compressão de dados é oriunda da Criptografia: algoritmo de compressão é um codificador

6/150

Compressão de Dados

Page 7: Compressão de Dadostiagodemelo.info/wp-content/uploads/2019/09/compressao...15/150 Histórico A compressão de dados é oriunda da Criptografia: algoritmo de compressão é um codificador

7/150

Compressão de Dados

● Representação de uma fonte de dados de forma mais precisa possível utilizando um menor número de bits.

Page 8: Compressão de Dadostiagodemelo.info/wp-content/uploads/2019/09/compressao...15/150 Histórico A compressão de dados é oriunda da Criptografia: algoritmo de compressão é um codificador

8/150

Compressão de Dados

● Representação de uma fonte de dados de forma mais precisa possível utilizando um menor número de bits.

● Objetivo é fazer com que a mesma quantidade de informação seja representada em um menor espaço de armazenamento.

Page 9: Compressão de Dadostiagodemelo.info/wp-content/uploads/2019/09/compressao...15/150 Histórico A compressão de dados é oriunda da Criptografia: algoritmo de compressão é um codificador

9/150

Compressão de Dados

● Representação de uma fonte de dados de forma mais precisa possível utilizando um menor número de bits.

● Objetivo é fazer com que a mesma quantidade de informação seja representada em um menor espaço de armazenamento.

● Eliminar redundâncias: recorrências de letras, dígitos ou pixels.

Page 10: Compressão de Dadostiagodemelo.info/wp-content/uploads/2019/09/compressao...15/150 Histórico A compressão de dados é oriunda da Criptografia: algoritmo de compressão é um codificador

10/150

Compressão de Dados

● Representação de uma fonte de dados de forma mais precisa possível utilizando um menor número de bits.

● Objetivo é fazer com que a mesma quantidade de informação seja representada em um menor espaço de armazenamento.

● Eliminar redundâncias: recorrências de letras, dígitos ou pixels.

● O receptor deve ser capaz de decodificar os dados para acessar a informação.

Page 11: Compressão de Dadostiagodemelo.info/wp-content/uploads/2019/09/compressao...15/150 Histórico A compressão de dados é oriunda da Criptografia: algoritmo de compressão é um codificador

11/150

Histórico

Page 12: Compressão de Dadostiagodemelo.info/wp-content/uploads/2019/09/compressao...15/150 Histórico A compressão de dados é oriunda da Criptografia: algoritmo de compressão é um codificador

12/150

Histórico

● A compressão de dados é oriunda da Criptografia: algoritmo de compressão é um codificador e um decodificador.

Page 13: Compressão de Dadostiagodemelo.info/wp-content/uploads/2019/09/compressao...15/150 Histórico A compressão de dados é oriunda da Criptografia: algoritmo de compressão é um codificador

13/150

Histórico

● A compressão de dados é oriunda da Criptografia: algoritmo de compressão é um codificador e um decodificador.

● Relatos de encriptação por volta de 1.500 a.C. (escrita cifrada para guardar segredos).

Page 14: Compressão de Dadostiagodemelo.info/wp-content/uploads/2019/09/compressao...15/150 Histórico A compressão de dados é oriunda da Criptografia: algoritmo de compressão é um codificador

14/150

Histórico

● A compressão de dados é oriunda da Criptografia: algoritmo de compressão é um codificador e um decodificador.

● Relatos de encriptação por volta de 1.500 a.C. (escrita cifrada para guardar segredos).

● Gregos e espartanos usavam códigos em movimentos bélicos durante as guerras (475 a.C.).

Page 15: Compressão de Dadostiagodemelo.info/wp-content/uploads/2019/09/compressao...15/150 Histórico A compressão de dados é oriunda da Criptografia: algoritmo de compressão é um codificador

15/150

Histórico

● A compressão de dados é oriunda da Criptografia: algoritmo de compressão é um codificador e um decodificador.

● Relatos de encriptação por volta de 1.500 a.C. (escrita cifrada para guardar segredos).

● Gregos e espartanos usavam códigos em movimentos bélicos durante as guerras (475 a.C.).

● No Século XIX, a invenção do telégrafo e do Código Morse abriu espaço para a criptografia moderna que deixou de ter processos exclusivamente manuais.

Page 16: Compressão de Dadostiagodemelo.info/wp-content/uploads/2019/09/compressao...15/150 Histórico A compressão de dados é oriunda da Criptografia: algoritmo de compressão é um codificador

16/150

Histórico

Page 17: Compressão de Dadostiagodemelo.info/wp-content/uploads/2019/09/compressao...15/150 Histórico A compressão de dados é oriunda da Criptografia: algoritmo de compressão é um codificador

17/150

Histórico

● 1a Guerra Mundial (1914 a 1918): máquinas de codificação mecânicas usadas para codificar e decodificar textos usando encriptações sofisticadas e complexas.

Page 18: Compressão de Dadostiagodemelo.info/wp-content/uploads/2019/09/compressao...15/150 Histórico A compressão de dados é oriunda da Criptografia: algoritmo de compressão é um codificador

18/150

Histórico

● 1a Guerra Mundial (1914 a 1918): máquinas de codificação mecânicas usadas para codificar e decodificar textos usando encriptações sofisticadas e complexas.

● 2a Guerra Mundial (1939 a 1945): codificação da mensagem para esconder a informação que era passada através dos rádios (surge a compactação dos dados).

Page 19: Compressão de Dadostiagodemelo.info/wp-content/uploads/2019/09/compressao...15/150 Histórico A compressão de dados é oriunda da Criptografia: algoritmo de compressão é um codificador

19/150

Histórico

● 1a Guerra Mundial (1914 a 1918): máquinas de codificação mecânicas usadas para codificar e decodificar textos usando encriptações sofisticadas e complexas.

● 2a Guerra Mundial (1939 a 1945): codificação da mensagem para esconder a informação que era passada através dos rádios (surge a compactação dos dados).

● Advento dos computadores digitais:

Page 20: Compressão de Dadostiagodemelo.info/wp-content/uploads/2019/09/compressao...15/150 Histórico A compressão de dados é oriunda da Criptografia: algoritmo de compressão é um codificador

20/150

Histórico

● 1a Guerra Mundial (1914 a 1918): máquinas de codificação mecânicas usadas para codificar e decodificar textos usando encriptações sofisticadas e complexas.

● 2a Guerra Mundial (1939 a 1945): codificação da mensagem para esconder a informação que era passada através dos rádios (surge a compactação dos dados).

● Advento dos computadores digitais:– Necessidade de criação de códigos seguros.

Page 21: Compressão de Dadostiagodemelo.info/wp-content/uploads/2019/09/compressao...15/150 Histórico A compressão de dados é oriunda da Criptografia: algoritmo de compressão é um codificador

21/150

Histórico

● 1a Guerra Mundial (1914 a 1918): máquinas de codificação mecânicas usadas para codificar e decodificar textos usando encriptações sofisticadas e complexas.

● 2a Guerra Mundial (1939 a 1945): codificação da mensagem para esconder a informação que era passada através dos rádios (surge a compactação dos dados).

● Advento dos computadores digitais:– Necessidade de criação de códigos seguros.– Necessidade de redução do espaço de armazenamento.

Page 22: Compressão de Dadostiagodemelo.info/wp-content/uploads/2019/09/compressao...15/150 Histórico A compressão de dados é oriunda da Criptografia: algoritmo de compressão é um codificador

22/150

Motivação

Page 23: Compressão de Dadostiagodemelo.info/wp-content/uploads/2019/09/compressao...15/150 Histórico A compressão de dados é oriunda da Criptografia: algoritmo de compressão é um codificador

23/150

Motivação

● Explosão de informação textual disponível on-line:

Page 24: Compressão de Dadostiagodemelo.info/wp-content/uploads/2019/09/compressao...15/150 Histórico A compressão de dados é oriunda da Criptografia: algoritmo de compressão é um codificador

24/150

Motivação

● Explosão de informação textual disponível on-line:– Bibliotecas digitais.

Page 25: Compressão de Dadostiagodemelo.info/wp-content/uploads/2019/09/compressao...15/150 Histórico A compressão de dados é oriunda da Criptografia: algoritmo de compressão é um codificador

25/150

Motivação

● Explosão de informação textual disponível on-line:– Bibliotecas digitais.– Sistemas de automação de escritórios.

Page 26: Compressão de Dadostiagodemelo.info/wp-content/uploads/2019/09/compressao...15/150 Histórico A compressão de dados é oriunda da Criptografia: algoritmo de compressão é um codificador

26/150

Motivação

● Explosão de informação textual disponível on-line:– Bibliotecas digitais.– Sistemas de automação de escritórios.– Bancos de dados de documentos.

Page 27: Compressão de Dadostiagodemelo.info/wp-content/uploads/2019/09/compressao...15/150 Histórico A compressão de dados é oriunda da Criptografia: algoritmo de compressão é um codificador

27/150

Motivação

● Explosão de informação textual disponível on-line:– Bibliotecas digitais.– Sistemas de automação de escritórios.– Bancos de dados de documentos.– World Wide Web (WWW).

Page 28: Compressão de Dadostiagodemelo.info/wp-content/uploads/2019/09/compressao...15/150 Histórico A compressão de dados é oriunda da Criptografia: algoritmo de compressão é um codificador

28/150

Motivação

● Explosão de informação textual disponível on-line:– Bibliotecas digitais.– Sistemas de automação de escritórios.– Bancos de dados de documentos.– World Wide Web (WWW).

● Somente a Web tem hoje 1,714,748,192 de páginas estáticas disponíveis.

Page 29: Compressão de Dadostiagodemelo.info/wp-content/uploads/2019/09/compressao...15/150 Histórico A compressão de dados é oriunda da Criptografia: algoritmo de compressão é um codificador

29/150

Motivação

● Explosão de informação textual disponível on-line:– Bibliotecas digitais.– Sistemas de automação de escritórios.– Bancos de dados de documentos.– World Wide Web (WWW).

● Somente a Web tem hoje 1,714,748,192 de páginas estáticas disponíveis.– Cada bilhão de páginas ocupando aproximadamente

10 terabytes de texto.

Page 30: Compressão de Dadostiagodemelo.info/wp-content/uploads/2019/09/compressao...15/150 Histórico A compressão de dados é oriunda da Criptografia: algoritmo de compressão é um codificador

30/150

Motivação

● Explosão de informação textual disponível on-line:– Bibliotecas digitais.– Sistemas de automação de escritórios.– Bancos de dados de documentos.– World Wide Web (WWW).

● Somente a Web tem hoje 1,714,748,192 de páginas estáticas disponíveis.– Cada bilhão de páginas ocupando aproximadamente 10

terabytes de texto.– Há uma estimativa do Google ter mais de 60 trilhões de

páginas indexadas.

Page 31: Compressão de Dadostiagodemelo.info/wp-content/uploads/2019/09/compressao...15/150 Histórico A compressão de dados é oriunda da Criptografia: algoritmo de compressão é um codificador

31/150

Características necessárias para sistemas de RI

[1] Silva de Moura, Edleno, et al. "Fast and flexible word searching on compressed text." ACM Transactions on Information Systems (TOIS) 18.2 (2000): 113-139.

Page 32: Compressão de Dadostiagodemelo.info/wp-content/uploads/2019/09/compressao...15/150 Histórico A compressão de dados é oriunda da Criptografia: algoritmo de compressão é um codificador

32/150

Características necessárias para sistemas de RI

● Métodos de compressão de dados permitem:

[1] Silva de Moura, Edleno, et al. "Fast and flexible word searching on compressed text." ACM Transactions on Information Systems (TOIS) 18.2 (2000): 113-139.

Page 33: Compressão de Dadostiagodemelo.info/wp-content/uploads/2019/09/compressao...15/150 Histórico A compressão de dados é oriunda da Criptografia: algoritmo de compressão é um codificador

33/150

Características necessárias para sistemas de RI

● Métodos de compressão de dados permitem:– Pesquisar diretamente o texto comprimido mais

rapidamente do que o texto original.

[1] Silva de Moura, Edleno, et al. "Fast and flexible word searching on compressed text." ACM Transactions on Information Systems (TOIS) 18.2 (2000): 113-139.

Page 34: Compressão de Dadostiagodemelo.info/wp-content/uploads/2019/09/compressao...15/150 Histórico A compressão de dados é oriunda da Criptografia: algoritmo de compressão é um codificador

34/150

Características necessárias para sistemas de RI

● Métodos de compressão de dados permitem:– Pesquisar diretamente o texto comprimido mais

rapidamente do que o texto original.– Obter maior compressão em relação a métodos

tradicionais, gerando maior economia de espaço.

[1] Silva de Moura, Edleno, et al. "Fast and flexible word searching on compressed text." ACM Transactions on Information Systems (TOIS) 18.2 (2000): 113-139.

Page 35: Compressão de Dadostiagodemelo.info/wp-content/uploads/2019/09/compressao...15/150 Histórico A compressão de dados é oriunda da Criptografia: algoritmo de compressão é um codificador

35/150

Características necessárias para sistemas de RI

● Métodos de compressão de dados permitem:– Pesquisar diretamente o texto comprimido mais

rapidamente do que o texto original.– 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[1].

[1] Silva de Moura, Edleno, et al. "Fast and flexible word searching on compressed text." ACM Transactions on Information Systems (TOIS) 18.2 (2000): 113-139.

Page 36: Compressão de Dadostiagodemelo.info/wp-content/uploads/2019/09/compressao...15/150 Histórico A compressão de dados é oriunda da Criptografia: algoritmo de compressão é um codificador

36/150

Características necessárias para sistemas de RI

● Métodos de compressão de dados permitem:– Pesquisar diretamente o texto comprimido mais

rapidamente do que o texto original.– 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[1].

● Compromisso espaço versus tempo.

[1] Silva de Moura, Edleno, et al. "Fast and flexible word searching on compressed text." ACM Transactions on Information Systems (TOIS) 18.2 (2000): 113-139.

Page 37: Compressão de Dadostiagodemelo.info/wp-content/uploads/2019/09/compressao...15/150 Histórico A compressão de dados é oriunda da Criptografia: algoritmo de compressão é um codificador

37/150

Por que usar compressão?

Page 38: Compressão de Dadostiagodemelo.info/wp-content/uploads/2019/09/compressao...15/150 Histórico A compressão de dados é oriunda da Criptografia: algoritmo de compressão é um codificador

38/150

Por que usar compressão?

● Compressão de texto

Page 39: Compressão de Dadostiagodemelo.info/wp-content/uploads/2019/09/compressao...15/150 Histórico A compressão de dados é oriunda da Criptografia: algoritmo de compressão é um codificador

39/150

Por que usar compressão?

● Compressão de texto– Maneiras de representar o texto original em menos

espaço.

Page 40: Compressão de Dadostiagodemelo.info/wp-content/uploads/2019/09/compressao...15/150 Histórico A compressão de dados é oriunda da Criptografia: algoritmo de compressão é um codificador

40/150

Por que usar compressão?

● Compressão de texto– Maneiras de representar o texto original em menos

espaço.– Substituir os símbolos do texto por outros que

possam ser representados usando um número menor de bits ou bytes.

Page 41: Compressão de Dadostiagodemelo.info/wp-content/uploads/2019/09/compressao...15/150 Histórico A compressão de dados é oriunda da Criptografia: algoritmo de compressão é um codificador

41/150

Por que usar compressão?

● Compressão de texto– Maneiras de representar o texto original em menos

espaço.– Substituir os símbolos do texto por outros que

possam ser representados usando um número menor de bits ou bytes.

● Ganho obtido

Page 42: Compressão de Dadostiagodemelo.info/wp-content/uploads/2019/09/compressao...15/150 Histórico A compressão de dados é oriunda da Criptografia: algoritmo de compressão é um codificador

42/150

Por que usar compressão?

● Compressão de texto– Maneiras de representar o texto original em menos

espaço.– Substituir os símbolos do texto por outros que

possam ser representados usando um número menor de bits ou bytes.

● Ganho obtido– O texto comprimido ocupa menos espaço de

armazenamento.

Page 43: Compressão de Dadostiagodemelo.info/wp-content/uploads/2019/09/compressao...15/150 Histórico A compressão de dados é oriunda da Criptografia: algoritmo de compressão é um codificador

43/150

Por que usar compressão?

● Compressão de texto– Maneiras de representar o texto original em menos espaço.– Substituir os símbolos do texto por outros que possam ser

representados usando um número menor de bits ou bytes.● Ganho obtido

– O texto comprimido ocupa menos espaço de armazenamento.

– Menos tempo para ser lido do disco ou ser transmitido por um canal de comunicação e para ser pesquisado.

Page 44: Compressão de Dadostiagodemelo.info/wp-content/uploads/2019/09/compressao...15/150 Histórico A compressão de dados é oriunda da Criptografia: algoritmo de compressão é um codificador

44/150

Por que usar compressão?

Page 45: Compressão de Dadostiagodemelo.info/wp-content/uploads/2019/09/compressao...15/150 Histórico A compressão de dados é oriunda da Criptografia: algoritmo de compressão é um codificador

45/150

Por que usar compressão?

● Preço a pagar

Page 46: Compressão de Dadostiagodemelo.info/wp-content/uploads/2019/09/compressao...15/150 Histórico A compressão de dados é oriunda da Criptografia: algoritmo de compressão é um codificador

46/150

Por que usar compressão?

● Preço a pagar– Custo computacional para codificar e decodificar o

texto.

Page 47: Compressão de Dadostiagodemelo.info/wp-content/uploads/2019/09/compressao...15/150 Histórico A compressão de dados é oriunda da Criptografia: algoritmo de compressão é um codificador

47/150

Por que usar compressão?

● Preço a pagar– Custo computacional para codificar e decodificar o

texto.● Avanço da tecnologia

Page 48: Compressão de Dadostiagodemelo.info/wp-content/uploads/2019/09/compressao...15/150 Histórico A compressão de dados é oriunda da Criptografia: algoritmo de compressão é um codificador

48/150

Por que usar compressão?

● Preço a pagar– Custo computacional para codificar e decodificar o

texto.● Avanço da tecnologia

– Há estimativas de que em 20 anos, o tempo de acesso a discos magnéticos tem se mantido praticamente constante, enquanto a velocidade de processamento aumentou aproximadamente 2 mil vezes.

Page 49: Compressão de Dadostiagodemelo.info/wp-content/uploads/2019/09/compressao...15/150 Histórico A compressão de dados é oriunda da Criptografia: algoritmo de compressão é um codificador

49/150

Por que usar compressão?

● Preço a pagar– Custo computacional para codificar e decodificar o texto.

● Avanço da tecnologia– Há estimativas de que em 20 anos, o tempo de acesso a

discos magnéticos tem se mantido praticamente constante, enquanto a velocidade de processamento aumentou aproximadamente 2 mil vezes.

– Aumento do investimento no poder de computação em compressão em troca de menos espaço em disco ou menor tempo de transmissão.

Page 50: Compressão de Dadostiagodemelo.info/wp-content/uploads/2019/09/compressao...15/150 Histórico A compressão de dados é oriunda da Criptografia: algoritmo de compressão é um codificador

50/150

Razão de Compressão

Page 51: Compressão de Dadostiagodemelo.info/wp-content/uploads/2019/09/compressao...15/150 Histórico A compressão de dados é oriunda da Criptografia: algoritmo de compressão é um codificador

51/150

Razão de Compressão

● Definida pela porcentagem que o arquivo comprimido representa em relação ao tamanho do arquivo não comprimido.

Page 52: Compressão de Dadostiagodemelo.info/wp-content/uploads/2019/09/compressao...15/150 Histórico A compressão de dados é oriunda da Criptografia: algoritmo de compressão é um codificador

52/150

Razão de Compressão

● 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 por 30 bytes, então a razão de compressão é de 30%.

Page 53: Compressão de Dadostiagodemelo.info/wp-content/uploads/2019/09/compressao...15/150 Histórico A compressão de dados é oriunda da Criptografia: algoritmo de compressão é um codificador

53/150

Razão de Compressão

● 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 por 30 bytes, então a razão de compressão é de 30%.

● Utilizada para medir o ganho em espaço obtido por um método de compressão.

Page 54: Compressão de Dadostiagodemelo.info/wp-content/uploads/2019/09/compressao...15/150 Histórico A compressão de dados é oriunda da Criptografia: algoritmo de compressão é um codificador

54/150

Outros importantes aspectos a considerar

Page 55: Compressão de Dadostiagodemelo.info/wp-content/uploads/2019/09/compressao...15/150 Histórico A compressão de dados é oriunda da Criptografia: algoritmo de compressão é um codificador

55/150

Outros importantes aspectos a considerar

● Além da economia de espaço, deve-se considerar:

Page 56: Compressão de Dadostiagodemelo.info/wp-content/uploads/2019/09/compressao...15/150 Histórico A compressão de dados é oriunda da Criptografia: algoritmo de compressão é um codificador

56/150

Outros importantes aspectos a considerar

● Além da economia de espaço, deve-se considerar:– Velocidade de compressão e descompressão.

Page 57: Compressão de Dadostiagodemelo.info/wp-content/uploads/2019/09/compressao...15/150 Histórico A compressão de dados é oriunda da Criptografia: algoritmo de compressão é um codificador

57/150

Outros importantes aspectos a considerar

● Além da economia de espaço, deve-se considerar:– Velocidade de compressão e descompressão.– Possibilidade de realizar casamento de cadeias

diretamente do texto comprimido.

Page 58: Compressão de Dadostiagodemelo.info/wp-content/uploads/2019/09/compressao...15/150 Histórico A compressão de dados é oriunda da Criptografia: algoritmo de compressão é um codificador

58/150

Outros importantes aspectos a considerar

● Além da economia de espaço, deve-se considerar:– Velocidade de compressão e descompressão.– Possibilidade de realizar casamento de cadeias

diretamente do texto comprimido.– Permitir acesso direto a qualquer parte do texto

comprimido e iniciar a descompressão a partir da parte acessada.

Page 59: Compressão de Dadostiagodemelo.info/wp-content/uploads/2019/09/compressao...15/150 Histórico A compressão de dados é oriunda da Criptografia: algoritmo de compressão é um codificador

59/150

Outros importantes aspectos a considerar

● Além da economia de espaço, deve-se considerar:– Velocidade de compressão e descompressão.– Possibilidade de realizar casamento de cadeias diretamente

do texto comprimido.– Permitir acesso direto a qualquer parte do texto comprimido

e iniciar a descompressão a partir da parte acessada.● Um sistema de RI para grandes coleções de

documentos que estejam comprimidos necessitam acesso direto a qualquer ponto do texto comprimido.

Page 60: Compressão de Dadostiagodemelo.info/wp-content/uploads/2019/09/compressao...15/150 Histórico A compressão de dados é oriunda da Criptografia: algoritmo de compressão é um codificador

60/150

Código de Huffman

Page 61: Compressão de Dadostiagodemelo.info/wp-content/uploads/2019/09/compressao...15/150 Histórico A compressão de dados é oriunda da Criptografia: algoritmo de compressão é um codificador

61/150

O que é?

Page 62: Compressão de Dadostiagodemelo.info/wp-content/uploads/2019/09/compressao...15/150 Histórico A compressão de dados é oriunda da Criptografia: algoritmo de compressão é um codificador

62/150

O que é?

● É um método de compactação que usa as probabilidades de ocorrências dos símbolos no conjunto de dados a ser compactado para determinar códigos de tamanho variável para cada símbolo.

Page 63: Compressão de Dadostiagodemelo.info/wp-content/uploads/2019/09/compressao...15/150 Histórico A compressão de dados é oriunda da Criptografia: algoritmo de compressão é um codificador

63/150

Procedimento

Page 64: Compressão de Dadostiagodemelo.info/wp-content/uploads/2019/09/compressao...15/150 Histórico A compressão de dados é oriunda da Criptografia: algoritmo de compressão é um codificador

64/150

Procedimento

● É construída uma árvore binária baseada na frequência de uso das letras do alfabeto de modo que as mais frequentemente utilizadas apareçam mais perto da raiz.

Page 65: Compressão de Dadostiagodemelo.info/wp-content/uploads/2019/09/compressao...15/150 Histórico A compressão de dados é oriunda da Criptografia: algoritmo de compressão é um codificador

65/150

Procedimento

● É construída uma árvore binária baseada na frequência de uso das letras do alfabeto de modo que as mais frequentemente utilizadas apareçam mais perto da raiz.

● A árvore é construída de baixo para cima (das folhas para a raiz), começando a partir das letras menos usadas até atingir a raiz.

Page 66: Compressão de Dadostiagodemelo.info/wp-content/uploads/2019/09/compressao...15/150 Histórico A compressão de dados é oriunda da Criptografia: algoritmo de compressão é um codificador

66/150

Procedimento

Page 67: Compressão de Dadostiagodemelo.info/wp-content/uploads/2019/09/compressao...15/150 Histórico A compressão de dados é oriunda da Criptografia: algoritmo de compressão é um codificador

67/150

Procedimento

● Etapas:

Page 68: Compressão de Dadostiagodemelo.info/wp-content/uploads/2019/09/compressao...15/150 Histórico A compressão de dados é oriunda da Criptografia: algoritmo de compressão é um codificador

68/150

Procedimento

● Etapas:– Cálculo da frequência de cada caractere no

arquivo.

Page 69: Compressão de Dadostiagodemelo.info/wp-content/uploads/2019/09/compressao...15/150 Histórico A compressão de dados é oriunda da Criptografia: algoritmo de compressão é um codificador

69/150

Procedimento

● Etapas:– Cálculo da frequência de cada caractere no

arquivo.– Execução do algoritmo de Huffman para a

construção de uma árvore binária.

Page 70: Compressão de Dadostiagodemelo.info/wp-content/uploads/2019/09/compressao...15/150 Histórico A compressão de dados é oriunda da Criptografia: algoritmo de compressão é um codificador

70/150

Procedimento

● Etapas:– Cálculo da frequência de cada caractere no

arquivo.– Execução do algoritmo de Huffman para a

construção de uma árvore binária.– Codificação propriamente dita.

Page 71: Compressão de Dadostiagodemelo.info/wp-content/uploads/2019/09/compressao...15/150 Histórico A compressão de dados é oriunda da Criptografia: algoritmo de compressão é um codificador

71/150

Compressão de textos em linguagem natural

Page 72: Compressão de Dadostiagodemelo.info/wp-content/uploads/2019/09/compressao...15/150 Histórico A compressão de dados é oriunda da Criptografia: algoritmo de compressão é um codificador

72/150

Compressão de textos em linguagem natural

● Um dos métodos de codificação mais conhecidos é o de Huffman (1952):

Page 73: Compressão de Dadostiagodemelo.info/wp-content/uploads/2019/09/compressao...15/150 Histórico A compressão de dados é oriunda da Criptografia: algoritmo de compressão é um codificador

73/150

Compressão de textos em linguagem natural

● Um dos métodos de codificação mais conhecidos é o de Huffman (1952):– Atribui códigos mais curtos a símbolos com

frequências altas.

Page 74: Compressão de Dadostiagodemelo.info/wp-content/uploads/2019/09/compressao...15/150 Histórico A compressão de dados é oriunda da Criptografia: algoritmo de compressão é um codificador

74/150

Compressão de textos em linguagem natural

● Um dos métodos de codificação mais conhecidos é o de Huffman (1952):– Atribui códigos mais curtos a símbolos com

frequências altas.– Um código único, de tamanho variável, é atribuído

a cada símbolo diferente do texto.

Page 75: Compressão de Dadostiagodemelo.info/wp-content/uploads/2019/09/compressao...15/150 Histórico A compressão de dados é oriunda da Criptografia: algoritmo de compressão é um codificador

75/150

Compressão de textos em linguagem natural

● Um dos métodos de codificação mais conhecidos é o de Huffman (1952):– Atribui códigos mais curtos a símbolos com

frequências altas.– Um código único, de tamanho variável, é atribuído

a cada símbolo diferente do texto.– As implementações tradicionais do método de

Huffman consideram caracteres como símbolos.

Page 76: Compressão de Dadostiagodemelo.info/wp-content/uploads/2019/09/compressao...15/150 Histórico A compressão de dados é oriunda da Criptografia: algoritmo de compressão é um codificador

76/150

Compressão de textos em linguagem natural

● Um dos métodos de codificação mais conhecidos é o de Huffman (1952):– Atribui códigos mais curtos a símbolos com frequências

altas.– Um código único, de tamanho variável, é atribuído a cada

símbolo diferente do texto.– As implementações tradicionais do método de Huffman

consideram caracteres como símbolos.– Para aliar as necessidades dos algoritmos de

compressão às necessidades dos sistemas de RI apontadas acima, deve-se considerar palavras como símbolos a serem codificados.

Page 77: Compressão de Dadostiagodemelo.info/wp-content/uploads/2019/09/compressao...15/150 Histórico A compressão de dados é oriunda da Criptografia: algoritmo de compressão é um codificador

77/150

Compressão de textos em linguagem natural

● Um dos métodos de codificação mais conhecidos é o de Huffman (1952):– Atribui códigos mais curtos a símbolos com frequências altas.– Um código único, de tamanho variável, é atribuído a cada

símbolo diferente do texto.– As implementações tradicionais do método de Huffman

consideram caracteres como símbolos.– Para aliar as necessidades dos algoritmos de compressão às

necessidades dos sistemas de RI apontadas acima, deve-se considerar palavras como símbolos a serem codificados.

– Métodos de Huffman baseados em caracteres comprimem o texto para aproximadamente 60%.

Page 78: Compressão de Dadostiagodemelo.info/wp-content/uploads/2019/09/compressao...15/150 Histórico A compressão de dados é oriunda da Criptografia: algoritmo de compressão é um codificador

78/150

Compressão de textos em linguagem natural

● Um dos métodos de codificação mais conhecidos é o de Huffman (1952):– Atribui códigos mais curtos a símbolos com frequências altas.– Um código único, de tamanho variável, é atribuído a cada símbolo

diferente do texto.– As implementações tradicionais do método de Huffman consideram

caracteres como símbolos.– Para aliar as necessidades dos algoritmos de compressão às

necessidades dos sistemas de RI apontadas acima, deve-se considerar palavras como símbolos a serem codificados.

– Métodos de Huffman baseados em caracteres comprimem o texto para aproximadamente 60%.

– Métodos de Huffman baseados em palavras comprimem o texto para valores pouco acima de 25%.

Page 79: Compressão de Dadostiagodemelo.info/wp-content/uploads/2019/09/compressao...15/150 Histórico A compressão de dados é oriunda da Criptografia: algoritmo de compressão é um codificador

79/150

Métodos de Huffman baseados em palavras: vantagens

Page 80: Compressão de Dadostiagodemelo.info/wp-content/uploads/2019/09/compressao...15/150 Histórico A compressão de dados é oriunda da Criptografia: algoritmo de compressão é um codificador

80/150

Métodos de Huffman baseados em palavras: vantagens

● Permitem acesso randômico a palavras dentro do texto comprimido.

Page 81: Compressão de Dadostiagodemelo.info/wp-content/uploads/2019/09/compressao...15/150 Histórico A compressão de dados é oriunda da Criptografia: algoritmo de compressão é um codificador

81/150

Métodos de Huffman baseados em palavras: vantagens

● Permitem acesso randômico a palavras dentro do texto comprimido.

● Considerar palavras como símbolos significa que a tabela de símbolos do codificador é exatamente o vocabulário do texto.

Page 82: Compressão de Dadostiagodemelo.info/wp-content/uploads/2019/09/compressao...15/150 Histórico A compressão de dados é oriunda da Criptografia: algoritmo de compressão é um codificador

82/150

Métodos de Huffman baseados em palavras: vantagens

● Permitem acesso randômico a palavras dentro do texto comprimido.

● Considerar palavras como símbolos significa que a tabela de símbolos do codificador é exatamente o vocabulário do texto.– Isso permite uma integração natural entre o método

de compressão e o arquivo invertido.

Page 83: Compressão de Dadostiagodemelo.info/wp-content/uploads/2019/09/compressao...15/150 Histórico A compressão de dados é oriunda da Criptografia: algoritmo de compressão é um codificador

83/150

Compressão de Huffman usando palavras

Page 84: Compressão de Dadostiagodemelo.info/wp-content/uploads/2019/09/compressao...15/150 Histórico A compressão de dados é oriunda da Criptografia: algoritmo de compressão é um codificador

84/150

Compressão de Huffman usando palavras

● Técnica de compressão mais eficaz para textos em linguagem natural.

Page 85: Compressão de Dadostiagodemelo.info/wp-content/uploads/2019/09/compressao...15/150 Histórico A compressão de dados é oriunda da Criptografia: algoritmo de compressão é um codificador

85/150

Compressão de Huffman usando palavras

● Técnica de compressão mais eficaz para textos em linguagem natural.

● O método considera cada palavra diferente do texto como um símbolo.

Page 86: Compressão de Dadostiagodemelo.info/wp-content/uploads/2019/09/compressao...15/150 Histórico A compressão de dados é oriunda da Criptografia: algoritmo de compressão é um codificador

86/150

Compressão de Huffman usando palavras

● Técnica de compressão mais eficaz para textos em linguagem natural.

● O método considera cada palavra diferente do texto como um símbolo.– Conta suas frequências e gera um código de

Huffman para as suas palavras.

Page 87: Compressão de Dadostiagodemelo.info/wp-content/uploads/2019/09/compressao...15/150 Histórico A compressão de dados é oriunda da Criptografia: algoritmo de compressão é um codificador

87/150

Compressão de Huffman usando palavras

● Técnica de compressão mais eficaz para textos em linguagem natural.

● O método considera cada palavra diferente do texto como um símbolo.– Conta suas frequências e gera um código de

Huffman para as suas palavras.– A seguir, comprime o texto substituindo cada

palavra pelo seu código.

Page 88: Compressão de Dadostiagodemelo.info/wp-content/uploads/2019/09/compressao...15/150 Histórico A compressão de dados é oriunda da Criptografia: algoritmo de compressão é um codificador

88/150

Compressão de Huffman usando palavras

● Técnica de compressão mais eficaz para textos em linguagem natural.

● O método considera cada palavra diferente do texto como um símbolo.– Conta suas frequências e gera um código de

Huffman para as suas palavras.– A seguir, comprime o texto substituindo cada

palavra pelo seu código.● Assim, a compressão é realizada em duas

passadas sobre o texto:

Page 89: Compressão de Dadostiagodemelo.info/wp-content/uploads/2019/09/compressao...15/150 Histórico A compressão de dados é oriunda da Criptografia: algoritmo de compressão é um codificador

89/150

Compressão de Huffman usando palavras

● Técnica de compressão mais eficaz para textos em linguagem natural.

● O método considera cada palavra diferente do texto como um símbolo.– Conta suas frequências e gera um código de Huffman

para as suas palavras.– A seguir, comprime o texto substituindo cada palavra

pelo seu código.● Assim, a compressão é realizada em duas

passadas sobre o texto:– Obtenção da frequência de cada palavra diferente.

Page 90: Compressão de Dadostiagodemelo.info/wp-content/uploads/2019/09/compressao...15/150 Histórico A compressão de dados é oriunda da Criptografia: algoritmo de compressão é um codificador

90/150

Compressão de Huffman usando palavras

● Técnica de compressão mais eficaz para textos em linguagem natural.

● O método considera cada palavra diferente do texto como um símbolo.– Conta suas frequências e gera um código de Huffman para

as suas palavras.– A seguir, comprime o texto substituindo cada palavra pelo

seu código.● Assim, a compressão é realizada em duas passadas

sobre o texto:– Obtenção da frequência de cada palavra diferente.– Realização da compressão.

Page 91: Compressão de Dadostiagodemelo.info/wp-content/uploads/2019/09/compressao...15/150 Histórico A compressão de dados é oriunda da Criptografia: algoritmo de compressão é um codificador

91/150

Forma eficiente de lidar com palavras e separadores

Page 92: Compressão de Dadostiagodemelo.info/wp-content/uploads/2019/09/compressao...15/150 Histórico A compressão de dados é oriunda da Criptografia: algoritmo de compressão é um codificador

92/150

Forma eficiente de lidar com palavras e separadores

● Um texto em linguagem natural é constituído de palavras e separadores.

Page 93: Compressão de Dadostiagodemelo.info/wp-content/uploads/2019/09/compressao...15/150 Histórico A compressão de dados é oriunda da Criptografia: algoritmo de compressão é um codificador

93/150

Forma eficiente de lidar com palavras e separadores

● Um texto em linguagem natural é constituído de palavras e separadores.

● Separadores são caracteres que aparecem entre palavras:

Page 94: Compressão de Dadostiagodemelo.info/wp-content/uploads/2019/09/compressao...15/150 Histórico A compressão de dados é oriunda da Criptografia: algoritmo de compressão é um codificador

94/150

Forma eficiente de lidar com palavras e separadores

● Um texto em linguagem natural é constituído de palavras e separadores.

● Separadores são caracteres que aparecem entre palavras:– Espaço, vírgula, ponto, ponto e vírgula,

interrogação, entre outros.

Page 95: Compressão de Dadostiagodemelo.info/wp-content/uploads/2019/09/compressao...15/150 Histórico A compressão de dados é oriunda da Criptografia: algoritmo de compressão é um codificador

95/150

Forma eficiente de lidar com palavras e separadores

● Um texto em linguagem natural é constituído de palavras e separadores.

● Separadores são caracteres que aparecem entre palavras:– Espaço, vírgula, ponto, ponto e vírgula,

interrogação, entre outros.● Uma forma eficiente de lidar com palavras e

separadores é representar o espaço simples de forma implícita no texto comprimido.

Page 96: Compressão de Dadostiagodemelo.info/wp-content/uploads/2019/09/compressao...15/150 Histórico A compressão de dados é oriunda da Criptografia: algoritmo de compressão é um codificador

96/150

Forma eficiente de lidar com palavras e separadores

● Um texto em linguagem natural é constituído de palavras e separadores.

● Separadores são caracteres que aparecem entre palavras:– Espaço, vírgula, ponto, ponto e vírgula, interrogação,

entre outros.● Uma forma eficiente de lidar com palavras e

separadores é representar o espaço simples de forma implícita no texto comprimido.– Nesse modelo, se uma palavra é seguida de um espaço,

então somente a palavra é codificada.

Page 97: Compressão de Dadostiagodemelo.info/wp-content/uploads/2019/09/compressao...15/150 Histórico A compressão de dados é oriunda da Criptografia: algoritmo de compressão é um codificador

97/150

Forma eficiente de lidar com palavras e separadores

● Um texto em linguagem natural é constituído de palavras e separadores.

● Separadores são caracteres que aparecem entre palavras:– Espaço, vírgula, ponto, ponto e vírgula, interrogação, entre

outros.● Uma forma eficiente de lidar com palavras e separadores

é representar o espaço simples de forma implícita no texto comprimido.– Nesse modelo, se uma palavra é seguida de um espaço, então

somente a palavra é codificada.– Senão, a palavra e o separador são codificados separadamente.

Page 98: Compressão de Dadostiagodemelo.info/wp-content/uploads/2019/09/compressao...15/150 Histórico A compressão de dados é oriunda da Criptografia: algoritmo de compressão é um codificador

98/150

Forma eficiente de lidar com palavras e separadores

● Um texto em linguagem natural é constituído de palavras e separadores.

● Separadores são caracteres que aparecem entre palavras:– Espaço, vírgula, ponto, ponto e vírgula, interrogação, entre outros.

● Uma forma eficiente de lidar com palavras e separadores é representar o espaço simples de forma implícita no texto comprimido.– Nesse modelo, se uma palavra é seguida de um espaço, então

somente a palavra é codificada.– Senão, a palavra e o separador são codificados separadamente.

● No momento da decodificação, supõe-se que um espaço simples segue cada palavra, a não ser que o próximo símbolo corresponda a um separador.

Page 99: Compressão de Dadostiagodemelo.info/wp-content/uploads/2019/09/compressao...15/150 Histórico A compressão de dados é oriunda da Criptografia: algoritmo de compressão é um codificador

100/150

Árvore de Huffman

Page 100: Compressão de Dadostiagodemelo.info/wp-content/uploads/2019/09/compressao...15/150 Histórico A compressão de dados é oriunda da Criptografia: algoritmo de compressão é um codificador

101/150

Árvore de Huffman

● O método de Huffman produz a árvore de codificação que minimiza o comprimento do arquivo compactado.

Page 101: Compressão de Dadostiagodemelo.info/wp-content/uploads/2019/09/compressao...15/150 Histórico A compressão de dados é oriunda da Criptografia: algoritmo de compressão é um codificador

102/150

Árvore de Huffman

● O método de Huffman produz a árvore de codificação que minimiza o comprimento do arquivo compactado.

● Existem diversas árvores que produzem a mesma compressão:

Page 102: Compressão de Dadostiagodemelo.info/wp-content/uploads/2019/09/compressao...15/150 Histórico A compressão de dados é oriunda da Criptografia: algoritmo de compressão é um codificador

103/150

Árvore de Huffman

● O método de Huffman produz a árvore de codificação que minimiza o comprimento do arquivo compactado.

● Existem diversas árvores que produzem a mesma compressão:– Por exemplo, trocar o filho à esquerda de um nó

por um filho à direita leva a uma árvore de codificação alternativa com a mesma razão de compressão.

Page 103: Compressão de Dadostiagodemelo.info/wp-content/uploads/2019/09/compressao...15/150 Histórico A compressão de dados é oriunda da Criptografia: algoritmo de compressão é um codificador

104/150

Árvore de Huffman

● O método de Huffman produz a árvore de codificação que minimiza o comprimento do arquivo compactado.

● Existem diversas árvores que produzem a mesma compressão:– Por exemplo, trocar o filho à esquerda de um nó

por um filho à direita leva a uma árvore de codificação alternativa com a mesma razão de compressão.

– Entretanto, a escolha preferencial para a maioria das aplicações é a árvore canônica.

Page 104: Compressão de Dadostiagodemelo.info/wp-content/uploads/2019/09/compressao...15/150 Histórico A compressão de dados é oriunda da Criptografia: algoritmo de compressão é um codificador

105/150

Árvore de Huffman

● O método de Huffman produz a árvore de codificação que minimiza o comprimento do arquivo compactado.

● Existem diversas árvores que produzem a mesma compressão:– Por exemplo, trocar o filho à esquerda de um nó por um

filho à direita leva a uma árvore de codificação alternativa com a mesma razão de compressão.

– Entretanto, a escolha preferencial para a maioria das aplicações é a árvore canônica.

● Uma árvore de Huffman é canônica quando a altura da subárvore à direita de qualquer nó nunca é menor que a altura da subárvore à esquerda.

Page 105: Compressão de Dadostiagodemelo.info/wp-content/uploads/2019/09/compressao...15/150 Histórico A compressão de dados é oriunda da Criptografia: algoritmo de compressão é um codificador

106/150

Árvore de Huffman

Page 106: Compressão de Dadostiagodemelo.info/wp-content/uploads/2019/09/compressao...15/150 Histórico A compressão de dados é oriunda da Criptografia: algoritmo de compressão é um codificador

107/150

Árvore de Huffman

● A representação do código na forma de árvore facilita a visualização.

Page 107: Compressão de Dadostiagodemelo.info/wp-content/uploads/2019/09/compressao...15/150 Histórico A compressão de dados é oriunda da Criptografia: algoritmo de compressão é um codificador

108/150

Árvore de Huffman

● A representação do código na forma de árvore facilita a visualização.

● Sugere métodos de codificação e decodificação triviais:

Page 108: Compressão de Dadostiagodemelo.info/wp-content/uploads/2019/09/compressao...15/150 Histórico A compressão de dados é oriunda da Criptografia: algoritmo de compressão é um codificador

109/150

Árvore de Huffman

● A representação do código na forma de árvore facilita a visualização.

● Sugere métodos de codificação e decodificação triviais:– Codificação: a árvore é percorrida emitindo bits ao

longo de suas arestas.

Page 109: Compressão de Dadostiagodemelo.info/wp-content/uploads/2019/09/compressao...15/150 Histórico A compressão de dados é oriunda da Criptografia: algoritmo de compressão é um codificador

110/150

Árvore de Huffman

● A representação do código na forma de árvore facilita a visualização.

● Sugere métodos de codificação e decodificação triviais:– Codificação: a árvore é percorrida emitindo bits ao

longo de suas arestas.– Decodificação: os bits de entrada são usados para

selecionar as arestas.

Page 110: Compressão de Dadostiagodemelo.info/wp-content/uploads/2019/09/compressao...15/150 Histórico A compressão de dados é oriunda da Criptografia: algoritmo de compressão é um codificador

111/150

Árvore de Huffman

● A representação do código na forma de árvore facilita a visualização.

● Sugere métodos de codificação e decodificação triviais:– Codificação: a árvore é percorrida emitindo bits ao

longo de suas arestas.– Decodificação: os bits de entrada são usados para

selecionar as arestas.– Essa abordagem é ineficiente tanto em termos de

espaço quanto em termos de tempo.

Page 111: Compressão de Dadostiagodemelo.info/wp-content/uploads/2019/09/compressao...15/150 Histórico A compressão de dados é oriunda da Criptografia: algoritmo de compressão é um codificador

112/150

Algoritmo baseado na codificação canônica com comportamento linear

em tempo e espaço

Page 112: Compressão de Dadostiagodemelo.info/wp-content/uploads/2019/09/compressao...15/150 Histórico A compressão de dados é oriunda da Criptografia: algoritmo de compressão é um codificador

113/150

Algoritmo baseado na codificação canônica com comportamento linear

em tempo e espaço● O algoritmo é atribuído a Moffat e Katajainen

(1995)

Page 113: Compressão de Dadostiagodemelo.info/wp-content/uploads/2019/09/compressao...15/150 Histórico A compressão de dados é oriunda da Criptografia: algoritmo de compressão é um codificador

114/150

Algoritmo baseado na codificação canônica com comportamento linear

em tempo e espaço● O algoritmo é atribuído a Moffat e Katajainen

(1995)● Calcula os comprimentos dos códigos em lugar

dos códigos propriamente ditos.

Page 114: Compressão de Dadostiagodemelo.info/wp-content/uploads/2019/09/compressao...15/150 Histórico A compressão de dados é oriunda da Criptografia: algoritmo de compressão é um codificador

115/150

Algoritmo baseado na codificação canônica com comportamento linear

em tempo e espaço● O algoritmo é atribuído a Moffat e Katajainen

(1995)● Calcula os comprimentos dos códigos em lugar

dos códigos propriamente ditos.● A compressão atingida é a mesma,

independentemente dos códigos utilizados.

Page 115: Compressão de Dadostiagodemelo.info/wp-content/uploads/2019/09/compressao...15/150 Histórico A compressão de dados é oriunda da Criptografia: algoritmo de compressão é um codificador

116/150

Algoritmo baseado na codificação canônica com comportamento linear

em tempo e espaço● O algoritmo é atribuído a Moffat e Katajainen

(1995)● Calcula os comprimentos dos códigos em lugar

dos códigos propriamente ditos.● A compressão atingida é a mesma,

independentemente dos códigos utilizados.● Após o cálculo dos comprimentos, há uma forma

elegante e eficiente para a codificação e a decodificação.

Page 116: Compressão de Dadostiagodemelo.info/wp-content/uploads/2019/09/compressao...15/150 Histórico A compressão de dados é oriunda da Criptografia: algoritmo de compressão é um codificador

117/150

Exemplo

Page 117: Compressão de Dadostiagodemelo.info/wp-content/uploads/2019/09/compressao...15/150 Histórico A compressão de dados é oriunda da Criptografia: algoritmo de compressão é um codificador

118/150

Exemplo

● Considere a seguinte sequência de caracteres:

Page 118: Compressão de Dadostiagodemelo.info/wp-content/uploads/2019/09/compressao...15/150 Histórico A compressão de dados é oriunda da Criptografia: algoritmo de compressão é um codificador

119/150

Exemplo

● Considere a seguinte sequência de caracteres:

AAAAAABBBBBCCCCDDDEEF

Page 119: Compressão de Dadostiagodemelo.info/wp-content/uploads/2019/09/compressao...15/150 Histórico A compressão de dados é oriunda da Criptografia: algoritmo de compressão é um codificador

120/150

Exemplo

● Considere a seguinte sequência de caracteres:

AAAAAABBBBBCCCCDDDEEF● A menor codificação possível para os

caracteres é em binário de três bits por caractere.

Page 120: Compressão de Dadostiagodemelo.info/wp-content/uploads/2019/09/compressao...15/150 Histórico A compressão de dados é oriunda da Criptografia: algoritmo de compressão é um codificador

121/150

Exemplo

● Considere a seguinte sequência de caracteres:

AAAAAABBBBBCCCCDDDEEF● A menor codificação possível para os

caracteres é em binário de três bits por caractere.

● Portanto:

Page 121: Compressão de Dadostiagodemelo.info/wp-content/uploads/2019/09/compressao...15/150 Histórico A compressão de dados é oriunda da Criptografia: algoritmo de compressão é um codificador

122/150

Exemplo

● Considere a seguinte sequência de caracteres:

AAAAAABBBBBCCCCDDDEEF● A menor codificação possível para os

caracteres é em binário de três bits por caractere.

● Portanto:

Page 122: Compressão de Dadostiagodemelo.info/wp-content/uploads/2019/09/compressao...15/150 Histórico A compressão de dados é oriunda da Criptografia: algoritmo de compressão é um codificador

123/150

Exemplo

● Considere a seguinte sequência de caracteres:

AAAAAABBBBBCCCCDDDEEF● A menor codificação possível para os caracteres

é em binário de três bits por caractere.● Portanto:

● Gerando:

Page 123: Compressão de Dadostiagodemelo.info/wp-content/uploads/2019/09/compressao...15/150 Histórico A compressão de dados é oriunda da Criptografia: algoritmo de compressão é um codificador

124/150

Exemplo

● Considere a seguinte sequência de caracteres:

AAAAAABBBBBCCCCDDDEEF● A menor codificação possível para os caracteres é

em binário de três bits por caractere.● Portanto:

● Gerando:000000000000000000001001001001001010010010010011011011100100101

Page 124: Compressão de Dadostiagodemelo.info/wp-content/uploads/2019/09/compressao...15/150 Histórico A compressão de dados é oriunda da Criptografia: algoritmo de compressão é um codificador

125/150

Exemplo

● Considere a seguinte sequência de caracteres:

AAAAAABBBBBCCCCDDDEEF● A menor codificação possível para os caracteres é

em binário de três bits por caractere.● Portanto:

● Gerando:000000000000000000001001001001001010010010010011011011100100101

63 bits de comprimento

Page 125: Compressão de Dadostiagodemelo.info/wp-content/uploads/2019/09/compressao...15/150 Histórico A compressão de dados é oriunda da Criptografia: algoritmo de compressão é um codificador

126/150

Exemplo (cont.)

Page 126: Compressão de Dadostiagodemelo.info/wp-content/uploads/2019/09/compressao...15/150 Histórico A compressão de dados é oriunda da Criptografia: algoritmo de compressão é um codificador

127/150

Exemplo (cont.)

● Para usar o código de Huffman, é necessário montar uma árvore.

Page 127: Compressão de Dadostiagodemelo.info/wp-content/uploads/2019/09/compressao...15/150 Histórico A compressão de dados é oriunda da Criptografia: algoritmo de compressão é um codificador

128/150

Exemplo (cont.)

● Para usar o código de Huffman, é necessário montar uma árvore.

● O primeiro passo é contar as ocorrências de cada símbolo da cadeia:

Page 128: Compressão de Dadostiagodemelo.info/wp-content/uploads/2019/09/compressao...15/150 Histórico A compressão de dados é oriunda da Criptografia: algoritmo de compressão é um codificador

129/150

Exemplo (cont.)

● Para usar o código de Huffman, é necessário montar uma árvore.

● O primeiro passo é contar as ocorrências de cada símbolo da cadeia:

Page 129: Compressão de Dadostiagodemelo.info/wp-content/uploads/2019/09/compressao...15/150 Histórico A compressão de dados é oriunda da Criptografia: algoritmo de compressão é um codificador

130/150

Exemplo (cont.)

Page 130: Compressão de Dadostiagodemelo.info/wp-content/uploads/2019/09/compressao...15/150 Histórico A compressão de dados é oriunda da Criptografia: algoritmo de compressão é um codificador

131/150

Exemplo (cont.)

● Passo 1

Page 131: Compressão de Dadostiagodemelo.info/wp-content/uploads/2019/09/compressao...15/150 Histórico A compressão de dados é oriunda da Criptografia: algoritmo de compressão é um codificador

132/150

Exemplo (cont.)

● Passo 1

Page 132: Compressão de Dadostiagodemelo.info/wp-content/uploads/2019/09/compressao...15/150 Histórico A compressão de dados é oriunda da Criptografia: algoritmo de compressão é um codificador

133/150

Exemplo (cont.)

● Passo 1

● Passo 2

Page 133: Compressão de Dadostiagodemelo.info/wp-content/uploads/2019/09/compressao...15/150 Histórico A compressão de dados é oriunda da Criptografia: algoritmo de compressão é um codificador

134/150

Exemplo (cont.)

● Passo 1

● Passo 2

Page 134: Compressão de Dadostiagodemelo.info/wp-content/uploads/2019/09/compressao...15/150 Histórico A compressão de dados é oriunda da Criptografia: algoritmo de compressão é um codificador

135/150

Exemplo (cont.)

Page 135: Compressão de Dadostiagodemelo.info/wp-content/uploads/2019/09/compressao...15/150 Histórico A compressão de dados é oriunda da Criptografia: algoritmo de compressão é um codificador

136/150

Exemplo (cont.)

● Passo 3

Page 136: Compressão de Dadostiagodemelo.info/wp-content/uploads/2019/09/compressao...15/150 Histórico A compressão de dados é oriunda da Criptografia: algoritmo de compressão é um codificador

137/150

Exemplo (cont.)

● Passo 3

Page 137: Compressão de Dadostiagodemelo.info/wp-content/uploads/2019/09/compressao...15/150 Histórico A compressão de dados é oriunda da Criptografia: algoritmo de compressão é um codificador

138/150

Exemplo (cont.)

Page 138: Compressão de Dadostiagodemelo.info/wp-content/uploads/2019/09/compressao...15/150 Histórico A compressão de dados é oriunda da Criptografia: algoritmo de compressão é um codificador

139/150

Exemplo (cont.)

● Passo 4

Page 139: Compressão de Dadostiagodemelo.info/wp-content/uploads/2019/09/compressao...15/150 Histórico A compressão de dados é oriunda da Criptografia: algoritmo de compressão é um codificador

140/150

Exemplo (cont.)

● Passo 4

Page 140: Compressão de Dadostiagodemelo.info/wp-content/uploads/2019/09/compressao...15/150 Histórico A compressão de dados é oriunda da Criptografia: algoritmo de compressão é um codificador

141/150

Exemplo (cont.)

Page 141: Compressão de Dadostiagodemelo.info/wp-content/uploads/2019/09/compressao...15/150 Histórico A compressão de dados é oriunda da Criptografia: algoritmo de compressão é um codificador

142/150

Exemplo (cont.)

● Árvore de Huffman

Page 142: Compressão de Dadostiagodemelo.info/wp-content/uploads/2019/09/compressao...15/150 Histórico A compressão de dados é oriunda da Criptografia: algoritmo de compressão é um codificador

143/150

Exemplo (cont.)

● Árvore de Huffman

Page 143: Compressão de Dadostiagodemelo.info/wp-content/uploads/2019/09/compressao...15/150 Histórico A compressão de dados é oriunda da Criptografia: algoritmo de compressão é um codificador

144/150

Exemplo (cont.)

● Árvore de Huffman

Page 144: Compressão de Dadostiagodemelo.info/wp-content/uploads/2019/09/compressao...15/150 Histórico A compressão de dados é oriunda da Criptografia: algoritmo de compressão é um codificador

145/150

Exemplo (cont.)

Page 145: Compressão de Dadostiagodemelo.info/wp-content/uploads/2019/09/compressao...15/150 Histórico A compressão de dados é oriunda da Criptografia: algoritmo de compressão é um codificador

146/150

Exemplo (cont.)

● A sequência original agora é representada por:

Page 146: Compressão de Dadostiagodemelo.info/wp-content/uploads/2019/09/compressao...15/150 Histórico A compressão de dados é oriunda da Criptografia: algoritmo de compressão é um codificador

147/150

Exemplo (cont.)

● A sequência original agora é representada por:● 000000000000101010101011111111010010010011001100111

Page 147: Compressão de Dadostiagodemelo.info/wp-content/uploads/2019/09/compressao...15/150 Histórico A compressão de dados é oriunda da Criptografia: algoritmo de compressão é um codificador

148/150

Exemplo (cont.)

● A sequência original agora é representada por:● 000000000000101010101011111111010010010011001100111

● Totalizando 51 bits.

Page 148: Compressão de Dadostiagodemelo.info/wp-content/uploads/2019/09/compressao...15/150 Histórico A compressão de dados é oriunda da Criptografia: algoritmo de compressão é um codificador

149/150

Exemplo (cont.)

● A sequência original agora é representada por:● 000000000000101010101011111111010010010011001100111

● Totalizando 51 bits.● A compressão foi de 12 bits ou cerca de 20%.

Page 149: Compressão de Dadostiagodemelo.info/wp-content/uploads/2019/09/compressao...15/150 Histórico A compressão de dados é oriunda da Criptografia: algoritmo de compressão é um codificador

151/150

Exercícios

Page 150: Compressão de Dadostiagodemelo.info/wp-content/uploads/2019/09/compressao...15/150 Histórico A compressão de dados é oriunda da Criptografia: algoritmo de compressão é um codificador

152/150

Exercícios

● Desenhar a árvore de Huffman para o seguinte conjunto de chaves e frequências descrito abaixo:– {A:1, B:6, C:2, D:1, E:1, F:9, G:2, H:3}

● A árvore fornecida pelo algoritmo de Huffman é única, ou seja, a árvore sempre fornecerá a mesma árvore?