Vous êtes sur la page 1sur 26

Compresso de Dados

1. Para que comprimir?


Ao contrrio do que possa parecer, comprimir no somente reduzir o tamanho de
um arquivo: h vrias outras aplicaes que utilizam a compresso de dados.
Obviamente, a reduo do espao fsico utilizado um conjunto de aplicaes,
mas h outro relativo agilizao da transmisso de dados.
No se pude mostrar la imagen v inculada. Puede que se hay a mov ido, cambiado de nombre o eliminado el archiv o. Compruebe que el v nculo seala al archiv o y ubicaciones correctos.

A reduo do espao fsico mais comumente utilizada em bancos de dados que,


incorporando a compresso no projeto de seus registros, permite um significativo
ganho em termos de ocupao em disco e velocidade de acesso.
Como foi mencionado anteriormente, a utilizao mais conhecida da compresso
de dados a reduo do espao ocupado por arquivos. De fato, esta aplicao
mais comum e mais difundida comercialmente. Afinal, dado um dispositivo
restrito de armazenamento que um disquete, e um grande deposito de arquivos
que um disco rgido, faz-se evidente a necessidade de muitas vezes realizar-se a
reduo do tamanho de arquivos para transport-los ou simplesmente armazenlos.
No se pude mostrar la imagen v inculada. Puede que se hay a mov ido, cambiado de nombre o eliminado el archiv o. Compruebe que el v nculo seala al archiv o y ubicaciones correctos.

A compresso tambm utilizada para agilizar a transmisso de dados basicamente


de duas formas: alterando a taxa de transmisso e permitindo o aumento no nmero
de terminais de uma rede.
Se possumos um modem que opera a 9600 bps (bits por segundo), possvel que
ele transmita como se estivesse a 14400 bps? Sim! Basta que ele permita a
compresso de dados transmitidos, ampliando sua capacidade de transferncia de
informao. Na verdade, o modem continuar transmitindo a uma taxa de
transmisso de 9600 bps, mas a taxa de transferncia de informao estar
ampliada para 14400 bps. A compresso de dados permite, portanto, o aumento na
velocidade de transmisso de dados.

Outra vantagem da compresso em comunicao, derivada do aumento de


velocidade, a possibilidade de expanso de uma rede de computadores. Como
uma ampliao do nmero de terminais de uma rede baixa o desempenho, dado o
aumento do trfego de dados, torna-se necessria uma transmisso mais rpida de
dados. H, portanto, duas alternativas: trocar os modem, utilizando modelos mais
velozes, ou incorporar um chip com algoritmo de compresso aos modems
existentes. Como a primeira alternativa mais cara, a segunda permite que se
alcance o mesmo desempenho com muito menor custo. A compresso de dados,
neste caso, permite a ampliao de uma rede de computadores de uma forma
alternativa mais barata. <IMGSRC="POL217.JPG"

2. Tipos de Compresso
No se pude mostrar la imagen v inculada. Puede que se hay a mov ido, cambiado de nombre o eliminado el archiv o. Compruebe que el v nculo seala al archiv o y ubicaciones correctos.

1.1. Compresso Lgica


A compresso lgica refere-se ao projeto de representao otimizada de dados. Um
exemplo clssico o projeto de um banco de dados utilizando seqncias de bits
para a representao de campos de dados. No lugar de seqncias de caracteres ou
inteiros, utiliza-se bits, reduzindo significativamente o espao de utilizao do
banco de dados.
Este tipo de compresso possvel de ser efetivada em campos projetados para
representar dados constantes, como datas, cdigos e quaisquer outros campos
formados por nmeros. A caracterstica lgica da compresso encontra-se no fato
dos dados j serem comprimidos no momento do armazenamento, no ocorrendo
sua transformao de dados estendidos para comprimidos.

2.1. Compresso Fsica


A compresso fsica aquela realizada sobre dados existentes, a partir dos quais
verificada a repetio de caracteres para efetivar a reduo do nmero de
elementos de dados. Existem dois tipos de tcnicas para sinalizar a ocorrncia de

caracteres repetidos:
1. um deles indica o caracter (ou conjunto de caracteres) repetido atravs da
substituio por um caracter especial;
2. outras tcnicas indicam a freqncia de repetio de caracteres e
representam isto atravs de seqncias de bits.
No se pude mostrar la imagen v inculada. Puede que se hay a mov ido, cambiado de nombre o eliminado el archiv o. Compruebe que el v nculo seala al archiv o y ubicaciones correctos.

Ambos os tipos de compresso fsica e suas diversas tcnicas sero abordados no


decorrer deste captulo.

3. Compresso Orientada a Caracter


3.1. Seleo de Caracteres Indicadores
Antes da discusso das tcnicas propriamente ditas, necessrio o esclarecimento
de como so codificados os caracteres especiais a serem substitudos pelos
caracteres repetidos neste tipo de compresso fsica. H basicamente 3 formas de
representao denominadas run-length , run-length estendido e insero e
deleo .
a) codificao run-length
Quando temos um arquivo onde ocorre uma repetio contnua de determinado
caracter, por exemplo AAAAAAAAAAAA, possvel sua representao atravs
da codificao run-length , da seguinte forma:
Ce 12 A
onde A o caracter repetido 12 vezes, o que indicado pelo caracter especial Ce .
O caracter especial um daqueles caracteres no-imprimveis que conhecemos no
cdigo ASCII, por exemplo.
Cabe salientar que esta codificao ocupa somente 3 bytes . Ora, como
representar um inteiro como um byte? Deve-se ter a conscincia que em um byte

pode ser armazenado um valor de 0 a 255, ou seja, pode-se indicar, como apenas
um byte at 256 ocorrncias de caracter. Caso ocorra mais do que isso, deve-se
utilizar outra representao mais eficiente.

b) codificao run-length estendido


Como representaremos um nmero de repeties maior que 256? Utilizando o runlength estendido. A diferena deste para o run-length simples que h caracteres
delimitadores no incio e no fim da seqncia de codificao:
SO R A 980 SI
onde SO (shift out ) um caracter especial indicador de incio de uma seqncia de
caracteres definida pelo usurio at que SI (shift in ) seja encontrado. Esta uma
propriedade de cdigos de caracteres, como o ASCII e EBCDIC. O caracter R
indica a compresso run-length , onde o caracter A indicado como repetido 980
vezes. Como o valor 980 ultrapassa o limite de 256 de um byte, torna-se necessria
a utilizao de mais um byte para a representao do valor.

c) codificao por insero e deleo


O que fazer quando no for possvel a colocao de caracteres especiais? H
determinados casos que os caracteres especiais utilizados conflitam com outros
aplicativos, de transmisso de dados, por exemplo. Desta forma, utiliza-se um
caracter convencional como indicador de compresso.
Como na lngua portuguesa utiliza-se muito pouco as letras K, W, Y, pode-se, por
exemplo, indicar a compresso de um arquivo de texto na forma:
K 12 A
3.2. Tcnicas de Compresso Orientada a Caracter
As tcnicas de compresso orientadas a caracter no so as mais eficientes ou as
mais sofisticadas. Pelo contrrio, em geral elas so utilizadas num primeiro nvel
de compresso multinvel, onde os demais nveis podem ser tcnicas estatsticas de
compresso.
Aqui sero analisados 8 tcnicas de compresso orientada a caracter, de modo a
dar uma noo das possveis aplicaes deste tipo de compresso.

a) Supresso de Caracteres Nulos


Nesta tcnica, temos como objetivo comprimir apenas os caracteres nulos ou
brancos. Em geral, so comprimidos caracteres correspondentes ao espao em
branco.
Para a compresso, utiliza-se a seguinte seleo de caracteres indicadores:
Ce N
onde Ce um caracter especial e N o nmero (em binrio) de caracteres brancos
repetidos seqencialmente.
Ento, por exemplo, uma seqncia do tipo:
... vazio. Exatamente o que...
pode ser comprimida como sendo:
... vazio.Ce8Exatamente o que...
o que demonstra uma reduo de 6 bytes no trecho de texto apresentado.
Outras formas de indicao de compresso podem ser utilizadas, com visto na
seo anterior. Como trata-se de uma compresso de brancos, no h a necessidade
de explicitao do caracter comprimido.

O algoritmo para a tcnica apresentada muito simples:


1. inicializa-se um contador para o clculo do nmero de repeties de brancos;
2. l-se o caracter do arquivo a comprimir;
3. verifica-se se o caracter um branco;
4. se for, incrementa-se o contador e verifica-se se o nmero de caracteres
ultrapassou a 255 (limite binrio); se verdadeiro, colocam-se os caracteres
indicadores no arquivo comprimido e volta-se ao passo 1, caso contrrio,
volta-se ao passo 2;
5. se no for, verifica-se se o contador maior que 2, valendo a pena
comprimir; se , colocam-se os caracteres indicadores no arquivo

comprimido, e volta-se ao passo 1, se no , copiam-se os caracteres lidos no


arquivo comprimido e volta-se ao passo 1.

O fluxograma para o algoritmo apresentado mostrado a seguir:


No se pude mostrar la imagen v inculada. Puede que se hay a mov ido, cambiado de nombre o eliminado el archiv o. Compruebe que el v nculo seala al archiv o y ubicaciones correctos.

b) Mapeamento de Bit
Quando sabida a existncia de mltiplas ocorrncias no consecutivas de
determinado caracter no arquivo a comprimir, utiliza-se a compresso por
mapeamento de bit. Esta tcnica utiliza-se de um byte no arquivo comprimido para
indicar, atravs dos bits, a ocorrncia do caractere repetido.
Desta forma, caso desejarmos comprimir todos os caracteres a de um texto,
devemos indic-lo no mapa de bits. Cada mapa descreve 8 bytes, um por bit do
arquivo manipulado. Portanto, para letra encontrada a cada trecho de 8 bytes, ser
assinalada no mapa de bits. Por exemplo:

... abacate ...


ser descrito como:
... Mbbcte...
onde Mb o mapa de bits correspondente compresso do caracter a . Este mapa
composto, para o exemplo, dos bits:
No se pude mostrar la imagen v inculada. Puede que se hay a mov ido, cambiado de nombre o eliminado el archiv o. Compruebe que el v nculo seala al archiv o y ubicaciones correctos.

onde o primeiro zero indica a presena de um caracter a na primeira posio, valor


um em seguida indica um caracter diferente, e assim por diante, at completar o
mapa. Convenciona-se, portanto, que o bit 0 indica a presena do caracter a
comprimir e o bit 1 a sua ausncia.
O algoritmo para esta tcnica necessita do controle do mapa de bits:
1. inicializa-se o mapa de bits colocando todos os bits em zero;
2. inicializa-se o contador;
3. realiza-se a leitura do caracter no arquivo a comprimir;
4. compara-se o caracter lido com o caracter procurado; se forem o mesmo,
ento vai-se para o passo 6;
5. troca-se para 1 o bit da posio atual;
6. incrementa-se o contador;
7. verifica-se se o contador chegou a 8; se verdadeiro, ento grava-se o mapa
de bits e os caracteres diferentes do comprimido, e volta-se para o passo 1;
seno, volta-se ao passo 3.

A seguir apresentado o fluxograma que descreve o algoritmo:

No se pude mostrar la imagen v inculada. Puede que se hay a mov ido, cambiado de nombre o eliminado el archiv o. Compruebe que el v nculo seala al archiv o y ubicaciones correctos.

c) Comprimento de Fileira
Esta tcnica aplica a indicao semelhante run-length de compresso. O formato
permite a determinao do caracter repetido:
Ce C N
onde Ce o caracter especial, C o caracter repetido e N o nmero (binrio) de
repeties. Como podemos perceber, esta tcnica tambm permite apenas a
compresso de um caracter por vez.
O algoritmo da tcnica comprimento de fileira simples como os anteriormente
analisados. Consiste no seguinte:
1. inicializa-se um contador de caracteres, destinado ao controle de cada
caracter, buscando a verificao de existncia de repetio;
2. inicializa-se um contador de repeties do caracter procurado;
3. faz-se a leitura do caracter no arquivo a comprimir;
4. incrementa-se o contador de caracteres;

5. se o contador de caracteres for igual a 1, o caracter armazenado e volta-se


ao passo 3 para verificao de repetio;
6. verifica-se se o caracter armazenado o que procuramos; se for, incrementase o contador de repeties;
7. verifica-se se o contador de repetio maior ou igual a 4; se for menor,
gravam-se os caracteres lidos no arquivo comprimido e volta-se ao passo 1;
8. realiza-se a gravao dos caracteres indicadores no arquivo comprimido e
volta-se ao passo 1.
No se pude mostrar la imagen v inculada. Puede que se hay a mov ido, cambiado de nombre o eliminado el archiv o. Compruebe que el v nculo seala al archiv o y ubicaciones correctos.

O fluxograma que permite uma melhor visualizao do algoritmo apresentado a


seguir.

d) Compactao de Meio Byte


Este tipo de compactao utilizado quando encontramos uma seqncia de bits
em comum nos caracteres de determinado arquivo. Um tipo de repetio de bits de
grande ocorrncia a que acontece em caracteres numricos. Por exemplo, se
observarmos o conjunto binrio da tabela ASCII para os caracteres numricos,
teremos:
No se pude mostrar la imagen v inculada. Puede que se hay a mov ido, cambiado de nombre o eliminado el archiv o. Compruebe que el v nculo seala al archiv o y ubicaciones correctos.

ou seja, se isolarmos os primeiros 4 bits de cada byte de caracter numrico,


veremos que h uma constncia de valores. Estes valores constantes so um
exemplo de objetos de compactao de meio byte.
A compactao de meio byte propriamente dita consiste na seguinte seqncia de
caracteres indicadores:
No se pude mostrar la imagen v inculada. Puede que se hay a mov ido, cambiado de nombre o eliminado el archiv o. Compruebe que el v nculo seala al archiv o y ubicaciones correctos.

onde Ce o caracter especial, N o nmero (binrio) de caracteres comprimidos e


Cn a metade do caracter comprimido. Na seqncia de caracteres indicadores
apresentada so apresentados 5 caracteres porque este o mnimo para que a
compresso seja vlida, uma vez que at 4 caracteres ela necessita um nmero de
byte igual ou maior. Observe tambm que o nmero de repeties est ocupando
apenas meio byte. Isso significa que ele pode indicar apenas at 16 caracteres, ou
seja, este formato permite a compactao de uma seqncia de, no mximo, 16

caracteres.
Mas ento surge a pergunta: no h como estender este formato para permitir a
compactao de uma seqncia maior de caracteres? A resposta sim, existe a
compactao de byte inteiro , onde o nmero N ocupa 1 byte, ao invs de meio.
Neste formato estendido, o restante dos caracteres indicadores permanecem os
mesmos, sendo alterado apenas a representao do nmero de caracteres. Com a
representao de byte inteiro, a capacidade de compresso aumenta para 256
caracteres, o que permite um ganho expressivo em se tratando de longas
seqncias de caracteres.
O algoritmo para implementao da compactao de meio byte o seguinte:
1. inicializa-se um contador de caracteres;
2. procede-se a leitura do caracter;
3. verifica-se se o caracter possui a seqncia de bits a comprimir;
4. caso esteja dentro do grupo a comprimir, incrementa-se o contador e volta-se
ao passo 2;
5. verifica-se se o contador maior que 4;
6. se no for, gravam-se os caracteres lidos no arquivo comprimido e volta-se
ao passo 1, reiniciando o processo;
7. colocam-se os caracteres indicadores no arquivo comprimido e volta-se ao
passo 1.
O fluxograma para a representao do algoritmo apresentado a seguir.
No se pude mostrar la imagen v inculada. Puede que se hay a mov ido, cambiado de nombre o eliminado el archiv o. Compruebe que el v nculo seala al archiv o y ubicaciones correctos.

e) Codificao Diatmica
Esta tcnica de compresso permite a representao de um par de caracteres em
apenas um caracter especial. Normalmente utilizam-se tabelas com pares de
caracteres e sua freqncia de ocorrncia em determinado tipo de arquivo.
Obviamente procura-se substituir os caracteres de maior freqncia, associando a
cada dupla um caracter especial.
Em texto da lngua portuguesa, por exemplo, duplas de ocorrncia freqente so a
letra a acentuada com til seguido da letra o (o) e a letra e com acento agudo
seguido de um espao em branco ( ). A cada uma dessas seqncia deve-se
atribuir um caracter especial para nos permitir a compactao atravs da
codificao diatmica. Obviamente, estes so apenas dois exemplos de duplas de
caracteres, numa tabela normal para compactao utilizam-se mais de 20 duplas
para que seja obtida uma compresso razovel.
Para a implementao da codificao diatmica segue-se o seguinte algoritmo:
1. l-se um par de caracteres;
2. verifica-se sua existncia na tabela de pares;
3. se existente, coloca-se o caracter especial correspondente no arquivo
comprimido e volta-se ao passo 1;
4. coloca-se apenas o primeiro caracter no arquivo comprimido;
5. desloca-se o segundo caracter para a primeira posio;
6. l-se o prximo caracter e volta-se ao passo 2.
No se pude mostrar la imagen v inculada. Puede que se hay a mov ido, cambiado de nombre o eliminado el archiv o. Compruebe que el v nculo seala al archiv o y ubicaciones correctos.

O fluxograma correspondente o seguinte:

f) Substituio de Padres
A substituio de padres semelhante codificao diatmica, pois tambm
ocorre a substituio de um conjunto de caracteres por um caracter especial.
PALAVRA => Ce
O processamento desta tcnica semelhante ao da substituio de padres, com a
diferena de que so avaliados um nmero maior de caracteres. Desta forma, so
estabelecidas tabelas de palavras de maior freqncia de ocorrncia para
substituio com o caracter especial.
A utilizao mais comum para este tipo de compresso a de arquivos de
programas de linguagens de programao. Uma vez que as linguagens contm
diversas palavras que se repetem freqentemente em programas, utiliza-se esta
caracterstica para a sua compresso.
Uma variante da substituio de padres para permitir a codificao de um maior
nmero de palavras a utilizao de dois caracteres para indicao da ocorrncia
de determinada palavra:
CN
onde C um caracter escolhido para indicar a compresso e N o nmero (binrio)
da palavra a substituir. Isso permite a codificao de at 256 palavras reservadas, o
que anteriormente era limitado ao nmero de caracteres especiais que poderamos
utilizar.
Por exemplo, as palavras reservadas begin e end da linguagem Pascal poderiam
ser, por exemplo, substitudas pelos cdigos $1 e $2 . As demais palavras
reservadas da linguagem tambm poderiam ser codificadas desta maneira,
permitindo uma compresso considervel de um arquivo de programa.
Como esta tcnica assemelha-se muito da codificao diatmica, deve tomar
como base para a programao o algoritmo e o fluxograma apresentados para
aquela tcnica. Desta forma no sero apresentados formas distintas de
programao.

g) Codificao Relativa

Esta tcnica de compresso realizvel quando existe a transmisso de seqncias


de caracteres numricos. Estas seqncias podem ser valores dentro de intervalos
definidos ou valores binrios.
A transmisso de valores intervalares pode ser exemplificada por transmisses de
dados provenientes de sinais de sensores. Um exemplo de transmisso binria o
fax. Nestes dois casos, suas transmisses podem ser comprimidas atravs da
codificao relativa. Para cada um dos casos existe um processamento adequado
aos tipos de valores envolvidos, por isso, veremos como o processamento para a
codificao de valores intervalares e para valores binrios.
Valores Intervalares
Neste primeiro tipo, a compresso somente vlida se existe um intervalo definido
de valores, caso contrrio no ocorre uma compresso satisfatria. Isso porque este
tipo de compresso baseia-se na colocao da variao numrica de um valor a
outro, desta forma:
Val Var1 Var2...
onde Val o primeiro valor da seqncia, VarN a variao do valor anterior para
o atual. Exemplificando de forma numrica, seja a seguinte seqncia de caracteres
numricos:
10.3 10.1 10.8 10.4 10.4 10.9 10.2
pode ser compactada atravs da codificao relativa, ficando os caracteres na
forma:
10.3 -.2 .7 -.4 0 .5 -.7
ou seja, numa seqncia dentro de um intervalo definido entre 10.0 e 10.9, foi
possvel a compresso de um conjunto de 34 para 24 caracteres.
A implementao desta tcnica resume-se a apenas no processamento da gravao
direta da diferena entre os dois valores anteriores no campo atual a comprimir.
No h nenhum outro esquema a seguir para descrever o processo.

Valores Binrios
Como afirmado anteriormente, o fax utiliza-se desta forma de compresso,

portanto a comparao existente no ser mais entre um valor e outro, mas entre
uma linha e a seguinte. Cada linha um vetor de valores binrios, que representam
o mapa de bits do desenho da pgina. O que ser quer transmitir apenas a variao
de uma linha para outra, evitando-se a transmisso de toda a linha.
Ento, um trecho de linha binria poderia ser:
... 01001011100010101...
e a sua seguinte:
... 01001011111100001...
a diferena seria em 5 bits:
... _________MMMM_M__...
A representao da transmisso dessa diferena entre linhas pode ser feita de duas
formas: indicando a posio da mudana a partir do incio ou a posio a partir da
mudana anterior. Alm da posio da mudana, normalmente indica-se a
quantidade de mudanas de ocorreram.
Para o trecho de linha apresentado anteriormente, pode-se representar como ponto
fixo da mudana seguido da quantidade de bits alterados:
529 4 534 1
caso se fosse esta a nica alterao na linha, que normalmente possui 1728 bits,
seria uma compresso expressiva.
Comprimindo-se a partir do clculo do deslocamento, o nmero de bits a transmitir
se reduz ainda mais:
529 4 5 1
supondo que no h nenhuma alterao anterior a que est apresentada, a posio
inicial fixa e as demais relativas umas s outras, contabilizando-se apenas o
nmero de bits de distncia de uma a outra.

4. Compresso Estatstica

A idia da compresso estatstica realizar uma representao otimizada de


caracteres ou grupos de caracteres. Caracteres de maior freqncia de utilizao
so representados por cdigos binrios pequenos, e os de menor freqncia so
representados por cdigos proporcionalmente maiores.
Neste tipo de compresso portanto, no necessitamos saber qual caracter vai ser
comprimido, mas necessrio, porm, ter o conhecimento da probabilidade de
ocorrncia de todos os caracteres sujeitos compresso. Caso no seja possvel a
tabulao de todos os caracteres sujeitos compresso, utiliza-se uma tcnica
adequada para levantamento estatstico dos dados a comprimir, formando tabelas
de probabilidades.
Para sabermos como foi concebido este tipo de compresso, veremos na seo
seguinte a Teoria da Harmonia, a partir da qual teremos uma noo de como se
processa a compresso estatstica.

4.1. Teoria da Harmonia


Esta Teoria baseia-se no princpio fsico da Entropia. A Entropia a propriedade
de distribuio de energia entre os tomos, tendendo ao equilbrio. Sempre que um
sistema fsico possui mais ou menos quantidade de energia que outro sistema fsico
em contato direto, h troca de energia entre ambos at que atinjam a entropia, ou
seja, o equilbrio da quantidade de energia existente nos sistemas. Ao atingir o
estado de equilbrio, sabe-se que estes sistemas esto utilizando o mnimo de
energia possvel para sua manuteno, e assim se mantero at que outro sistema
interaja sobre eles.
Aplicada informao, a Teoria da Entropia permite a concepo de uma teoria da
Harmonia, ou seja, um ponto de equilbrio onde a informao pode ser
representada por uma quantidade mnima de smbolos. Para chegarmos a esta
representao ideal, basta que tenhamos a quantidade de smbolos utilizada e a
probabilidade de ocorrncia deles. Com base nisso, possvel calcular a

quantidade mdia de bits por intervalo de smbolo:

havendo n smbolos, cada qual com uma probabilidade p . A representao de


quantidades em binrio dada pela base 2 do logaritmo. Foi utilizado um valor n
logn por sua proporcionalidade entre quantidade de informao e tempo (para mais
detalhes, veja bibliografia indicada no captulo A). Por outro lado, a frmula
apresentada semelhante utilizada para verificao da energia de um sistema
fsico, utilizada na Teoria da Entropia.
Na prtica, a frmula anteriormente apresentada permite-nos verificar se possvel
a otimizao da quantidade de bits utilizados para representao de determinado
conjunto de smbolos. Duas representaes podem ser comparadas para a
verificao de qual ocupa menos bits em mdia. Isso nos permite concluir que
possvel a criao de um mtodo de compactao construdo a partir da
probabilidade de ocorrncia de smbolos.
De fato, existem tcnicas que utilizam a anlise da probabilidade para compactao
de dados. Estas so chamadas de estatsticas e sero analisadas nas sees
seguintes.

4.2. Codificao Huffman


Esta tcnica de compresso permite a representao em binrio de caracteres a
partir de sua probabilidade de ocorrncia. Esta representao gerada por um
sistema de decodificao em rvore binria, o que impede a ambigidade na
anlise do cdigo.
A ambigidade, neste caso, refere-se a uma decodificao que permite a confuso
com outros caracteres. Por exemplo, determinado caracter C1 tem o cdigo binrio
01 e outro caracter C2 tem o cdigo 0100, isto implica que, ao verificarmos a
seqncia binria para C2 poderemos estar interpretando como C1, ao serem lidos
apenas os bits 01. Por isso, a codificao Huffman utiliza o projeto em rvore
binria para projeto dos bits que representam os caracteres, de forma que permitam
uma decodificao nica para cada caracter.
A codificao Huffman necessita de que cada caracter tenha um valor de
probabilidade de ocorrncia. A partir dos caracteres de menor valor, comea a
construo da rvore binria. Por exemplo, seja a seguinte distribuio:

para os dois caracteres de menor probabilidade, sero atribudos os valores 0 para


C3 e 1 para C4. Eles formaro um ramo cuja probabilidade ser 0,3, representado
graficamente desta forma:

A probabilidade do ramo a soma das probabilidades das folhas (0,3 = 0,2 + 0,1).
Os valores binrios sero membros do cdigo formado. Para a codificao dos
prximos caracteres, basta continuarmos a construo da rvore. O prximo
caracter ser adicionado rvore:

Mais uma vez, o ramo a soma das probabilidades anteriores (0,5 = 0,2 + 0,3), e a
codificao da diviso recebeu 0 para uma derivao e 1 para outra. O objetivo
desta numerao a construo do cdigo binrio dos caracteres.
Por fim, o ltimo caracter adicionado rvore:

A probabilidade final da rvore sempre 1,0, uma vez que necessariamente devese atingir 100% das ocorrncias de caracteres, permitindo uma codificao total.
Uma vez terminada a rvore, basta a formalizao da codificao, que feita com a
leitura dos valores binrios, da raiz para as folhas. Os valores binrios lidos sero o
cdigo do percurso da raiz at a folha correspondente ao caracter que se deseja o
cdigo. A tabela de cdigos fica a seguinte:

Desta forma, esto codificados os caracteres atravs da tcnica de Huffman.


Observe que o caracter de maior freqncia possui o menor valor. Isso
exatamente o objetivo da compresso estatstica, uma vez que permite a
substituio do caracter de maior ocorrncia por apenas um bit. Assim acontece
com os demais caracteres, em ordem crescente do nmero de bits, conforme a
prioridade.
Cabe salientar, por fim, que a codificao Huffman manteve a propriedade de
permitir a decodificao direta, no permitindo que os bits da codificao de um
caracter confundisse com a de outro.

4.3. Codificao Shannon-Fano


A forma desta tcnica tem muitas semelhanas com a de Huffman. Necessita-se de
uma tabela com a probabilidade de ocorrncia de cada caracter, e de um
procedimento para a codificao em binrio. Por outro lado, o procedimento para a
codificao, diferentemente de Huffman, baseia-se na diviso de conjuntos de
probabilidades para a obteno do cdigo binrio.
Para a codificao, devemos ter os caracteres com suas probabilidades de

ocorrncia:

O passo seguinte ordenar colocando os caracteres de maior probabilidade no topo


da tabela, at o menor, na base:

Uma vez feito isso, divide-se a tabela em dois grupos cuja soma de probabilidades
seja igual ou semelhante. No caso da tabela acima, sero obtidos dois grupos, um

composto pelo caracter C1 e outro pelos demais. O primeiro grupo recebe como
primeiro valor de cdigo o binrio 0 e o segundo recebe 1:

Como para o primeiro grupo no h ambigidade em termos apenas um bit, vamos


resolver o problema do segundo grupo. Para isso, repetimos o procedimento
anterior, dividindo em dois subgrupos de probabilidades equivalentes. O caracter
C2 forma o primeiro subgrupo e os demais formam o segundo. Mais uma vez
vamos colocar 0 para distinguir o primeiro e 1 para o segundo:

Finalmente, para resoluo da ltima duplicidade, repete-se o processo, inserindo o


binrio 0 na seqncia do cdigo de C1 e 1 para C3:

4.4. Comparao entre Huffman e Shannon-Fano


A gerao de cdigo entre as duas tcnicas pode ter variaes marcantes, sendo
algumas vezes sendo vantagem usar uma ou outra. Para decidirmos qual delas a
melhor para determinado caso, basta compararmos o tamanho mdio obtido por
cada
cdigo
resultante
da
aplicao
das
tcnicas.
O tamanho mdio ocupado por um cdigo gerado pelas tcnicas de compresso
estatstica dado por:

onde N o nmero de caracteres da tabela de codificao, p a probabilidade de


ocorrncia do caracter i , e t o nmero de bits de cdigo ocupado pelo caracter i .
Para exemplificar numa comparao entre as tcnicas, seja a tabela:

Codificando por Huffman, podemos obter os seguintes cdigos:

O
T

tamanho
=

0,3.2

mdio
+

0,3.2

para
+

0,3.2

esta
+

codificao
0,1.2

2,0

foi:
bits

E codificando por Shannon-Fano, possvel resultar em:

E
T

o
=

0,3.1

tamanho
+

0,3.2

obtido
+

0,3.3

foi
0,1.3

de:
2,1

bits

Os resultados indicam que a codificao Huffman foi melhor executada, ganhando


0,1 bit em mdia. Mas isso no acontece por acaso. A codificao Huffman
poderia ter sido pior, se no houvessem sido feitas as combinaes iniciais em dois
grupos. Por outro lado, a Shannon-Fano poderia ter sido melhor se fosse escolhido
como
primeira
diviso
o
intervalo
entre
C4
e
C2.

Para melhor ou para pior, no exemplo acima ambos poderiam ter dado 2,1 ou 2,0.
De qualquer forma, interessante tentarmos a codificao com um ou outro antes
de optarmos por uma delas. Quando comparamos as duas tcnicas, geralmente h
uma
diferena
na
codificao
que
nos
permite
aperfeio-la.

4.5.

Compresso

Fixa

Compresso

Auto-adaptvel

Como vimos, as tcnicas de compresso estatstica de Huffman e Shannon-Fano


permitem apenas a criao de uma tabela fixa de cdigos associados a cada
caracter tabelado. Caso as probabilidades nas quais foram concebidos os cdigos
da tabela forem distintos para determinado arquivo a comprimir, este ser
prejudicado na compresso. Para resolver este caso utiliza-se uma tabela adaptvel.
A tabela adaptvel consiste na mesma tabela que conhecemos, contendo o caracter
e seu cdigo, acrescida de mais uma coluna contendo a contagem de ocorrncia do
caracter no arquivo a comprimir. Efetua-se, portanto, uma contagem de quantos
caracteres ocorrem no arquivo, e ordena-se a coluna dos caracteres em ordem
crescente a partir desta coluna da contagem, mantendo a coluna de cdigo
inalterada. Como resultado, obtm-se uma tabela com os caracteres de ocorrncia
mais
freqente
sendo
codificados
com
menos
bits.
Seja, ento, a tabela, contendo o caracter o cdigo e a contagem:

caso o caracter C3 ocorra 21 vezes, o C2 18 vezes, C1 10 vezes, o C5 3 vezes e o


C4
2
vezes,
a
tabela
agora
ser
a
seguinte:
No se pude mostrar la imagen v inculada. Puede que se hay a mov ido, cambiado de nombre o eliminado el archiv o. Compruebe que el v nculo seala al archiv o y ubicaciones correctos.

como vimos, a codificao continuou a mesma, mas a correspondncia foi alterada


para a situao especfica do arquivo comprimido em questo. Observamos,
portanto, a necessidade de realizarmos um processamento de leitura e clculo
anterior compresso propriamente dita, o que implica em maior tempo gasto do
que
com
a
utilizao
da
tabela
fixa.
Com a compresso auto-adaptvel ganha-se, obviamente, uma compresso mais
eficiente. Por outro lado, h um problema pela prpria variabilidade da tabela: para
a descompresso, h a necessidade de se anexar a tabela ao arquivo comprimido,
para que os cdigos correspondentes possam ser devidamente decodificados. Isso
pode significar, em alguns casos, perda da compresso eficientemente obtida.

4.6.

Codificao

Lempel-Ziv

CCITT

V.42

bis

A codificao Lempel-Ziv um tipo de compresso de cadeia que forma strings de


caracteres a partir de sua ocorrncia, criando tabelas de strings conforme vo
acontecendo. Dada a interessante abordagem utilizada nesse tipo de compresso,
melhor do que as anteriormente estudadas, a codificao Lempel-Ziv foi
aprimorada e tornada padro para a compresso de dados transmitidos via modem.
Esta tcnica padro baseada na Lempel-Ziv a recomendao V. 42 bis do CCITT
(Consultative Committee for International Telephone and Telegraph). A concepo
da
compresso
de
cadeia
ser
analisada
a
seguir.
As tcnicas de Huffman e Shannon-Fano estudadas anteriormente eram de
compresso estatstica baseada em caracteres, uma vez que utilizavam a
probabilidade de ocorrncia de cada caracter. A codificao Lempel-Ziv utiliza
probabilidades de cadeias de caracteres ao invs de apenas um caracter. Qual a
vantagem disso? o que vamos tentar responder a seguir.

Em primeiro lugar, vamos analisar qual a influncia da probabilidade sobre o


nmero terico de bits para representao de determinado conjunto de caracteres.
Para tanto, vamos pegar os caracteres C1 e C2 para verificar a relao entre
probabilidade e nmero terico de bits. Para sabermos este nmero terico de bits
precisamos calcular a harmonia, que nos d o nmero de bits por intervalo de
smbolo.

Assim, se C1 tiver probabilidade 0,8 e C2 tiver 0,2, sua entropia ser 0,72, e assim
sucessivamente, conforme a tabela a seguir:

Isso indica que quanto mais distinta a porcentagem, maior o aproveitamento de


bits. Para aproveitarmos isso como forma de compresso, basta criarmos conjuntos
de caracteres de forma a acumular porcentagens. Assim, podemos acumular os
caracteres em cadeias do tipo C1C1, C1C2, etc. Para verificarmos se h ganho no
comprimento mdio de bits, vamos iniciar analisando as probabilidades de cadeias
de 2 caracteres na tabela a seguir, onde foi estabelecido C1 com probabilidade 0,7
e
C2
com
0,3:

A probabilidade de ocorrncia da cadeia C1C1 de 0,7*0,7 = 0,49, ou melhor,


49%.
O
mesmo
raciocnio
aplica-se
s
demais
combinaes.
Utilizando a codificao Huffman, podemos estabelecer o tamanho mdio ocupado
pelo grupo de cadeias da tabela anterior. Obtendo-se os cdigos binrios, que
podem ser observados na tabela a seguir, pode-se calcular o tamanho mdio de bits
ocupado:

T = 0,49*1 + 0,21*2 + 0,21*3 + 0,09*3 = 1,81 bits


O valor de 1,81 bits para representao da cadeia pode parecer grande, mas se

dividirmos por 2, teremos 0.905 bit por caracter, menor que 1 bit por caracter no
caso de codificarmos o bit 0 para C1 e bit 1 para C2. Seguindo este raciocnio,
podemos ampliar a idia para um nmero maior de caracteres e chegaremos
concluso de que, quanto maior a cadeia, mais caracteres sero passveis de
compresso.
Desta forma, a codificao Lempel-Ziv utiliza um conjunto de regras para analisar
as cadeias de um conjunto de caracteres pr-definido. As cadeias so montadas e
codificadas medida em que so lidos os caracteres a codificar. A forma de
composio destas cadeias est descrita na tcnica V. 42 bis descrita a seguir.
A codificao Lempel-Ziv foi melhorada e utilizada como uma tcnica padro
para transmisso atravs de modems. Esta tcnica possui um tamanho mximo de
cadeia que pode variar de 6 a 250 caracteres para formao de cadeia. Existe um
dicionrio com 512 cadeias bsicas codificadas, mas este no restrito a elas.
O dicionrio de cadeias dinmico e pode ter cadeias acrescentadas e retiradas em
tempo de compresso. A formao de novas cadeias baseada na comparao das
cadeias lidas com as existentes no dicionrio. Se a cadeia lida no existe, ela
acrescentada e recebe um cdigo que a representa como cadeia comprimida.
Como o modem transmissor o que faz a compresso e o dicionrio dinmico,
como o modem receptor ir decifrar os cdigos para descomprimi-los? Simples, a
cada nova cadeia formada no transmissor so enviados os caracteres ou a primeira
subcadeia que a compe e o cdigo correspondente nova cadeia, para que exista
uma
rplica
do
dicionrio
no
receptor.
utilizada uma estrutura de dados em rvore para implementao do dicionrio de
cadeias. A partir de uma cadeia pr-definida formada uma rvore para
processamento das cadeias. Seja a cadeia pr-definida DA , a partir da qual
derivam-se as cadeias DATA e DADO. Para esta seqncia a estrutura seria:

Os valores ao lado de cada caracter o cdigo correspondente cadeia composta

at aquele n da rvore. Ou seja, a cadeia DA possui cdigo 300, a cadeia DAT


possui cdigo 342 e assim por diante. Desta forma, amplia-se o dicionrio sem
prejudicar as codificaes existentes e permite, ao mesmo tempo, a verificao de
variaes
destes
cdigos.
Existe, ainda, a possibilidade de substituio de cdigos pouco utilizados. Uma vez
definida um nmero N de cdigos possveis, ao atingir este nmero, procura-se um
cdigo que corresponda a um n folha que no esteja sendo utilizado na
compresso em curso. Caso exista, a nova cadeia utiliza o cdigo da cadeia antiga
no utilizada. Ocorre, portanto, eliminao de cdigos do dicionrio.
Esta a tcnica padro V. 42 bis utilizada para compresso na transmisso de
dados via modem. Ela baseia-se na codificao em cadeia de Lempel-Ziv,
utilizando-se da multiplicao das probabilidades de ocorrncia de caracteres, para,
em cima das estatsticas de cadeias, permitir a compresso de bits utilizados na
transmisso
de
dados.

Vous aimerez peut-être aussi