Sei sulla pagina 1di 63

Algoritmos e Estruturas de Dados!

Alexandre Souza Francisco Mesqui5a Simoni Krger Carla Pires Fabrcio Ferreira

Denio
Representao de uma fonte de dados da maneira mais precisa possvel uElizando um menor nmero de bits; Fazer com que a mesma quanEdade de informao caiba em um espao menor; Eliminar as redundncias: recorrncias de letras, dgitos ou pixels; Receptor deve ser capaz de decodicar os dados para acessar a informao; Exemplos:
EBCDIC de 8 bits para o formato ASCII de 7 bits; AAAAAA, que ocupa 6 bytes, poderia ser comprimida para 6A, que ocupa 2 bytes ); AATTTT representa-se por: *4T (decodica por meio de uma tabela).

Histrico
A compresso oriunda da criptograa: algoritmo de compresso um codicador e um decodicador; Relatos de encriptao por volta de 1500 a.C. (escrita cifrada para guardar segredos); Gregos e espartanos usavam cdigos em movimentos blicos durante as guerras (475 a.C); No sculo XIX a inveno do telgrafo e do Cdigo Morse abriu espao para a criptograa moderna que deixou de ser processos altamente manuais;

Histrico

1a Guerra Mundial (1914 a 1918): mquinas de codicao mecnicas usadas para codicar e decodicar textos usando encriptaes sosEcadas e complexas; 2a Guerra Mundial (1939 a 1945): codicao da mensagem para esconder a informao do inimigo e reduzir a quanEdade de informaes que eram passadas atravs dos rdios (surge a compactao de dados); Advento dos computadores digitais: necessidade da criao de cdigos seguros e inquebrveis; necessidade de reduzir espao nos meios de armazenamento e transmisso de dados, reduzindo custos e viabilizando projetos.
4

Por que comprimir?


Velocidade de processamento dos computadores aumentou; Tempo de acesso a discos magnEcos tem se manEdo praEcamente constante; mais vantajoso invesEr em poder de computao em compresso de dados em troca de menos espao para armazenamento de dados em disco ou em menor tempo transmisso de dados pela rede; Reduz custos operacionais:
OEmizao do espao em disco para armazenamento; Reduo do trco da rede;

Por que comprimir?


Internet e o uso intensivo de sistemas computacionais criaram uma necessidade incremental de armazenar e transferir grande volume dados sobre uma infraestrutura existente (redes de computadores); Aumento da autonomia da bateria de disposiEvos portteis devido a reduo da quanEdade de dados a serem transmiEdos; Tecnologias como telefonia 3G, fotos geradas por cmeras digitais, msica digital, TV digital, bibliotecas digitais; EsEma-se que em uma biblioteca digital possvel uma economia de 50 a 60% de espao uElizando compresso de dados; Tornou vivel a aplicaes de videoconferncia; Reduo do espao necessrio para backups; Emails e downloads da internet.

Desvantagens
Custo de processamento na compresso e na descompresso; Custo para armazenar a tabela de smbolos ou dicionrio; Ganhos expressivos so obEdos apenas com mtodos de compresso que no permitem reconstruir os dados exatamente da maneira como eram antes da compresso.

Tcnicas Lossless
Sem perda de dados; Permite a reconstruo exata do contedo original a parEr da fonte comprimida; Explora a redundncia dos dados; Aplicvel maioria das fontes de informao:
Imagens mdicas digitais; Transmisso de textos; Programas executveis; Banco de dados; Informaes bancrias.

Ex.: transformao de Burrows-Wheeler, codicao de Human, LZ77, LZ78, LZW, ZIP, RAR, ARJ, PNG, GIF, PNG.
8

Tcnicas Lossless
Classicao: Codicao estDca: o mapeamento entre as mensagens e o conjunto de palavras-cdigo determinado antes do incio da transmisso (requer duas passagens pela fonte de dados); Codicao adaptaDva: o mapeamento entre as mensagens e o conjunto das palavras cdigo muda com o tempo (uma nica passagem sobre a fonte de dados); Codicao hbrida: usa conceitos tanto da codicao estEca quanto da adaptaEva.
9

Tcnicas Lossy

Com perda de dados (a informao descomprimida diferente da original); Comprime os dados eliminando deniEvamente certas redundncias; Perdem-se dados sucessivamente, medida em que se aplica o algoritmo vrias vezes; Explora redundncias temporais e espaciais presentes nas fontes de dados; Leva em considerao a percepo humana, que incapaz de perceber certas perdas em imagens, udio e vdeo:
Sons de frequncias muito altas ou muito baixas que os humanos no ouvem; Detalhes muito suEs como a diferena de cores; Movimentos muito rpidos que no conseguimos acompanhar em um lme;

Taxas de compresso melhores que das tcnicas lossless (50:1 a 10000:1); Exemplos: JPEG, MPEG, DIVx, MP3.

10

Tcnicas Lossy

Classicao:

Mtodos de transformao: amostras de guras ou sons so transformados em pequenos segmentos, os quais so transformados em um novo espao base e quanEdades (limitao de possveis valores). Os valores quanEzados so codicados para entropia (trata de cadeias de bits sem levar em conta seu signicado); Mtodos prediDvos: informaes decodicadas so usadas para prever qual ser o prximo pacote. O erro entre o dado previsto e o dado real, junto com qualquer informao extra necessria para reproduzir a previso, so quanEzados e codicados. Ex.: prximo frame de imagem; Mtodos hbridos: uso de ambas tcnicas.

11

Algoritmos e Estruturas de Dados!

Histrico

David Albert Human


(09-08-1925 07-10-1999)
2

Codicao de Human
O que ? um mtodo de compactao que usa as probabilidades de ocorrncia dos smbolos no conjunto de dados a ser compactado para determinar cdigos de tamanho varivel para cada smbolo.

Codicao de Human
ObjeJvo Tem por objeDvo a construo de uma rvore binria baseada na frequncia de uso das letras do alfabeto de modo que as mais frequentemente uDlizadas apaream mais perto da raiz.

Codicao de Human
ObjeJvo Esta rvore binria construda da baixo para cima (das folhas para a raiz) , comeando a parDr das letras menos usadas at aDngir a raiz.

Codicao de Human
Etapas

Clculo da frequncia de cada caracter no arquivo Execuo do algoritmo de Human para construo de uma rvore binria (rvore de Human) Codicao Propriamente dita
6

Codicao de Human
Como Funciona

No incio do algortmo, cada uma das letras forma uma rvore que composta apenas pela raiz e cujo contedo a frequncia com que esta letra ocorre no texto em questo. Em seguida, so escolhidas as duas rvores com as menores frequncias associadas e elas so unidas em uma s rvore cujo valor da raz a soma do valor destas duas. Este processo repeDdo at a existncia de uma nica rvore.
7

Codicao de Human
(exemplo)
Sequncia de caracteres: FAAFEEEAAAAEEEECCAAAAAAAAACFFCCAAAACCCBAAAB
BBBAAAAAAAADDDDBBBBBBDDDDAAAAAADDDDDDAAA AEE

Caracteres: FECBDA Frequncia: 5 9 12 13 16 45 (respecDvamente) Dados iniciais ordenados por frequencia de ocorrncia
F 5 E 9 C 12 B 13 D 16 A 45

Codicao de Human (exemplo)


F 5 E 9 C 12 B 13 D 16 A 45

14

C 12

B 13

D 16

A 45

F 5

E 9
9

Codicao de Human (exemplo)


C 12 B 13 14 D 16 A 45

F 5

E 9 D 16 A 45

25

14

C 12

B 13

F 5

E 9

10

Codicao de Human (exemplo)


D 16 A 45

14

25

F 5

E 9

C 12

B 13

11

Codicao de Human (exemplo)


30 25 A 45

14

D 16

C 12

B 13

F 5

E 9
12

Codicao de Human (exemplo)


55 A 45

25

30

C 12

B 13
13

14

D 16 E 9

F 5

13

Codicao de Human (exemplo)


100 A 45 25 55

30

C 12

B 13 F 5

14

D 16 E 9

14

Codicao de Human (Codicao)


A tabela de codicao resultante Caracter Human A 0
C B D F E 100 101 111 1100 1101

15

Codicao de Human (Codicao)


A tabela de codicao resultante Caracter Human A 0
C B D F E 100 101 111 1100 1101

ASCII 0100 0001 0100 0011 0100 0010 0100 0100 0100 0110 0100 0101

16

Codicao de Human
Comparao entre a sequncia de caracteres propostas uJlizando a codicao ASCII (8 bits) e uJlizando a codicao de Human. Sem compactao (ASCII)

010001100100000101000001010001100100010101000101010001010100000101000001010000010100000 101000101010001010100010101000101010000110100001101000001010000010100000101000001010000 010100000101000001010000010100000101000011010001100100011001000011010000110100000101000 001010000010100000101000011010000110100001101000010010000010100000101000001010000100100 001001000010010001001000001010000010100000101000001010000010100000101000001010000010100 100010001000100010001000100010000100100001001000010010000100100001001000010010001000100 010001000100010001000100000101000001010000010100000101000001010000010100010001000100010 00100010001000100010001000100010000010100000101000001010000010100010101000101

Com compactao
1100001100110111011101000011011101110111011001000000000001001100110010010000001001001001 0100010110110110100000000111111111111101101101101101101111111111111000000111111111111111 111000011011101

17

Codicao de Human
Decodicao

Para decodicar uma mensagem obDda, basta ir uDlizando cada bit da mensagem para percorrer a arvore de Human desde a raiz at alguma folha, quando se obtm o smbolo decodicado. Volte ento para a raiz e conDnue a percorrer a rvore para decodicar o prximo smbolo.

18

Algoritmos e Estruturas de Dados!

Codicao Shannon-Fano

Codicao Shannon-Fano

Codicao Shannon-Fano

Codicao Shannon-Fano

Codicao Shannon-Fano

Codicao Shannon-Fano

Codicao Shannon-Fano

Codicao Shannon-Fano

Codicao Shannon-Fano

10

Algoritmos e Estruturas de Dados!

11

Famlia LZ - Compresso por Substituio


Introduo
Jacob Ziv e Abraham Lempel desenvolveram algoritmos para compresso de dados na dcada de 70; Os algoritmos Lempel-Ziv baseiam-se no princpio de compresso por substituio; Esses algoritmos usam duas estruturas:
1 2

Dicionrio rea de Pesquisa

A idia que sempre que uma frase repetida, na rea de pesquisa, substituir a ocorrncia original da frase por uma referncia armazenada no dicionrio.

Compresso - LZW (Lempel-Ziv-Welch)


Famlia LZ - Exploram Redundncia de dados
LZ77
LZSS e LZH - Variao do LZ77

LZ78
LZC, LZT e LZW - Variao do LZ78

LZW - Lempel-Ziv-Welch
Desenvolvida por Terry Welch em 1984; Usa a compactao baseada em dicionrio; baseado na construo de um dicionrio de smbolos a partir do uxo de entrada; A variao introduzida foi iniciar o dicionrio com todas as frases que contm apenas um smbolo no alfabeto que est sendo usado.

Compresso LZW
LZW - Lempel-Ziv-Welch
Para se obter a codicao atravs do mtodo LZW devem ser seguidos os seguintes passos:
1 2

3 4

Inicialize o dicionrio com todos os smbolos; Procure, no cdigo a ser comprimido, pelo bloco mais longo que tenha registro no dicionrio; Codique o bloco com o ndice que consta no dicionrio, Adicione o bloco, seguido pelo prximo caractere da sequncia, ao dicionrio, e volte ao passo 2; Parada.

Para decodicar o cdigo gerado, basta trocar os ndices pelas frases a eles associadas.
M. Soares, P. Martins, R. Pereira e D. Coutinho..

Funcionamento

Exemplo:
codicao do texto: BABABABABABAB, a partir de trs smbolos (A, B, C) a tabela de sequncias inicializada com os trs smbolos: A, B e C.

Funcionamento
Exemplo:
BABABABABABAB

A tabela e a informao codicada obtidas aps a aplicao do algoritmo so:

Aplicaes que usam LZ ou variantes


Notas:
Unix Compression
O algoritmo LZC utilizado pelo utilitrio do UNIX;

GIF (Graphics Interchange Format)


Muito similar ao compress do UNIX tambm usa LZC;

Protocolo V42bis
Usa uma variante do LZW (LZT);

Zip e gzip usam uma variante do LZ77 combinada com Huffman; ARJ usa a codicao de Huffman e o algoritmo LZSS; Winrar usa o LZ77 e o Hufman; Winzip entre outros algoritimo usa o LZW; o LZ77 usado no PKZIP, GZIP e no formato de imagens PNG;

Notas nais

Notas:
LZ77 no tem patente, razo pela qual usado em, muitos compactadores. LZ78 e LZW possuem patente; O problema bsico dos algoritmos que usam dicionrio a memria usada para guardar o dicionrio; Atualmente existem algoritmos com taxas de compresso signicantemente melhores que os Lempel-Zivs, porm devido a vantajosa simplicidade computacional, este tipo de codicador ainda largamente usado.

Referncias

Literatura consultada
M. Pasin. Uma Breve Introduo Compresso de Dados, 2007 M. Camara. Criptograa e Compresso de Dados. 2004. M. Soares, P. Martins, R. Pereira e D. Coutinho. Compresso de Dados com o Algoritmo Lempel-Ziv: Um caso Estudado. 2002. A. L Brasil. O Algoritmo LZW

Algoritmos e Estruturas de Dados!

Algoritmos Adaptados
Algoritmos de codicao (LZSS) baseada em dicionrio sem perda de dados; Codicao de sequncias vs codicao de smbolos;
2

Algoritmos Adaptados
1977 LZ77 : Jacob Ziv e Abraham Lempel; 1978 LZ78 : por Jacob Ziv e Abraham Lempel; 1982 LZSS: Storer e Szymanski; 1984 LSW : Terry Welch;

LZ77
O Dicionrio contm os smbolos j codificados; O look-ahead contm os smbolos a serem codificados, janela futura; Janela deslizante de dimenso fixa.

LZ77
Procura-se uma cadeia a parSr do primeiro caracter da janela futura que tambm esteja presente na janela de texto. Sendo encontrada alguma coincidncia, a cadeia passa a ser codicada em um bloco de trs parmetros (i, n, p). i - Posio do inicio da cadeia na janela de texto; n- O comprimento da cadeia; p- Primeiro caracter da janela futura aps o m da cadeia.
5

Decincias do Algoritmo LZ77


A dimenso do dicionrio condiciona at onde se pode pesquisar; A dimenso do look-ahead, janela futura, condiciona a mxima dimenso da sequncia a codicar; Se aumentar o tamanho da janela futura, maior compresso "vantagem", por exemplo, de 128 caracteres para 1024, torna-se oito vezes mais lento. ineciente pesquisar com frases de 2 ou menos smbolos (devido aos bits gastos para o ndice e dimenso da frase);
6

LZ78
Abraham Lempel e Jacob Ziv evoluram LZ77. Novo algoritmo LZ78, criando uma estrutura em rvore, onde cada n pode possuir um nmero de ramicaes igual ao comprimento do alfabeto uSlizado.

Compresso LZSS
Variante do LZ77 e LZ78 proposta por Storer e Szymanski em 1982.! ! Na codicao! ! No inclui o smbolo que se segue frase na rea !de look-ahead, janela futura.! ! Usa dois formatos:! ! ! !- Um token com (n, i), ou! !- S um smbolo.! ! Usa um bit extra para distinguir os dois formatos.! Sempre que a frase a codicar j existir no dicionrio e o !nmero de elementos coincidentes for pelo menos 3 !usado o primeiro formato, seno !usado o segundo. !
8

Descompresso
O processo de decodicao.! !
!Reverso do processo de codicao, usa uma tabela buscando o !apontador do dicionrio da palavra-cdigo entrada.! !Ao mesmo tempo, o dicionrio cresce de forma idntica quele !do codicador. ! !Descodicao sem perda em virtude da propriedade do prexo !do dicionrio garantir.! !So limitado o nmero de caracteres que podem ser enviados !para o decodicador em um cdigo.! !Decodicador pode ser determinstico, predizer o dicionrio do !codicador conforme as palavras-cdigo entradas.!
9

Aplicao
! ! ! O Zip e o gzip usam uma variante do LZ77 combinada com Huffman esttico.! ! ! O ARJ usa a codicao de Huffman e o algoritmo LZSS.! ! ! ! O WINRAR usa o LZ77 e Huffman.! ! !
!

10

Burrows-Wheeler
O mtodo de compresso de Burrows-Wheeler foi descrito em 1994.! ! Ele baseado em uma pesquisa (no publicada) de Wheeler em 1983. ! ! Sendo uma combinao de trs algoritmos: ! ! !Uma funo de transformao BWT, que reordena os bytes !originais, tornando-os bastante propcios para compresso. ! Aplica uma funo heurstica MTF. Faz com que os !dados de !sada contenham muitos zeros e grande tendncia para !nmeros positivos pequenos. ! Por m submete os dados resultantes a algum mtodo de !compresso que atue sobre estatsticas dos dados !(por !exemplo, cdigo de Huffman).!
11

" !

Burrows-Wheeler
! Descrio do algoritmo "Burrows-Wheeler Transform! ! !Diferente dos algoritmos da famlia "LZ", o BWT opera em blocos !de dados.! !Quanto maior o tamanho dos blocos, maior a taxa de !compresso atingida.! ! Ideia bsica: dada uma sequncia S de n smbolos, reordenar os smbolos formando outra sequncia L, que verica duas condies:! ! A probabilidade de um smbolo ser igual ao anterior muito elevada;! possvel reconstruir S a partir de L.! ! !
12

Aplicao
! O mtodo de Burrows-Wheeler foi difundido principalmente pelo ! utilitrio de compactao de dados bzip2.!
! ! utilizado em:! ! Imagens;! Sons;! Texto.! !

! !

13

Concluses

A compresso de dados surgiu das pesquisas de criptograa; A compresso sem perdas permite a recuperao total dos dados originais, contudo apresenta baixa taxa de compresso se comparada aos mtodos com perdas; Para que comprimir? Com o advento dos computadores digitais, a compactao de dados passou a ser obrigatria; Compresso baseada em dicionrio possuem as tcnicas mais ecientes.
Para reduo do espao =sico u>lizado; Para agilizao na transmisso de dados.

OBRIGADO!

PERGUNTAS?
2

Potrebbero piacerti anche