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

Codificação Aritmética

A codificação aritmética, diferentemente da de Huffman, só é obtida tendo-se


a sequência de letras ou símbolos que se quer transmitir. Como exemplo, suponha-
se que tenhamos as letras abaixo com suas respectivas probabilidades.

Letras A B C D E F I ?
Prob. 0,2 0,2 0,1 0,1 0,2 0,1 0,05 0,05

A função da letra ? na tabela é que necessitamos um término para a sequência


a ser transmitida (End of File).
A codificação aritmética é realizada através da função de distribuição de
probabilidades (função acumulada) das letras. Atribuindo-se números inteiros às
letras na ordem como aparecem na tabela, teríamos, 1 = A, 2 = B, 3 = C, 4 = D,
5 = E, 6 = F, 7 = I e 8 = ? Fazendo-se isso, podemos colocar num eixo horizontal
as letras e na vertical a distribuição acumulada, conforme mostrado na Figura 1.

1,0
0,95
0,90
0,80

0,60
0,50

0,40

0,20

0,00
0 1=A 2=B 3=C 4=D 5=E 6=F 7=I 8=?

Figura 1 - Função acumulada de probabilidade das letras

Suponha-se que queiramos enviar a palavra BEBIDA. A codificação


aritmética dessa palavra é feita usando-se a função acumulada da Figura 1, conforme
mostrado na Figura 2.

1
1,00 0,40 0,360 0,3360 0,33560 0,335440 0,3354080

?
0,95 0,39 0,358 0,3356 0,33558 0,335438 0,3354076

I
0,90 0,38 0,356 0,3352 0,33556 0,335436 0,3354072

F
0,80 0,36 0,352 0,3344 0,33552 0,335432 0,3354064

E
0,60 0,32 0,344 0,3328 0,33544 0,335424 0,3354048

D
0,50 0,30 0,340 0,3320 0,33540 0,335420 0,3354040

C
0,40 0,28 0,336 0,3312 0,33536 0,335416 0,3354032

B
0,20 0,24 0,328 0,3296 0,33528 0,335408 0,3354016

A
0,00 0,20 0,320 0,3280 0,33520 0,335400 0,3354000

B E B I D A ?

Figura 2 - Obtenção da codificação aritmética da palavra BEBIDA

Com a codificação obtida na Figura 2, obtemos o intervalo mostrado, ou seja, o

Número ∈ [ 0,3354076 , 0,3354080)


Qualquer número desse intervalo pode ser enviado e o receptor fará o
proceso inverso de decodificação.

0,3354076 x 2 = 0,6708152 → → bit 0


0,6708152 x 2 = 1,3416304 → → bit 1
1,3416304 - 1 = 0,3416304
0,3416304 x 2 = 0,6832608 → → bit 0
0,6832608 x 2 = 1,3665216 → → bit 1
1,3665216 - 1 = 0,3665216
0,3665216 x 2 = 0,7330432 → → bit 0
0,7330432 x 2 = 1,4660864 → → bit 1

e assim por diante. Até aqui temos: 0.010101

Continuando o processo para os números 0,3354076 e 0,3354080 chegamos a:

2 4 6 8 10 12 15 18 22
0,3354076 = .0 1 0 1 0 1 0 1 1 1 0 1 1 1 0 1 0 1 0 0 0 1 0

0,3354080 = .0 1 0 1 0 1 0 1 1 1 0 1 1 1 0 1 0 1 0 0 1 1 0

0,3354077339 = .0 1 0 1 0 1 0 1 1 1 0 1 1 1 0 1 0 1 0 0 1 0 0 0 0 0 0 ... =

2-2 + 2-4 + 2-6 + 2-8 + 2-9 + 2-10 + 2-12 + 2-13 + 2-14 + 2-16 + 2-18 + 2-21

2
Pode-se transmitir a sequência binária: 0 1 0 1 0 1 0 1 1 1 0 1 1 1 0 1 0 1 0 0 1
que tem 21 bits para representar a palavra BEBIDA + End of File (=?).

Para efeito de comparação, pode-se usar o processo da codificação de Huffman.

O algoritmo de Huffman resulta em:

A 0,20 11 0,20 11 0,20 10 0,20 01 0,40 00 0,40 1 0,60 0 1,00

B 0,20 000 0,20 000 0,20 11 0,20 10 0,20 01 0,40 00 0,40 1

E 0,20 001 0,20 001 0,20 000 0,20 11 0,20 10 0,20 01

C 0,10 011 0,10 010 0,20 001 0,20 000 0,20 11

D 0,10 100 0,10 011 0,10 010 0,20 001

F 0,10 101 0,10 100 0,10 011

I 0,05 0100 0,10 101

? 0,05 0101

Letras Prob. Código


obtido
A 0,2 11
B 0,2 000
E 0,2 001
C 0,1 011
D 0,1 100
F 0,1 101
I 0,05 0100
? 0,05 0101

A palavra BEBIDA? será transmitida como a sequência binária:

B E B I D A ?
000 001 000 0100 100 11 0101

que terá 22 bits para transmissão

Então, por Huffman temos 22 bits e pela codificação aritmética temos 21 bits.

É claro que por Huffman, não haveria a necessidade de se colocar o símbolo ? para
indicar o fim de arquivo, já no método da codificação aritmética esse símbolo é
indispensável.

Вам также может понравиться