Sunteți pe pagina 1din 50

CAPITOLUL 3

CODAREA SURSELOR DISCRETE DE INFORMAIE PE CANALE NEPERTURBATE


La nceputul acestui capitol sunt prezentate cteva preliminarii matematice privind compresia fr pierderi, necesare n analiza i evaluarea procedurilor de codare din aceast categorie. n cazul transmisiilor la mic distan sau la puteri de emisie mari efectul perturbaiilor este neglijabil, situaii n care se pune numai problema realizrii codrii surselor discrete de informaie de aa manier nct, pe de o parte, transmisia pe canal s poat fi posibil, iar pe de alt parte, s se asigure un timp ct mai mic pentru transmiterea informaiei sursei respective. n acest scop, sursa primar de informaie cu alfabetul S = {s1 , s2 ,..., sN } este adaptat statistic la canalul de transmisiuni, care accept simbolurile din mulimea X = { x1 , x2 ,..., xM } , numit alfabetul de la intrarea canalului sau alfabetul codului folosit. Fiecrui mesaj sk , k = 1, N , i se ataeaz un cuvnt de cod, ck , format dintr-o succesiune de simboluri xk X , de aa manier nct timpul necesar transmiterii informaiei sursei primare s fie minim.

81

3.1. Definirea codurilor nesingulare, unic decodabile i instantanee


Fie S = {s1 , s2 ,..., sN } mulimea mesajelor unei surse discrete de informaie,
X = { x1 , x2 ,..., xM }

alfabetul

codului

C = {c1 , c2 ,..., cM } , mulimea cuvintelor de cod. Prin operaia de

codare se realizeaz bijecia dintre mesajele sk S i cuvintele de cod ck C . Prin definiie, un cod se numete nesingular, dac toate cuvintele de cod sunt distincte. Prin definiie, un cod se numete unic decodabil, dac fiecrei succesiuni de simboluri recepionate i corespunde o singur succesiune de mesaje ale sursei primare S. Pentru fixarea ideilor, se consider o surs discret de informaie S = {s1 , s2 , s3 , s4 } i alfabetul codului X = {0,1} . Dac mulimea cuvintelor de cod este C = {c1 , c2 , c3 , c4 } , cu c1l, c201, c310 i c4 l l, codul este nesingular, deoarece toate cuvintele de cod sunt distincte. Dac, ns, se recepioneaz secvena 1101, aceasta poate fi interpretat n trei moduri diferite, i anume fie s4 s2 , fie s1s1s2 , fie s1s3 s1 , deci codul respectiv nu este unic decodabil. O posibilitate de obinere a codurilor unic decodabile ar fi utilizarea unui simbol special n alfabetul codului, care s marcheze fie nceputul fiecrui cuvnt de cod, fie sfritul acestuia. De exemplu, dac simbolul marcheaz sfritul fiecrui cuvnt de cod, atunci la recepionarea secvenei ll01 n condiiile exemplului considerat, se decide c s-a transmis succesiunea mesajelor s4 s2 , codul devenind astfel unic decodabil.
82

Datorit uurinei cu care se pot genera dou stri, notate simbolic cu 0, respectiv 1, alfabetul codului este format numai din aceste dou simboluri. De aceea, se pune problema de a se ntocmi coduri unic decodabile folosind alfabetul binar X = {0,1} . Considernd aceeai surs discret, ce poate furniza patru mesaje i un alfabet de cod binar, se presupun urmtoarele dou coduri codul A, n care s1c10, s2c210, s3c3110, s2c201, s4c41110 i codul B, n care s1c10, s3c3011, s4c40111. Att codul A, ct i codul B sunt unic decodabile, deoarece n cazul codului A un zero marcheaz sfritul fiecrui cuvnt de cod, n timp ce n cazul codului B un zero marcheaz nceputul fiecrui cuvnt de cod. Dei ambele coduri sunt unic decodabile, ntre acestea exist o diferen important n cazul codului A, decodarea (interpretarea) fiecrui cuvnt de cod se poate realiza odat cu recepionarea integral a acestuia, n timp ce n cazul codului B decodarea fiecrui cuvnt de cod trebuie s mai atepte un timp, pn la recepionarea primului simbol din cuvntul urmtor. Pentru a stabili diferena dintre cele dou coduri, este necesar s se introduc noiunea de prefix a unui cuvnt de cod. Prin definiie, succesiunea xi1 xi2 " xik , este prefix al cuvntului de cod ci xi1 xi2 " xim , dac k m . Prin definiie, un cod se numete instantaneu, dac nici un cuvnt de cod nu este prefix pentru celelalte cuvinte de cod. n cazul codului B, cuvntul de cod c1 , este prefix al cuvintelor c2 , c3 i c4, cuvntul de cod c2 este prefix al cuvintelor c3 i c4, iar cuvntul de cod c3 este prefix pentru c4. Evident, dac un cod este instantaneu, el este i unic decodabil, reciproca nefiind totdeauna adevrat.
83

Pentru a stabili dac un cod este instantaneu, i se ataeaz graful arborescent. n general, dac alfabetul codului este X = { x1 , x2 ,..., xM } , graful arborescent se ntocmete astfel se
pleac dintr-un nod iniial, numit rdcina grafului, care se desface n M ramuri (arce) pe care se aloc arbitrar cele M simboluri x1 , x2 ,..., xM din alfabetul codului. Din cele M noduri formate la capetele celor M ramuri se desfac din nou cte M ramuri, pe care se aloc arbitrar literele din alfabetul codului i aa mai departe. Cuvintele de cod se formeaz citind ramurile, plecndu-se de la rdcina grafului arborescent spre nodurile terminale. Dac toate cuvintele de cod corespund nodurilor terminale n graful arborescent, nici un cuvnt de cod nu este prefix pentru altul i, deci, codul este instantaneu. Grafurile arborescente pentru codurile A i B sunt date n Fig. 3.1.

Fig. 3.1.a) Graful arborescent al codului instantaneu A; b) Graful arborescent al codului B

84

3.2. Teorema de existen a codurilor instantanee


Aceast teorem stabilete condiia necesar i suficient de existen a codurilor instantanee, referitoare la lungimile cuvintelor de cod. Prin definiie, lungimea unui cuvnt de cod reprezint numrul de simboluri din alfabetul codului, din care este format cuvntul respectiv. Se consider o surs discret de informaie, caracterizat de mulimea mesajelor
S = {s1 , s2 ,..., sN } ,

alfabetul

codului

X = { x1 , x2 ,..., xM } , mulimea cuvintelor de cod C = {c1 , c2 ,..., cN } i

mulimea lungimilor cuvintelor de cod L = {l1 , l2 ,..., lN } . Un cuvnt de cod ck este format dintr-o succesiune de lk simboluri din alfabetul codului, de forma ck xi ...x j ...xl Condiia necesar i suficient de existen a codurilor instantanee este dat de inegalitatea lui Kraft, de forma

M
k =1

lk

(3.1)

unde M este numrul de simboluri din alfabetul codului, N este numrul cuvintelor de cod i lk - lungimea cuvintelor de cod. Pentru a demonstra suficiena teoremei de existen, se consider adevrat relaia (3.1) i, pe baza acesteia, se ntocmete un cod care se va dovedi instantaneu. Lungimile l1 , l2 ,..., lN ale cuvintelor de cod pot fi distincte sau nu. Fie n1 numrul cuvintelor de cod formate numai dintr-un singur simbol (lungime egal cu unitatea), n2 numrul cuvintelor de cod formate din dou simboluri (lungime egal cu doi) i aa mai
85

departe, fie nl , numrul cuvintelor de cod de lungimea cea mai mare, egal cu l. Evident

n
i =1

=N

(3.2)

Cu aceste notaii, rezult c n inegalitatea (3.1) suma va conine n1 termeni de forma M 1 , n2 termeni de forma M 2 i aa mai departe, nl termeni de forma M l . n consecin, inegalitatea (3.1) se poate scrie, echivalent, sub forma

n M
i =1 i

(3.3)

nmulind relaia (3.3) cu M l 0 , rezult


nl M l n1M l 1 ... nl 2 M 2 nl 1M

(3.4)

Neglijnd n relaia (3.4) termenul nl 1 i mprind apoi noua relaie cu M 2 , rezult inegalitatea
nl 1 M l 1 n1M l 2 ... nl 3 M 2 nl 2 M

(3.5)

Neglijnd n relaia (3.5) termenul nl 1 1 i mprind apoi noua relaie cu M 2 , rezult inegalitatea
nl 2 M l 2 n1M l 3 ... nl 3 M

(3.6)

n mod analog, se poate obine un ir de inegaliti, ultimele trei fiind de forma


n3 M 3 n1M 2 n2 M n2 M 2 n1M n1 M

(3.7) (3.8) (3.9)

Evident, dac inegalitatea (3.1) este satisfcut, cu att mai mult vor fi satisfcute inegalitile (3.4) pan la (3.9). Pe baza acestor inegaliti se poate ntocmi un cod
86

instantaneu, dup cum urmeaz: Se alege arbitrar un numr n1 de cuvinte de lungime unu, care respect inegalitatea (3.9). Rmn astfel disponibile M n1 prefixe formate dintr-un singur simbol, cu care se pot forma cuvinte de lungime egal cu doi, al cror numr este egal cu

( M n1 ) M

= M 2 n1M

(3.10)

Alegndu-se arbitrar dintre acestea n2 cuvinte ce respect relaia (3.8), rmne disponibil un numr de prefixe din dou simboluri, egal cu M 2 n1M n2 , cu care se pot forma cuvinte de lungime egal cu trei, n numr de

(M

n1M n2 ) M = M 3 n1M 2 n2 M

(3.11)

Dintre acestea, se aleg arbitrar n3 cuvinte care respect relaia (3.7). n mod analog se formeaz i celelalte cuvinte. Deoarece nici un cuvnt nu devine prefix pentru altul, codul astfel ntocmit este instantaneu, demonstrndu-se astfel suficiena teoremei de existen a codurilor instantanee. Deoarece codurile instantanee formeaz o subclas a codurilor unic decodabile, rezult c s-a demonstrat suficiena teoremei de existen i pentru codurile unic decodabile. Pentru a demonstra necesitatea teoremei de existen a codurilor instantanee, se pleac de la aseriunea: cuvintele unui cod instantaneu pot fi aranjate totdeauna n nodurile terminale ale unui graf arborescent. Fie l cea mai mare lungime a cuvintelor de cod. La nivelul l arborele va avea, evident, un numr de M l noduri. Fiecare cuvnt de lungime lk l blocheaz utilizarea a M l lk noduri pe nivelul l. De exemplu, dac l=3, M=2, (simbolurile "0" i "1") i se alege un cuvnt de lungime lk = 2, fie acesta ck = 01, atunci pe nivelul l = 3 se blocheaz utilizarea a 23-2 = 2 noduri, aa cum este
87

artat n figur care urmeaz.

Deoarece dou cuvinte distincte blocheaz noduri diferite pe nivelul l, rezult c numrul de noduri blocate pe nivelul l, rezult c numrul de noduri blocate pe nivelul l este mrginit superior de numrul de noduri de pe acest nivel, adic

M
k =1

l lk

Ml

(3.12)

Simplificnd cu M l > 0 , rezult inegalitatea (3.1), care trebuia demonstrat. Teorema fiind de existen, nseamn c, dac lungimile cuvintelor de cod satisfac inegalitatea (3.1), exist cel puin un procedeu de codare prin care s rezulte un cod instantaneu. Aceasta nu nseamn c orice cod care satisface inegalitatea (3.1) este instantaneu. Teorema stabilete c folosindu-se lungimi ale cuvintelor de cod ce satisfac inegalitatea (3.1), se poate ntocmi cel puin un cod instantaneu i, deci, unic decodabil. Dac pentru un cod dat este satisfcut inegalitatea lui Kraft, pentru a decide dac acesta este instantaneu, i se ataeaz graful arborescent i, dac toate cuvintele de cod sunt noduri terminale, se decide c este
88

instantaneu. Dac pentru un cod dat inegalitatea (3.1) nu este satisfcut, atunci, cu certitudine, codul nu este instantaneu i nici unic decodabil i, prin nici un procedeu de codare care va folosi aceleai lungimi ale cuvintelor de cod, nu se poate ntocmi un cod instantaneu sau unic decodabil.

3.3. Lungimea medie a cuvintelor de cod


Pentru o surs discret de informaie i un alfabet de cod impus, se poate ntocmi o mulime de coduri instantanee sau unic decodabile. n scopul comparrii acestora i a alegerii celui sau celor mai bune (eficiente), se consider drept criteriu de comparaie timpul necesar transmiterii informaiei sursei codate, de mrimea acestui timp fiind legate o serie de cheltuieli. Un cod instantaneu va fi cu att mai eficient, cu ct timpul necesar transmiterii informaiei sursei discrete va fi mai mic. Este posibil s se ntocmeasc o multitudine de coduri instantanee de eficien maxim. Pentru a compara diverse coduri instantanee, se va defini lungimea medie a cuvintelor de cod, care, aa cum se va demonstra, este proporional cu timpul mediu de transmitere a cuvintelor de cod. n felul acesta, se va demonstra c cel mai eficient cod instantaneu care se obine, este cel pentru care lungimea medie a cuvintelor de cod este minim. Fie, pentru aceasta, o surs discret, complet i fr memorie, caracterizat de distribuia:
sN s1 " sk " S : (3.13) p ( s1 ) " p ( sk ) " p ( sN ) Fie, de asemenea, mulimea simbolurilor din alfabetul
89

codului
X = { x1 , x2 ,..., xM } i mulimea cuvintelor de cod C = {c1 , c2 ,..., cN } .

Datorit corespondenei bijective dintre sk S i ck C , rezult


p ( sk ) = p ( ck ) ,

(3.14)

unde p ( ck ) reprezint probabilitatea cuvntului ck . Informaia ataat mesajului sk , notat cu i ( sk ) , va fi atunci egal cu informaia ataat cuvntului ck , notat cu i ( ck ) , i se va calcula cu relaia clasic
i ( sk ) = i ( ck ) = log p ( sk ) ,

(3.15)

Dac se noteaz cu H ( X ) entropia codului utilizat, atunci, aceasta msoar informaia medie pe un simbol din alfabetul codului. Fie H(S) entropia sursei ce urmeaz a fi codat, adic informaia medie pe un mesaj. Dac l1 , l2 ,..., lN sunt lungimile cuvintelor de cod, lungimea

medie a acestora se calculeaz cu relaia


l = p ( sk ) lk
k =1 N

(3.16)

Pe de alt parte este evident c numrul mediu de simboluri ale unui cuvnt de cod, adic l , este dat de raportul dintre informaia medie pe cuvnt, H(S), i informaia medie pe un simbol constituent, adic
l= H (S ) H (X )
90

(3.17)

Dac se ine cont de (1.12) i (3.16), relaia (3.17) se poate

scrie echivalent sub forma

p(s )l
k =1 k

p ( sk ) log p ( sk )
k =1

H (X )

(3.18)

sau

p(s ) l H ( X ) + log p ( s ) =0
k =1 k k k

(3.19)

O condiie suficient, dar nu ntotdeauna necesar, pentru satisfacerea relaiei (1.19) este ca

lk =

log p ( sk ) H (X )

(3.20)

Dac se noteaz cu durata medie de transmitere a unui simbol din alfabetul codului X, rezult c durata de transmitere Tk a cuvntului de cod ck , de lungime lk , se poate determina cu relaia

Tk = lk

(3.21)

Duratele Tk , k = l,N , de transmitere a cuvintelor de cod, determin o nou variabil aleatoare discret, ce poate lua valori cu probabilitile p ( sk ) = p ( ck ) i, deci, durata medie de transmitere a unui cuvnt de cod este
T = Tk p ( sk ) = p ( sk ) lk
k =1 k =1 N N

(3.22)

Comparnd relaiile (3.16) i (3.22), rezult


T = l (3.23) adic durata medie de transmitere a cuvintelor va fi cu att mai mic, cu ct lungimea medie a acestora va fi mai mic. Mrirea eficienei transmisiunii se poate, deci, obine selectnd acel cod instantaneu care asigur o lungime medie minim
91

a cuvintelor de cod. Eficiena transmisiunii poate fi definit, dac exist o margine inferioar a lungimii medii, l , a cuvintelor de cod. Din relaia (3.17) rezult c micorarea lui l se poate realiza fie prin micorarea entropiei sursei ce urmeaz a fi codat, fie prin mrirea entropiei codului, adic mrirea informaiei medii pe un simbol din alfabetul codului. Deoarece entropia sursei H ( S ) nu poate fi modificat fr alterarea sursei iniiale, rezult c singura posibilitate pentru micorarea lungimii medii a cuvintelor de cod rmne mrirea entropiei codului printr-o codare adecvat. Notnd cu l min , lungimea medie minim posibil a cuvintelor de cod, se poate scrie relaia
l min = H (S ) max H ( X )

(3.24)

Deoarece n urma codrii sursei S, utilizarea simbolurilor din alfabetul codului X depinde, n general, de unul sau mai multe simboluri folosite anterior, rezult c, n general, sursa secundar X este o surs cu memorie. La limit, cnd sursa secundar X devine fr memorie i simbolurile acesteia sunt folosite echiprobabil, adic 1 p ( x1 ) = p ( x2 ) = ... = p ( xM ) = , (3.25) M rezult marginea superioar a entropiei sursei secundare X egal cu log M i, deci, marginea inferioar a lungimii medii a cuvintelor de
cod este
H (S ) . log M

n general, se poate scrie irul de inegaliti


92

l l min

H (S ) log M

(3.26)

n cazul particular, frecvent folosit n aplicaii, al codurilor binare, M=2, caz n care relaia (3.26) devine

l l min H ( S )

(3.27)

Cu alte cuvinte, n cazul codurilor binare instantanee nu se pot obine lungimi medii ale cuvintelor de cod mai mici dect entropia sursei ce urmeaz a fi codat.

3.4. Eficiena i redundana unui cod


Prin definiie, se numete eficiena unui cod i va fi notat cu , raportul dintre marginea inferioar a lungimii medii a cuvintelor de cod i lungimea medie a acestora, adic H (S ) H (S ) log M = = l l log M

(3.28)

nlocuind (3.20) n relaia (3.28), rezult o relaie echivalent de calcul pentru eficiena unui cod instantaneu, i anume

H (X ) log M

(3.29)

Prin definiie, se numete redundana unui cod i va fi notat cu , mrimea complementar eficienei, adic = 1 (3.30)

Din relaia (3.29) rezult c valoarea maxim a eficienei este = 1 . Prin definiie, un cod se numete absolut optimal, dac eficiena acestuia este maxim.
93

n cazul codului absolut optimal, din relaia (3.28) rezult

H ( S ) = l log M
rezult
l p(s )
k =1 k N k

(3.31)

nlocuind n aceast relaie H ( S ) i l cu relaiile lor de calcul,


=0 log M + log p ( sk )

(3.32)

O condiie suficient pentru satisfacerea acestei relaii este

lk log M + log p ( sk ) = 0

(3.33) (3.34)

Din (3.33) rezult

p ( sk ) = M lk
N

Sumnd dup k de la 1 la N n relaia (3.34), se obine

M lk = p ( s k ) = 1 ,
k =1 k =1

(3.35)

adic n cazul codurilor absolut optimale inegalitatea lui Kraft devine egalitate. n acest caz mesajele trebuie furnizate cu probabilitile date de relaia (3.34).

3.5. Teorema codrii surselor discrete, complete i fr memorie pe canale neperturbate


S-a demonstrat n paragraful precedent c, dac fiecare mesaj al unei surse discrete, complete i fr memorie este furnizat cu probabilitatea data de relaia (3.34), se poate obine un cod absolut optimal. Logaritmnd n baz doi aceast relaie, rezult

lk =

log p ( sk ) log M
94

(3.36)

Conform definiiei lungimii cuvintelor de cod, rezult c

numai n cazul codurilor absolut optimale raportul

log p ( sk ) este log M

un numr ntreg pozitiv, ce poate fi considerat egal cu lungimea cuvntului de cod ck . n general, sursa discret de informaie i furnizeaz mesajele cu diverse probabiliti care nu respect relaia (3.34) i, deci, raportul

log p ( sk ) nu mai este un numr ntreg. n acest log M

caz, lungimile cuvintelor de cod, lk , k = 1, N , se aleg numerele ntregi pozitive care respect dubla inegalitate

log p ( sk ) log p ( sk ) lk < +1 log M log M

(3.37)

Alegnd astfel lungimile cuvintelor de cod, se poate demonstra c inegalitatea iui Kraft este satisfcut, deci, cu astfel de lungimi se poate ntocmi totdeauna un cod instantaneu. ntr-adevr, din prima inegalitate a relaiei (3.27) rezult

M lk p ( sk )

(3.38)

Sumnd dup k, de la k=l la k=N i innd cont c sursa discret de informaie este complet, rezult

M lk p ( sk ) = 1
k =1 k =1

(3.39)

Multiplicnd relaia (3.37) cu p ( sk ) > 0 i apoi sumnd dup k, de la k=1 la k=N, rezult

95

p ( sk ) log p ( sk )
k =1

log M
N

p ( sk )lk <
k =1

<

p ( sk ) log p ( sk )
k =1

(3.40)
N

log M

+ p ( sk )
k =1

innd cont de (3.18), (3.19) i de faptul c totdeauna sursele discrete de informaie sunt complete, relaia (3.40) devine
H (S ) H (S ) l < +1 log M log M

(3.41)

Relaia (3.41) este adevrat pentru orice surs S discret, complet i fr memorie, deci va fi adevrat i pentru extensia sa de ordinul m. Notnd cu H ( S m ) entropia extensiei de ordinul m i cu lm , lungimea medie a cuvintelor de cod corespunztoare mesajelor compuse k ale extensiei de ordinul m, relaia (3.41) se poate scrie sub forma
H (Sm ) log M H (Sm ) log M

lm <

+1

(3.42)

Aa cum s-a demonstrat n Capitolul 1,

H ( S m ) = mH ( S )

(3.43)

innd cont de (3.43), relaia (3.42) devine

H ( S ) lm H ( S ) l < + log M m log M m


Pe de alt parte

(3.44)

lm =l m
96

(3.45)

deoarece un mesaj compus este format dintr-o succesiune de m mesaje ale sursei iniiale S. Din (3.44) i (3.45) rezult c, la limit, cnd m , lungimea medie a cuvintelor de cod atinge marginea inferioar a lungimii medii a cuvintelor de cod, adic

l=

H (S ) log M

(3.46)

obinndu-se astfel un cod absolut optimal. Conform acestei teoreme, rezult c, efectundu-se codri pe extensii ale unei surse discrete de informaie, se pot obine lungimi medii ale cuvintelor de cod cu att mai mici, cu ct ordinul extensiei este mai mare. La limit, cnd ordinul extensiei tinde la infinit, se obine lungimea medie cea mai mic posibil a cuvintelor de cod, egal cu marginea inferioar a acestora. n practic nu se poate coda extensia de ordinul m a sursei primare, cnd m tinde la infinit. Ordinul extensiei va avea totdeauna o valoare finit i, cu ct ordinul extensiei este mai mare, cu att complexitatea instalaiei de codare crete. Mai mult, de la o anumit valoare a ordinului extensiei, creterea ordinului n continuare va duce la scderi nesemnificative ale lungimii medii a cuvintelor de cod, astfel c nu se mai justific preul de cost ridicat, dictat de creterea complexitii instalaiei de codare. Din aceast cauz, n practic, n multe situaii reale, se realizeaz codri pe mesaje individuale, utilizndu-se procedee de codare care conduc la coduri instantanee de eficien ct mai ridicat, adic acelea care conduc spre lungimi medii ale cuvintelor de cod cele mai mici posibile. Dintre procedeele de codare posibile s-au impus, procedeul de codare Huffman, procedeul de codare binar Shannon Fano i codarea aritmetic.
97

3.6. Procedeu de codare binar Huffman static


Acest procedeu se bazeaz pe ideea de a partiiona mulimea mesajelor sursei S = {s1 , s2 ,..., sN } n submulimile S0 i
S1 , astfel nct suma probabilitilor mesajelor incluse n S0 s fie

ct mai apropiat de suma probabilitilor mesajelor incluse n S1 . La rndul lor, submulimile S0 i S1 pot fi partiionate n submulimile S00 i S01 , respectiv S10 i S11 astfel nct suma probabilitilor mesajelor incluse n cele patru submulimi s fie ct mai apropiate posibil. Procedeul se continu n mod similar pn cnd se obin submulimi ce conin un singur mesaj. n felul acesta, pentru orice distribuie a sursei S ce urmeaz a fi codat se va obine un cod compact, adic lungimi medii ale cuvintelor de cod ce nu mai pot fi micorate prin nici un alt procedeu de codare. Pentru ca partiiile s satisfac condiiile menionate, se procedeaz astfel: 1) Se ordoneaz mulimea mesajelor sursei S n ordinea descresctoare a probabilitilor, obinndu-se astfel mulimea ordonat
R0 = {s1 , s2 ,..., sN } ,

cu

p ( s1 ) p ( s2 ) ...

p ( sN ) , cu schimbarea eventual a indicilor mesajelor pentru

realizarea ordonrii respective; 2) Se reunesc ultimele dou mesaje (de probabilitile cele mai mici) ntr-un nou mesaj, notat cu r1 , cruia i se aloc o probabilitate egal cu suma probabilitilor mesajelor componente. Se ordoneaz din nou mesajele n ordinea descresctoare a probabilitilor, formndu-se astfel prima surs restrns R1 = {s1 , s2 ,..., r1 ,...} , cu p ( s1 ) p ( s2 ) ... p ( r1 ) ... .
98

3) Se reunesc ultimele dou mesaje din sursa restrns R1 ntr-un nou mesaj r2 , de probabilitate egal cu suma probabilitilor mesajelor componente. Se ordoneaz mesajele n ordine descresctoare, formndu-se astfel sursa restrns R2 . n mod analog, din R2 se formeaz sursa restrns R3 i aa mai departe, pn cnd se obine o surs restrns format numai din dou mesaje, Rn = {rn , rn 1} , cu p ( rn ) p ( rn1 ) . De fapt, rn va fi S0 i
rn1 va fi S1 sau invers.

Din modul de formare a surselor restrnse Ri , rezult c mulimea S a mesajelor poate fi partiionat n dou submulimi rn i rn1 astfel nct probabilitile p ( rn ) i p ( rn1 ) sunt cele mai apropiate posibil. La rndul lor, submulimile rn i rn1 , pot fi partiionate n alte dou submulimi, de probabilitile cele mai apropiate posibil. Partiionrile se continu pn se obin submulimi care conin un singur mesaj. 4) Cuvintele de cod corespunztoare fiecrui mesaj se obin astfel: - submulimii rn i se aloc simbolul "0" (sau "1"); - submulimii rn1 , i se aloc simbolul "1" (sau "0"); - la fiecare partiionare se aloc arbitrar celor dou submulimi "0" sau "1", operaia continundu-se pn se obin submulimi ce conin un singur mesaj sk , k = 1, N . Deoarece alocarea lui "0" i "1" este arbitrar la fiecare partiionare, rezult c unei surse S i se pot ataa o multitudine de coduri instantanee, toate, ns, avnd aceeai lungime medie a cuvintelor de cod, care nu mai poate fi micorat prin nici un alt procedeu de codare a mesajelor luate individual.
99

Dac sursa primar S poate furniza N mesaje, atunci submulimea restrns R1 , va avea N-1 mesaje, submulimea restrns R2 va conine N-2 mesaje i aa mai departe, ultima submulime restrns Rn va conine N n mesaje, care sunt rn i
rn1 , adic se poate scrie: N n = 2 n = N 2 (3.47) Dac submulimii rn i se aloc simbolul "0" i submulimii rn1 simbolul "1", celor N-2 partiionri putndu-li-se aloca arbitrar

"0" sau "1", rezult un total de 2 N 2 posibiliti de codare. Dac, ns, submulimii rn i se aloc simbolul "1", iar submulimii rn1 simbolul "0", mai rezult 2 N 2 posibiliti de codare. Rezult, deci, c prin acest procedeu de codare se pot realiza 2 N 2 + 2 N 2 = 2 N 1 coduri instantanee, toate avnd toate aceeai lungime medie a cuvintelor de cod. Prin definiie, se numete cod compact, codul care realizeaz lungimea medie minim a cuvintelor de cod. Deoarece prin procedeul de codare Huffman se obine cea mai mic lungime medie a cuvintelor de cod, nseamn c prin acest procedeu se obin coduri instantanee compacte. Evident, un cod absolut optimal este i compact, reciproca nefiind totdeauna valabil.
Exemplul 3.1. Se presupune sursa discret de informaie caracterizat de distribuia:

S :

s1

s2 s3 s4 s5 s6 . 0,1 0,2 0,3 0,15 0,05 0,2

Codarea binar Huffman a acestei surse se poate realiza astfel:


100

Fig. 3.2. Schema de codare pentru exemplul 3.1

Graful i cuvintele de cod corespunztoare codrii efectuate sunt date n Fig. 3.3.

Fig. 3.3. Graful corespunztor codului

3.6.1. Coduri Huffman de dispersie minim

Codurile Huffman de dispersie minim se obin cnd la


101

reordonarea sursei restrnse, simbolul compus se plaseaz pe poziia cea mai de sus posibil n sursa restrns. n felul acesta cuvntul de cod atribuit simbolului compus va avea cea mai mic lungime posibil. Cum acest cuvnt va deveni prefix pentru simbolurile constituente, cuvintele de cod corespunztoare acestora vor avea o lungime cu o unitate mai mare dect lungimea prefixului, deci i acestea vor rezulta de lungime minim. Ca urmare, diferenele dintre lungimile cuvintelor de cod devin minime, ceea ce va conduce, evident, i la o dispersie minim. Pentru fixarea ideilor, se presupune sursa discret de informaie caracterizat de distribuia:

S :

s1

s2 s3 s4 s5 0,2 0,4 0,2 0,1 0,1

Pentru aceast surs se efectueaz codarea Huffman, plasnd nti mesajele sursei restrnse pe poziiile cele mai jos posibile n list i apoi pe poziiile cele mai de sus posibile. n primul caz rezult schema de codare din Fig. 3.4, iar graful i cuvintele de cod ca n Fig. 3.5.

Fig. 3.4. Schema de codare


102

Fig. 3.5. Graful i cuvintele de cod

Pentru acest cod, lungimea medie i dispersia sunt:


l = 0, 2 2 + 0, 4 1 + 0, 2 3 + 0,1 3 + 0,1 4 = 2, 2 bii/mesaj

= ( li l
2 1 i =1

= 0, 22 + 1, 22 + 0,82 + 1,82 + 1,82 = 8, 6

Pentru cazul n care n codarea Huffman mesajele sursei restrnse se plaseaz pe poziiile cele mai de sus n list, se obine schema de codare din Fig. 3.6 i graful i cuvintele de cod ca n Fig. 3.7.

Fig. 3.6. Schema de codare


103

Fig. 3.7. Graful i cuvintele de cod

Pentru acest cod, lungimea medie este, evident, aceeai, n timp ce dispersia devine

2 = ( li l
2 i =1

= 0, 22 + 0, 22 + 0, 22 + 0,82 + 0,82 = 1, 4

Dei din punct de vedere informaional, cele dou coduri sunt identice, n practic se prefer folosirea celor de dispersie minim, din motive de transmisie. De exemplu, dac se dorete s se transmit mesaje ale sursei cu o vitez de 10.000 mesaje/sec., este necesar un canal cu capacitatea de 22.000 bii/sec. Deoarece viteza de generare a biilor oscileaz n jurul valorii de 22.000 bii/sec., funcie de succesiunea de mesaje furnizate la un moment dat, ieirea sursei este ncrcat ntr-un buffer. Dac, de exemplu, sursa genereaz la un moment dat iruri de mesaje s4 i s5 mai multe secunde, pentru primul cod se genereaz 40.000 bii/sec. i n fiecare secund ar trebui un buffer de capacitate de 18.000 bii. Cu al doilea cod se genereaz 30.000 bii /sec. i bufferul ar trebui s aib capacitatea de 8.000 bii. Dac se transmit iruri de mesaje s2, cu primul cod se genereaz 10.000 bii/sec. i canalul nu e folosit la capacitatea sa, rmnnd un deficit de 12.000 bii/sec., pe cnd cu al doilea cod se genereaz 20.000
104

bii/sec., deficitul existent n exploatarea canalului fiind numai de 2.000 bii/sec. Aadar, din motive de transmisie este mai rezonabil a se alege al doilea cod dect primul.
3.6.2. Procedeul de codare binar Shannon Fano

Acest procedeu se aplic de obicei n cazurile particulare n care probabilitile de furnizare ale mesajelor sunt puteri ntregi pozitive ale lui (1/2), adic, de forma:
1 p ( sk ) = = 2lk , 2 unde lk este un numr ntreg pozitiv.
lk

( ) k = 1, N
satisfcut,

(3.48)

Dac

relaia

(3.48)

este

mulimea

S = {s1 , s2 ,..., sN } a mesajelor sursei discrete de informaie ce

urmeaz a fi codat poate fi partiionat n dou submulimi S0 i


S1 , astfel nct suma probabilitilor mesajelor incluse n S0 , notat

cu p ( S0 ) , s fie egal cu suma probabilitilor mesajelor incluse n


S1 , notat cu p ( S1 ) . Sursa S fiind totdeauna complet, se poate

scrie:
p ( S0 ) = p ( S1 ) 1 1 (3.49) p ( S0 ) = p ( S1 ) = = 2 2 p ( S0 ) + p ( S1 ) = 1 Submulimile S0 i S1 se pot partiiona la rndul lor n S00 i S01 , respectiv n S10 i S11 , astfel nct suma probabilitilor

mesajelor incluse n cele patru submulimi s fie aceeai, adic se poate scrie relaia:
1 p ( S00 ) = p ( S01 ) = p ( S10 ) = p ( S11 ) = = 22 2
105
2

(3.50)

Se procedeaz n mod analog pn se obin submulimi care conin un singur mesaj. Se observ c fiecare submulime are suma probabilitilor mesajelor incluse egal cu o putere ntreag a lui (1/2). Puterea ntreag este egal cu numrul indicilor submulimii respective Dac submulimea conine un singur mesaj, sk, i are un numr de indici egal cu lk , atunci se poate scrie: 1 (3.51) p ( s k ) = = 2 lk 2 de unde rezult necesitatea ca sursa S ce urmeaz a fi codat s-i furnizeze mesajele cu probabiliti egale cu 1/2 la o putere ntreag, pozitiv. Sursa fiind complet, se poate scrie:
lk

p(s ) =1
k =1 k

(3.52)

nlocuind (3.51) n (3.52), rezult:

2
k =1

lk

= 1,

(3.53)

ceea ce nseamn c inegalitatea lui Kraft (3.1) devine n acest caz egalitate. Cuvintele de cod se vor obine, atunci, astfel: 1. Se atribuie simbolul "0" submulimii S0 i simbolul "1" submulimii S1 , (sau invers), astfel c toate cuvintele corespunztoare mesajelor incluse n S0 i toate vor ncepe cu "0" cuvintele corespunztoare mesajelor incluse n S1 , vor

ncepe cu "1" (sau invers); 2. Se aloc submulimilor S00 i S10 ca al doilea mesaj "0", iar submulimilor S01 i S11 ca al doilea mesaj "1" (sau invers). n felul acesta, cuvintele de cod corespunztoare mesajelor incluse n
106

S00 vor ncepe cu 00, cuvintele de cod corespunztoare mesajelor

incluse n S10 vor ncepe cu 10 i aa mai departe, cuvintele de cod corespunztoare mesajelor induse n S11 vor ncepe cu 11. 3. Operaia se continu n acelai mod, pn cnd n fiecare submulime rmne un singur mesaj, cruia i va corespunde cuvntul de cod format din irul de indici ai submulimii respective. Deoarece la fiecare partiionare n dou submulimi atribuirea mesajelor "0" i "1" este arbitrar, rezult c prin acest procedeu se pot obine o multitudine de coduri instantanee, dar toate absolut optimale. n principiu, procedeul de codare descris s-ar putea aplica n general, adic i atunci cnd relaia (3.53) nu este satisfcut. n acest caz, partiionrile n submulimi trebuie efectuate astfel nct suma probabilitilor mesajelor incluse n submulimile respective s fie ct mai apropiate. Atribuind simbolurile "0" i "1" ca n procedeul descris, se obin totdeauna coduri instantanee. Cu ct sumele probabilitilor mesajelor componente ale submulimilor respective vor fi mai apropiate, cu att lungimea medie a cuvintelor de cod va fi mai mic.
Exemplul 3.2. Se consider sursa discret de informaie caracterizat de distribuia:

. -2 -2 -3 -3 -4 -4 -4 -4 2 2 2 2 2 2 2 2 Procedeul de codare binar Shannon - Fano este sintetizat n tabelul de mai jos.

S :

s1

s2 s3 s4 s5 s6 s7 s8

107

Graful arborescent ataat codului astfel obinut este reprezentat n Fig. 3.8.

Fig. 3.8. Graful arborescent ataat codului din tabel

108

3.6.3. Lungimea medie a cuvintelor de cod n cazul codului binar Huffman

Se tie c pentru un cod optimal


H (S ) l H (S ) + 1

(3.54)

Limita superioar din relaia (3.54) nu este foarte precis. n [25] se arat c dac pmax este cea mai mare probabilitate cu care este furnizat un mesaj, atunci pentru pmax<0,5, limit superioar pentru codul Huffman este H ( S ) + pmax , n timp ce pentru pmax 0,5, limita superioar este H ( S ) + pmax + 0,086 . n aplicaiile n care numrul de mesaje ale sursei este mare, pmax este relativ mic i redundana codului, care este diferena dintre lungimea medie i entropie, exprimat n procente din entropie, este relativ mic. n cazul n care alfabetul sursei este mic i probabilitile de apariie ale diferitelor mesaje sunt neechilibrate, valoarea probabilitii pmax poate fi relativ mare i codul Huffman poate deveni ineficient, adic redundana sa s reprezinte un procent semnificativ din entropie.
Exemplul 3.3. Fie o surs care furnizeaz mesajele S = {s1 , s2 , s3} , cu

probabilitile

p ( s1 ) = 0,8; p ( s2 ) = 0,02; p ( s3 ) = 0,18 .

Entropia

sursei este de 0,816 bii/mesaj. Codul Huffman pentru aceast surs este dat n Fig. 3.9.

109

Fig. 3.9. Schema de codare pentru codul din Exemplul 3.3.

Lungimea medie pentru acest cod este 1,2 bii/simbol. Redundana este 0,384 bii/simbol, aproximativ 47% din H(S). Aceasta nseamn c pentru a coda aceast surs sunt necesari cu 47% mai muli bii dect minimul necesar. Uneori, pentru micorarea redundanei se realizeaz codarea Huffman pe extensia sursei iniiale. Astfel, dac se consider extensia de ordinul 2 a sursei precedente, se obin 32=9 mesaje. Dac se efectueaz codarea Huffman a sursei extinse, se obin cuvintele de cod din Tabelul 3.1. Tabelul 3.1. Mesaj compus s1s1 s1s2 s1s3 s2s1 s2s2 s2s3 s3s1 s3s2 s3s3

Probabilitate 0,64 0,016 0,144 0,016 0,0004 0,0036 0,1440 0,0036 0,0324

Cuvnt de cod 0 10101 11 101000 101000 1010011 100 10100100 1011

Pentru acest cod, lungimea medie este l e =1,7516 bii/mesaj.


110

Cum un mesaj al sursei extinse este format din dou mesaje ale alfabetului original, rezult c lungimea medie, l , exprimat n funcie de alfabetul original este l =0,8758, redundana este de aproximativ 0,06 bii/simbol, adic aproximativ 7% din entropie. Dac probabilitile mesajelor sunt mult neechilibrate, atunci ar putea fi necesar codarea pe extensii de ordin superior, n scopul scderii la valori acceptabile ale redundanei. Prin creterea ordinului extensiei, mrimea alfabetului sursei extinse crete exponenial cu ordinul extensiei i codarea Huffman poate deveni ineficient din punct de vedere al preului de cost, caz n care se folosete codarea aritmetic, care va fi discutat ulterior.
3.6.4. Procedeul de codare Huffman generalizat

n acest caz, alfabetul codului conine mai mult de dou simboluri. Procedeul de codare este asemntor celui din cazul binar, parcurgndu-se urmtoarele etape: 1) Se ordoneaz mesajele sursei ce urmeaz a fi codat n ordinea descresctoare a probabilitilor; 2) Dac alfabetul codului conine M 3 simboluri, se reunesc ultimele M mesaje (de probabilitile cele mai mici) ntr-un singur mesaj, cruia i se aloc probabilitatea egal cu suma probabilitilor mesajelor componente. Se ordoneaz din nou mesajele n ordinea descresctoare a probabilitilor, formndu-se astfel prima surs restrns R1 . Procedndu-se n mod analog, se formeaz sursa restrns R2 din R1 , R3 din R2 i aa mai departe, pn cnd se obine o surs restrns care conine M mesaje. Pentru ca ultima surs restrns s conin M mesaje crora s li se aloce arbitrar cele M mesaje din alfabetul codului, nainte de a realiza
111

restrngerile respective, se face urmtorul raionament: - la formarea primei surse restrnse, reunindu-se M mesaje ntr-un singur mesaj, va rezulta un numr de mesaje egal cu N M + 1 = N ( M 1) ; - a doua surs restrns va conine, prin reunirea ultimelor M mesaje, un numr de mesaje egal cu N 2 M + 2 = N 2 ( M 1) ; - raionndu-se n mod analog, dup n restrngeri, ultima surs restrns va conine un numr de mesaje egal cu N n ( M 1) , care trebuie s fie egal cu numrul M al mesajelor din alfabetul codului, adic
M = N n ( M 1) n = N M ( M 1)

(3.55)

Deoarece n (numrul de restrngeri) trebuie s fie un numr ntreg pozitiv, se va considera:


N M n1 = (3.56) M 1 unde m simbolizeaz cel mai mic numr ntreg, mai mare sau egal dect m. Astfel, sursa va trebui s aib un numr de mesaje N1, calculat cu relaia N1 = M + n1 ( M 1) (3.57)

- Dac sursa S ce urmeaz a fi codat are un numr N de mesaje care nu verific relaia (3.57), se va aduga la sursa respectiv un numr de mesaje, pn cnd aceast relaie este satisfcut. Mesajelor adugate li se vor aloca probabiliti nule, astfel c sursa iniial nu va fi alterat, deoarece mesajele de probabiliti nule nu vor fi furnizate niciodat. 3) La fiecare partiie n M submulimi se aloc arbitrar cele M mesaje din alfabetul codului. Deoarece alocarea celor M mesaje din
112

alfabetul codului se face arbitrar, rezult c prin acest procedeu va rezulta o multitudine de coduri instantanee, toate cu aceeai lungime medie a cuvintelor de cod, care nu mai poate fi micorat prin nici un alt procedeu de codare, adic toate codurile astfel obinute vor fi instantanee i compacte.
Exemplul 3.4. Se presupune sursa discret de informaie caracterizat de distribuia

S :

s1

s2 s3 s4 s5 s6 0,1 0,2 0,3 0,15 0,05 0,2

Dac alfabetul codului este X = { x1 , x2 , x3} , s se realizeze o codare Huffman generalizat. nainte de a realiza codarea, se verific dac este satisfcut relaia (3.57) care, pentru cazul particular considerat, devine:
6 3 N1 = 2n1 + 3 , unde n1 = = 2 , deci N1 = 7 . Va trebui adugat 3 un nou mesaj, fie acesta s7 , de probabilitate nul, adic p ( s7 ) = 0 . Pentru realizarea codrii, se procedeaz dup cum se arat n Fig. 3.10.

Fig. 3.10. Schema de codare pentru Exemplul 3.4.


113

Cuvintele de cod corespunztoare mesajelor sursei sunt


s1 c1 x1 x3 x1 s2 c2 x3 s3 c3 x2 s4 c4 x1 x2 s5 c5 x1 x3 x2 s6 c6 x1 x1

Graful corespunztor codului este dat n Fig. 3.11.

Fig. 3.11. Graful ataat codului

3.7. Codarea binar Huffman dinamic (adaptiv)


Procedeul de codare binar Huffman descris n paragraful 3.6 necesit cunoaterea probabilitilor cu care sursa i furnizeaz mesajele. n literatura de specialitate aceast situaie este cunoscut i sub denumirea de codare Huffman static. n cazul n care probabilitile de furnizare a mesajelor nu sunt cunoscute, se folosete codarea Huffman dinamic sau adaptiv. n descrierea codrii Huffman dinamice sau adaptive se vor
114

folosi urmtoarele notaii i noiuni: - Nodurile terminale sau externe din graful arborescent se vor numi frunze, corespunznd mesajelor sursei; - Cuvntul de cod pentru un mesaj se obine parcurgnd arborele de la rdcin la frunza corespunztoare simbolului. Prin convenie, zero se va aloca unei ramuri din stnga i unu, unei ramuri din dreapta; - Nodurile de la extremitile ramurilor care pleac dintr-un nod reprezint fiii sau copiii nodului respectiv, numit nod printe; - Ponderea unui nod extern este numrul de apariii a simbolului corespunztor frunzei respective pn la acel moment; - Ponderea unui nod intern este suma ponderilor fiilor nodului respectiv; - Dac sursa ce urmeaz a fi codat furnizeaz n mesaje, n graf exist 2n+1 noduri interne i externe, numerotate n continuare y1 ,..., y2 n +1 . Dac xj este ponderea nodului cu numrul yj, trebuie s existe relaia x1 x2 ... x2 n +1 ; - Nodurile y2 j 1 i y2 j sunt fii ai aceluiai nod printe, iar numrul de ordine al printelui este mai mare dect y2 j 1 i y2 j . Ultimele dou caracteristici se numesc de fraternitate i orice arbore care are aceast proprietate este un arbore Huffman. n codarea Huffman dinamic, nici emitorul, nici receptorul nu cunosc statistica sursei la nceperea transmisiei, astfel nct arborii de la transmisie i recepie constau dintr-un singur nod corespunztor mesajelor nc netransmise, de pondere zero. Pe parcursul transmisiei, nodurile corespunztoare mesajelor transmise sunt adugate arborelui, care este reconfigurat pe baza unui procedeu de actualizare. naintea nceperii transmiterii se stabilete un cod pentru fiecare mesaj, dup cum urmeaz:
115

Dac sursa furnizeaz mesajele s1 , s2 ,..., sN , se determin parametrii e i r, astfel nct N = 2e + r ,0 r < 2e . Mesajul sk este codat prin reprezentarea pe e + 1 bii a lui k 1 , dac 1 k 2r , n caz contrar, sk este reprezentarea pe e bii a lui k r 1 . De exemplu, pentru
N = 26 r = 10

e = 4 s1 = 00000 ,

s2 = 00001 ,..., s22 = 1011 .


3.7.1. Actualizarea arborelui
Algoritmul de actualizare necesit ca nodurile s fie numerotate ntr-o ordine stabilit. Cel mai mare numr de nod este al rdcinii. Cel mai mic se asigneaz nodului nc netransmis, care este nod gol, (NG). Mulimea nodurilor cu aceeai pondere formeaz un bloc. Rolul algoritmului de actualizare este de a pstra proprietatea de fraternitate n timpul modificrii arborelui, pentru a reflecta ultima estimare a frecvenei de furnizare a mesajului. Pentru ca procedura de actualizare de la emitor i receptor s opereze cu aceeai informaie, arborele de la emitor este actualizat dup codarea fiecrui mesaj, iar la recepie arborele este actualizat dup decodarea fiecrui mesaj. Organigrama algoritmului de actualizare este prezentat n Fig. 3.12.

116

Fig. 3.12. Procedura de actualizare pentru algoritmul de codare dinamic Huffman

Procedura de actualizare este urmtoarea: dup ce un mesaj a fost codat la emisie sau decodat la recepie, nodul extern corespunztor mesajului este examinat pentru a vedea dac are cel mai mare numr de nod din bloc. Dac nodul extern nu are cel mai mare numr de nod, el este interschimbat cu nodul care are cel mai mare numr din bloc, cu condiia ca acesta s nu fie printele nodului ce urmeaz a fi actualizat. Ponderea nodului extern este apoi incrementat. Dac nu se interschimb nodurile naintea incrementrii ponderii nodului, este posibil ca ordonarea cerut de proprietile de fraternitate s fie distrus. Odat incrementat ponderea nodului, s-a adaptat arborele Huffman la acel nivel.
117

Se trece apoi la nivelul urmtor, prin examinarea nodului printe al nodului a crui pondere a fost incrementat, pentru a vedea dac are cel mai mare numr din bloc. Dac nu are, este schimbat cu nodul cu cel mai mare numr din bloc. Din nou, face excepie nodul cu cel mai mare numr, dac acesta este printe pentru nodul considerat. Odat ce s-a efectuat schimbarea (sau s-a decis c nu este necesar), ponderea nodului printe este incrementat. Procesul se termin cnd se ajunge la nodul rdcin. Cnd mesajul ce urmeaz a fi codat sau decodat apare pentru prima dat, acestuia i se atribuie un nod extern i se ataeaz un nou nod NG n graf. Att nodul extern ct i nodul NG sunt fii al vechiului NG. Cum mesajul corespunztor noului nod extern a aprut o singur dat, acestuia i se atribuie ponderea 1. Cum vechiul nod NG este printe pentru noul nod extern, ponderea sa se incrementeaz cu 1 i se continu astfel pn la rdcin.

Exemplul 3.5. Se presupune c se dorete codarea Huffman adaptiv a


secvenei [ a a r d v a ] , care conine 4 din 26 de mesaje posibile, reprezentate de literele mici ale unui alfabet. Pentru codarea acestor mesaje se folosete codul prezentat n paragraful 3.7. Procesul de actualizare este artat n Fig. 3.13. Se ncepe cu nodul NG. Numrul total de noduri este 2 26 + 1 = 53 , astfel nct se ncepe numrtoarea invers, cu numrul 53 asignat nodului rdcin. Prima liter ce urmeaz a se transmite este a. Cum litera nu este n arbore, se transmite a i se adaug aceasta n arbore. Nodul NG d natere unui nou nod NG i unui nod terminal, corespunztor literei a. Ponderea nodului terminal va fi mai mare
118

dect a nodului NG, astfel nct se asigneaz numrul 51 nodului NG i 52 nodului terminal corespunztor literei a. Urmtoarea liter de transmis este tot a. De aceast dat, codul transmis este 1, deoarece litera este n graf. Nodul corespunztor lui a are cel mai mare numr din bloc (dac nu se consider nodul su printe), aa nct nu este nevoie s schimbm nodurile. Se incrementeaz ponderea nodului extern i a nodului rdcin. Urmtoarea liter de transmis este r. Cum litera nu are un nod corespunztor n arbore, se transmite cuvntul de cod pentru nodul NG, care este 0, urmat de indexul lui r. Nodul NG d natere unui nou nod NG i unui nod extern corespunztor lui r. Din nou, nu este necesar actualizarea arborelui, ci numai incrementarea corespunztoare a ponderilor nodurilor. Urmtoarea liter este d, care, de asemenea, se transmite pentru prima dat. Se transmite codul pentru nodul NG, care este 00, urmat de indexul pentru d. Nodul NG d iar natere la dou noduri. nc nu este nevoie de a actualiza arborele. Acesta se schimb cu transmiterea literei urmtoare, v, care nu a mai fost ntlnit. S-a transmis codul frunzei goale, 000, urmat de codul pentru litera v. n arbore se adaug nodurile 45 i 46, cu 46 ca nod terminal pentru v. Se incrementeaz ponderea nodului extern 46 i a vechiului NG. Se merge la nodul printe al vechiului NG, adic nodul 49 care nu are cel mai mare numr din bloc, aa c se schimb cu 50, care este cel mai mare numr din bloc i se incrementeaz ponderea acestuia. Se merge la rdcina nodului 50 care este 51 i care nu are cel mai mare numr din bloc, aa c se schimb cu 52, a crui pondere se incrementeaz. Se merge la rdcina nodului 52, adic nodul 53, care este nod rdcin i se incrementeaz ponderea acestuia. Urmeaz mesajul a, care este n graf, aa nct se transmite 0. Deoarece numrul nodului extern corespunztor lui a este maxim n bloc, se incrementeaz ponderea acestuia i a printelui, care este
119

nod rdcin.

120

Fig. 3.13. Arborele Huffman adaptiv, dup ce s-a transmis secvena aardva a10r00d000v0

3.7.2. Codarea
Diagrama pentru codare este prezentat n Fig. 3.14. Iniial, arborii de la codare i decodare sunt formai dintr-un singur nod NG. Prin urmare, cuvntul de cod corespunztor primului mesaj ce apare este transmis n clar. Dup primul mesaj, de fiecare dat cnd trebuie codat un mesaj ce apare pentru prima dat, se transmite nti codul pentru nodul NG, care se obine prin parcurgerea arborelui Huffman de la rdcin la nodul NG. Aceasta ntiineaz receptorul c mesajul al crui cod urmeaz nu are nc un nod n arborele Huffman. Codul nodului NG este urmat de codul prestabilit pentru mesaj. Dac mesajul ce urmeaz a fi codat are un nod corespunztor n arbore, atunci este transmis succesiunea de bii obinut prin traversarea arborelui de
121

la rdcin la nodul extern corespunztor mesajului.

Figura 3.14. Organigrama pentru codare

Exemplul 3.6. n Exemplul 3.5 s-a folosit un alfabet de 26 de litere. Pentru a obine codul prestabilit pentru mesaj trebuie gsite valorile pentru e
i r, astfel nct 2e + r = 26 cu 0 r < 2e e = 4, r = 10 . Primul mesaj de codat este a. Cum a este prima liter din alfabet, k=1. Deoarece 2 r = 20 > k = 1 , litera a va fi reprezentarea pe e + 1 = 5 bii a numrului k 1 = 1 1 = 0 , adic 00000. Arborele este actualizat dup diagrama din Fig. 3.13, nodul gol a dat natere unui nod extern corespunztor lui a i unui nou nod gol. Nodul extern corespunztor lui a are ponderea 1, iar nodul gol, 0. Nodul intern are ponderea 1 (suma ponderilor fiilor). Urmtorul mesaj este
122

a. Cum acesta exist deja n arbore, cuvntul de cod corespunztor se obine prin traversarea grafului de la rdcin la nodul corespunztor, n cazul de fa este 1. Dup transmiterea codului pentru cel de-al doilea a, ponderea nodului extern corespunztor acestuia este incrementat la 2, ca i ponderea printelui. Al treilea mesaj de transmis este r. Cum acesta este la prima apariie, se transmite codul nodului gol, adic 0, urmat de codul lui r. (r, fiind a optsprezecea liter din alfabetul de 26 de litere, nseamn c k = 18; deoarece 18<2r = 20, litera r va fi reprezentarea binar pe k+1=4+1=5 bii a numrului k-1=18-1=17, adic 10001). Arborele este actualizat i se continu cu mesajul d. Folosind acelai procedeu pentru d, se transmite codul nodului gol, care este 00 urmat de indexul lui d, care este 00011 (d fiind a patra liter din alfabet i deoarece 4 < 20, litera d va fi reprezentarea binar pe k+1=4+1=5 bii a numrului k-1=4-1=3, adic 00011). Urmtorul simbol, v , este al 22-lea n alfabet i fiind mai mare dect 20 se transmite codul pentru nodul gol, 000, urmat de reprezentarea binar pe 4 bii a lui 22-10-1=11, adic 1011. Urmtorul mesaj este a, pentru care se transmite 0. Secvena transmis este: a 1 0 r 0 0 d 0 0 0 v 0 , echivalent cu 00000 1 0 1001 00 a a gol r gol
3.7.3. Decodarea

00011 000 d gol

1011 v

0 a

Organigrama pentru decodare este prezentat n Fig. 3.15.


123

Fig. 3.15. Organigrama pentru decodarea Huffman dinamic

Pe msur ce este citit secvena binar recepionat, arborele se parcurge ntr-un mod identic cu cel de la codare. Odat identificat codul unei frunze din secvena recepionat, se decodeaz mesajul corespunztor acelei frunze. Dac frunza este frunz goal, se verific urmtorii e bii pentru a vedea dac rezult un numr mai mic dect r. Dac este mai mic, se mai citete un bit pentru a completa codul mesajului. Indexul mesajului se obine adugnd o unitate la numrul zecimal corespunztor secvenei de e sau e+1 bii. Odat decodat mesajul, arborele este actualizat i urmtorul bit recepionat este folosit pentru a porni o nou parcurgere a arborelui.
124

Exemplul 3.7. S se decodeze secvena codat anterior, 0 0 0 0 0 1 0 1 0 0 0 1 0 0 0 0 0 1 1 0 0 0 1 0 1 1 0. Iniial arborele de la decodor const numai dintr-un nod gol, aa c primul mesaj ce urmeaz a fi decodat se obine din list. Se citesc e=4 bii, 0000, care corespunde numrului zecimal 0. Deoarece 0<r =10 rezult c se mai citete un bit, rezultnd secvena 00000. Se decodeaz n zecimal i se adaug o unitate, astfel indexul simbolului recepionat este 1, care i corespunde lui a n list, prin urmare, prima liter decodat este a. Arborele este actualizat. Urmtorul bit recepionat este 1, care i corespunde cii de la rdcin la nodul extern a, astfel nct al doilea mesaj decodat este tot a. Urmtorul bit este 0, care corespunde cii de la rdcin la nodul gol. Urmtorii patru bii 1000 corespund numrului zecimal 8, care este mai mic dect 10, astfel nct se mai citete un bit pentru a obine cuvntul 10001, al crui echivalent zecimal plus o unitate este 18, care este indexul lui r. Se decodeaz r i se actualizeaz arborele. Urmtorii doi bii 00 reprezint parcurgerea grafului pn la frunza goal. Se citesc urmtorii 4 bii 0001, care corespund lui 1<10, deci se mai citete un bit, adic secvena 00011. Pentru a obine indexul simbolului recepionat din list, se adaug o unitate la valoarea zecimal a celor 5 bii. Valoarea indexului este 4, care corespunde simbolului d. Continund, se obine secvena decodat a a r d v a.

125

3.8. Aplicaii ale codrii Huffman


n continuare sunt prezentate cteva aplicaii simple ale codrii Huffman n compresie, aceast codare fiind, de obicei, folosit n practic mpreun cu alte tehnici de codare.
1. Compresia fr pierderi a imaginilor Codarea Huffman poate fi folosit n compresia imaginilor digitale, cnd fiecare pixel poate lua valori dintr-o mulime finit. n cazul imaginilor monocrome, aceast mulime const din numere ntregi de la 0 la 225. Rezultatele pentru patru imagini de test pentru care s-a aplicat codarea Huffman sunt artate n Tabelul 3.2 [86].

Tabelul 3.2 Numele imaginii de test Sena Sensin Pmnt Omaha

Bii/pixel

Mrimea total a imaginii(bii) 56.525 60.457 39.158 57.488

Raportul de compresie 1,16 1,08 1,67 1,14

6,90 7,38 4,78 7,00

n reprezentarea imaginii originale (necompresate) se folosesc 8 bii/pixel. Imaginea const din 256 de rnduri a cte 256 de pixeli, deci reprezentarea necompresat folosete 65.536 bii. Din Tabelul 3.2 se observ c raportul de compresie difer de la imagine la imagine, obinndu-se o reducere de numai aproximativ pn la 1bit/pixel, dup compresie. Pentru unele
126

aplicaii aceast reducere este acceptabil. De exemplu, dac ntr-o arhiv exist sute de imagini, o reducere de un bit pe pixel salveaz muli megabyi n spaiul discului. n codarea din exemplul considerat nu s-a inut cont de structura din date, dat de corelaia dintre pixeli. Dintr-o inspecie vizual a imaginii, se poate observa c ntr-o imagine pixelii sunt corelai cu vecinii lor. Un model grosier pentru determinarea valorii unui pixel poate fi dat de relaia n = xn 1 , adic valoarea estimat pentru un pixel este egal cu a x valoarea pixelului precedent. Secvena rezidual va fi diferena dintre pixelii vecini. Dac se consider acest model i se folosete codul Huffman pentru a coda secvena rezidual, rezultatele sunt cele din Tabelul 3.3 [86]. Tabelul 3.3. Numele imaginii Bii/pixel de test Sena Sensin Pmnt Omaha 3,84 4,63 3,92 6,34

Mrimea total a imaginii (bii) 31.472 37.880 32.136 51.986

Raportul de compresie 2,08 1,73 2,04 1,26

Dup cum se observ, se obine o mbuntire a raportului de compresie fa de cazul precedent. Rezultatele din Tabelele 3.2 i 3.3 sunt obinute folosind un sistem n doi pai, n unul s-a obinut statistica sursei, iar n al doilea s-a efectuat codarea Huffman. n loc s se foloseasc sistemul n doi pai, se poate folosi un cod Huffman adaptiv. Rezultatele pentru acesta sunt prezentate n Tabelul 3.4 [86].
127

Tabelul 3.4. Nume Bii/pixel imagine de test Sena 3,93 Sensin 4,63 Pmnt 4,82 Omaha 6,39

Mrimea total a imaginii (bii) 32,261 37,896 39,504 52,321

Raportul de compresie 2,03 1,73 1,66 1,25

Se observ c diferenele dintre codul Huffman static i cel adaptiv sunt mici. Algoritmul Huffman adaptiv este preferat n sistemele care lucreaz on-line sau n timp real, cnd nu este posibil cunoaterea prealabil a statisticii sursei. Acesta, ns, este mai dificil de implementat dect cel static. Aplicaia particular va determina care din cele dou este mai convenabil.
2. Compresia textelor n compresia textelor se folosete frecvent codarea Huffman, deoarece n texte, se folosete un alfabet discret care, ntr-un domeniu dat, are probabiliti relativ staionare. De exemplu, modelul de probabilitate pentru un roman nu va diferi semnificativ de modelul de probabilitate pentru alt roman. Similar, modelul de probabilitate pentru un set de programe C nu va diferi prea mult de modelul de probabilitate pentru un alt set de programe C. O mbuntire a compresie se poate obine, dac mai nti se ndeprteaz redundana din date, materializat n corelaia ntre mesajele din fiier, care este semnificativ n textele literare. De exemplu, n capitolul de fa, Huf este ntotdeauna urmat de fman.

128

3. Compresia audio Alt clas de date care se preteaz foarte bine pentru compresie este clasa de date audio de pe compact discuri (CD). Semnalul audio pentru fiecare canal stereo este eantionat la 44,1 kHz i fiecare eantion este reprezentat pe 16 bii, ceea ce conduce la o cantitate enorm de date stocate pe CD care, pentru a fi transmise, ar necesita un canal cu capacitate semnificativ. Compresia este cu siguran util n acest caz. n Tabelul 3.5se arat, pentru diverse tipuri de surse audio, mrimea fiierului, entropia, mrimea estimat a fiierului compresat cu codarea Huffman i raportul de compresie rezultat [86].

Tabelul 3.5. Codarea Huffman pe 16 bii a semnalului audio


Numele fiierului Mrimea original a fiierului Entropia (bii) Mrimea estimat a fiierului compresat(bii) Raportul de compresie

Mozart Cohn Mir

939.862 402.442 884.020

12,8 13,8 13,7

725.420 349.300 759.540

1,30 1,15 1,16

Ca i la alte aplicaii, se poate obine o cretere a compresiei, dac mai nti este ndeprtat corelaia din date. Datele audio pot fi modelate numeric. Se folosete modelul foarte simplu care a fost folosit n exemplul codrii imaginii: valoarea estimat a unui eantion este aceeai cu valoarea eantionului anterior. Folosind acest model se obine o secven rezidual. Entropia acestei secvene diferen este prezentat n Tabelul 3.6 [86].

129

Tabelul 3.6. Codarea Huffman pe 16 bii a secvenei reziduale audio


Numele fiierului Mrimea original a fiierului (bytes) Entropia diferenial (bii) Mrimea estimat a fiierului compresat (bytes) Raportul de compresie

Mozart Cohn Mir

939.862 402.442 884.020

9,7 10,4 10,9

569.792 261.590 602.240

1,65 1,54 1,47

Se observ o reducere de aproximativ 60% a mrimii fiierului compresat fa de fiierul original.

130

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