representação e compressão de texto joaquim macedo departamento de informática da universidade...

66
Representação e Compressão de Texto Joaquim Macedo Departamento de Informática da Universidade do Minho & Faculdade de Engenharia da Universidade Católica de Angola

Upload: internet

Post on 18-Apr-2015

119 views

Category:

Documents


9 download

TRANSCRIPT

Page 1: Representação e Compressão de Texto Joaquim Macedo Departamento de Informática da Universidade do Minho & Faculdade de Engenharia da Universidade Católica

Representação e Compressão de Texto

Joaquim MacedoDepartamento de Informática da Universidade do Minho & Faculdade de Engenharia da Universidade Católica de

Angola

Page 2: Representação e Compressão de Texto Joaquim Macedo Departamento de Informática da Universidade do Minho & Faculdade de Engenharia da Universidade Católica

Sumário Introdução Representação do Texto Princípios de compressão de texto Redundância Estatística

Função densidade de probablidade e entropia Teorema de Shannon para codificação de fonte sem

ruído Codificação de Huffman Codificação Aritmética

Compressão baseada em dicionário Técnica LZ77 Técnica LZ782

Page 3: Representação e Compressão de Texto Joaquim Macedo Departamento de Informática da Universidade do Minho & Faculdade de Engenharia da Universidade Católica

Introdução O texto é o media mais importante

para representar informação Media mais antigo para armazenar e

transmitir informação Maior parte da informação actual é

mantida em texto Objecto desta aula

Representação digital de texto e técnicas de compressão

Page 4: Representação e Compressão de Texto Joaquim Macedo Departamento de Informática da Universidade do Minho & Faculdade de Engenharia da Universidade Católica

Representação de TextoASCII (American National Standards Institute ANSI)American Standard Code for Information Interchange

O código ASCII é um código de 8 bits para representação de caracteres.

Por exemplo o código para H é 01001000, para e é 01100101.A mensagem Hello pode ser representada como

01001000 01100101 01101100 01101100 01101111 00101110

Page 5: Representação e Compressão de Texto Joaquim Macedo Departamento de Informática da Universidade do Minho & Faculdade de Engenharia da Universidade Católica

Representação de Texto

ASCII table (starting from #32)

Page 6: Representação e Compressão de Texto Joaquim Macedo Departamento de Informática da Universidade do Minho & Faculdade de Engenharia da Universidade Católica

Tabela ASCII

Page 7: Representação e Compressão de Texto Joaquim Macedo Departamento de Informática da Universidade do Minho & Faculdade de Engenharia da Universidade Católica

Tabela ASCII extendida

Page 8: Representação e Compressão de Texto Joaquim Macedo Departamento de Informática da Universidade do Minho & Faculdade de Engenharia da Universidade Católica

Representação de Texto

ISO= International Organization for Standardization

Código bits Caracteres

ASCII 8 256

Unicode 16 65536

ISO 36 17M

Page 9: Representação e Compressão de Texto Joaquim Macedo Departamento de Informática da Universidade do Minho & Faculdade de Engenharia da Universidade Católica

Representação de textoRequisitos de espaço de armazenamento

Como o texto é usado extensivamente em muitos tipos de documentos como livros, jornais e outros periódicos É necessário representá-lo

eficientemente para reduzir os requisitos do espaço de armazenamento

Page 10: Representação e Compressão de Texto Joaquim Macedo Departamento de Informática da Universidade do Minho & Faculdade de Engenharia da Universidade Católica

Representação de textoRequisitos de espaço de armazenamento

Exemplo 6.1 Considere um livro com 800 páginas.

Cada página contém em média 40 linha e cada linha 80 caracteres (incluindo espaços). Se o livro for armazenado em formato digital que espaço de armazenamento é necessário?

Resposta: 2.44 Mbytes

Page 11: Representação e Compressão de Texto Joaquim Macedo Departamento de Informática da Universidade do Minho & Faculdade de Engenharia da Universidade Católica

Representação de textoRequisitos de espaço de armazenamento

Um documento típico requer alguns Mbytes de espaço de armazenamento É possível representar o mesmo

documento usando menos espaço? Isso é verdade

É possível compactar texto sem perder informação!

Muitos de nós já usaram o winzip (Windows) ou o gzip (Linux)

Page 12: Representação e Compressão de Texto Joaquim Macedo Departamento de Informática da Universidade do Minho & Faculdade de Engenharia da Universidade Católica

Princípios para Compressão de Texto

Os textos típicos têm informação redundante As técnicas de compressão reduzem ou eliminam

essa redundância Tipos de redundância

Estatística Probabilidade não uniforme de ocorrência de

caracteres ou símbolos (menos bits ao símbolos de maior ocorrência

Conhecimento Quando o texto a codificar é limitado em termos

de âmbito, pode ser associado conhecimento comum ao codificador e descodificador; nesse caso é enviada a informação indispensável para reconstruir o texto original.

Page 13: Representação e Compressão de Texto Joaquim Macedo Departamento de Informática da Universidade do Minho & Faculdade de Engenharia da Universidade Católica

Redundância Estatística Métodos de redução de redundância

estatística Baseados na teoria de codificação das

fontes Cada amostra de dados (caracter) tratado

com símbolo gerado por uma fonte de informação

Conjunto de todos símbolos é o alfabeto Lida com a compressão de dados gerados

por uma fonte que emite uma sequência de símbolos escolhidos dum alfabeto finito.

Page 14: Representação e Compressão de Texto Joaquim Macedo Departamento de Informática da Universidade do Minho & Faculdade de Engenharia da Universidade Católica

Teoria de Codificação de Fontes 2 conceitos fundamentais

Entropia Medida da informação contida na fonte Define a quantidade mínima do débito

médio de bits para reconstrução perfeita dos símbolos da fonte

Taxa de distorção Define um limite inferior no débito médio

de bits para uma dada distorção nos símbolos reconstruídos.

Page 15: Representação e Compressão de Texto Joaquim Macedo Departamento de Informática da Universidade do Minho & Faculdade de Engenharia da Universidade Católica

Função densidade de probabilidade

k

k

k

k

sNkhkp

s

n

Niix

sssS

de ocorrência de adeprobabilid a é /][][

símbolo o

por dosrepresenta caracteres de nº o é que em ,nh[k] discreta

função uma é x aleatória variávelda histograma O

1],[por darepresenta N, tamanho

com caracteres de sequência de amostra uma Considere

tes.independen amenteestatístic símbolos)

dos qqpor ados(represent caracteres produz fonteA

símbolosk com ,,...,, alfabeto um com

S discreta memória sem informação de Fonte

k

21

Page 16: Representação e Compressão de Texto Joaquim Macedo Departamento de Informática da Universidade do Minho & Faculdade de Engenharia da Universidade Católica

Exemplo 6.2 Considere a string

X=¨aaabbbbbbccaaabbcbbbb¨ Determine o alfabeto Determine o histograma e a função

densidade de probabilidade dos caracteres.

Mostre que a soma das probabilidades dos símbolos do alfabeto é 1.

Page 17: Representação e Compressão de Texto Joaquim Macedo Departamento de Informática da Universidade do Minho & Faculdade de Engenharia da Universidade Católica

Entropia

][log][)(][)(

fonte da Entropia

][

1log)(

símbolo cada a associada média Informação

211

kpkpsIkpSH

kpsI

K

kk

K

k

k

Page 18: Representação e Compressão de Texto Joaquim Macedo Departamento de Informática da Universidade do Minho & Faculdade de Engenharia da Universidade Católica

EntropiaBlocos de símbolos

rabits/amost )(log)(1

bits/fonte )(log)()(

s 2

s 2

todos

todos

spspN

spspsH

Page 19: Representação e Compressão de Texto Joaquim Macedo Departamento de Informática da Universidade do Minho & Faculdade de Engenharia da Universidade Católica

Exemplo 6.3 Considere a fonte do exemplo

anterior. Calcule a entropia de 1ª e 2ª ordem.

Page 20: Representação e Compressão de Texto Joaquim Macedo Departamento de Informática da Universidade do Minho & Faculdade de Engenharia da Universidade Católica

Teorema de ShannonCodificação de Fontes sem Ruído

Considere uma fonte de texto com um alfabeto de tamanho K e entropia H(S) e a codificação de blocos de N símbolos da fonte

Para qualquer é possível, escolhendo N sufuicientemente grande, construir um código em que número médio de bits por símbolo

cumpra a seguinte relação

)()(_

SHRSH

0_

R

Page 21: Representação e Compressão de Texto Joaquim Macedo Departamento de Informática da Universidade do Minho & Faculdade de Engenharia da Universidade Católica

Teorema de ShannonCodificação de Fontes sem Ruído

Pode ser mostrado que a entropia é limitada por

)(logaRedundânci

log)(0

2

2

SHK

KSH

Page 22: Representação e Compressão de Texto Joaquim Macedo Departamento de Informática da Universidade do Minho & Faculdade de Engenharia da Universidade Católica

Exemplo 6.4 Considere uma fonte de informação

com alfabeto {a,b,c,d}. Os símbolos têm igual probabilidade de ocorrência. Calcule a entropia e a redundância da fonte Qual o débito de bits médio necessário para

transmitir os símbolos gerados pela fonte? Conceba um código adequado para os

símbolos da fonte.

Page 23: Representação e Compressão de Texto Joaquim Macedo Departamento de Informática da Universidade do Minho & Faculdade de Engenharia da Universidade Católica

Exemplo 6.5 Qual a o débito de bits médio para

uma fonte de três símbolos? Qual o débito necessário para a fonte do exemplo 6.2. Calcule a redundância da fonte. Quando é que redundância é zero?

Page 24: Representação e Compressão de Texto Joaquim Macedo Departamento de Informática da Universidade do Minho & Faculdade de Engenharia da Universidade Católica

Interpretação do Teorema de Shannon

O Teorema estabelece que o limite mínimo para o débito de bits Mas não nos indica como fazê-lo. É

muito difícil conseguir um débito igual à entropia.

Normalmente é superior de um valor inferior a delta

Page 25: Representação e Compressão de Texto Joaquim Macedo Departamento de Informática da Universidade do Minho & Faculdade de Engenharia da Universidade Católica

Métodos estatísticos de compressão

Duas estratégias de codificaçãoHuffman

Atribui um código de bits de comprimento variável a cada símbolo

Relativamente rápido e acesso aleatório Semi-estático versus adaptativo

Aritmética Texto de entrada representado por número reais entre 0 e 1 Símbolos de entrada com maiores probabilidades reduzem

menos o intervalo que símbolos com menor probabilidade e portanto adicionam menos bits ao código de saída

Mais lento que o de Huffman e a decompressão não pode começar a meio do ficheiro

Page 26: Representação e Compressão de Texto Joaquim Macedo Departamento de Informática da Universidade do Minho & Faculdade de Engenharia da Universidade Católica

Código de Huffman Inventado por Huffman a fazer um trabalho

de casa em 1950..Usados em muitos algoritmos de compressão

gzip, bzip, jpeg (como opção), fax,…

Propriedades: Gera códigos de prefixo óptimos Fácilidade na

Geração de códigos Codificação e descodificação

Comprimento médio=H se as propabilidades forem potências de 2

Page 27: Representação e Compressão de Texto Joaquim Macedo Departamento de Informática da Universidade do Minho & Faculdade de Engenharia da Universidade Católica

Codificação de Huffman Uma frase é codificada substituindo cada

um dos seus símbolos com o respectivo código dado por uma tabela

A codificação de Huffman gera códigos para um conjunto de símbolos, dada uma distribuição de probabilidade dos símbolos

O tipo de código é chamada código de prefixo Nenhuma palavra de código é prefixo de outra

palavra de código

Page 28: Representação e Compressão de Texto Joaquim Macedo Departamento de Informática da Universidade do Minho & Faculdade de Engenharia da Universidade Católica

Códigos de PrefixoUm código de prefixo é um código de

comprimento variável onde nenhuma palavra de código é prefixo de outra palavra de código

Exemplo a = 0, b = 110, c = 111, d = 10Pode ser visto como uma árvore binária com

valores de mensagens nos nós terminais e 0 e 1 nos seus ramos

a

b c

d

0

0

0 1

1

1

Page 29: Representação e Compressão de Texto Joaquim Macedo Departamento de Informática da Universidade do Minho & Faculdade de Engenharia da Universidade Católica

Códigos de descodificação única

Um código de comprimento variável atribui uma sequência de bits (palavra de código) de comprimento variável a todos valores de mensagem

i.e. a = 1, b = 01, c = 101, d = 011A sequência de bits 1011o que significa ?É aba, ca, ou, ad?Um código de descodificação única é um código

de comprimento variável em que as sequências de bits podem sempre ser decomposta de forma únoca nas suas palavras de código.

Page 30: Representação e Compressão de Texto Joaquim Macedo Departamento de Informática da Universidade do Minho & Faculdade de Engenharia da Universidade Católica

Codificação de Huffman As palavras de código podem ser

armazenadas numa árvore Árvore de descodificação

O algoritmo de Huffman funciona construindo a árvore de descodificação de baixo para cima

Page 31: Representação e Compressão de Texto Joaquim Macedo Departamento de Informática da Universidade do Minho & Faculdade de Engenharia da Universidade Católica

Codificação de HuffmanAlgoritmo

Algoritmo cria para cada símbolo um nó terminal

contendo o símbolo e a sua propabibilidade. Os dois nós com as probabilidades mais

pequenas tornam-se irmãos sob um novo nó pai, cuja probabilidade é a soma da dos filhos

A operação de combinação é repetidad até haver um único nó raiz.

Todos os ramos de todos nós não terminais são então etiquetados com 0 1.

Page 32: Representação e Compressão de Texto Joaquim Macedo Departamento de Informática da Universidade do Minho & Faculdade de Engenharia da Universidade Católica

Codificação de Huffman A codificação de Huffman é geralmente

rápida quer na codificação como na descodificação desde que a probabilidade seja estática. Codificação de Huffman adaptativa é possível

mas ou precisa de muito memória ou é lenta Acoplada com um modelo baseado em

palavras (em vez dum baseado em caracter), fornece uma boa compressão.

Page 33: Representação e Compressão de Texto Joaquim Macedo Departamento de Informática da Universidade do Minho & Faculdade de Engenharia da Universidade Católica

Codificação de Huffman Frequências de caracter

A: 20% (.20) B: 9% (.09) C: 15% D: 11% E: 40% F: 5%

Não há mais caracteres no documento

Page 34: Representação e Compressão de Texto Joaquim Macedo Departamento de Informática da Universidade do Minho & Faculdade de Engenharia da Universidade Católica

Codificação de Huffman

C .15

A.20

D.15

F.05

BF.14

B.09

0 1

E.4

Page 35: Representação e Compressão de Texto Joaquim Macedo Departamento de Informática da Universidade do Minho & Faculdade de Engenharia da Universidade Católica

Codificação de Huffman

Códigos A: 010 B: 0000 C: 011 D: 001 E: 1 F: 0001

ABCDEF1.0

E.4

C .15

A.20

D.15

F.05

BF.14

AC.35

BFD.25

ABCDF.6

B.09

0

0

0

0

0

1

1

11

1

Page 36: Representação e Compressão de Texto Joaquim Macedo Departamento de Informática da Universidade do Minho & Faculdade de Engenharia da Universidade Católica

Exemplo 6.4 Determine o código de

Huffman para os símbolos da tabela

Codifique a tring “baecedeac!”

Descodifique 00011000100110000010

111

Símbolo Probabilidade

a 0.2

b 0.1

c 0.2

d 0.1

e 0.3

! 0.1

Page 37: Representação e Compressão de Texto Joaquim Macedo Departamento de Informática da Universidade do Minho & Faculdade de Engenharia da Universidade Católica

Exemplop(a) = .1, p(b) = .2, p(c ) = .2, p(d)

= .5a(.1) b(.2) d(.5)c(.2)

a(.1) b(.2)

(.3)

a(.1) b(.2)

(.3) c(.2)

a(.1) b(.2)

(.3) c(.2)

(.5)

(.5) d(.5)

(1.0)

a=000, b=001, c=01, d=1

0

0

0

1

1

1Passo 1

Passo 2Passo 3

Page 38: Representação e Compressão de Texto Joaquim Macedo Departamento de Informática da Universidade do Minho & Faculdade de Engenharia da Universidade Católica

Codificação e Descodificação

Codificação: Começar no nó terminal da árvore de huffman e seguir o percurso para a raiz. Inverter a ordem dos bits e enviar.

Descodificação: Começar na raiz da árvore e seguir o ramo de acordo com o bit recebido. Quando chegar à um no terminal enviar o símbolo e regressar à raiz.

a(.1) b(.2)

(.3) c(.2)

(.5) d(.5)

(1.0)0

0

0

1

1

1

Há metodos mais rápidos que podem processar 8 ou 32 bits de cada vez

Page 39: Representação e Compressão de Texto Joaquim Macedo Departamento de Informática da Universidade do Minho & Faculdade de Engenharia da Universidade Católica

Limitações dos Códigos de Huffman

Precisa de pelo menos 1 bit para representar a ocorrência de cada símbolo Não podemos arranjar um código de Huffman

que gaste 0.5 bits/símbolo Se a entropia da fonte for menor que 1

bit/simbolo o código de Huffman não é eficiente! Não se adapta eficientemente a um fonte

com estatísticas variáveis. Embora haja códigos de Huffman dinâmicos, são

difíceis de concretizar

Page 40: Representação e Compressão de Texto Joaquim Macedo Departamento de Informática da Universidade do Minho & Faculdade de Engenharia da Universidade Católica

Codificação aritmética Outra técnica baseada na entropia

Maior relação de compressão que a codificação de Huffman

Pode disponibilizar débito de bits infeiores a 1 O débito aproxima-se do limite teórico da entropia

da fonte Técnica de codificação diferente da de

Huffman Huffman: codificação independente por símbolo

Resultado: concatenação do código de cada símbolo Aritmética: uma palavra de código para toda a

mensagem

Page 41: Representação e Compressão de Texto Joaquim Macedo Departamento de Informática da Universidade do Minho & Faculdade de Engenharia da Universidade Católica

Exemplo Considere o alfabeto inglês com 26

letras. Calcule o número máximo de strings diferentes com comprimento

i. 1ii. 2iii. 100

Page 42: Representação e Compressão de Texto Joaquim Macedo Departamento de Informática da Universidade do Minho & Faculdade de Engenharia da Universidade Católica

Codificação Aritmética O código é para todo o texto como um

sub-intervalo da unidade. Cada símbolo é representado por um

sub-intervalo do intervalo que tem um comprimento proporcional à probabilidade do símbolo.

O comprimento do intervalo final é o produto das probabilidades de todos símbolos no texto.

Page 43: Representação e Compressão de Texto Joaquim Macedo Departamento de Informática da Universidade do Minho & Faculdade de Engenharia da Universidade Católica

Codificação AritméticaSímbolo Probabilidad

eGama (para o codificador aritmético)

a 0.2 [0,0.2)

b 0.1 [0.2,0.3)

c 0.2 [0.3,0.5)

d 0.1 [0.5,0.6)

e 0.3 [0.6,0.9)

! 0.1 [0.9,1.0)

Page 44: Representação e Compressão de Texto Joaquim Macedo Departamento de Informática da Universidade do Minho & Faculdade de Engenharia da Universidade Católica

Codificação AritméticaSub-intervalo Intervalo

binárioString de bits gerada

Começar

[0,1.0)

b [0.2,0.3) [0.0,0.5) 0

Depois a [0.2,0.22) [0.0,0.25) 0

de a [0.2,0.204) [0.125,0.25) 1

ver d [0.2020,0.2024)

[0.1875,0.25) 1

! [0.20236.0.2024)

[0.1875,0.21875)

0

Page 45: Representação e Compressão de Texto Joaquim Macedo Departamento de Informática da Universidade do Minho & Faculdade de Engenharia da Universidade Católica

Codificação AritméticaOutro exemplo

_

_

_

_

a

b

c

0

1/3

2/3

1

_

_

_

b

c

a

_

_

_

_

a

b

c

_

_

_

a

b

c

1/3

1/3

1/3

1/4

2/4

1/4

1/5

2/5

2/5

1/6

2/6

3/6

.3333

.4167

.5834

.6667

.5834

.6001

.6334

.6667

.6334

.6390

.6501

.6667

Qualquer valor no intervalo [.6334,.6390) codifica ‘bcca’

Page 46: Representação e Compressão de Texto Joaquim Macedo Departamento de Informática da Universidade do Minho & Faculdade de Engenharia da Universidade Católica

Codificação Aritmética Adaptativa Podemos assumir

Probabilidades iguais para todos símbolos no início

Fazer a contagem dos símbolos para nos aproximarmos das suas probabilidades reais no texto

Durante a descodificação Usar as mesmas contagens e seguir

precisamente os mesmos sub-intervalos.

Page 47: Representação e Compressão de Texto Joaquim Macedo Departamento de Informática da Universidade do Minho & Faculdade de Engenharia da Universidade Católica

Modelos baseado em dicionário

Métodos de compressão baseados em dicionário usam o princípio de substituir substrings num texto com uma palavra de código que iedntifica essa substring no dicionário

O dicionário contém uma lista de substrings e uma palavra de código para cada substring

Normalmente usam-se palavras de código fixas Obtem-se mesmo assim uma compressão

razoável

Page 48: Representação e Compressão de Texto Joaquim Macedo Departamento de Informática da Universidade do Minho & Faculdade de Engenharia da Universidade Católica

Modelos baseado em dicionário

Os métodos mais simples de compressão usam pequenos dicionários

Por exemplo, codificação de digramas pares de letras seleccionadas são

substituídas por palavras de código Um dicionário para o código de caracteres

ASCII pode conter os 128 caracteres bem como 128 pares de letras mais comuns.

Page 49: Representação e Compressão de Texto Joaquim Macedo Departamento de Informática da Universidade do Minho & Faculdade de Engenharia da Universidade Católica

Modelos baseado em dicionário

Codificação com digramas… As palavras de código de saída têm 8 bits cada A presença do conjunto completo de caracteres

ASCII assegura que qualquer entrada (ASCII) pode ser representada.

No melhor dos casos, cada par de caracteres é substituído por uma palavra de código, reduzindo de 7 bits/caracter para 4 bits/caracter

No pior dos casos, cada caracter de 7 bits é expandido para 8 bits

Page 50: Representação e Compressão de Texto Joaquim Macedo Departamento de Informática da Universidade do Minho & Faculdade de Engenharia da Universidade Católica

Modelos baseado em dicionário

Expansão natural: Colocar no dicionário sequências com mais

caracteres nomeadamente palavras comuns ou componentes comuns das palavras.

Um conjunto pré-definido de frases do dicionário tornam a compressão dependente do domínio ou se usam fazes muito curtas ou não se

consegue uma boa compressão

Page 51: Representação e Compressão de Texto Joaquim Macedo Departamento de Informática da Universidade do Minho & Faculdade de Engenharia da Universidade Católica

Modelos baseado em dicionário

Uma maneira de evitar o problema do dicionário ser desadequado para o texto a manipular é usar um dicionário semi-estático construir um novo dicionário para todo texto a

compactar A sobrecarga de transmitir e armazenar o

dicionário é significativo A decisão de que frases incluir no dicionário é

um problema difícil de resolver

Page 52: Representação e Compressão de Texto Joaquim Macedo Departamento de Informática da Universidade do Minho & Faculdade de Engenharia da Universidade Católica

Modelos baseado em dicionário

Solução: usar um esquema de dicionário adaptativo

Codificadores Ziv-Lempel (LZ77 e LZ78) Uma substring de texto é substituída por

um apontador para uma ocorrência préviano texto.

Dicionário: todo o texto anterior à posição corrente.

Palavras de código: apontadores.

Page 53: Representação e Compressão de Texto Joaquim Macedo Departamento de Informática da Universidade do Minho & Faculdade de Engenharia da Universidade Católica

Modelos baseado em dicionário

Ziv-Lempel… O texto anterior torna-se normalmente

um dicionário muito bom, pois normalmente está no mesmo estilo e linguagem do texto seguinte.

O dicionário é transmitido implicitamente sem custo extra, porque o descodificador tem acesso a todo texto previamente descodificado.

Page 54: Representação e Compressão de Texto Joaquim Macedo Departamento de Informática da Universidade do Minho & Faculdade de Engenharia da Universidade Católica

LZ77 Vantagens chave:

Relativamente fácil de concretizar A descodificação pode ser feita

facilmente usando apenas uma pequena porção de memória.

apropriada quando os recursos necessários para descodificar devem ser minimizados

Page 55: Representação e Compressão de Texto Joaquim Macedo Departamento de Informática da Universidade do Minho & Faculdade de Engenharia da Universidade Católica

LZ77

A saída do codificador consiste duma sequência de triplas , i.e <3,2,b> O primeiro componente da tripla indica

quão longe se deve olhar para o texto previamente descodificado para encontrar a próxima frase

O segundo componente indica o comprimento da frase

O terceiro componente dá o próximo caracter da entrada

Page 56: Representação e Compressão de Texto Joaquim Macedo Departamento de Informática da Universidade do Minho & Faculdade de Engenharia da Universidade Católica

LZ77 O componente 1 e 2 constituem

um apontador para o texto prévio O componente 3 só é necessário

se o caracter a ser codificado não ocorreu previamente.

Page 57: Representação e Compressão de Texto Joaquim Macedo Departamento de Informática da Universidade do Minho & Faculdade de Engenharia da Universidade Católica

LZ77 Codificação

Para o texto presentemente na entrada: busca da maior unificação no texto anterior devolver a tripla que regista a posição e o

comprimento da unificação A busca pode devolver um comprimento zero,

situação em que a posição da unificação não é relevante.

A busca pode ser acelarada indexando o texto prévio com estruturas de dados adequadas

Page 58: Representação e Compressão de Texto Joaquim Macedo Departamento de Informática da Universidade do Minho & Faculdade de Engenharia da Universidade Católica

LZ77

Há limitações de quanto para trás o apontador pode referir e o máximo tamanho da string referenciada:

para texto em inglês, uma janela de poucos milhares de caracteres

o comprimento da frase tem um máximo de 16 caracteres

Senão gasta-se muito espaço sem benefício

Page 59: Representação e Compressão de Texto Joaquim Macedo Departamento de Informática da Universidade do Minho & Faculdade de Engenharia da Universidade Católica

LZ77 O programa de descodificação é muito

simples, de forma que pode ser incluído com os dados com muito pequeno custo

De facto os dados compactados são colocados como parte do programa de descodificação, que torna os dados com capacidade de auto-extracção.

Forma comum de distribuição de ficheiros

Page 60: Representação e Compressão de Texto Joaquim Macedo Departamento de Informática da Universidade do Minho & Faculdade de Engenharia da Universidade Católica

Exemplo 6.8 Considere um dicionário de vinte

caracteres (ou janela deslizante) e uma janela de antevisão de 8 caracteres. A string de entrada é RYYXXZERTYGJJJASDERRXXREFEERZXYURPP Calcule a saída do compressor de texto

Page 61: Representação e Compressão de Texto Joaquim Macedo Departamento de Informática da Universidade do Minho & Faculdade de Engenharia da Universidade Católica

LZ78 Outra técnica base Usada por vários compressores de texto

muito eficientes Em vez de uma janela deslizante de

tamanho fixo como o LZ77 Constrói um dicionário com as strings que

unificaram previamente. Não há restrições de distância no texto para

unificação Aumenta a probabilidade de unificação

Page 62: Representação e Compressão de Texto Joaquim Macedo Departamento de Informática da Universidade do Minho & Faculdade de Engenharia da Universidade Católica

Exemplo 6.9 O texto a codificar é “PUB PUB

PUPPY...” Mostre como se constrói o dicionário

e os primeiros símbolos de saída do compressor.

Page 63: Representação e Compressão de Texto Joaquim Macedo Departamento de Informática da Universidade do Minho & Faculdade de Engenharia da Universidade Católica

Exemplo 6.9Entrada doDicionário

String adicionada ao Dicionário

Índice de saída

Caracter Sáida

0 “”

1 P 0 P

2 U 0 U

3 “P_” 1 “_”

4 PU 1 U

5 B 0 B

6 “ “ 0 “ “

7 PUP 4 P

8 PY 1 Y

... .... .... ....

Dicionário Saída Codificada

Page 64: Representação e Compressão de Texto Joaquim Macedo Departamento de Informática da Universidade do Minho & Faculdade de Engenharia da Universidade Católica

LZW AlgorithmEste algoritmo evita a necessidade de transmitir o próximo caracter como no algoritmo LZ78.O dicionário é incializado como todos caracteres do alfabetoAs novas frases são adicionadas ao dicionário acrescentadando o primeiro caracter das próximas frasesO algoritmo é melhor descrito usando uma tie

a b c

bc

a

b

a

a

Alphabet = (a,b,c)

Text = abcabbcabba

Transmitted message = 1234571

1 2 3

4 5 6

78

9 Trie

Page 65: Representação e Compressão de Texto Joaquim Macedo Departamento de Informática da Universidade do Minho & Faculdade de Engenharia da Universidade Católica

a cb1 2 3

4b1 2 3

ab c

a cb1 2 3

4b c

5

a cb1 2 3

4

b c

5 6a

a cb1 2 3

4b c

5 6a

7b

a cb1 2 3

4b c

5 6a

7b a

8

a cb1 2 3

4b c

5 6a

7b a

8

9a

Final Trie and its HeightBalanced Binary Tree

Transmitted Code= 1234571=‘001001100101010011000’

0 1

0 1

0 1

0 1

0 1

0 1 0 1

0 1

1

4

7

2

95 8

63

Text =a b.. ..b c..

..c a.. ..ab . b.. ..bc a..

..abb a

Text=abcabbcabba

Page 66: Representação e Compressão de Texto Joaquim Macedo Departamento de Informática da Universidade do Minho & Faculdade de Engenharia da Universidade Católica

Resumo Foram apresentadas várias

tecnicas de compressão sem perdas Baseadas na entropia

Também usadas para áudio e imagem Baseadas em dicionário

Usadas por muitos esquemas de compressão de texto para conseguir altas taxas de compressão