Documente Academic
Documente Profesional
Documente Cultură
Horia BALTA
Maria KOVACI
2009
Cuprins
L1. Algoritmi pentru codarea sursei i compresie .......................................................................
10
15
15
20
28
28
35
41
Bibliografie ....................................................................................................................................
48
si
= ci
(1.1.1)
unde ci reprezint cuvntul de cod asociat simbolului (mesajului) sursei, iar rij , cu i 1, N , biii
componeni ai cuvntului de cod (pot lua valori binare 1 sau 0). Suportul fizic al valorilor binare
este, de asemenea, mai puin important pentru codare. Acest suport poate fi un semnal electric, optic,
acustic, etc.
n expresia (1.1.1) li reprezint lungimea cuvntului de cod ci (numr de simboluri binare).
Lungimea medie a cuvintelor de cod este dat de relaia:
N
li
(1.1.2)
i 1
H(S)
log 2
i 1
H max (S)
S
1
pi
log 2 N ;
H(S)
H max (S)
;
(1.1.3)
Entropia sursei secundare este egal cu informaia medie pe un cuvnt raportat la lungimea
medie a cuvntului:
H(X)
H(S)
L
(1.1.4)
Atribuirea literelor de alfabet rij pentru a forma cuvntul de cod ci trebuie s conduc la
ndeplinirea condiiilor:
- codul s fie instantaneu (nici un cuvnt nu este prefixul altuia);
Dei, aparent, astfel de surse de informaie nu au un numr finit de simboluri, prin eantionare i cuantizare, orice
surs de informaie poate fi redus la una cu numr finit de simboluri.
(1.1.5)
Inecuaia a doua din (1.1.5) se datoreaz criteriului de eficien minim posibil (sub restricia de
cod bloc).
Realizarea condiiilor mai sus precizate se face prin codare dup algoritmul Huffman (static).
Acesta presupune:
1. Ordonarea probabilitilor sursei (primare) n ordine descresctoare;
2. Simbolurile cu probabilitile cele mai mici (ultimele dou1 n ordonare) se reunesc
formnd un nou simbol cu probabilitatea sumei celor dou, dup care se reordoneaz probabilitile,
obinndu-se o surs cu N-1 simboluri;
3. Procesul continu pn cnd rmn 2 simboluri. Acestora li se atribuie valorile 0 i 1;
4. Mergnd pe cale invers, se disociaz simbolurile compuse n simboluri din care s-au
compus, atribuind arbitrar, la fiecare disociere, valorile 0 i 1 pentru a gsi cuvintele de cod pentru cei
doi componeni. De reinut c doar un singur simbol se disociaz la fiecare pas, lungimea
componenilor si crescnd cu 1, celelalte simboluri pstrndu-i lungimea i structura cuvntului de
cod.
Observaie: -atribuirea simbolurilor binare celor dou simboluri compuse este arbitrar, codurile
obinute vor fi diferite, dar de aceeai eficien. De asemenea, ordinea simbolurilor de egal
probabilitate poate fi aleas arbitrar, diferitele moduri de atribuire conducnd la coduri diferite, dar
de aceeai eficien. ns, n vederea posibilitii de a confrunta rezultatele, se vor respecta regulile: 0 se atribuie totdeauna simbolului de jos (ultimul n ordonare); -ordinea simbolurilor egal
probabile este ordinea n care s-au citit, cu simbolul compus totdeauna ultimul.
Programul pe calculator, asociat acestei lucrri, permite codarea surselor de informaie prin
algoritm Huffman static.
Precizarea sursei de informaie se poate face simplu, introducnd valorile probabilitilor sursei
i numrul lor. Probabilitile trebuie s ndeplineasc condiia:
N
1 ;
i 1, N
0 e pi e 1 ;
(1.1.6)
i 1
Probabilitile pot fi introduse indirect, prin numere ntregi, pozitive ki, calculatorul urmnd s
fac transformarea:
pi
ki
N
(1.1.7)
k 1
Algoritmul se poate aplica i pentru obinerea codurilor nebinare (avnd un alfabet cu m simboluri). n acest caz se
grupeaz cte m simboluri.
b(2)=maxim
b(1)
b(3)
b(M)
Nq
q
b(4)=minim
Fig.1.1.1 Surs de informaie semnal discret
max min
] 1 unde [ ] semnific partea ntreag;
q
y va atribui sursei de informaie primare simbolurile: [ min, min + q ); [min+q, min+2q); ...
;[min+(N-1)q,min+Nq)
y va calcula probabilitatea simbolurilor ca fiind egale cu fraciunea din numrul
eantioanelor M, ce au valori cuprinse n intervalele ce definesc simbolurile. Este posibil
desigur s rmn simboluri cu probabilitate 0.
n toate cele 3 cazuri se vor calcula i se vor putea vizualiza:
a) probabilitile sursei primare;
b) datele asociate sursei i codrii:
entropia sursei primare H(S);
entropia maxim a sursei primare Hmax(S);
eficiena sursei primare KS;
entropia sursei secundare (eficiena codrii) H(X);
lungimea medie a cuvintelor de cod L;
redundana sursei primare R(S)=Hmax(S)-H(S);
redundana relativ a sursei primare S =1-KS ;
redundana sursei secundare X =1-H(X).
c) cuvintele de cod;
d) graful codrii;
y
va calcula N
a). Rulai programul cobsinf.exe selectnd opiunea Demonstraie. Selectai pe rnd cele trei feluri de
surse de informaie (tablou, text i semnal discret), i pentru fiecare surs solicitai o codare bloc i o
codare prin algoritmul Huffman static. Urmrii aplicarea algoritmului.
b). Alctuii surse de informaie de forma celor prezentate i codai-le bloc i prin algoritmul Huffman
static, calculnd n fiecare caz entropia sursei, eficiena sursei, lungimea medie a cuvintelor codului
obinut, precum i eficiena codrii. Pornii pentru nceput cu surse tablou mai simple, apoi mrii
numrul de simboluri. Utilizai ulterior i surse text sau semnal discret.
c) La sfritul lucrrii de laborator se va efectua test asupra cunotinelor acumulate. Durata acestuia
este aproximativ constant i independent de numrul de studeni ce efectueaz simultan testul
(calculatorul poate testa pn la 4 studeni simultan n sensul c afieaz pe rnd date pentru cei
n e 4 studeni i apoi ntreab pe rnd, n aceeai ordine studenii, timpii de afiare i de chestionare
rezervai fiecrui student sunt constani i nu influeneaz pe cei rezervai altuia). Rezultatul testului se
va concretiza printr-o not, calculat automat de calculator.
1.2. Algoritmul Huffman dinamic
Compresia este procesul de minimizare a spaiului ocupat sau a timpului necesar transmiterii
unei anumite cantiti de informaie.
Metodele de compresie pot fi mprite n:
y Metode de compresie cu pierdere;
y Metode de compresie fr pierdere.
Metodele de compresie cu pierdere de informaie sunt folosite n special n transmiterea
semnalului audio i video, unde pierderea de informaie are ca rezultat o scdere a calitii sunetului,
respectiv imaginii.
Compresia de date fr pierdere, prezent n programele de arhivare, n sistemele de
transmisiune a datelor, a evoluat de-a lungul timpului pornind de la algoritmi simpli (suprimarea
zerourilor, codarea pe iruri) i ajungnd la algoritmii compleci folosii n prezent.
Metodele de compresie fr pierderi au la baz ideea c n general cantitatea de informaie
prelucrat (transmis, depozitat) conine o anumit redundan ce se datoreaz:
y Distribuiei caracterelor (unele caractere au o frecven de apariie mult mai mare dect altele);
y Repetrii consecutive a unor caractere;
y Distribuiei grupurilor de caractere (unele grupuri sunt mult mai frecvente dect altele i n plus
exist grupuri care nu apar deloc);
y Distribuiei poziiei (unele caractere sau grupuri ocup poziii prefereniale, predictibile n anumite
blocuri de date).
Avnd n vedere toate aceste tipuri se poate nelege de ce o anumit tehnic de compresie
poate da un rezultat bun pentru un anumit tip de surse, pentru altele ns rezultatul fiind dezastruos. n
studiul compresiei se urmrete obinerea unui algoritm care s ofere o compresie ct mai bun pentru
tipuri de surse ct mai diferite.
Aprecierea cantitativ a compresiei realizate se face utiliznd factorul de compresie, definit ca:
Fc
nu
nc
(1.2.1)
Exemplu:
n continuare se prezint evoluia arborelui (grafului) asociat codului n timpul codrii mesajului Mi =
aaabccc:
Obs: Semnificaia notaiilor este:
-pentru nod:
- x: numr de ordine;
- p: pondere (numr de apariii ale respectivului simbol);
- y: simbolul.
Frunza goal, notat cu "0", este de pondere 0.
- pentru ramur: - spre stnga | codare cu zero;
- spre dreapta | codare (atribuire) cu unu.
1. Mi = a
3 1
0
1
1 0
2 1 a
Codurile sunt: 0 - 0
a-1
Mesajul transmis este: a
2. Mi = aa
3 2
0
1
1 0
2 2 a
Codurile sunt: 0 - 0
a-1
Mesajul transmis este: a1
3. Mi = aaa
3 3
0
1
1 0
2 3 a
Codurile sunt: 0 - 0
a-1
Mesajul transmis este: a11
4. Mi = aaab
5 4
0
1
3 1
4 3 a
0
1
1 0
Codurile sunt: 0 - 00
a-1
b - 01
Mesajul transmis este: a110b
2 1 b
5. Mi = aaabc
7 5
0
1
5 2
6 3 a
0
1
3 1
4 1 b
0
1
1 0
2 1 c
6. Mi = aaabcc
7 6
0
1
5 3
6 3 a
0
1
3 2
4 1 b
0
1
1 0
2 2 c
Deoarece ponderea nodului c este mai mare dect ponderea nodului b se va face interschimbarea
ntre noduri, realizndu-se o rearanjare a arborelui:
7 6
0
1
5 3
6 3 a
0
1
3 1
4 2 c
0
1
1 0
2 1 b
7. Mi = aaabccc
7 7
0
1
5 4
6 3 a
0
1
3 1
4 3 c
0
1
1 0
2 1 b
5 3 a 6 4
0
1
3 1
4 3 c
0
1
1 0
2 1 b
(1.2.2)
nu
# 1, 7
nc
(1.2.3)
Desfurarea lucrrii:
a) Se lanseaz executabilul dHuffman.exe din directorul Huffman Dinamic, dup care se introduce
parola TTI. Rulai programul, selectnd opiunea Demonstraie, pentru codare i decodare.
b) Se verific, cu programul, exemplul luat n aceast lucrare, selectnd pe rnd compresia, respectiv
decompresia prezentate.
c) Pentru compresie i decompresie se alege cte un exemplu oarecare asemntor cu cel prezentat n
lucrare. Se realizeaz compresia/decompresia, dup care, cu programul, se verific rezultatele obinute.
d) La sfritul lucrrii de laborator se va efectua un test asupra cunotinelor acumulate. Rezultatul
testului se va concretiza printr-o not, calculat automat de calculator.
1.3. Algoritmi de compresie de tip LZ
Cu toate c algoritmii de compresie Huffman, static sau dinamic, sunt cei mai performani (din
punct de vedere al factorului de compresie) relativ la sursele fr memorie, aceast concluzie nu este
valabil i pentru sursele cu memorie, surse frecvent ntlnite n practic.
Algoritmii de compresie de tip LZ fac parte din categoria tehnicilor de dicionar adaptive. Ele
servesc (n special) la compresia fiierelor de tip text, fiiere ce se caracterizeaz prin repetarea
frecvent a unor subiruri.
Ideea de baz n algoritmii LZ este nlocuirea unor subiruri ale mesajului cu cuvinte de cod,
astfel nct, la o nou apariie a unui subir s se transmit doar codul asociat lui.
Algoritmul LZ 77
Mesajul de intrare este trecut printr-un buffer de lungime N. Bufferul este divizat n dou
blocuri distincte numite Lempel i Ziv, ca n Fig. 1.3.1.
Ziv
Lempel
Ieire
mesaj
Intrare
mesaj
1
NL
1 2
NZ
10
(1.3.1)
(1.3.2)
4
a
a
5
a
b
a
a
a
b
c
1
a
a
a
a
2
a
a
b
c
3
a
b
a
a
4
b
a
c
b
P
0
7
6
7
P
0
7
3
4
3
2
3
3
A
a
b
c
b
a
b
a
a
a
a
a
a
b
c
a
a
b
a
a
a
a
b
c
c
1
a
a
a
b
a
a
a
a
c
a
c
c
b
b
c
3
2
2
3
A
a
b
c
c
c
Algoritmul LZ78
Spre deosebire de varianta anterioar, la LZ78 blocul Lempel este un dicionar n continu
cretere. De asemenea, nu exist teoretic nici o limitare a blocului Ziv.
Algoritmul LZ78 este, n esen, urmtorul:
-se iniializeaz dicionarul (blocul Lempel) cu un ir nul;
-se ncarc mesajul de intrare n blocul Ziv;
-se transmite n clar primul caracter i se introduce i n dicionar la poziia 1. Cele dou poziii
ale dicionarului (notate cu 0 i 1) sunt, n acest moment codate prin 0 i 1. Din acest moment:
-se caut n dicionar un subir, S, identic cu cel mai lung subir, S, din blocul Ziv. Bineneles,
S ncepe din prima poziie a blocului Ziv. Dac exist un astfel de subir, S, atunci se transmite codul
11
aferent urmat de caracterul A ce urmeaz lui S n mesajul de intrare. n plus, dicionarul se mbogete
cu o poziie, poziie unde se trece subirul SA. Dac nici mcar primul caracter, x, din Ziv nu se
regsete n dicionar, atunci se transmite 0x, unde 0 semnific subirul din prima poziie, codat prin
cuvntul de cod 000.
Observaie: Atunci cnd dicionarul ajunge la un numr de elemente egal cu 2k, tuturor codurilor
elementelor anterioare li se adaug ca i prefix 0, iar ultimul subir va fi codat prin 100.
Exemplu: n Fig. 1.3.3 a) se prezint un exemplu de compresie utiliznd algoritmul LZ78. Mesajului
de intrare este cel din exemplul anterior, aaababacacab. Mesajul comprimat rezultat este
a1a0b1b1c6a3, sau n binar a1a0b01c110a011. n Fig. 1.3.3 b) se prezint un exemplu de
decompresie, utiliznd acelai algoritm. Mesajul comprimat (de intrare) este a1b3b5a3a. Rezultatul
decompresiei este aababcabcaaba.
Blocul Lempel
(dicionarul)
0
1
2
3
4
5
6
7
8
Blocul Ziv
a
aa
b
ab
c
ac
aca
a
a
b
a
a
a
a
a
b
c
a
b
b
a
a
b
a
a
c
c
a
b
c
a
a
b
a
a
c
b
a
c
c
a
c a c a b
a c a b
a b
b
Mesajul
de ieire
a
1a
0b
1b
1c
a c a b
b
6a
3
Blocul Lempel
(dicionarul)
0
1
2
3
4
5
6
7
Mesaj decomprimat
a
b
ab
c
abc
abca
a
a a b
Mesaj
comprimat
a
1b
a a b a b c
3b
a a b a b c a b c a
a a b a b c a b c a a b a3a
5a
(1.3.3)
unde sup(x) reprezint aproximarea prin adaos a lui x, iar n dimensiunea momentan a dicionarului;
-se citete din dicionar subirul S aflat la poziia citit anterior i se genereaz la ieire;
12
-se citete din mesajul recepionat urmtorul caracter, A (n cod ASCII), i se genereaz i acesta la
ieire. Dac A este un nou caracter, atunci se introduce n dicionar la o nou poziie;
-se introduce n dicionar subirul SA la urmtoarea poziie;
Procesul se repet pn la epuizarea mesajului recepionat.
Algoritmul LZW (LempelZivWelch)
Modificarea esenial adus de algoritmul LZW este faptul c att compresorul ct i
decompresorul cunosc simbolurile (caracterele) componente ale mesajului. Cu alte cuvinte, nainte de
nceperea propriu-zis a compresiei (decompresiei) dicionarul este iniializat cu toate caracterele
posibil a fi emise.(n exemplul urmtor, ilustrat n Figura 3.4a, dicionarul este iniializat cu simbolurile
a00, b01, c10.) n acest fel nu se mai trimite informaie despre urmtorul caracter la fiecare pas. O
alt modificare o constituie existena unui prefix, P, care se memoreaz de la un pas la urmtorul.
Algoritmul compresiei este:
-se iniializeaz dicionarul (aa cum s-a descris anterior);
-se citete primul caracter i se memoreaz ca i prefix, P. Din acest moment:
-se citete urmtorul caracter, notat E. Se caut n dicionar subirul PE. Dac acest subir exist, atunci
se trece la pasul urmtor, fr a emite nimic i fr a aduga nimic n dicionar. Singura modificare este
c acum PE devine prefix pentru pasul urmtor. Dac subirul PE nu exist n dicionar, atunci se
execut urmtoarele operaii:
-se trimite la ieire codul aferent subirului P;
-se trece pe post de prefix caracterul E (EpP);
-se adaug n dicionar subirul PE la urmtoarea poziie liber.
Procesul continu n acest fel pn la epuizarea ntregului mesaj de intrare.
Observaie: La fel ca i la LZ-78, pe vreme ce dicionarul crete trebuie modificat corespunztor codul
binar loc asociat.
Algoritmul decompresiei este asemntor compresiei. Diferena este c simbolul E nu se citete direct
de la intrare (ca i la compresie) ci doar dup ce s-a decodat codul recepionat. Mesajul decomprimat se
poate citi fie de la E (exceptnd primul simbol, care se citete de la P), fie prin compunerea irului
decodat.
Exemplu: Fig. 1.3.4. prezint cte un exemplu de compresie i decompresie utiliznd algoritmul
LZW. Pentru compresie s-a ales ca mesaj de intrare: aaababacacab, acelai ca i n exemplele
anterioare.
Mesajul
comprimat
este:
031052081,
sau
n
binar
0011001000101010000010000001. Pentru decompresie s-a ales mesajul 013205, car n binar se
exprim: 0001011010000101. Mesajul decomprimat este: ababcaabc.
Desfurarea lucrrii:
a) Rulai programul pe calculator, utiliznd opiunea demonstrativ, urmrind aplicarea celor trei
algoritmi la compresie i decompresie. Aflai pentru fiecare exemplu i factorul de compresie.
b). Alctuii, utiliznd trei sau patru litere, mesaje de circa 10 litere lungime. Comprimai mesajele
independent de program i verificai rezultatele cu ajutorul programului. Pentru decompresie utilizai
mesajele comprimate de colegi, fr a cunoate originalul. Confruntai rezultatele decomprimrii cu
cele originale. Calculai n fiecare caz factorul de compresie, considernd c orice liter (caracter) se
scrie n binar pe 8 bii.
c) La sfritul lucrrii de laborator se va efectua test asupra cunotinelor acumulate, prin intermediul
programului pe calculator. Testul const din: 1o compresie i 2o decompresie, a unui mesaj ales
aleatoriu de ctre calculator printr-unul dintre cei trei algoritmi (de asemenea ales aleatoriu de
program) i 3 cinci ntrebri teoretice fiecare cu un rspuns corect din cinci propuse, avnd ca tem
algoritmii de compresie.
13
Prefix
Mesaj de
intrare
ir cutat
n dicionar
PE
a
a
aa
b
a
b
ba
c
a
c
ca
b
a
a
a
b
a
b
a
c
a
c
a
b
aa
aa
aab
ba
ab
ba
bac
ca
ac
ca
cab
b
ir
transmis
Cod
transmis
0=00
aa
3=11
aa
b
a
3=11
1=001
0=000
aab
ba
ab
4=100
5=101
6=110
ba
c
a
5=101
2=010
0=0000
bac
ca
ac
7=111
8=1000
9=1001
ca
b
8=1000
1=0001
cab
10=1010
Dicionarul
a 0=00
b 1=01
c 2=10
ir adugat
Cod
n dicionar
adugat
n dicionar
Prefix
Mesaj de
intrare
ir cutat
n dicionar
PE
a
b
a
ab
c
a
a
ab
b
a
b
c
a
a
b
c
ab
ba
ab
abc
ca
aa
ab
abc
ir
recepionat
decodat
Cod
recepionat
a
b
ab
0
1
3
ab
ba
3=11
4=100
c
a
abc
2
0
5
abc
ca
aa
5=101
6=110
7=111
Dicionarul
a 0=00
b 1=01
c 2=10
ir adugat
Cod
n dicionar
adugat
n dicionar
14
H VT
C1
C
2
0
0
0
1
1
1
1
i3
0 1 1 0 0 1 1 C
4
1 0 1 0 1 0 1 i5
i6
i
7
15
(2.1.1)
C1
C2
C4
(2.1.2)
Exemplul 1:
Pentru n=7, k=4, m=3 i secvena de informaie i=1010, gsii cuvntul V de cod.
Rezolvare:
Se observ c exist 4 simboluri de informaie: i3, i5, i6, i7. Cuvntul de cod,V, se poate scrie sub form
literar: V C1C2i3C4i5i6i 7 . Avem aadar 7 simboluri ce alctuiesc cuvntul de cod i 3 bii de control.
Rezult c matricea de control, H, va conine 3 linii i 7 coloane.
Din relaia de codare (2.1.1), rezult relaiile de calcul a biilor de control:
i3 i5 i 7 1 0 0 1
i3 i 6 i 7 1 1 0 0
i5 i6 i 7 0 1 0 1
C1
C2
C4
Rezult cuvntul de cod:
V=1011010
Matricea de control:
(2.1.3)
L hi L h n @
(2.1.4)
HV
> h1
H>m,n @
z4
z
2
z1
'T
unde, pentru acest caz se observ c m=3 i n=7. Coloana hi exprim n cod binar natural numrul de
ordine al coloanei respective, cu bitul cel mai puin semnificativ n linia m.
Din relaia (2.1.3) rezult:
z4
z2
z1
16
(2.1.5)
Decodarea zecimal a corectorului z, indic poziia erorii, dac este una singur, n cuvntul V ' . Va fi
eronat simbolul cu indicele r, dat de relaia:
4z 4 2z 2 z1
(2.1.6)
V'
unde H reprezint cuvntul eroare.
Relaia (2.1.3) va deveni:
T
z H V'
H V H
unde poziia erorii se calculeaz cu relaia (2.1.6).
H HT
hr
Obs: n cazul n care exist dou erori, sunt cazuri n care nu numai c nu se corecteaz nici o eroare,
dar se mai eroneaz un al treilea simbol, rezultnd la recepie trei simboluri eronate.
Exemplul 2:
Decodai cuvntul recepionat V=1001001
Rezolvare:
1 0 0 1 0
z2
C i i i
0 0 0 1 1
z1
'
2
'
3
'
6
'
7
1 0 0 1 0
4z 4 2z 2 z1
H
Se poate scrie:
V
4 0 2 1 1 0 2
0100000
0001
d u t e 1 1 2 1 4,
e>t
practice, codul a fost modificat n sensul creterii distanei minime de la d=3 la d=4, ceea ce permite
detecia erorilor duble.
Creterea distanei de cod de la 3 la 4 s-a fcut prin adugarea unui simbol de control
suplimentar, numit simbol de control al paritii, C0, structura cuvntului de cod devenind:
V
C0 C1C2i3C4i5i 6i 7
H'
0 H
1 1
0
0
0
0
1
1
0
1
0
1
0
1
1
1
1
0
0
1
1
0
1
1
1
1
0
1
1
1
1
H' VT
0
0
0 0 0 1 1 1
0 1 1 0 0 1
1 0 1 0 1 0
1 1 1 1 1 1
C0
C
1
1 C2
1 i3
1 C4
1 i5
i
6
i 7
(2.1.7)
C0
C1 i3 i5 i 7
C2 i3 i 6 i7
C4 i5 i 6 i7
C1 C2 i3 C4 i5 i6 i 7
(2.1.8)
Exemplul 3:
Fie secvena de informaie i=1010, gsii cuvntul V de cod.
Rezolvare:
Se observ c exist 4 simboluri de informaie: i3, i5, i6, i7. Cuvntul de cod, V, se poate scrie sub form
literar: V C0 C1C2i3C4i5i 6i 7 . Avem aadar 8 simboluri ce alctuiesc cuvntul de cod i 4 bii de
control. Rezult c matricea de control, H, va conine 4 linii i 8 coloane.
Din relaia de codare (2.1.8), rezult relaiile de calcul a biilor de control:
C0
C1 i3 i5 i 7 1 0 0 1
C2 i3 i 6 i 7 1 1 0 0
C4 i5 i6 i 7 0 1 0 1
C1 C2 i3 C4 i5 i 6 i 7 1 0 1 1 0 1 0 0
V'
H' V'
z
z
0
z4
z
2
z1
z 0
(2.1.9)
Unde:
y z, reprezint corectorul de la codul Hamming corector de o eroare;
y z0, reprezint simbolul binar, 0 sau 1, cu ajutorul cruia se pot detecta erori pare (z0=0).
Exist patru cazuri:
Cazul 1:
z 0
z 0 0
nu exist erori sau nu exist erori detectabile prin cod.
Cazul 2:
z { 1
z 0 0
z 0 1
z 0 1
4z 4 2z 2 z1 z 0
Exemplul 4:
Decodai cuvntul recepionat V=01001010
Rezolvare:
(2.1.10)
z0
z4
1 0 1 0 0
z2
C i i i
'
7
0 0 1 0 1
z1
C i i i
'
7
1 0 0 0 1
'
2
'
1
'
3
'
3
'
6
'
5
4z 4 2z 2 z1 z 0
4 0 2 1 1 1 1 4
1010
Desfurarea lucrrii:
a) Se lanseaz executabilul Hamming.exe din directorul Hamming, dup care se introduce parola TTI.
Rulai programul, selectnd opiunea Demonstraie, pentru toate cele patru variante prezentate.
b) Se verific, cu programul, toate exemplele luate n aceast lucrare, selectnd pe rnd codurile
prezentate.
c) Pentru fiecare cod n parte, se alege cte un exemplu de codare/decodare, asemntor cu cele
prezentate n lucrare, cu observaia ca secvena de informaie s conin 11 bii de informaie, la
codare, respectiv cuvntul recepionat s conin 15/16 bii, la decodare. Se realizeaz
codarea/decodare, dup care, cu programul, se verific rezultatele obinute.
d) La sfritul lucrrii de laborator se va efectua un test asupra cunotinelor acumulate. Rezultatul
testului se va concretiza printr-o not, calculat automat de calculator.
2.2. Codul ciclic
20
(2.2.1)
(2.2.2)
de grad k-1.
Pentru orice cuvnt de cod este valabil relaia :
rest
vx
g x
(2.2.3)
Deci cuvintele de cod se aleg astfel nct s fie multiplii ai polinomului g(x) numit polinomul
generator al carui grad va fi deci m = n-k, (gm = 1):
g(x) = gmxm + gm-1xm-1 + gm-2xm-2 + .....+ g1x + g0
(2.2.4)
(2.2.5)
Codurile ciclice corectoare de o eroare, avnd distana de cod (distana Hamming minim ntre
cuvintele codului) dHmin = 3, sunt capabile s corecteze o eroare sau s detecteze dou.
Codarea codului ciclic corector de o eroare
Codarea va fi prezentat n dou moduri nesistematic sau sistematic.
Cu relaia v(x) = i(x)g(x) se poate face codarea nesistematic, dar pentru c nu este util n
practic nu va fi luat n considerare .
n continuare va fi deci prezentat codarea sistematic unde corespondena dintre i(x) i v(x)
este dat prin relaia:
i x x
vx ix x m rest
g x
unde rest
(2.2.6)
i x x m
semnific restul mpririi polinomului i(x)xm la g(x).
gx
Operaia de adunare din ecuaia (2.2.6) este sum modulo 2 (SAU exclusiv), iar coeficienii
polinoamelor sunt din cmpul binar {0,1}.
Matematic codarea poate fi facut polinomial sau matricial.
a) Polinomial
Codarea va fi prezentat printr-un exemplu, putnd fi uor generalizat.
21
(2.2.7)
i deci i(x)xm = (vn-1x3 + vn-2x2 + vn-3x3 + vn-1x + vn-4) x3 = vn-1x6 + vn-2x5 + vn-3x4 + vn-4x3
Biii de control sunt coeficienii restului mpririi lui i(x)xm/g(x).
vn-1x6 + vn-2x5 + vn-3x4 + vn-4x3
vn-1x6
+ vn-1x4 + vn-1x3
x3 + x + 1
vn-1x3 + vn-2x2 + (vn-3 + vn-1)x + (vn-4 + vn-2 + vn-1)
(2.2.8)
(2.2.9)
(2.2.10)
Aadar cuvntul de cod va fi v = v6v5v4v3v2v1v0 unde primii 4 sunt biii de informaie, iar ultimii 3 cei
de control.
b) Codor ciclic cu RDR (codarea matricial)
n Fig. 2.2.1 este prezentat un codor ciclic care implementeaz relaia de codare (2.2.6).
Secvena de informaie, i(x), intr n codor n primele k tacte, primul bit fiind cel mai semnificativ i,
de asemenea, este conectat i la ieire. Pentru aceasta, ntreruptorul 1, format din poarta AND-1 este
nchis iar ntreruptorul 2, format din poarta AND-2 este deschis (vezi semnalele de comand P1 i P2).
n urmtoarele m tacte ntreruptorul 1 este deschis iar ntreruptorul 2 este nchis, astfel c
secvena r, generat de RDR, este livrat la ieirea v.
22
Cm y
gm=1
Cm-1 y
gm-1
Cm-2
gm-2
C1
g1
..
g0=1
a) Codor ciclic
RDR ;
y P2
AND-2
y P1
v(x)
AND-1
i(x)
P1
b) Semnalele de validare
a porilor AND
y y y
y y
0 1 2 yyyyy
k=n-m y y y y
t/Tb
P2
t/Tb
y y y
y y
0 1 2 yyyyy
k=n-m y y y y
Obs. Se observ c, n ultimele k tacte, la intrrile sumatorului (care adun intrarea RDR-lui cu
reacia sa) se regsete acelai semnal, astfel c, n aceste k tacte, n celula Ck se va introduce o
secven nul care cur registrul pentru un nou cuvnt de cod.
Din funcionarea registrului de deplasare cu reacie rezult relaia:
Sj = TSj-1 + vn-jU
(2.2.11)
unde S reprezint starea registrului, U este o matrice coloan, iar T este matricea caracteristic a
registrului de deplasare cu reacie. Ele sunt de forma:
c1
c
2,
M
c m
0
0
,
M
1
0
0
0
g 0
23
M
0
M
0
L
L
g1
g2 L
0
0
M .
1
g m-1
(2.2.12)
1 1 0
(2.2.13)
1
0 , T 3 U
1
1
5
T U 1 , T 6 U
0
0
1 , T 4 U
1
1
0
0
1
1 ,
(2.2.14)
(2.2.15)
(2.2.16)
corectarea sau detectarea erorilor, dup destinaia codului i apoi selecia biilor de informaie.
Verificarea presupune calculul restului mpririi lui w(x) la g(x). Dac restul este 0 se decide:
cuvnt corect recepionat. Dac nu, atunci se decide: cuvnt eronat.(Prima decizie poate fi fals, a doua
nu!) Pentru codurile detectoare decodarea ia sfrit aici. Pentru codurile corectoare analiza restului
permite determinarea poziiei erorilor. Acest lucru presupune existena unei corespondene biunivoce
ntre resturile posibile i cuvintele eroare corectabile de ctre codul dat.
Dac codul este corector de o eroare, atunci decodarea decurge astfel:
1r- se calculeaz corectorul zn cu formula:
z
n -1
n -1
v T U H T U
'
j
j 0
(2.2.17)
j 0
(2.2.18)
24
a) Decodarea polinomial
Metoda const n mprirea lui w(x) la g(x). Va rezulta un polinom rest, r(x). Dac acesta este
diferit de 0, cuvntul recepionat este eronat i prin identificarea restului r(x) cu valorile din tabelul
cuvinte eroare corectori (vezi Anexe) se determin poziia erorii i se realizeaz corecia.
Spre exemplu fie : w(x) = x6 + x5 + x3 + x2 + 1. Calculm rest> w(x) /g(x)@:
x6 + x5 + x3 + x2 + 1 x3 + x + 1
x6 + x4 + x3
x3 + x2 + x + 1
5
4
2
x +x +x +1
x5 + x3 + x2
x4 + x3 + 1
x4 + x2 + x
x3 + x2 + x + 1
x3 + x + 1
x2
deci conform tabelului din anex este eronat w2. Schimbnd valoarea bitului w2 rezult :
w(x) = x6 + x5 + x3 + 1.
b) Decodor ciclic cu RDR (decodarea matricial)
celula 0
w
celula n-1
n Tb
yy
AND
P1
0
Cm
IDENTIFICARE
0
Cm-1
STARE
0
y
1
C1
AND
P2
gm-1
gm-2
g1
AND
P2
0
Cm
y
gm-1
a)
schema;
IDENTIFICARE
0
Cm-1
STARE
0
gm-2
g1
25
1
C1
AND y
P1
P1
..
y
0
P2
y
n-1
y
2n
y
n
..
y
0
y
n-1
y
n
..
t / Tb
..
t / Tb
y
2n
n Fig. 2.2.2. este prezentat structura unui decodor ciclic corector de o eroare. Biii cuvntului
recepionat vor intra n schem unul dup altul n ordine, ncepnd cu bitul vn-1.
Schema de decodare conine un registru de deplasare (blocul nTb este un registru de
ntrziere cu n celule) cu rol de memorie, care pstreaz cuvntul recepionat care intr pas cu pas i
dou subscheme cu RDR pentru corecie care funcioneaz n contratimp. Procedura de decodare
dureaz 2n tacte. n primele n tacte n memorie intr cuvntul 1 care prin poarta P1 intr i n primul
decodor, ieirea acestuia fiind 0 pentru c P2 este nchis. n urmtoarele n tacte cuvntul 2 va intra prin
poarta P2 n al doilea decodor care are ieirea 0 deoarece P1 este nchis, n acest timp cuvntul 1
prsete memoria trecnd prin sumator i este corectat de primul decodor care identific starea 00.....1
i care are acces la sumator prin P2.
Dup n = 7 tacte starea registrului va fi:
S7 = v6T6U + v5T5U + v4T4U + v3T3U + v2T2U + v1TU + v0U
(2.2.19)
(2.2.20)
(2.2.21)
Pe durata urmtoarelor n = 7 tacte RDR din prima subschem va evolua numai sub aciunea
semnalului de reacie i dup n-r-1 tacte se va ajunge n starea:
n-r-1
S7+n-r-1 = T
1
S7 = T U = 0
0
n-1
(2.2.22)
n acela timp printr-o deplasare cu n-r-1 tacte eroarea care se afla n celula r va ajunge n
celula n-1. Detectorul va sesiza starea S7+n-r-1 fix i prin poarta P2 care este nchis va emite semnalul
de corecie (blocul IDENTIFIC genereaz un 1L) care se nsumeaz cu bitul eronat aflat n celula n-1,
astfel la ieirea sumatorului final se va obine cuvntul corectat.
26
Desfurarea lucrrii:
a) Rulai programul de pe calculator alegnd butonul Demonstraie de la codul ciclic i se urmrete
o codare i o decodare.
b) Alegeiv un polinom generator i secvena de informaie i efectuai o codare, apoi alegnd
polinomul generator i biii recepionai o decodare. Verificai apoi rezultatul cu ajutorul calculatorului.
c) La sfritul lucrrii de laborator se efectueaz testul de verificare a cunotinelor acumulate prin
intermediul calculatorului. Testul const n a rspunde la 5 ntrebri teoretice, fiecare avnd un rspuns
corect din cele cinci propuse, i efectuarea unei codri i a unei decodri pornind de la polinomul
generator i secvena de informaie respectiv secvena recepionat generate aleator de calculator.
27
(3.1.1)
unde coeficienii uj sunt coeficieni binari (fac parte din cmpul binar ^0, 1`).
Polinomul corespunztor acestui cuvnt fiind:
v(x) = vn-1xn-1 + vn-2xn-2 + ... + v1x + v0
(3.1.2)
(3.1.3)
(3.1.4)
(3.1.5)
Cuvintele de cod sunt elemente ale cmpului Galois GF(2q) generat de un polinom primitiv p(x) de
grad q (sunt clase de resturi modulo p(x)), cmp obinut aa cum este prezentat n Anexa.
Codarea BCH
(3.1.6)
care conduce la obinerea unui cod nesistematic (relaie mai puin utilizat).
b) Pentru obinerea unei structuri sistematice, la care informaia s se gseasc nemodificat pe
poziiile cele mai semnificative se folosete relaia:
v(x) = i(x)xm + rest (i(x)xm/g(x))
Aceast relaie se mai poate scrie:
28
(3.1.7)
(3.1.8)
deci se obine un cuvnt de cod ciclic care este multiplu a lui g(x) i este format din simbolurile de
informaie aflate pe poziiile cele mai semnificative (primele k) i m simboluri de control determinate
de restul mpririi lui i(x)xm la g(x).
Relaia (3.1.8) poate fi adus sub forma HvT = 0.
h 0
0
h 1 ... h m-1
h 0 ... h m-2
0
...
hm
0 ...
h m-1 h m ...
0
h0
0 v n -1
0 M
v1
h m v0
0
0
... h m-1
(3.1.9)
Acesta este de forma HvT = 0 deci l putem determina pe H prin identificare ca fiind:
h 0
0
M
0
h 1 ... h m -1
h 0 ... h m - 2
0
...
hm
0
h m -1 h m
h0
...
...
0
0
... h m -1
0
0
hm
(3.1.10)
Pentru a corecta t erori independente g(x) trebuie s ndeplineasc anumite condiii. tiim c
v(x) trebuie s fie multiplu al lui g(x) i c g(x) trebuie s fie divizor a lui xn + 1 = 0.
Pentru aceasta alegem un numr de r rdcini ale lui xn + 1 = 0 pe care le notm cu Ei = Di GF(2q).
Aceste rdcini Ei sunt elemente primitive ale extensiei de ordinul q al cmpului Galois binar GF(2q).
Acest ordin poate fi determinat cu relaia:
n = 2q 1
(3.1.11)
m i x
(3.1.13)
i 1
Expresia polinomului minimal care este definit ca polinomul mi(x) ireductibil de grad minim pentru
care mi(Ei) = 0 este:
m i x
x E i x E i2
...x E i2 q -1
(3.1.14)
Dei n calculul lui mi(x) folosim coeficieni GF(2q) coeficienii lui mi(x) vor fi binari, fapt care
iese n eviden i din calculul acestor coeficieni n cazul exemplului 1 prezentat mai jos.
Pentru corecia unui numr de maxim t erori se impune alegerea unui numr de r = 2t rdcini Ei
GF(2q) ceea ce determin obinerea unui cuvnt de cod avnd distana minim d u 2t + 1.
n cazul codurilor ciclice binare, dac D este o rdcin i D2, D22, ... D2(q-1) sunt tot rdcini i
deci pentru a forma polinomul generator este suficient s lum rdcinile impare:
29
0 cu i = 1, 3, ..., 2t-1
(3.1.15)
Pentru fiecare i putem interpreta aceast relaie ca pe un produs scalar al cuvntului format prin puterile
lui Di sau (Ei) i cuvntul de cod:
>D
i n -1
L D i 1
v n -1
M
v1
v0
D i 0 @
(3.1.16)
M
2 t 1n -1
2t -1
0
L D
D v 0 0
D
(3.1.17)
D n -1
L
D2
D1 D 0
D 3 n -1
L
D6
D3 D0
H
M
D 2t -1 n -1 L D 2t -1 2 D 2t -1 D 0
(3.1.18)
Aceast matrice este format din elementele GF(2q) i are t linii i n coloane. Fiecare element
poate fi exprimat printr-un cuvnt binar din q bii i deci vom putea scrie matricea H i sub forma
binar dispunnd vertical cuvintele binare care nlocuiesc puterile lui D. Forma binar a matricii H va
avea astfel qt linii i tot n coloane.
Exemplul 1:
Proiectarea unui cod BCH de lungime n = 15 i corectnd 2 erori cu determinarea polinomului
generator i a relaiilor de codare.
n = 2q 1 = 15 q = 4 extensia GF(24)
Elementele lui GF(2q) sunt clase de resturi modulo p(x) un polinom primitiv de gradul q = 4.
Un polinom p(x) este primitiv dac este ireductibil i binomul xn + 1 pe care p(x) l divide are cel
puin gradul n = 2q 1. Fie acest polinom primitiv p(x) = x4 + x + 1. Putem s constatm c x4 + x + 1
divide pe x15 + 1 (n = 2q 1 = 24 1 = 15), dar nu divide nici un xn + 1 cu 1 e n 15 deci este primitiv.
Se tie c pentru orice cmp Galois Dn = 1, deci la noi D15 = 1.
Cmpul GF(24) generat de p(x) = x4 + x + 1 obinut printr-o rdcin primitiv D a lui x4 + x + 1 cu
relaia D4 = D + 1 este cel dat n Anexa:
30
Pentru t = 2 se aleg rdcinile E1 = D si E3 = D3, suntem n cazul binar i alegem doar rdcinile
impare pn la ordinul 2t-1 = 4-1 = 3).
Polinoamele minimale vor fi conform relaiei (3.1.14):
m1(x) = (x + D)(x + D2)(x + D4)(x + D8) = x4 + x3(1 + D2 + D2 + 1 + D + D) + x2(1+ D
+ D2 + 1+ D + D2 + D3 + D2 + D3 +D + D3 + D3 + D + D2) + x(1 + D3 + D + D2 + D3 + 1 + D2 + D3 + 1 +
D + D3) + D15 = x4 + x + 1
m3(x) = (x + D3)(x + D6)(x + D12)(x + D24) = x4 + x3(D24 + D12 + D6 + D3) + x2(D36 +
D + D + D + D15 + D9) + x(D42 + D39 + D33 + D21) + D45 = x4 + x3 + x2 + x + 1
30
18
27
n aceste dou relaii puterile lui D mai mari dect 15 s-au exprimat n funcie de
D , iar suma s-a efectuat modulo doi.
Cele dou polinoame fiind prime ntre ele i folosind relaia (3.1.13), g(x ) se obine:
15
v = v14v13v12v11v10v9v8v7v6v5v4v3v2v1v0
unde primii 7 sunt biii de informaie i ultimii 8 cei de control.
Matricea de control H va avea 2 linii (t = 2) i 15 coloane (n = 15):
D 14 D 13 D 12 D 11 D 10 D 9 D 8 D 7 D 6 D 5 D 4 D
D 42 D 39 D 36 D 33 D 30 D 27 D 24 D 21 D 18 D 15 D 12 D
3
9
D
D
2
6
D 1 1
D 3 1
Lund puterile lui D modulo 15 i innd cont c D15 = 1 cu ajutorul tabelului cmpului GF(24) obinem
exprimarea binar a lui H:
1
0
0
1
H
1
1
1
1
1
1
0
1
1
0
1
0
1
1
1
1
1
1
0
0
1
1
1
0
1
0
0
0
0
1
1
1
0
0
0
1
1
0
1
0
1
1
1
1
0
1
0
1
1
0
1
0
1
0
1
1
1
1
0
0
1
1
0
0
1
0
0
0
0
1
1
0
0
0
0
1
0
0
1
1
1
1
1
1
1
0
0
0
1
0
1
0
0
1
0
0
1
1
0
0
0
0
1
0
1
0
0
0
0
0
0
1
0
0
0
1
Decodarea BCH
n cazul codurilor ciclice binare pentru a putea corecta erori este suficient s determinm
poziia acestora din expresia sindromului. Modul n care poziia erorilor poate fi gsit cu ajutorul
sindromului rezult din prezentarea urmtoare.
Un cod ciclic corector de t erori are cuvinte de cod care au un numr r = 2t de rdcini Ei GF(2q),
Ei=Di:
v(Ei)= v(Di) = 0
(3.1.19)
La recepie trebuie s verificm legea de codare dat de relaia (3.1.15). n cazul n care avem
erori de tip aditiv putem exprima aceast lege sub forma:
r(Ei) = u(Ei) + e(Ei) = e(Ei) = e(Di) = Si
(3.1.20)
unde e(Ei) este eroarea i Si este sindromul, iar i = 1, 3, ..., 2t-1 n cazul codurilor binare.
Pentru a vedea cum putem gsi poziia erorii cu ajutorul sindromului lum un mic exemplu:
Presupunem un cuvnt oarecare care are erori pe dou poziii de exemplu 1 i 4 deci e(x)=x4+x.
innd cont de relaia (3.1.20) vom avea sindromul:
Si = e(Di) = (Di)1 + (Di)4 = (D1)i + (D4)i = X 1i X i2
Expresia care indic poziia erorii s-a notat cu Xk - locatorul erorii:
Xk = Dj , k = 1, ... t i j = 0, ... n-1
(3.1.21)
Deci avem atia locatori cte erori (n numr de t), iar erorile pot aprea pe orice poziie n
cadrul cuvntului (de la 0 la n-1).
Deci putem exprima sindromul Si sub forma:
Si
X ik
(3.1.22)
k 1
Aceast relaie ne indic un sistem de ecuaii neliniare care are ca necunoscute pe Xk (adic
locatorii).
Pentru realizarea decodrii va fi prezentat algoritmul Peterson cu cutare Chien care const n:
1r Calcularea sindromului erorii
t
i X ik
r D
Si
cu i 1 , 3, ... 2t -1
k 1
2r Cu ajutorul locatorilor putem forma un polinom al erorilor care are ca rdcini locatorii:
V x
xX k
x t V 1 x t -1 ... V
(3.1.23)
k 1
32
(3.1.24)
k 1
k 1
k 1
(3.1.25)
S t i V 1 S t i-1 ... V t S i
(3.1.26)
Aceast ecuaie este un sistem liniar de t ecuaii cu t necunoscute care se poate rezolva aplicnd
regula lui Cramer.
Pentru codurile BCH folosind i relaia S 2k S 2k expresiile coeficienilor Vi n funcie de Si pentru un
numr de 1, 2 sau 3 erori sunt:
Tabelul 3.1.1
t
1
2
Vi
V1 = S1
V1 = S1
S 3 S 13
V2
S1
V1 = S1
S 12 S 3 S 5
3
V2
S 13 S 3
S 13 S 3 S 1 V
V3
V i X -ki
(3.1.27)
i 1
i 1
i 1
V i D -i n - j 1 V i D
t
V i 1 D
n
D
i 1
- i n
i j
1
(3.1.28)
i j
33
V iD
i j
1 cu j 1,...n
(3.1.29)
i 1
S 3 S 13
S1
= D20 = D5
n calculele anterioare am utilizat valorile pentru puterile lui D din tabelul 1 i puterile care
depesc D15 le-am exprimat in funcie de aceasta innd cont c D15 = 1.
Folosim relaia de cutare (3.1.29) i avem:
j = 1 V1D11 + V2D21 = D10D + D5D2 = D + D2 + D3 + 1 + D + D3 = 1 + D2 = D8
j = 2 V1D12 + V2D22 = D10D2 + D5D4 = D8
j = 3 V1D13 + V2D23 = D10D3 + D5D6 = D4
j = 4 V1D14 + V2D24 = D10D4 + D5D8 = D2
j = 5 V1D15 + V2D25 = D10D5 + D5D10 = 0
j = 6 V1D16 + V2D26 = D10D6 + D5D12 = D5
j = 7 V1D17 + V2D27 = D10D7 + D5D14 = D10
j = 8 V1D18 + V2D28 = D10D8 + D5D16 = D2
j = 9 V1D19 + V2D29 = D10D9 + D5D18 = D5
j = 10 V1D110 + V2D210 = D10D10 + D5D20 = 1 deci este eronat simbolul n - j = 15 10 = 5 (r5)
j = 11 V1D111 + V2D211 = D10D11 + D5D22 = D4
j = 12 V1D112 + V2D212 = D10D12 + D5D24 = D
j = 13 V1D113 + V2D213 = D10D13 + D5D26 = D10
j = 14 V1D114 + V2D214 = D10D14 + D5D28 = D
j = 15 V1D115 + V2D215 = D10D15 + D5D30 = 1 deci este eronat simbolul n - j = 15 15 = 0 (r0)
34
Codurile Reed-Solomon (RS) fac parte din categoria codurilor ciclice, ns sunt coduri
nebinare. Spre deosebire de celelalte coduri ciclice, alfabetul codului RS nu este cmpul binar ^0, 1`,
ci un cmp finit de ordin superior, numit cmp Galois i care va fi descris n Anexa. n acest fel,
cuvintele codului RS nu sunt secvene (succesiuni) de bii, ci de caractere. Aceste caractere pot fi
reprezentate, la rndul lor, prin secvene binare, ns sunt indivizibile din punct de vedere al codrii i
decodrii Reed-Solomon.
Structural, cuvintele de cod RS au aceeai alctuire ca i cele de cod ciclic:
v = vn-1vn-2 ... v1v0
(3.2.1)
(3.2.2)
unde g(x) este polinomul generator al codului, al crui construcie este prezentat mai jos, iar
i(x) = vn-1xk-1 + vn-2xk-2 + ... + vk+1x + vk
(3.2.3)
35
(3.2.4)
(3.2.5)
atunci informaia necesar pentru a preciza un caracter eronat ntre cele n este:
ip1 = -log2(1/n)
(3.2.6)
(3.2.7)
Aceast informaie poate fi coninut de un caracter din GF(2q). Deasemenea i valoarea erorii, H, poate
s fie orice caracter din GF(2q):
w=v+H
(3.2.8)
log 2
1
C
2
n 1
log 2
(n 1) n
2
log 2 (n 1) log 2 n 1
(3.2.9)
Cele 2t caractere de informaie necesare soluionrii problemei coreciei se afl din 2t ecuaii,
care nseamn tot attea legturi (proprieti) pentru cuvntul receptionat. Aceste 2t proprieti pentru
cuvintele de cod RS sunt generate prin relaia de codare (3.2.2). Prin aceast relaie v(x) devine
multiplul lui g(x), ceea ce nseamn c rdcinile lui g vor fi i rdcini pentru v. Rezult necesitatea ca
g s aib 2t rdcini. Aceste rdcini pot fi oricare dintre cele 2q elemente ale cmpului GF(2q). Vom
alege pentru g rdcinile D, D2, D3, ... D2t, datorit simplitii i simetriei:
g(x) = (x + D)(x + D2) ... (x + D2t) = xm + gm-1xm-1 + ... + g1x + g0
(3.2.10)
Aadar cuvntul de cod RS, v, rezultat prin codarea cu ajutorul relaiei (3.2.2), n care g este dat
de (3.2.10), are proprietatea c elementele D, D2, D3, ... D2t sunt rdcini pentru polinomul ataat, v(x).
36
(3.2.11)
(3.2.12)
(3.2.13)
Conform relaiei (3.2.10) g(x) este un polinom de grad k = 2t > 2. Prin construcie, cuvintele de
cod RS au proprietatea c polinoamele ataate lor sunt divizibile cu g(x), adic elementele cmpului
GF(22) D, D2, , D2t sunt rdcini att pentru g(x) ct i pentru orice cuvnt de cod v(x):
g(Dj) = 0
v(Dj) = 0
(3.2.14)
j = 12t
37
sau
(3.2.15)
j=12t
(3.2.16)
Evident c dac nu exist erori Sj = 0. n acest caz se trece la pasul VI. Evident concluzia poate fi
eronat. Un exemplu n argumentarea acestei afirmaii este situaia: H = cuvnt de cod. Dar n acest caz
numrul erorilor depete puterea de corecie de t erori.
Pasul II
Dac exist erori n limitele corectabile (numrul erorilor este mai mic sau egal cu t) atunci exist
coeficieni sindrom diferii de zero. Fie cuvntul eroare n forma:
t
H x
ri
x ki
(3.2.17)
i 1
unde:
Dr
Yi
(3.2.18)
Dk
Xi
(3.2.19)
reprezint locatorul erorii ki {0, 1, 2, , n-1}. Cu aceste notaii coeficienii sindrom au expresiile:
Yi D j
Sj
i 1
ki
Y X
i
j
i
j = 1z2t
(3.2.20)
i 1
V x
x X
i
xt V
x t 1 ... V t 1 x V t
(3.2.21)
i 1
0,
i = 1zt
(3.2.22)
i 1
i 1
Yi X it k V 1 Yi X it k 1 ... V t 1 Yi X ik 1
i 1
V t Yi X
k
i
i 1
38
(3.2.23)
(3.2.24)
St
... S 2
V
A s t 1
; V 2 ; Bs t 2
...
...
...
... ... ...
S 2t 1 S 2t 2 ... S t
V t
S 2t
Vi) a crui
sub forma
(3.2.25)
(3.2.26)
A s-1 B s
(3.2.27)
Obs: Toate calculele trebuiesc fcute n cmpul GF(2), att coeficienii sindrom, Sj, ct i coeficienii
V fiind elemente ale respectivului cmp.
X i j
(3.2.28)
j 1
tiind c Xi este de forma X i D k i unde ki indic rangul pe care l ocup eroarea (ex: ki = n-1 este
prima poziie) se vor putea afla locatorii erorilor printr-o operaie de cutare:
t
D k j
k = 1, 2, , n
(3.2.29)
j 1
Acei k pentru care (3.2.29) este o identitate, indic prezena erorii pe poziia:
r=n-k
(3.2.30)
39
Xr= Dr
(3.2.31)
V j D jr
j 1
V j D n jD jr
j 1
V j D (n j)r
j 1
D k jr
j 1
Pasul IV
Dispunnd de poziiile erorilor dispunem implicit de numrul lor. Reinem c problema are
soluie doar dac e < t. Cunoscnd aadar e locatori ai erorilor n forma X i D k i , i = 1e, din sistemul
de ecuaii (3.2.20) se rein e ecuaii n vederea aflrii valorilor Yi pentru cele e erori. Acest sistem este
compatibil unic determinat. Rezolvarea sa conduce la aflarea celor e valori necesare Yi.
Pasul V
w k i Yi ,
i =1e
(3.2.32)
Pasul VI
Se face selecia caracterelor de informaie i livrarea lor la ieire.
Desfurarea lucrrii:
a) Rulai programul pe calculator, utiliznd opiunea demonstrativ att pentru algoritmul de codare ct
i pentru cel de decodare. Se urmrete pas cu pas algoritmul de codare existnd posibilitatea de a
alege un cod corector de t = 1, sau 2 erori. Urmrii cu atenie la fiecare pas mesajele calculatorului
care va vor ghida n rularea corect a programului. De asemenea se urmrete pas cu pas algoritmul de
decodare.
b) Realizai o codare a unui cuvnt n cazul unui cod corector de t = 1, sau 2 erori alegnd irul de
caractere de informaie de lungimea corespunztoare. Pentru cazul t = 1 i 2 efectuai apoi decodarea
unui cuvntului de cod. Verificai apoi calculele cu ajutorul programului de pe calculator.
40
(4.1)
i0 k i1k i2k
L
L
L
L
i j1 L
i j 2 L
,
L L
i jk L
i js ^0,1` j
0, g, s 1, k
(4.2)
a 01
a
02
L
a 0 k
L
a0n
a11
a12
L
a1k
a 21 L a j1
a 22 L a j 2
L L L
a 2 k L a jk
L
a1n
L L L
a 2 n L a jn
L
L
L
,
L
L
a js ^0,1` j
0, g, s 1, n
(4.3)
Matricea I conine practic biii de informaie, n ordinea i01 i02 K i 0k i11 K , iar matricea V
secvena codat : a 01 a 02 K a 0n a 11 K . Dac a js | i js pentru orice j pozitiv i pentru orice s 1 z k ,
atunci codul se numete sistematic. Fcnd apel la o reprezentare polinomial, matricile I i V se pot
scrie ca :
g
s
a s1D
g
s
sg0
s
i s1D
a
D
sg0
s 0 s2
s
I D s0i s 2 D , V D g M
(4.4)
s
M
a sk D
g
s 0
s
i sk D
g M
s 0
a Ds
s 0 sn
41
(4.5)
g n1 D g n1 D L g nk D
(4.6)
a js ( D)
(4.7)
b js ( D)
unde polinoamele ajs i bjs sunt finite. Deci, dac exist cel puin un polinom bjs(D)1, atunci codul este
recursiv.
Lungimea de constrngere este unul dintre parametri importani ai codurilor convoluionale. O
alt definiie a sa este dat n relaia de mai jos:
K
1 max grad ^a j , s D , b j , s D `
(4.8)
j ,s
ik
ik-1
ik-2
a1k
a k2
42
1
2
ik j g j , a k
2
ik j g j
j 0
(4.9)
j 0
>g , g , g @ >1,0,1@
>g , g , g @ >1,1,1@
g1
g2
1
0
1
1
2
0
2
1
1
2
(4.10)
2
2
g 01 g11 D g 12 D 2
g 2 p G 2 ( D)
g 02 g12 D g 22 D 2
i:
(2.11)
G 1 D 1 D 2
(2.12)
G 2 D 1 D D 2
G2
(2.13)
n Fig.4.2 a) se prezint schema general a unui codor recursiv sistematic, RSC (Recursive
Systematic Code), iar n figura Fig. 4.2 b) un caz particular al acesteia.
i
i
b1
+
a0
b2
bM-1
a1
bM
a2
aM-1
aM
c
a)
b)
Fig. 4.2. Cod convoluional recursiv sistematic: a) schema general, b) exemplu (R=1/2, K=3).
1 D2
1,
2
1 D D
43
(2.14)
n figura urmtoare sunt prezentate dou exemple de codoare sistematice i nerecursive, NRSC (NonRecursive Systematic Code), considerndu-se randamentul R=1/2 i lungimea de constrngere K=3:
i
i
D
i
D
a)
b)
Fig. 4.3 Coduri convoluionale sistematic i nerecursiv, R=1/2, K=3, G=1+ D + D 2 .
Diagrame de stri
00
01
00
11
11
a1k , a k2
01
ik=1
10
a1k , a k2
ik=0
01
00
00
11
10
00
11
11
10
01
10
01
11
00
11
01
01
01
10
10
00
01
00
10
00
01
10
00
11
01
11
01
11
10
11
10
a)
b)
c)
44
Diagrama trellis
00
00
00
00
11
11
11
11
11
01
11
00
01
01
10
t=1
a1k , a k2
10
10
t=2
ik=0
10
01
11
t=0
ik=1
01
10
10
a1k , a k2
00
01
t=3
t=4
00
11
10
01
00
01
10
11
00
11
11
00
calea
calea
calea
calea
1
2
3
4
45
00
0/00
00
0/00
00
10
00
1/11
1/11
1/11
0/00
10
10
0/00
1/11
0/01
10
01
01
0/01
1/11
11
i:
v:
11
1
11
11
0
00
1/10
0
01
0/01
1/11
11
1/10
1/11
11
1
11
10
0/01
10
1/10
1
11
0/01
11
1/10
1
10
1/11
11
10
00
0/01
0/00
01
0/01
1/10
01
10
1/10
0/00
01
0/01
0/00
1/10
0/00
1/11
00
1/11
1/10
01
0/01
0/00
1/11
0/00
01
0/01
00
1/10
1/10
01
0/01
10
0/00
1/11
0/00
0/00
01
00
1/11
1/10
0/00
0/00
00
1/11
11
01
0/01
1/10
1/11
11
01
Fig. 4.7. Utilizarea diagramei trellis n cazul codrii secvenei de informaie i=100111, considernd diagrama de stri din
Fig. 4.5. c).
Pentru prezentarea acestui algoritm se consider un canal binar simetric (fr memorie), intrarea
decodorului fiind alctuit dintr-o secven de simboluri binare.
n fiecare moment dou ramuri, aparinnd la dou ci diferite, converg spre fiecare nod al trellislui (Fig.4.6). Din aceste dou ci una este mai probabil, altfel spus, se gsete la cea mai mic distan
Hamming fa de secvena recepionat, dect cealalt cale. Distana fiind o funcional aditiv, n
fiecare nod se pstreaz calea cea mai probabil numit cale supravieuitoare. Dac se obin dou ci
cu aceeai distan Hamming, doar o singur cale este pastrat, alegndu-se n mod arbitrar una din
cele dou ci posibile.
n figura urmtoare se prezint un exemplu de decodare pentru codorul reprezentat n Fig. 4.3.
b), cu diagrama de stri reprezentat n Fig. 4.5. c). Calea rezultant este marcat cu culoare roie.
46
w : 10
10
01
1
00
0/00
00
1
10
2
0/00
1/11
1/11
00
10
10
01
11
0/01
1/10
2
00
0
1/11
0/00
0/01
11
10
01
1/11
v v1/10
1/11
00
v 5
vv
1/10
0/00
11
1/10
1/11
11
1/10
v1/10 4
0/00
v 4
01
0/01
1/11
11
1/10
1/11
10
v1/10 6
5
0/00
0/00
5
0/01
01
0/01
1/11
11
10
1/10
0/00
1/10
7
01
(0)
00
0/01
6
10
1
00
5
11
1
10
v
0/01
4
0/00
1/11
0/01
4
0/01
v 6
01
4
11
1
00
4
3
1/11
10
01
6
0/00
0/01
01
1/11
1/10
3
01
0
01
5
0/00
00
0/01
0/00
Tact:0
v: 11
i: 1
10
10
4
0/00
0/01
01
11
11
00
v v1/10
1/11
11
3
0/00
1/11
0/00
01
11
01
4
1/11
11
8
01
(0)
Fig. 4.8. Utilizarea diagramei trellis n cazul decodrii secvenei w=A7E5H, considernd diagrama de stri din Fig. 4.5. c).
Desfurarea lucrrii:
a) Rulai programul pe calculator, utiliznd opiunea demonstrativ att pentru algoritmul de codare ct
i pentru cel de decodare.
b) Realizai o codare i o decodare, folosind algoritmul de decodare Viterbi. Verificai apoi calculele cu
ajutorul programului de pe calculator.
47
Bibliografie
[1] P. Elias, Error-free Coding, IRE Trans. Inform. Theory, vol IT-4, pp.29-37, 1954,
[2] Chien, R, Cyclic decoding procedures for Bose-Chaudhuri-Hocquenghem codes, IEEE
Transactions on Information Theory, Volume 10, Issue 4, Page(s): 357 - 363, Oct 1964,
[3] A. Glavieux, M. Joindot, Communications numriques. Introduction, Masson, Paris,
1996,
[4] M. E. Borda, Teoria transmiterii informaiei, Editura Dacia, Cluj-Napoca, 1999,
[5] G. Wade, Coding Techniques-An Introduction to Compresion and Error Control,
Creative Print and Design, Ebbw Vale, Geat Britain, 2000,
[6] J. Proakis, Digital Communications, 4th Ed., McGraw Hill, New York, 2000,
[7] H. Balt, M. Kovaci, A Comparasion Between Weight Spectrum of Different
Convolutional Code Types, conferin Oradea, 2004.
48