Sunteți pe pagina 1din 6

COMPRESIA ENTROPIC

2.1 CONCEPTE FUNDAMENTALE


2.1.1 Entropia unei surse staionare
Se consider un alfabet finit X constituit din M simboluri i se definete un mesaj
ca o secven de simboluri. O surs discret de informaie este numit stochastic dac
selecia simbolurilor care formeaz mesajele este fcut din cadrul alfabetului X n
conformitate cu o distribuie de probabilitate p i == |P (x i ). Din punct de vedere probabilistic,
mulimea mesajelor poate fi privit ca un proces aleatoriu discret adic, precum o secven

( n )n=0

de variabile aleatoare, fiecare dintre ele lund valori n mulimea X cu


probabilitatea de distribuie {p i}.
Se presupune n plus c sursa este staionar, adic
P { i 1 = x 1 , ..., i k = x k } = P { i 1 +h = x 1 , ..., i k +h = x k }

(2.1)

pentru toate numerele naturale i 1 , ..., i k , h i toate x 1 , ..., x k X.


O caracteristic global a unei astfel de surse din punctul de vedere al informaiei
este entropia sursei.
M
1
H(x) == pi log 2

pi

i =1

(2.2)

care este exprimat n bii/simbol i indic cantitatea medie de informaie a alfabetului X.


Teorema 2.1. - Entropia H(x) a unei surse cu un alfabet coninnd M simboluri,
satisface inegalitatea
H(x) log 2 M

(2.3)

egalitatea fiind satisfcut pentru simboluri echiprobabile.


n scopul transmiterii la distan sau pentru stocarea informaiei sursei este eficient s se
treac de la reprezentarea oferit de alfabetul sursei X la o reprezentare printr-un alt alfabet
Y. Procesul este numit codarea datelor. Un cod este o coresponden ntre mulimea mesajelor sursei
i mulimea cuvintelor de cod.
Se consider alfabetul sursei X constituit din simbolurile x 1 , ..., x M . Fiecrui simbol i se
asociaz o secven finit de simboluri ale alfabetului codului Y. n practic, alfabetul Y este
constituit din dou simboluri 0 sau 1. n acest fel fiecrui simbol i se asociaz o secven finit de bii
numit cuvnt de cod.
O codare eficient (compresie) urmrete minimizarea lungimii medii a cuvintelor de cod.
M

n == E{n} = p i ni
i =1

(2.4)

unde ni este lungimea cuvntului de cod (numr de bii) care reprezint simbolul xi, iar n este o
variabil aleatoare care reprezint lungimea cuvntului de cod (lund valoarea ni cu probabilitatea pi ,
i = 1, 2, ....., M).
Codurile realizeaz o coresponden ntre mesajele sursei (secvene de simboluri - cuvinte ale
alfabetului sursei) i cuvintele de cod (secvene de bii - cuvinte ale alfabetului Y). Dup modul de
stabilire a acestei corespondene codurile pot fi clasificate n:
i) bloc-bloc;
ii) bloc-variabile;
iii) variabile-bloc;
iv) variabile-variabile;
Codurile bloc-bloc sunt coduri care stabilesc o coresponden ntre mesaje ale sursei
de lungime fixat i cuvintele de cod de lungime fixat.
Codurile variabile-variabile stabilesc o coresponden ntre mesaje ale sursei de
lungime variabil i cuvinte de cod variabile.
EXEMPLUL 2.1
Se consider
X = { a, b, c, d, e, f, g, h, spaiu }
Y = { 0, 1}
Simboluri
Cuvinte de cod
a
000
b
001
c
010
d
011
e
100
f
101
g
110
Spaiu
111
Tab. 2.1 Tabel de codare bloc-bloc
Codul din tabelul 2.1 este un cod bloc-bloc i n aceeai categorie se ncadreaz
codurile ASCII care pun n coresponden un alfabet de 64 (sau 256) simboluri cu cuvinte de cod
de 6 (sau 8) bii.
EXEMPLUL 2.2
Se consider
X = { a, b, c, d, e, f, g, h, spaiu }
Y = { 0, 1}
Simboluri
Cuvinte de cod
aa
0
bbb
1
cccc
10
ddddd
11
eeeeee
100
fffffff
101
gggggggg
110
spaiu
111
Tab. 2.2. Tabel de codare variabile-variabile
Se observ c pentru un mesaj :

aa_bbb_cccc_ddddd_eeeeee_fffffffgggggggg (40 simboluri in total)


se obine o lungime cod de 30 fa de o lungime de cod de 120 dac codarea s-ar fi fcut conform
tabelului 2.1 .
Observaie : S-a folosit simbolul _ (underscore) pentru a nota caracterul spaiu

rdcin

0
1

0
1
ordin 1

x1
x2
x3

Un cod este distinct dac fiecare cuvnt de cod este discernabil n raport cu celelalte
(corespondena ntre mesajele sursei i cuvintele de cod este biunivoc).
Un cod distinct este unic decodabil dac fiecare cuvnt de cod este identificabil
cnd se afl imersat ntr-o secven de cuvinte de cod.

0
1
ordin 2
Fig.2.1 Arbore binar de codare

Codurile din Exemplul 2.1 i Exemplul 2.2 sunt ambele distincte, dar codul din
Exemplul 2.2 nu este unic decodabil. Spre exemplu codul 11 poate fi decodat fie ca ddddd
fie ca bbbbbb.
Un cod unic decodabil este un cod prefix dac are proprietatea de prefix care
pretinde ca nici un cuvnt de cod s nu fie prefixul altui cuvnt de cod. Codul care are
drept cuvinte de cod {1, 100000, 00} este un exemplu de cod care este unic decodabil dar
care nu are proprietatea de prefix.
Codurile prefix sunt decodabile instantaneu adic se bucur de proprietatea c
mesajul codat poate fi desprit n cuvinte de cod fr a fi necesar examinarea n avans
(lookahead) a urmtorilor bii. Deci decodarea este posibil imediat ce s-a primit ultimul bit
al cuvntului de cod fr a mai fi necesar recepionarea altor bii. Spre exemplu dac se
folosete codul care are cuvintele de cod {1, 100000, 00}, decodarea mesajului 1000000001
i identificarea lui 1 ca fiind primul cuvnt de cod necesit examinarea celui de-al zecelea
simbol (era posibil ca primul cuvnt de cod s fie 100000).
Un cod prefix minimal este un cod prefix cu proprietatea ca dac x este un prefix al
unui cuvnt de cod atunci i x sigma este fie un cuvnt de cod fie un prefix al unui cuvnt
de cod oricare ar fi litera sigma aparinnd alfabetului Y. Spre exemplu considernd codul
{00, 01, 10} se observ c acesta este un cod prefix care nu este minimal. Astfel 1 este
prefix al cuvntului de cod 10 i ar impune ca i 11 s fie un cuvnt de cod fie un prefix al
unui cuvnt de cod valid. Dac n exemplul de mai sus se nlocuiete cuvntul de cod 10 cu
cuvntul de cod 1 se obine un cod prefix minimal cu cuvinte de cod fie mai scurte.

Simboluri
Cuvinte de cod
x1
0
x2
10
x3
110
x4
111
Tab.2.3 Tabelul de codare asociat arborelului

2.1.2 Codarea alfabetului sursei


O reprezentare grafic util a codurilor prefix const n asocierea fiecrui cuvnt de
cod cu un nod terminal (frunz) dintr-un arbore binar. Pornind de la rdcina arborelui
primele dou ramuri corespund seleciei ntre 0 i 1 ca prim cifr a cuvntului de cod. Cele
dou ramuri pornind din nodurile de ordinul nti corespund celei de a doua cifre a
cuvntului de cod i procesul continu mai departe (a se vedea fig.2.1).
Cuvintele de cod fiind asignate numai nodurilor terminale, nici un cuvnt de cod nu
poate fi prefix al unui alt cuvnt de cod.
O condiie necesar i suficient ca un cod s fie cod prefix este dat de teorema
urmtoare:

x4

TEOREMA 2.2 Inegalitatea lui Kraft


Un cod binar care este un cod prefix avnd lungimile cuvintelor de cod n 1 , n 2 , ..., n M
exist dac i numai dac
M

2 n

(2.5)

i =1

Observaie:
Dac p i =2 -n i , i=1, 2, ..., M condiia (2.5) devine o egalitate.
n acest caz se obine pe baza relaiilor (2.2) i (2.4) c n = H(x).
n general ns n H(x) i se urmrete ca acest n s fie ct mai aproape de H(x).
Un cod prefix poate fi determinat astfel nct n s satisfac teorema urmtoare:
TEOREMA 2.3
Se poate determina un cod binar prefix pentru orice alfabet al sursei de entropie
H(x); codul avnd o lungime medie care s satisfac inegalitatea:
H(x) n < H(x)+1

(2.6)

2.1.3 Clasificarea metodelor


Exist mai multe criterii de clasificare a metodelor de compresie entropic.Toate
pleac ns de la ideea de a reduce redundana natural a mesajului iniial, i acest lucru se
poate face doar dac anumite simboluri sau grupe (subiruri) de simboluri, pe care le vom
numi in general forme se repet. In acest sens, putem clasifica metodele de compresie
entropic n dou categorii:
a) metode bazate pe frecvena de apariie a unei forme; aceste metode se
realizeaz n principiu n dou treceri asupra textului, prima trecere permind
tocmai stabilirea acestor frecvene

b) metode bazate pe apariia grupat (consecutiv sau diseminat) a aceleiai


forme; de regul aceste metode se realizeaz printr-o singur trecere pe text,
eventual cu reveniri pe o zon predeterminat
Dup un alt criteriu, cel al construciei arborilor de codare-decodare, metodele de
compresie entropic pot fi clasificate n:
(i)
metode statice
(ii) metode dinamice
O metod static este o metod care stabilete corespondena ntre mulimea
mesajelor i mulimea cuvintelor de cod, care nu se modific n timp. Este fixat nainte de
a ncepe codarea. n acest fel un mesaj dat este reprezentat de un acelai cuvnt de cod de
fiecare dat cnd el apare n cadrul mesajului. Se urmrete construcia unui cod unic
decodabil care s minimizeze lungimea medie de cod. Un asemenea procedeu este optimal.
O metod este dinamic, dac corespondena ntre mulimea mesajelor i mulimea
cuvintelor de cod se modific n timp. Asignarea cuvintelor de cod se bazeaz pe frecvena
relativ de apariie a mesajelor, evaluat pn la momentul curent al codrii.
Nu se poate face ns o delimitare clar ntre cele doua grupe de metode, chiar dac
n categoria (a) predomin metodele dinamice, iar in categoria (b) cele statice.

Se obine codarea Huffman:

Simboluri
Cuvinte de cod
x1
0
x2
100
x3
101
x4
110
x5
1110
x6
1111
Tab. 2.4 Tabelul de codare Huffman
Se constat c entropia H(x) = 2,09 biti/simbol
bii/simbol i cele dou valori satisfac inegalitatea (2.6).

iar

lungimea

medie n = 2,1

Exemplul 2.4
2.2 COMPRESIA STATIC
2.2.1 Algoritmul Huffman static
Pas 1. Se ordoneaz cele M simboluri n ordine descresctoare a probabilitii.
Pas 2. Se grupeaz ultimele dou simboluri x M-1 i x M ntr-un simbol echivalent
(contopire) cu probabilitatea p M-1 +p M .
Pas 3. Se repet paii 1 i 2 pn ce se ajunge la un singur simbol.
Pas 4. n arborele obinut prin parcurgerea pailor anteriori se asigneaz simbolurile
binare 0 i 1 pentru fiecare pereche de ramuri care pleac dintr-un nod intermediar.
Cuvntul de cod pentru fiecare simbol poate fi citit ca secvena binar determinat prin
parcurgerea nodurilor dinspre rdcin pn la nodurile terminale asociate simbolurilor.
Exemplul 2.3
pi
0,5

xi
x1

0,15

x2

0,15

x3

0,1

x4

0,05

x5

0,05

x6

0,3

0,2
0,1

0
1

1
0,5

0
1

0
1

0
1

Fig. 2.2 Arbore binar de codare

0
1

Pentru codul prezentat n exemplul 2.3 s se foloseasc arborele pentru a decoda


secvena recepionat (compactat) 1100100101110.
Soluie:
Pornind de la rdcin se urmresc ramurile la fiecare nod conform biilor
secvenei pn se atinge un nod terminal (deci i un simbol). Apoi se repornete procedura
de la rdcin. Se constat c secvena decodat este x4x1x2x3x4.
Trebuie precizat c algoritmul Huffman nu duce la o codare unic, dar toate codrile obinute
conduc la o aceeai lungime medie a codului.
Algoritmul descris mai sus se ocup de codarea simbol cu simbol. Pentru a obine
performane mai bune n ceea ce privete n , se consider o codare a unui bloc de simboluri i
asignarea unor cuvinte de cod pentru noul alfabet Y=X, care conine M simboluri yi. Probabilitatea
simbolurilor yi se obine ca un produs al probabilitilor celor simboluri din X (independena). n
baza teoremei 2.3 se construiete codul pentru alfabetul Y cu lungimea de cod n care satisface
H(Y) n < H(Y)+1

(2.7)

Avnd n vedere independena simbolurilor, se demonstreaz c H(Y)=H(X) i se obine


din (2.7) relaia
H(X) n / < H(X)+1/

(2.8)

Mrimea n / este numrul mediu de biti/simbol al lui X. Prin alegerea lui suficient de
mare se poate face ca aceasta s se apropie de H(X).
Se definete eficiena unui cod ca

[H(x )]
=
n

0,25

y1

0,15

y2

i redundana == 1-

0,15

y3

EXEMPLUL 2.5

0,1

y4

0,1

y5

0,09

y6

0,06

y7

0,06

y8

0,04

y9

(2.9)

Se consider un alfabet al sursei X={x 1 , x 2 , x 3 } cu p 1 =0,5; p 2 =0,3 i p 3 =0,2. S construim


un nou alfabet Y=X 2 ={x 1 x 1 , x 1 x 2 , ..., x 3 x 3 }.
S se construiasc tabelul simbolurilor yi , i=1,...,9 cu probabilitile ordonate descresctor
i apoi pentru acest alfabet s se aplice algoritmul Huffman.
Soluie:
xI
pI
cI
x1
0,5
0
x2
0,3
10
x3
0,2
11
Tab. 2.5 Tabelul de codare pentru sursa X

n = 0,5 2 + 0,5 1 = 1,5 bii /simbol


0,5

x1

0,3

x2

0,2

x3

0,5 0
1

0
1 1

Fig. 2.3 Arbore de codare pentru alfabetul X


yI
Y 1 =x 1 x 1
Y 2 =x 1 x 2
Y 3 =x 1 x 3
Y 4 =x 2 x 1
Y 5 =x 2 x 2
Y 6 =x 2 x 3
Y 7 =x 3 x 1
Y 8 =x 3 x 2
Y 9 =x 3 x 3

pI
0,25
0,15
0,1
0,15
0,09
0,06
0,1
0,06
0,04
Tab. 2.6 Tabelul de codare pentru

ci
00
010
100
011
1100
1101
101
1110
1111
sursa Y

0,3 0
1

0,55 0
1
1,0 0
1

0,2 0
1
0,15 0
1
0,1 0
1

0,25 0
1

Fig. 2.4 Arbore de codare pentru alfabetul Y = X 2


Se obin astfel lungimile medii ca fiind
n 2 = 0,25 2 + 0,5 3 + 0,16 4 = 2,24 bii/simbol
n 2 /2 = 1,12 bii /simbol
Exemplul 2.6
Metoda Huffman valorific ideea c ntr-un cod optimal la pi > pj corespunde ni < nj, i adaug
cerina ca cele mai puin probabile dou mesaje s aib aceeai lungime. Tehnica codrii const n
rescrierea tabelei de probabilitai intercalnd n ordine descresctoare suma ultimelor dou mesaje
(cele mai puin probabile), iteraia oprindu-se cnd rmn n tabel dou mesaje. Combinaia de cod se
citete urmnd traseul sgeilor de la dreapta la stnga (figura 5.4):
Mesaj
pi
ni
si*
Log(1/pI
Huffman
)
s1
0,4
1,32
2
1
s2
0,18
2,47
3
001
s3
0,10
3,32
4
011
s4
0,10
3,32
4
0000
s5
0,07
3,83
4
0100
s6
0,06
4,06
5
0101
s7
0,05
4,32
5
00010
s8
0,04
4,64
5
00011
2,61
n
97,8%

0,4
0,18
0,1
0,1
0,07
0.06
0,05 (0)
0,04 (1)

0,4
0,18
0,1
0,1
0,09 (0)
0,07
0,06 (1)

0,4
0,18
0,13
0,1
0,1 (0)
0,09 (1)

0,4
0,19
0,18
0,1

(0)
(1)

0,4
0,23
0,19 (0)
0,18 (1)

Fig 5.4

0,4
0,37 (0)
0,23 (1)

0,6
0,4

(0)
(1)

Cuvntul de cod c 1 se obine din F 1 == 0. n concluzie c1 = 000. Pentru x2 se determin n2

2.2.2 Algoritmul Shannon-Fano


Se presupune c cele M simboluri ale alfabetului sursei sunt ordonate n ordine
descresctoare a probabilitii: p 1 p 2 ... p M
i 1

- Se noteaz cu F i = pk , unde i =1, 2, ..., M i F 1 =0


k =1

- Se determin un ntreg n i astfel nct


log 2 (1/p i ) n i < 1+log 2 (1/p i )

(2.10)

pentru fiecare i = 1, 2, ..., M


- Cuvntul de cod asociat simbolului x i este reprezentarea binar a fraciei F i pe n i bii
Observaie:
Prin reprezentarea binar a unei fracii se nelege
b 1 b 2 ...b k = b 1 2 -1 + b 2 2 -2 +...+ b k 2 -k , unde b i {0, 1}, i = 1, ..., k
Se remarc urmtoarele proprieti ale algoritmului:
(i)
Mesajele cu probabilitate mare de apariie sunt reprezentate prin cuvinte cod scurte
(ii)
Cuvntul de cod pentru x i va diferi de toate celelalte cuvinte de cod prin unul sau
mai muli bii. Prin aceasta se asigur decodarea unic. Pentru a demonstra aceast
afirmaie, se rescrie relaia (2.10) sub forma
1/ 2

ni

pi < 1 / 2

ni +1

Reprezentarea binar a lui F i va fi diferit de toate celelalte prin unul sau mai muli bii.
Spre exemplu F i va fi diferit fa de F i+1 prin cel puin bitul n i deoarece p i 1/ 2n i . Prin
aceasta cuvntul de cod pentru x i+1 va diferi de cel pentru x i prin cel puin un bit.
EXEMPLUL 2.6
Fiind dat o surs care genereaz simboluri cu probabilitile p i specificate n
coloana a doua a tabelului prezentat n continuare, s se aplice algoritmul de compresie
Shannon-Fano.
Soluie:
Se remarc ordonarea simbolurilor n sensul descreterii probabilitilor de apariie
(coloanele 1 i 2). Se determin numrul de bii ai lungimii de reprezentare, completnduse astfel coloana 3 a tabelului.
Pentru simbolul x 1 numrul de bii se determin pe baza relaiei:
log 2 (128/27) n 1 < 1+log 2 (128/27)
sau
2,245 n 1 < 3,245
deducndu-se c n 1 = 3 bii.

= 3 bii i F2 = pi = p 1 = 27/128. Reprezentarea binar a lui 27/128 este 0011011. Prin


i =1

trunchierea acestei reprezentri la 3 bii se obine cuvntul de cod 001.


xi
pi
ni
Fi
Reprezentare
cod c i
binar
x1
27/128
3
0
.0000000
000
x2
27/128
3
27/128
.0011011
001
x3
9/128
4
54/128
.0110110
0110
x4
9/128
4
63/128
.0111111
0111
x5
9/128
4
72/128
.1001000
1001
x6
9/128
4
81/128
.1001001
1010
x7
9/128
4
90/128
.1011010
1011
x8
9/128
4
99/128
.1100011
1100
x9
3/128
6
108/128
.1101100
110110
x 10
3/128
6
111/128
.1101111
110111
x 11
3/128
6
114/128
.1110010
111001
x 12
3/128
6
117/128
.1110101
11010
x 13
3/128
6
120/128
.1111000
111100
x 14
3/128
6
123/128
.1111011
111101
x 15
2/128
6
126/128
.1111110
111111
Tab. 2.7 Tabelul de codare Shannon-Fano
Se constat c numrul de bii per simbol este n = 3,89 bii / simbol i se obine o
eficien = 62,4%, entropia fiind de 2,433 bii / simbol.
Codarea unei secvene x 8 , x 5 , x 7 , x 2 este fcut, conform tabelului, n irul de bii
110010011011001.
Pentru decodare, decodorul va examina mai nti primii 3 bii 110 (lungimea minim
a acestui cod), va concluziona c nu este cuvnt de cod i va ncerca un grup de 4 bii 1100
i n acest moment se va decoda simbolul x 8 i procedura va fi reluat ncepnd cu cel de al
cincilea bit.
O formulare alternativ a algoritmului Shannon-Fano este:
Pas 1: O list de simboluri cu probabiliti date se sorteaz n ordine descresctoare a probabilitilor;
Pas 2: Se divide lista n dou pri, astfel nct probabilitatea cumulat a poriunii superioare s fie
ct mai apropiat de probabilitatea cumulat a prii inferioare;
Pas 3: Prii superioare i se asigneaz o cifr binar 0, iar prii inferioare cifra binar 1;
Pas 4: Se aplic recursiv paii 2 i 3 acestor dou jumti divizndu-se i analiznd biii codului pn
cnd fiecare simbol a devenit o frunz a arborelui
In exemplul urmtor este ilustrat aplicarea algoritmului Shannon-Fano n aceast formulare
alternativ.

0,4
0,18
0,1
0,1
0,07
0,06
0,05
0,04

S0
} (0,58)
S10
} (0,20)
S1
(0,42)

S11
(0,22)

} S110
(0,13)
S111
} (0,09)
Fig 5.3

00
01
100
101
1100
1101
1110
1111

S-ar putea să vă placă și