Laborator 4. Coduri instantanee - STUD.usv.ro
Laborator 4. Coduri instantanee - STUD.usv.ro
Laborator 4. Coduri instantanee - STUD.usv.ro
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
1. Int<strong>ro</strong>ducere<br />
1. Int<strong>ro</strong>ducere<br />
2. Codarea Shannon-Fano<br />
3. Codarea Huffman<br />
<st<strong>ro</strong>ng>4.</st<strong>ro</strong>ng> P<strong>ro</strong>cedeul de codare Huffman generalizat<br />
5. Exerciţii p<strong>ro</strong>puse<br />
<st<strong>ro</strong>ng>Laborator</st<strong>ro</strong>ng> <st<strong>ro</strong>ng>4.</st<strong>ro</strong>ng><br />
<st<strong>ro</strong>ng>Coduri</st<strong>ro</strong>ng> <st<strong>ro</strong>ng>instantanee</st<strong>ro</strong>ng><br />
În comunicaţiile digitale, o p<strong>ro</strong>blemă importantă o reprezintă transmisia eficientă şi stocarea informaţiei.<br />
Pentru stocarea şi transmisia digitală a datelor este necesar ca informaţia să fie reprezentată într-o formă binară.<br />
În acest scop, sursa primară de informaţie cu alfabetul S = {s1, s2 ,..., sN} este adaptată statistic la canalul de<br />
transmisiuni, care acceptă simbolurile din mulţimea X = {x1, x2 ,..., xM}, numită alfabetul de la intrarea canalului sau<br />
alfabetul codului folosit. Fiecărui mesaj sk, k =1,N , i se ataşează un cuvânt de cod, ck, format dintr-o succesiune de<br />
simboluri xk∈X , de aşa manieră încât timpul necesar transmiterii informaţiei sursei primare să fie minim.<br />
Alfabetul codului cel mai utilizat este alfabetul binar ( X = { 0,<br />
1}<br />
, M=2).<br />
Definiţie: un cod se numeşte nesingular, dacă toate cuvintele de cod sunt distincte.<br />
Definiţie: un cod se numeşte unic decodabil, dacă fiecărei succesiuni de simboluri recepţionate îi corespunde<br />
o singură succesiune de mesaje ale sursei primare S.<br />
Deşi se pot utiliza coduri cel puţin unic decodabile, există si o subclasă a codurilor unic decodabile numite<br />
coduri <st<strong>ro</strong>ng>instantanee</st<strong>ro</strong>ng>. Aceste coduri prezintă p<strong>ro</strong>prietăţi utile pentru construcţia şi analiza lor şi sunt potrivite pentru<br />
implementarea p<strong>ro</strong>cesele de codare şi decodare.<br />
Definiţie: un cod se numeşte instantaneu, dacă nici un cuvânt de cod nu este prefix pentru celelalte cuvinte<br />
de cod.<br />
Evident, dacă un cod este instantaneu, el este şi unic decodabil, recip<strong>ro</strong>ca nefiind totdeauna adevărată.<br />
Definiţie: lungimea unui cuvânt de cod reprezintă numărul de simboluri din alfabetul codului, din care este<br />
format cuvântul respectiv.<br />
Pentru o sursă discretă de informaţie şi un alfabet de cod impus, se poate întocmi o mulţime de coduri<br />
<st<strong>ro</strong>ng>instantanee</st<strong>ro</strong>ng> sau unic decodabile. În scopul comparării acestora şi a alegerii celui sau celor mai bune (eficiente), se<br />
consideră drept criteriu de comparaţie timpul necesar transmiterii informaţiei sursei codate.<br />
Un cod instantaneu va fi cu atât mai eficient, cu cât timpul necesar transmiterii informaţiei sursei discrete va fi<br />
mai mic. Este posibil să se întocmească o multitudine de coduri <st<strong>ro</strong>ng>instantanee</st<strong>ro</strong>ng> de eficienţă maximă.<br />
Pentru a compara diverse coduri <st<strong>ro</strong>ng>instantanee</st<strong>ro</strong>ng>, se va defini lungimea medie a cuvintelor de cod, care este p<strong>ro</strong>porţională<br />
cu timpul mediu de transmitere a cuvintelor de cod.<br />
Cel mai eficient cod instantaneu care se obţine, este cel pentru care lungimea medie a cuvintelor de cod este<br />
minimă.<br />
Dacă l1, l2, …, lN sunt lungimile cuvintelor de cod, lungimea medie a acestora se calculează cu relaţia:<br />
l =<br />
N<br />
∑<br />
k = 1<br />
p<br />
( s )<br />
k lk<br />
Definiţie: un cod se numeşte absolut optimal, dacă eficienţa acestuia este maximă.<br />
P<strong>ro</strong>prietăţile unui cod optimal:<br />
Pentru orice sursă discretă S = {s1, s2 ,..., sN}, un cod binar (M=2) fără prefix, optimal în raport cu minimizarea<br />
lungimii medii a cuvintelor de cod, are următoarele p<strong>ro</strong>prietăţi:<br />
1. Dacă p ( si<br />
) > p(<br />
s j ) , atunci li ≤ l j ;<br />
2. Ultimelor două simboluri de cea mai mică p<strong>ro</strong>babilitate din alfabetul sursei le corespund cuvinte de cod de<br />
aceeaşi lungime;<br />
3. Dacă există două sau mai multe cuvinte de cod de aceeaşi lungime, atunci două dintre aceste cuvinte diferă<br />
numai prin ultimul simbol.<br />
Definiţie: se numeşte eficienţa unui cod şi va fi notată cu η , raportul dintre marginea inferioară a lungimii<br />
medii a cuvintelor de cod şi lungimea medie a acestora, adică:
Teoria Transmiterii Informaţiei<br />
<st<strong>ro</strong>ng>Laborator</st<strong>ro</strong>ng> 4<br />
2<br />
( S)<br />
H<br />
η =<br />
l log M<br />
Definiţie: se numeşte redundanţa unui cod şi va fi notată cu ρ, mărimea complementară eficienţei, adică:<br />
ρ = 1 −η<br />
N<br />
biti<br />
H ( S)<br />
= −∑<br />
p(<br />
sk<br />
) log p(<br />
sk<br />
) < > ent<strong>ro</strong>pia sursei<br />
k = 1<br />
mesaj<br />
Din punct de vedere fizic, ent<strong>ro</strong>pia măsoară informaţia medie pe mesaj, respectiv nedeterminarea medie a<br />
sursei respective.<br />
2. Codarea Shannon-Fano<br />
Codarea Shannon-Fano se bazează pe ideea că pentru simboluri furnizate cu p<strong>ro</strong>babilităţi echip<strong>ro</strong>babile se vor<br />
obţine cuvinte de cod de lungime egală. Se descrie în continuare metoda Shannon-Fano de obţinere a codurilor<br />
<st<strong>ro</strong>ng>instantanee</st<strong>ro</strong>ng>.<br />
Se consideră că sursa S va furniza k simboluri, , i = 1,<br />
k , şi p<strong>ro</strong>babilităţile asociate fiecărui simbol,<br />
( s ) i 1,<br />
k<br />
p i<br />
, = .<br />
Fie p( s ) ≥ p(<br />
s ) ≥ ... ≥ p(<br />
sk<br />
) , i = 1,<br />
k<br />
1 2<br />
În cazul codării binare cele k simboluri sunt împărţite în două subgrupuri, notate 0 S şi S 1 , astfel încât suma<br />
p<strong>ro</strong>babilităţilor mesajelor incluse în 0 S să fie egală cu suma mesajelor p<strong>ro</strong>babilităţilor incluse în S 1 .<br />
Fiecărui subgrup i se atribuie simbolul “0” sau “1”, (sau invers). Fiecare subgrup 0 S şi S 1 , se divide mai<br />
departe in două subgrupuri S 00 şi S 01 , respectiv în S 10 şi S 11,<br />
astfel încât suma p<strong>ro</strong>babilităţilor mesajelor incluse în<br />
cele patru submulţimi să fie aceeaşi. Se atribuie submulţimilor S 00 şi S10 ca al doilea simbol "0", iar submulţimilor<br />
S 01 şi S 11 ca al doilea simbol "1" (sau invers).<br />
Se p<strong>ro</strong>cedează în mod analog până se obţin submulţimi care conţin un singur mesaj. Se observă că fiecare<br />
submulţime are suma p<strong>ro</strong>babilităţilor mesajelor incluse egală cu o putere întreagă a lui (1/2).<br />
Deoarece la fiecare partiţionare în două submulţimi atribuirea mesajelor "0" şi "1" este arbitrară, rezultă că prin acest<br />
p<strong>ro</strong>cedeu se pot obţine o multitudine de coduri <st<strong>ro</strong>ng>instantanee</st<strong>ro</strong>ng>, dar toate absolut optimale.<br />
Exemple:<br />
1. Se consideră o sursa discretă de informaţie S care furnizează 8 simboluri şi p<strong>ro</strong>babilităţile asociate fiecărui<br />
simbol:<br />
2 −<br />
p s = p s = ,<br />
1<br />
( 1)<br />
( 2 )<br />
2<br />
( 3)<br />
( 4 ) 2 −<br />
s = p s =<br />
4<br />
( ) ( ) ( ) ( ) 2 −<br />
s = p s = p s = p s =<br />
p ,<br />
p .<br />
5<br />
6<br />
7<br />
8<br />
mesaje p<strong>ro</strong>babilităţi Partiţii Cuvinte de cod<br />
s 1<br />
1<br />
2 − s<br />
0<br />
0<br />
1<br />
00<br />
01<br />
s<br />
s<br />
s<br />
s<br />
s<br />
s<br />
2<br />
3<br />
4<br />
5<br />
6<br />
7<br />
8<br />
1<br />
2 −<br />
s i<br />
2<br />
2 − 0 100<br />
2<br />
2 −<br />
0 1 101<br />
4<br />
2 − 0 1100<br />
4<br />
2 −<br />
0 1 1101<br />
4<br />
2 − 0 1110<br />
4<br />
2 −<br />
1<br />
1<br />
1 1 1111
Teoria Transmiterii Informaţiei<br />
<st<strong>ro</strong>ng>Laborator</st<strong>ro</strong>ng> 4<br />
2. Se consideră o sursa discretă de informaţie S care furnizează 8 simboluri şi p<strong>ro</strong>babilităţile asociate fiecărui<br />
simbol:<br />
p ( s1<br />
) = 1/<br />
2 , p ( s2<br />
) = p(<br />
s3<br />
) = 1/<br />
8 ,<br />
p ( s ) = p(<br />
s ) = p(<br />
s ) = 1/<br />
16 , ( s ) = p(<br />
s ) = 1/<br />
32<br />
4<br />
3. Codarea Huffman<br />
5<br />
6<br />
p .<br />
7<br />
8<br />
mesaje p<strong>ro</strong>babilităţi Partiţii Cuvinte de cod<br />
s 1/2 0 0<br />
1<br />
s 1/8<br />
2<br />
0 100<br />
0<br />
s 1/8<br />
1 101<br />
3<br />
s 4<br />
s 5<br />
1/16<br />
1/16 1<br />
0<br />
0<br />
1<br />
1100<br />
1101<br />
s 6<br />
1/16 1 0 1110<br />
s 7<br />
s<br />
1/32<br />
1/32<br />
1 0<br />
1<br />
1<br />
11110<br />
11111<br />
8<br />
În acest paragraf se descrie clasa codurilor <st<strong>ro</strong>ng>instantanee</st<strong>ro</strong>ng> cunoscute sub denumirea de coduri Huffman<br />
Algoritmul de codare p<strong>ro</strong>pus de Huffman încearcă să atribuie fiecărui simbol un cuvânt de cod de lungime<br />
p<strong>ro</strong>porţională cu cantitatea de informaţie transmisă de acel simbol.<br />
<st<strong>ro</strong>ng>Coduri</st<strong>ro</strong>ng>le Huffman sunt importante pentru că sunt coduri compacte. Algoritmul Huffman va p<strong>ro</strong>duce coduri<br />
cu lungimea medie a cuvintelor de cod cea mai mică posibilă, pentru un număr dat de simboluri ale sursei şi un alfabet<br />
al codului. De asemenea prin reodonarea adecvată a simbolurilor vor rezulta coduri care au cea mai mica dispersie<br />
posibilă.<br />
Acest p<strong>ro</strong>cedeu se bazează pe ideea de a partiţiona mulţimea mesajelor sursei S = {s1, s2 ,..., sN} în<br />
S să fie cât mai ap<strong>ro</strong>piată de suma<br />
submulţimile 0 S şi S 1 , astfel încât suma p<strong>ro</strong>babilităţilor mesajelor incluse în 0<br />
p<strong>ro</strong>babilităţilor mesajelor incluse în S 1 .<br />
La rândul lor, submulţimile 0 S şi S1 pot fi partiţionate în submulţimile S 00 şi S 01 , respectiv în S 10 şi S 11<br />
astfel încât suma p<strong>ro</strong>babilităţilor mesajelor incluse în cele patru submulţimi să fie cât mai ap<strong>ro</strong>piate posibil. P<strong>ro</strong>cedeul<br />
se continuă în mod similar până când se obţin submulţimi ce conţin un singur mesaj.<br />
În felul acesta, pentru orice distribuţie a sursei S ce urmează a fi codată se va obţine un cod compact, adică<br />
lungimi medii ale cuvintelor de cod ce nu mai pot fi micşorate prin nici un alt p<strong>ro</strong>cedeu de codare.<br />
Pentru ca partiţiile să satisfacă condiţiile menţionate, se p<strong>ro</strong>cedează astfel:<br />
1) Se ordonează mulţimea mesajelor sursei S în ordinea descrescătoare a p<strong>ro</strong>babilităţilor, obţinându-se astfel<br />
mulţimea ordonată R0= {s1, s2 ,..., sN}, cu p( s1<br />
) ≥ p(<br />
s2<br />
) ≥ ... ≥ p(<br />
sk<br />
) , cu schimbarea eventuală a indicilor mesajelor<br />
pentru realizarea ordonării respective;<br />
2) Se reunesc ultimele două mesaje (de p<strong>ro</strong>babilităţile cele mai mici) într-un nou mesaj, notat cu r1, căruia i<br />
se alocă o p<strong>ro</strong>babilitate egală cu suma p<strong>ro</strong>babilităţilor mesajelor componente. Se ordonează din nou mesajele în<br />
ordinea descrescătoare a p<strong>ro</strong>babilităţilor, formându-se astfel prima sursă restrânsă R1= {s1, s2 ,..., r1,…}, , cu<br />
p ( s1)<br />
≥ p(<br />
s2<br />
) ≥ ... ≥ p(<br />
r1<br />
) ≥ ...<br />
3) Se reunesc ultimele două mesaje din sursa restrânsă R1 într-un nou mesaj r2, de p<strong>ro</strong>babilitate egală cu suma<br />
p<strong>ro</strong>babilităţilor mesajelor componente. Se ordonează mesajele în ordine descrescătoare, formându-se astfel sursa<br />
restrânsă R2. În mod analog, din R2 se formează sursa restrânsă R3 şi aşa mai departe, până când se obţine o sursă<br />
restrânsă formată numai din două mesaje, Rn= {rn, rn-1}, cu p ( rn<br />
) ≥ p(<br />
rn<br />
−1)<br />
. De fapt, rn va fi S0 şi rn-1 va fi S1 sau<br />
invers.<br />
Din modul de formare a surselor restrânse Ri, rezultă că mulţimea S a mesajelor poate fi partiţionată în două<br />
r p r sunt cele mai ap<strong>ro</strong>piate posibil. La rândul lor,<br />
submulţimi rn, rn-1 astfel încât p<strong>ro</strong>babilităţile p ( ) şi ( )<br />
n<br />
3<br />
n−1
Teoria Transmiterii Informaţiei<br />
<st<strong>ro</strong>ng>Laborator</st<strong>ro</strong>ng> 4<br />
submulţimile rn, rn-1, pot fi partiţionate în alte două submulţimi, de p<strong>ro</strong>babilităţile cele mai ap<strong>ro</strong>piate posibil.<br />
Partiţionările se continuă până se obţin submulţimi care conţin un singur mesaj.<br />
4) Cuvintele de cod corespunzătoare fiecărui mesaj se obţin astfel:<br />
- submulţimii rn i se alocă simbolul "0" (sau "1");<br />
- submulţimii rn-1, i se alocă simbolul "1" (sau "0");<br />
-la fiecare partiţionare se alocă arbitrar celor două submulţimi "0" sau "1", operaţia continuându-se<br />
până se obţin submulţimi ce conţin un singur mesaj sk, k =1,N .<br />
Deoarece alocarea lui "0" şi "1" este arbitrară la fiecare partiţionare, rezultă că unei surse S i se pot ataşa o<br />
multitudine de coduri <st<strong>ro</strong>ng>instantanee</st<strong>ro</strong>ng>, toate, însă, având aceeaşi lungime medie a cuvintelor de cod, care nu mai poate fi<br />
micşorată prin nici un alt p<strong>ro</strong>cedeu de codare a mesajelor luate individual.<br />
Prin acest p<strong>ro</strong>cedeu de codare se pot realiza 2N−1 coduri <st<strong>ro</strong>ng>instantanee</st<strong>ro</strong>ng>, toate având toate aceeaşi lungime<br />
medie a cuvintelor de cod.<br />
Prin definiţie, se numeşte cod compact, codul care realizează lungimea medie minimă a cuvintelor de cod.<br />
Deoarece prin p<strong>ro</strong>cedeul de codare Huffman se obţine cea mai mică lungime medie a cuvintelor de cod,<br />
înseamnă că prin acest p<strong>ro</strong>cedeu se obţin coduri <st<strong>ro</strong>ng>instantanee</st<strong>ro</strong>ng> compacte. Evident, un cod absolut optimal este şi<br />
compact, recip<strong>ro</strong>ca nefiind totdeauna valabilă.<br />
Exemple:<br />
1. Se consideră o sursa discretă de informaţie S care furnizează 5 simboluri şi p<strong>ro</strong>babilităţile asociate fiecărui<br />
simbol:<br />
p ( s ) 0.<br />
2 , p ( s ) 0.<br />
4 , ( ) 0.<br />
1 s p , ( ) 1 . 0 p s , ( ) 0.<br />
2 s<br />
1 =<br />
2 =<br />
3 =<br />
4 =<br />
4<br />
p .<br />
1.a) Pentru această sursă se efectuează codarea Huffman, plasând întâi mesajele sursei restrânse pe poziţiile<br />
cele mai jos posibile în listă şi apoi pe poziţiile cele mai de sus posibile.<br />
Rezultă schema de codare şi cuvintele de cod asociate :<br />
5 =<br />
Pentru acest cod, lungimea medie şi dispersia sunt definite de relaţiile:<br />
l<br />
σ<br />
N<br />
= ∑<br />
k = 1<br />
p<br />
N<br />
2<br />
1 = ∑<br />
k=<br />
1<br />
biti<br />
mesaj<br />
( s ) l = 2.<br />
2 < ><br />
p<br />
k<br />
k<br />
2<br />
( s )( l − l)<br />
= 1.<br />
88<br />
k<br />
k<br />
simbol p<strong>ro</strong>babilităţi Codare Huffman<br />
s 1 p ( s1<br />
) = 0.<br />
2 01<br />
s 2 p ( s2<br />
) = 0.<br />
4 1<br />
s ( ) 0.<br />
1 s p 0010<br />
3<br />
4<br />
3 =<br />
s ( s ) 0.<br />
1<br />
5<br />
p 0011<br />
4 =<br />
s ( ) 0.<br />
2 s<br />
p 000<br />
5 =
Teoria Transmiterii Informaţiei<br />
<st<strong>ro</strong>ng>Laborator</st<strong>ro</strong>ng> 4<br />
1.b) Pentru cazul în care în codarea Huffman mesajele sursei restrânse se plasează pe poziţiile cele mai de sus<br />
în listă, se obţine schema de codare din figura următoare:<br />
simbol p<strong>ro</strong>babilităţi Codare Huffman<br />
s 1 p ( s1<br />
) = 0.<br />
2 10<br />
s 2 p ( s2<br />
) = 0.<br />
4 00<br />
s ( ) 0.<br />
1 s p 010<br />
Pentru acest cod, lungimea medie şi dispersia sunt:<br />
l<br />
N<br />
p(<br />
sk<br />
) lk<br />
= 2.<br />
2<br />
biti<br />
< ><br />
mesaj<br />
σ<br />
= ∑<br />
k = 1<br />
N<br />
2<br />
2 = ∑<br />
k = 1<br />
p<br />
2<br />
( s )( l − l)<br />
= 0.<br />
16<br />
k<br />
k<br />
5<br />
3<br />
4<br />
3 =<br />
s ( s ) 0.<br />
1<br />
5<br />
p 011<br />
4 =<br />
s ( ) 0.<br />
2 s<br />
p 11<br />
Codul Huffman din exemplul 1b are dispesia mai mică decât codul obţinut în exemplul 1a.<br />
Deşi din punct de vedere informaţional, cele două coduri sunt identice, în practică se preferă folosirea celor de<br />
dispersie minimă, din motive de transmisie.<br />
<st<strong>ro</strong>ng>4.</st<strong>ro</strong>ng> P<strong>ro</strong>cedeul de codare Huffman generalizat<br />
În acest caz, alfabetul codului conţine mai mult de două simboluri. P<strong>ro</strong>cedeul de codare este asemănător celui<br />
din cazul binar, parcurgându-se următoarele etape:<br />
1) Se ordonează mesajele sursei ce urmează a fi codată în ordinea descrescătoare a p<strong>ro</strong>babilităţilor;<br />
2) Dacă alfabetul codului conţine M ≥ 3 simboluri, se reunesc ultimele M mesaje (de p<strong>ro</strong>babilităţile cele mai<br />
mici) într-un singur mesaj, căruia i se alocă p<strong>ro</strong>babilitatea egală cu suma p<strong>ro</strong>babilităţilor mesajelor componente. Se<br />
ordonează din nou mesajele în ordinea descrescătoare a p<strong>ro</strong>babilităţilor, formându-se astfel prima sursă restrânsă R1.<br />
P<strong>ro</strong>cedându-se în mod analog, se formează sursa restrânsă R2 din R1, R3 din R2 şi aşa mai departe, până când se<br />
obţine o sursă restrânsă care conţine M mesaje. Pentru ca ultima sursă restrânsă să conţină M mesaje că<strong>ro</strong>ra să li se<br />
aloce arbitrar cele M mesaje din alfabetul codului, înainte de a realiza restrângerile respective, se face următorul<br />
raţionament:<br />
- la formarea primei surse restrânse, reunindu-se M mesaje într-un singur mesaj, va rezulta un număr de<br />
mesaje egal cu N −M +1 = N − (M −1) ;<br />
- a doua sursă restrânsă va conţine, prin reunirea ultimelor M mesaje, un număr de mesaje egal cu N − 2M + 2<br />
= N − 2(M −1) ;<br />
- raţionându-se în mod analog, după n restrângeri, ultima sursă restrânsă va conţine un număr de mesaje egal<br />
cu N − n(M −1) , care trebuie să fie egal cu numărul M al mesajelor din alfabetul codului, adică<br />
N − M<br />
M = N − n(<br />
M −1)<br />
⇒ n =<br />
M −1<br />
n (numărul de restrângeri) trebuie să fie un număr întreg pozitiv,<br />
- Dacă sursa S ce urmează a fi codată are un număr N de mesaje care nu verifică relaţia anterioară, se va<br />
adăuga la sursa respectivă un număr de mesaje, până când această relaţie este satisfăcută. Mesajelor adăugate li se vor<br />
aloca p<strong>ro</strong>babilităţi nule, astfel că sursa iniţială nu va fi alterată, deoarece mesajele de p<strong>ro</strong>babilităţi nule nu vor fi<br />
furnizate niciodată.<br />
3) La fiecare partiţie în M submulţimi se alocă arbitrar cele M mesaje din alfabetul codului. Deoarece alocarea<br />
celor M mesaje din alfabetul codului se face arbitrar, rezultă că prin acest p<strong>ro</strong>cedeu va rezulta o multitudine de coduri<br />
<st<strong>ro</strong>ng>instantanee</st<strong>ro</strong>ng>, toate cu aceeaşi lungime medie a cuvintelor de cod, care nu mai poate fi micşorată prin nici un alt<br />
p<strong>ro</strong>cedeu de codare, adică toate codurile astfel obţinute vor fi <st<strong>ro</strong>ng>instantanee</st<strong>ro</strong>ng> şi compacte.<br />
5 =
Teoria Transmiterii Informaţiei<br />
<st<strong>ro</strong>ng>Laborator</st<strong>ro</strong>ng> 4<br />
Exemple:<br />
1. Se consideră o sursa discretă de informaţie S care furnizează 6 simboluri şi p<strong>ro</strong>babilităţile asociate fiecărui<br />
simbol:<br />
p ( s ) 0.<br />
1,<br />
p ( s ) 0.<br />
2 , ( ) 0.<br />
3 s p , ( ) 15 . 0 p s , ( ) 0.<br />
05 s p , ( ) 2 . 0 s<br />
3 =<br />
5 =<br />
6 = p .<br />
Dacă alfabetul codului este X ={ x1 , x2 , x3 }, să se realizeze o codare Huffman generalizată.<br />
Înainte de a realiza codarea, se verifică dacă este satisfăcută relaţia<br />
N − M<br />
M = N − n(<br />
M −1)<br />
⇒ n =<br />
M −1<br />
Va trebui adăugat un nou mesaj, fie acesta s7 , de p<strong>ro</strong>babilitate nulă, adică ( 7 ) 0 = s p .<br />
Pentru realizarea codării, se p<strong>ro</strong>cedează după cum se arată în figura următoare:<br />
1 =<br />
5. Exerciţii p<strong>ro</strong>puse:<br />
2 =<br />
1. Se consideră sursa discretă, completă şi fără memorie caracterizată de distribuţia:<br />
⎛ s1<br />
S : ⎜<br />
⎝0.<br />
1<br />
Să se realizeze codarea binară Huffman.<br />
s2<br />
0.<br />
2<br />
s3<br />
0.<br />
3<br />
s4<br />
0.<br />
15<br />
s5<br />
0.<br />
05<br />
s6<br />
⎞<br />
⎟<br />
0.<br />
2⎠<br />
4 =<br />
2. O sursă discretă de informaţie furnizează mesajele →<br />
1<br />
6<br />
s acest, s → dispersia, s → definite, s → şi,<br />
s5 → cod, s6 → astfel, s7 → lungimea, s8 → pentru, s9 → medie, s10 → sunt, cu p<strong>ro</strong>babilităţile: 0.014, 0.041, 0.27,<br />
0.001, 0.005, 0.004, 0.6, 0.05, 0.013 respectiv 0.002.<br />
Să se descifreze secvenţa recepţionată:<br />
111110111101011011010011010101111001101010101011010100<br />
dacă la emisie s-a efectuat o codare binară Huffman folosindu-se simbolurile alfabetului codului în ordinea “0” şi apoi<br />
“1”.<br />
⎛ s1<br />
S : ⎜<br />
⎝0.<br />
014<br />
s<br />
2<br />
0.<br />
041<br />
s<br />
3<br />
0.<br />
27<br />
s<br />
4<br />
0.<br />
001<br />
s<br />
5<br />
0.<br />
005<br />
s<br />
6<br />
0.<br />
004<br />
s<br />
7<br />
0.<br />
6<br />
s<br />
8<br />
0.<br />
05<br />
3. O sursă discretă de informaţie furnizează mesajele →<br />
1<br />
s<br />
2<br />
9<br />
0.<br />
013<br />
s10<br />
⎞<br />
⎟<br />
0.<br />
002⎠<br />
s un, s → maximă, s → cod, s → este,<br />
s5 → se, s 6 → acestuia, s 7 → numeşte, s 8 → eficienţa, s 9 → absolut, s 10 → dacă, s 11 → optimal cu<br />
p<strong>ro</strong>babilităţile 0.4, 0.3, 0.2, 0.04, 0.03, 0.02, 0.004, 0.003, 0.002, 0.0009 respectiv 0.0001.<br />
Să se descifreze secvenţa recepţionată:<br />
x1 x3 x4 x2 x4 x4 x1 x4 x4 x3 x4 x4 x4 x2 x4 x4 x4 x1 x4 x4 x2 x4 x3 x4 x1 x2<br />
dacă la emisie s-a efectuat o codare Huffman utilizând simbolurile alfabetului codului în ordinea x1, x2, x3, x<st<strong>ro</strong>ng>4.</st<strong>ro</strong>ng><br />
⎛ s1<br />
S<br />
: ⎜<br />
⎝0.<br />
4<br />
s<br />
2<br />
0.<br />
3<br />
s<br />
3<br />
0.<br />
2<br />
s<br />
4<br />
0.<br />
04<br />
s<br />
5<br />
0.<br />
03<br />
s<br />
6<br />
0.<br />
02<br />
s<br />
7<br />
0.<br />
004<br />
s<br />
8<br />
0.<br />
003<br />
s<br />
9<br />
0.<br />
002<br />
2<br />
s<br />
10<br />
0.<br />
0009<br />
3<br />
3<br />
s11<br />
⎞<br />
⎟<br />
0.<br />
0001⎠<br />
4<br />
4