Вы находитесь на странице: 1из 9

Os códigos de Huffman* são usados na obtenção de um código instantâneo

para uma dada fonte de informação em que o comprimento médio do código


deve ser maior ou igual à entropia da fonte.

Um código compacto para um fonte S é uma código que possui o menor


cumprimento médio possível se for codificado os símbolos de S um a um.

Seja S uma fonte com símbolos s1,s2 ,!,sq e probabilidades p1, p2 ,!, pq . Além
disso, assuma que os símbolos são ordenados tal que
p1 " p2 "! " pq .
•  Combina-se os! dois últimos símbolos em ! um só, obtendo-se um nova
fonte com apenas (q – 1) símbolos (redução de S);
•  Os símbolos ! dessa redução podem ser reordenados e novamente
combina-se os dois últimos para formar uma nova redução;
•  Segue esse procedimento, construindo uma sequência de fontes, até que
uma fonte possua 2 símbolos.
*Huffman – Estudante de doutorado do MIT.
É possível construir um código
instantâneo para essa fonte com
um comprimento médio menor?
Exemplo:

OBS: 1. O código de Huffman é Instantâneo;


2. Esse código não é único.
Desafio: Construa outro código para essa fonte. Compare os comprim. médios.
OBS: Nem sempre é necessário ter que reduzir o código até obter dois
símbolos. Pode-se para quando encontra-se uma redução que resulte em um
código compacto (probabilidade da forma
" 1 %( i
$ ' , ( i inteiro.
#2&

Symbols Probabilities Code S1


!
s1 0,5 0 0,5 0
s2 0,25 10 0,25 10
s3 0,125 110 1,25 110
s4 0,100 1110 1,25 111
s5 0,125 1111
Códigos Compactos r-ário
Para um código compacto r-ário, o procedimento é similar ao binário, exceto que
r símbolos são combinado a cada passo na redução.

Cada fonte será reduzida em r – 1 símbolos a cada passo.

A fonte final reduzida deve ter exatamente r símbolos (código compacto trivial).
Para que isso ocorra, a fonte original deverá conter r + !(r – 1) símbolos, em
que ! é um número inteiro.

Se a fonte original não tiver r + !(r – 1) símbolos, adiciona-se símbolos


“fictícios”na fonte original até este valor ser atingido, com probabilidade “zero,
afim de que sejam ignorados após o código ser formado.
Códigos Compactos r-ário
Fonte S com 11 símbolos para um código quaternária.
11 não é da forma 4 + 3!
O mais próximo que tem-se é 4+3.3 = 13, logo, adiciona-se 2 símbolos.
Seja L o comprimento médio de um código r-ário U.D. Para um fonte S. Defini-se
a eficiência de um código (") por
L não pode ser menor do que Hr(S)
H r ( S)
"= #1
L
Outra definição importante é a redundância de um código, dada por:
Note que a medida que a eficiência
! aumenta, a redund6ancia do código
L " H r ( S) diminui.
Re dund = 1 " # =
L

!
Exemplo: Seja um fonte sem memória S = {s1,s2 } , com
3 1
p( s1 ) = e p( s1 ) = ,
4 4
logo !
1 3 4
H ( S ) = log 4 + log = 0,811 bit/simb.
! 4 4 3
Um código compacto para esta fonte é
s1 "0 " L = 1 bit/simb.
!
s1 "1 H(S)
#= = 0,811.
L
Logo, para aumentar a eficiência, pode-se codificar a segunda extensão da
! fonte S (S2).
!
Logo, para aumentar a eficiência, pode-se codificar a segunda extensão da
fonte S (S2).
"i P ("i ) Código 27
s1s1 9 /16 0 L= binits / simb.
16
s1s2 3/16 10
H ( S 2 ) = 2H ( S )
s2 s1 3/16 110
s2 s2 1/16 111 ! 2# 0,811# 16
"= = 0,961
27
Também, tem-se !
Cada vez que é feita a codificação de
! 3 extensões maiores, a eficiência alcançará
S "# = 0,985 ! 1.
S 4 "# = 0,991