Professional Documents
Culture Documents
Codificare si decodificare
1.1
Codificare
Definitia 1.1 Fiind date doua multimi finite si nevide A (alfabetul surs
a) si B (alfabetul
Cuv
ant cod
11000
10100
01100
10010
01010
00110
10001
01001
00101
00011
a A, A .
(b) = 101,
(c) = 110,
.
.
. . .
. -.
. .
F . . -.
G --.
H . . . .
I . .
J . ---
K
L
M
N
O
.
-
. -. .
.
--
P
Q
R
S
T
.
.
.
-
--.
-. -.
. .
U
V
W
X
Y
Z
.
.
.
-
. . . -. . . --. .
0000
0001
0010
0011
4
5
6
7
0100
0101
0110
0111
8
9
A
B
1000
1001
1010
1011
C
D
E
F
1100
1101
1110
1111
(1) = 01,
(2) = 011,
(3) = 111.
Aici (0) are lungime minima, iar algoritmul de decodificare este foarte simplu: se aplica
recursiv regula:
Fie sufixul 01k ; el este codificarea num
arului
k (mod 3) |33 {z
. . . 3}
k div 3
1.2
Desi simple, codurile binare sunt de obicei lungi si deci greu de manipulat. Adesea este
mai convenabil sa grupam simbolurile binare formand alfabete mai complexe.
Astfel, grupuri de cate trei simboluri binare conduc la codurile octale. Reprezentarea
n octal se indica de obicei prin indicele 8 asezat la sfarsit. De exemplu,
(01) = (01)8 = 000001
In mod similar, prin gruparea a cate patru simboluri binare se obtine codul hexazecimal
(Exemplul 1.3).
Un cod foarte important folosit n reprezentarea standard a simbolurilor alfabetice si
numerice este codul ASCII (American Standard Code for Information Interchange)1 .
1
Un ultim cod, folosit de toate editurile de pe glob este International Standard Book
Number (ISBN). El este un cod - bloc de lungime 10 (lungimea cuvintelor - cod creste
prin folosirea simbolului e diverse pozitii, dar acest caracter este ignorat la prelucrarea
automata). Alfabetul cod este B = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, X}, (X pentru numarul 10).
De exemplu, cartea S. Lin, P. Costello - Teoria Codurilor are codul
ISBN 0 13 283796 X
Primul numar (0) reprezinta tara (SUA), 13 reprezinta editura (Prentice-Hall), iar
urmatoarele sase cifre sunt asignate de editura ca numar de identificare al cartii. Ultimul
simbol este de control (similar bitului de paritate) si definit astfel:
Pentru codul ISBN a1 a2 . . . a10 ,
10
X
i=1
1.3
In acest paragraf ne punem problema construirii unui cod binar instantaneu peste alfabetul
sursa A = {a1 , . . . , an }, (n 1). Deci B = {0, 1}.
Initial se specifica lungimile d1 , d2 , . . . , dn ale cuvintelor cod. Fara a micsora generalitatea, putem presupune
1 d1 d2 . . . dn
La primul pas se alege un cuvant - cod binar arbitrar (a1 ) de lungime d1 .
In continuare se alege un cuvant - cod arbitrar (a2 ) din multimea secventelor binare
de lungime d2 care nu au pe (a1 ) ca prefix. Aceasta este totdeauna posibil pentru ca
numarul tuturor secventelor binare de lungime d2 este 2d2 ; dintre acestea, numarul celor
care au prefixul (a1 ) este 2d2 d1 .
Cum 2d2 2d2 d1 + 1, exista cel putin o alegere posibila pentru (a2 ) de lungime d2 .
Va trebui sa selectam n continuare un cuvant de lungime d3 care nu are ca prefix
(a1 ) sau (a2 ). Deci, din cele 2d3 secvente binare posibile trebuiesc eliminate cele 2d3 d1
secvente cu prefixul (a1 ) si 2d3 d2 secvente cu prefixul (a2 ). Aceasta este posibil daca
si numai daca
2d3 2d3 d2 + 2d3 d1 + 1
Impartind aceasta inegalitate cu 2d3 , se obtine
1 2d1 + 2d2 + 2d3 .
In mod analog se poate arata n general inegalitatea
1 2d1 + 2d2 + . . . + 2dn
Faptul ca acest cod este instantaneu rezulta imediat din constructie.
1.3. CONSTRUCT
IA CODURILOR INSTANTANEE
s1
X
k ds di elemente.
i=1
s1
X
k di k ds
i=1
s1
X
k ds di 1,
i=1
deci exista cel putin un element de lungime ds care poate fi ales drept (as ).
Afirmatia reciproca se demonstreaza similar (pentru k = 2 ea a fost data anterior).q.e.d.
Teorema 1.2 (McMillan) Orice codificare unic decodabil
a satisface inegalitatea lui Kraft.
Demonstratie: Fie o codificare unic decodabila. Notam cu di lungimea cuvantului cod
(ai ), (1 i n). Se observa ca j, (j 1) se pot forma k j cuvinte de lungime j
peste alfabetul - cod B cu |B| = k. Din proprietatea de unic decodabilitate, numarul
mesajelor sursa = ai1 ai2 . . . air cu () = j nu depaseste k j . Lungimea codului pentru
este di1 + di2 + . . . + dir ; deci numarul tuturor sumelor de forma
di1 + di2 + . . . + dir = j
este cel mult k j .
Ramane de demonstrat ca numarul c =
arata ca r 1,
cr
este marginit.
r
n
X
i=1
n
X
! n
n
X
X
k di k dj =
k (di +dj )
i=1
j=1
i,j=1
si n general,
n
X
cr =
i1 ,i2 ,...,ir =1
Aceasta suma se poate re-ordona grupand toti termenii de forma k j unde j satisface
egalitatea anterioara. Cel mai mare j posibil este j = d + d + . . . + d = rd, unde
d = max{d1 , d2 , . . . , dn }.
Numarul tuturor termenilor de forma k j din suma este cel mult k j . Deci,
cr
rd
X
k j k j =
j=1
rd
X
1 = rd.
j=1
cr
cr
d, de unde va rezulta c 1 (pentru c > 1 sirul ar =
, deci nu este
r
r
marginit). q.e.d.
Deci,
1.4
Coduri Huffman
Am mentionat anterior faptul ca daca frecventa simbolurilor sursa variaza, atunci codurile
instantanee sunt preferabile codurilor - bloc, deoarece simbolurile care apar mai frecvent
vor fi codificate prin cuvinte - cod mai scurte.
Ne punem problema aflarii unor codificari cat mai eficiente, n ipoteza ca frecventele
simbolurilor sursa sunt cunoscute exact (de exemplu probabilitatea distributiei simbolurilor
sursa n mesaje).
Definitia 1.5 O sursa de informatie este o pereche S = (A, P ) unde
A = {a1 , a2 , . . . , an } este alfabetul surs
a(multime ordonat
a);
n
X
P (ai ) = 1.
i=1
Fie o codificare a unei surse de informatie. Daca se noteaza cu di = |(ai )|, se poate
defini lungimea medie L a cuvintelor cod prin
L() =
n
X
di P (ai ).
i=1
O codificare este eficienta daca lungimea medie a cuvintelor - cod este cat mai mica.
Definitia 1.6 Fiind data o sursa de informatie S si un alfabet cod, un cod Huffman este
un cod instantaneu cu lungimea medie minim
a.
Lungimea medie minima a unui cod Huffmann se noteaza cu Lmin (S).
Exemplul 1.6 Sa se determine un cod Huffman binar pentru alfabetul surs
a A = {a, b, c, d, e, f }
0 0
0 0
0 0
stiind c
a a apare de doua ori mai des dec
at e si e de dou
a ori mai des dec
at orice
consoan
a.
Deci, vom avea sursa de informatie
Simbol
Probabilitate
a
b
c
d
e
f
0, 4 0, 1 0, 1 0, 1 0, 2 0, 1
Putem asigna deci un cuvant - cod de lungime 1 lui 0 a0 si unul de lungime doi lui 0 e0 .
Atunci lungimile cuvintelor - cod ramase sunt egale cu 4, iar inegalitatea lui Kraft este
saturat
a:
1
4
1
+ 2 + 4 = 1.
2 2
2
Un astfel de cod se poate construi efectiv:
(a) = 0
(b) = 1100
(c) = 1101
(d) = 1110
(e) = 10
(f ) = 1111
1.4.1
O sursa cu doua simboluri are evident un cod Huffman de cuvinte - cod {0, 1} (si deci
Lmin (S) = 1).
O sursa cu trei simboluri {a1 , a2 , a3 } n care a1 are probabilitate maxima, poate fi
redusa la cazul a doua simboluri {a1 , a2,3 } unde P (a2,3 ) = P (a2 ) + P (a3 ). Vom construi
o codificare Huffman pentru sursa redusa
(a1 ) = 0,
(a2,3 ) = 1.
dupa care spargem cuvantul cod 1 n doua cuvinte: 10 si 11; n acest fel se obtine o
codificare Huffman pentru sursa originala:
a1 a2 a3
0 10 11
In general, fie S o sursa de informatie cu simbolurile {a1 , a2 , . . . , an } ordonate descrescator
dupa probabilitati, adica:
P (a1 ) P (a2 ) . . . P (an ).
Construim o sursa redusa S cu simbolurile {a1 , . . . , an2 , an1,n } unde an1,n este un
simbol nou, cu probabilitatea P (an1,n ) = P (an1 ) + P (an ).
Daca nu se poate construi un cod Huffman pentru S , se reia procedeul pentru aceasta
sursa (reordonand eventual simbolurile dupa probabilitate); n final se va ajunge la o sursa
(pentru doua simboluri problema a fost rezolvata) n care se poate construi codul Huffman.
Daca se poate gasi o codificare Huffman pentru sursa redusa S , atunci codul din
Tabelul 1.3 este un cod Huffman pentru S (vom demonstra aceasta afirmatie) .
Tabelul 1.3:
a1
a2
...
an2
an1
an
Lema 1.1
L() = L( ) + P (an1 ) + P (an ).
Demonstratie: Fie d1 , d2 , . . . , dn2 , d lungimile cuvintelor cod corespunzatoare lui .
Atunci lungimile cuvintelor cod pentru sunt d1 , d2 , . . . , dn2 , d + 1, d + 1.
Efectuand calculele, se obtine:
L() =
=
n2
X
i=1
n2
X
i=1
= L( ) + P (an1 ) + P (an ).
q.e.d.
1 i n).
10
1.5. EXERCIT
II
1.5
11
Exercitii
4 1000
5 1100
6 0111
d 0001
e 1101
f 1011
AA
AABAB
ABBBBB
ABABA
4 ABBAA
5 BABBA
6 BBBAB
7 AAAABB
8 AAAABA
9 AAAAAB
(a) = 00
(b) = 10
(c) = 011
(d) = 101
(e) = 111
(f ) = 110
(g) = 010
12
Simbol
1 2 3 4 5 6 7 8 9 0
Lungime 1 3 3 3 3 3 2 2 2 2
care este numarul minim e simboluri - cod necesare ?
Exercitiul 1.8 Cate simboluri cod sunt necesare pentru ca urm
atorul alfabet surs
a sa
poat
a fi codificat ntr-un cod instantaneu cu lungimile cuvintelor cod date:
A B C D E F G H I J K L M N O P
1 2 2 2 1 2 2 2 1 2 2 2 2 2 1 2
Exercitiul 1.9 Demonstrati ca pentru orice cod instantaneu n care inegalitatea Kraft
este strict
a, este posibil sa se adauge un nou simbol surs
a si s
a se extind
a codul dat la un
nou cod instantaneu (cu acelasi alfabet cod). Demonstrati aceasta pentru codul definit la
Exercitiul 1.6.