Sunteți pe pagina 1din 249

Prelegerea 1

Codificare si decodificare
1.1

Codificare

Definitia 1.1 Fiind date multimile A (alfabetul sursa) si B (alfabetul cod), o codificare este o aplicatie injectiv
a K : A B.
Elementele multimii K(A) B se numesc cuvinte-cod, iar K(A) se numeste cod.
Daca B are numai doua simboluri, codificarea K se numeste binara.
Exemplul 1.1 Printre secventele binare de lungime 5, numarul celor care au doi
de 1 este C52 = 10. Ele pot fi folosite pentru a codifica cifrele din scrierea zecimal
a
(Tabelul 1.1).
Tabelul 1.1: Codul doi-din-cinci
Simbol zecimal
1
2
3
4
5
6
7
8
9
0

Cuv
ant cod
11000
10100
01100
10010
01010
00110
10001
01001
00101
00011

Mesajul 00 17300 are codul 110001000101100. De remarcat ca ntre cuvintele cod


nu se lasa nici un spatiu, deoarece spatiu poate fi el nsusi un simbol-cod. Astfel
de exemplu, codul Morse are alfabetul B = {., , spatiu}.
Decodificarea se face foarte simplu: se mparte mesajul codificat n grupe de cate
cinci caractere si se vede cifra din tabel corespunz
atoare grupei respective. Repartizarea cuvintelor cod a fost facut
a pentru a realiza si o decodificare pe baza unei
1

PRELEGEREA 1. CODIFICARE SI DECODIFICARE

formule. Astfel, daca a0 a1 a2 a3 a4 este cuvantul - cod, el corespunde cifrei k data de


algoritmul:
begin
x := a1 + 2a2 + 4a3 + 7a4 ;
if x = 11 then k := 0 else k := x;
end.
Definitia 1.2 Pentru o codificare K : A B , se numeste codificare a mesajelor
(textului) sursa aplicatia K : A B definita recursiv prin:
K () =

( este cuvantul vid);

K (a) = K (a)K (), a A, A .


Definitia 1.3 Codificarea K este unic decodabil
a daca K este injectiv
a.
Codificarea data n Exemplul 1.1 este - dupa cum s-a observat - unic decodabila.
Acest lucru nu este totdeauna posibil. Daca luam de exemplu codificarea
K(a) = 00,

K(b) = 10,

K(c) = 101,

K(d) = 110,

K(e) = 1001,

ea nu este unic decodabila; astfel K (bd) = K (cb) = 101110 .


Definitia 1.4
1. O codificare K : A B n care toate cuvintele cod au lungimea n se numeste codificare-bloc de lungime n, iar K(A) este un cod-bloc
de lungime n.
2. O codificare K : A B se numeste instantanee daca K(A) are proprietatea
prefixului (daca , K(B) atunci = ).
Codul definit n Exemplul 1.1 este un cod - bloc de lungime 5.
Codurile bloc sunt eficiente n cazul cand simbolurile sursa au frecvente egale de
aparitie; n caz contrar, ele devin greoaie si sunt preferabile codurile instantanee cu
lungimi variabile ale cuvintelor cod.
Exemplul 1.2 Codul Morse, dat n Tabelul 1.2 este un cod instantaneu cu alfabetul
cod B = {., , }. Deoarece spatiul este folosit numai la sfarsitul fiec
arui cuvant cod, procedura de decodificare este simpla: orice cuvant - cod se afla ntre doua
spatii, de la nceputul mesajului pan
a la primul spatiu, sau de la ultimul spatiu pan
a
la sfarsit. Motivul pentru care nu se foloseste un cod - bloc este simplu: frecventele
literelor ntr-o limba difera foarte mult.
Exemplul 1.3 Un alt exemplu de cod - bloc este codul octal:
0
1
2
3

000
001
010
011

4
5
6
7

100
101
110
111

1.2. EXEMPLE DE CODURI - BLOC IMPORTANTE


Tabelul 1.2: Codul Morse
A . B -. . .
C -. -.
D -. .
E .

F
G
H
I
J

.
.
.
.

.
.
.
-

-.
.
. .
--

K
L
M
N
O

.
-

. -. .
.
--

P
Q
R
S
T

.
.
.
-

--.
-. -.
. .

U
V
W
X
Y
Z

.
.
.
-

.
.
.
.
-

.
.
.

Exemplul 1.4 Sa presupunem ca vrem sa construim un cod binar pentru alfabetul


{0, 1, 2, 3} si observam ca 0 apare n mesajele sursa mai des dec
at orice alt simbol.
Atunci urmatoarea schema de codificare pare rezonabil
a:
K(0) = 0,

K(1) = 01,

K(2) = 011,

K(3) = 111.

Decodificarea sa este foarte simpla: se aplica recursiv regula:


Se consider
a sufixul 01k ; valoarea lui k reprezint
a numarul codificat.

Totusi aceast
a codificare nu este instantanee. Intr-adev
ar, daca se primeste un
mesaj lung de forma
0111111111111111 . . .
nu vom sti daca primul simbol sursa este 0, 1 sau 2 pan
a nu se termina mesajul.

1.2

Exemple de coduri - bloc importante

Codurile binare sunt de obicei lungi si deci greu de manipulat. Este deci convenabil
sa grupam simbolurile binare formand alfabete mai complexe.
Astfel, formand grupuri de cate trei simboluri, se obtin codurile octale (Exemplul
1.3). Reprezentarea n octal se indica de obicei prin indicele 8 asezat la sfarsit. De
exemplu,
(01)8 = 000001
In mod similar, prin gruparea a cate patru simboluri binare se obtine codul hexazecimal.
Un cod foarte important folosit n reprezentarea standard a simbolurilor alfabetice si numerice este codul ASCII (American Standard Code for Information
Interchange) - Tabelul 1.3.

PRELEGEREA 1. CODIFICARE SI DECODIFICARE


Tabelul 1.3: Codul ASCII (7 biti de informatie)
Simbol
surs
a
@
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
[
]

Cod
1(00)8
1(01)8
1(02)8
1(03)8
1(04)8
1(05)8
1(06)8
1(07)8
1(10)8
1(11)8
1(12)8
1(13)8
1(14)8
1(15)8
1(16)8
1(17)8
1(20)8
1(21)8
1(22)8
1(23)8
1(24)8
1(25)8
1(26)8
1(27)8
1(30)8
1(31)8
1(32)8
1(33)8
1(34)8
1(35)8
1(36)8
1(37)8

Simbol
surs
a

a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
{

}
DEL

Cod
1(40)8
1(41)8
1(42)8
1(43)8
1(44)8
1(45)8
1(46)8
1(47)8
1(50)8
1(51)8
1(52)8
1(53)8
1(54)8
1(55)8
1(56)8
1(57)8
1(60)8
1(61)8
1(62)8
1(63)8
1(64)8
1(65)8
1(66)8
1(67)8
1(70)8
1(71)8
1(72)8
1(73)8
1(74)8
1(75)8
1(76)8
1(77)8

Simbol Cod
surs
a
NUL
0(00)8
SOH
0(01)8
STX
0(02)8
ETX
0(03)8
EOT
0(04)8
ENQ
0(05)8
ACK
0(06)8
BEL
0(07)8
BS
0(10)8
HT
0(11)8
LF
0(12)8
VT
0(13)8
FF
0(14)8
CR
0(15)8
SO
0(16)8
SI
0(17)8
DLE
0(20)8
DCI
0(21)8
DC2
0(22)8
DC3
0(23)8
DC4
0(24)8
NAK
0(25)8
SYN
0(26)8
ETB
0(27)8
CAN
0(30)8
EM
0(31)8
SUB
0(32)8
ESC
0(33)8
FS
0(34)8
GS
0(35)8
RS
0(36)8
US
0(37)8

Simbol Cod
surs
a
SP
0(40)8
!
0(41)8

0(42)8
#
0(43)8
$
0(44)8
%
0(45)8
&
0(46)8

0(47)8
(
0(50)8
)
0(51)8
*
0(52)8
+
0(53)8

0(54)8
0(55)8
.
0(56)8
/
0(57)8
0
0(60)8
1
0(61)8
2
0(62)8
3
0(63)8
4
0(64)8
5
0(65)8
6
0(66)8
7
0(67)8
8
0(70)8
9
0(71)8
:
0(72)8
;
0(73)8

0(74)8
=
0(75)8

0(76)8
?
0(77)8

El are 27 = 128 simboluri sursa codificate n secvente binare de lungime 8;


primele 7 contin infomatia, iar ultimul - numit bit de paritate da un prim control
asupra corectitudinii secventei. Valoarea acestui caracter este suma modulo 2 a
primilor sapte biti.
De exemplu, litera A, va avea codul 10000010; primele sapte simboluri provin
din Tabelul 1.3 iar ultimul are valoarea 0 deoarece anterior au fost doua (numar
par) simboluri binare cu valoarea 1.
Un ultim cod, folosit international pentru toate cartile este International Standard Book Number (ISBN). El este un cod - bloc de lungime 10 (lungimea cuvintelor
- cod creste prin folosirea simbolului - pe diverse pozitii, dar acest caracter este ig-

1.3. CONSTRUCT
IA CODURILOR INSTANTANEE

norat 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 cu bitul de paritate definit anterior) si definit
astfel:
Pentru codul ISBN a1 a2 . . . a10 ,

10
X

ia11i = 0 (mod 11).

i=1

Astfel,n ISBN -ul de sus,


10 0 + 9 1 + 8 3 + 7 2 + 6 8 + 5 3 + 4 7 + 3 9 + 2 6 + 1 10 = 187 0 (mod 11)
Unele publicatii au codul de identificare de trei cifre (de exemplu Wiley-Interscience are 471); n acest caz numarul pentru fiecare publicatie are numai cinci
simboluri. Pentru Romania, codul de tara este 973.

1.3

Constructia codurilor instantanee

Ne punem problema construirii unui cod binar instantaneu peste alfabetul sursa
A = {a1 , . . . , an }.
Initial se specifica lungimile d1 , d2 , . . . , dn ale cuvintelor cod. Fara a micsora
generalitatea, putem presupune d1 d2 . . . dn .
Se alege un cuvant - cod binar arbitrar K(a1 ) de lungime d1 .
Se alege un cuvant - cod arbitrar K(a2 ) din multimea cuvintelor binare de
lungime d2 care nu au pe K(a1 ) ca prefix. Aceasta este totdeauna posibil pentru ca:
Numarul tuturor secventelor binare de lungime d2 este 2d2 ; dintre acestea, numarul celor care nu au prefixul K(a1 ) este 2d2 d1 . Cum 2d2 2d2 d1 + 1, exista cel
putin o alegere posibila pentru K(a2 ) de lungime d2 .
Va trebui sa selectam n continuare un cuvant de lungime d3 care nu are ca prefix
K(a1 ) sau K(a2 ). Deci, din cele 2d3 secvente binare posibile trebuiesc eliminate cele
2d3 d1 secvente cu prefixul K(a1 ) si 2d3 d2 secvente cu prefixul K(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 inegalitatea
1 2d1 + 2d2 + . . . + 2dn
din care rezulta constructia. De remarcat ca ea este o conditie necesara si suficienta
pentru constructia codurilor instantanee.

PRELEGEREA 1. CODIFICARE SI DECODIFICARE

Teorema 1.1 Fiind dat un alfabet sursa de n simboluri si un alfabet cod de k simboluri, se poate construi un cod instantaneu cu lungimile cuvintelor cod d1 , d2 , . . . , dn
dac
a si numai daca este verificata inegalitatea (Kraft):
k d1 + k d2 + . . . + k dn 1.
Demonstratie: Fie A = {a1 , a2 , . . . , an } si putem presupune relatia d1 d2 . . .
dn . Construim codificarea instantanee K prin inductie astfel:
Se alege K(a1 ) arbitrar.
Presupunem ca au fost alese K(a1 ), K(a2 ), . . . K(as1 ). Atunci se va alege un
cuvant arbitrar K(as ) care nu are ca prefix nici unul din cuvintele selectate
anterior. Aceasta este posibil deoarece numarul cuvintelor cu prefixul K(ai )
este 2ds di (1 i s 1); deci alegerea poate fi facuta din
k ds

s1
X

k ds di elemente.

i=1

Din inegalitatea lui Kraft avem


1

s1
X

k di k ds

i=1

care, prin multiplicare cu k ds conduce la


k ds

s1
X

k ds di 1.

i=1

Afirmatia reciproca se demonstreaza similar (pentru k = 2 ea a fost data anterior).


2
Teorema 1.2 (McMillan) Orice codificare unic decodabil
a satisface inegalitatea lui
Kraft.
Demonstratie: Fie K o codificare unic decodabila. Notam cu di lungimea cuvantului
cod K(ai ), (1 i n). Se observa ca j, (j 1) se pot forma k j cuvinte de lungime
j peste alfabetul - cod cu k simboluri. Din proprietatea de unic decodabilitate,
numarul mesajelor sursa = ai1 ai2 . . . air al caror cod are lungimea 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 =
cr
vom arata ca r 1, este marginit.
r

n
X
i=1

k di este cel mult 1. Pentru aceasta,

1.4. CODURI HUFFMAN

Sa calculam puterile lui c:


c2 =

n
X

! n
n
X
X
k di k dj =
k (di +dj )

i=1

j=1

si, n general,

n
X

cr =

i,j=1

k (di1 +di2 +...+dir )

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
r
r
este marginit).
2

Deci,

Corolarul 1.1 Pentru orice cod unic decodabil exista un cod instantaneu care are
toate cuvintele - cod de lungimi egale.
Demonstratie: Rezulta din demonstratia teoremei precedente.
Exemplul 1.5 Sa consider
am alfabetul sursa = {a, b, c} si alfabetul - cod
B = {0, 1}; deci n = |A| = 3, k = |B| = 2. Vrem sa construim o codificare
instantanee K : A B care are toate cuvintele - cod de lungime d. Inegalitatea
1
Kraft va da 2d + 2d + 2d 1, deci 2d . Cel mai mic d care o verifica este
3
d = 2. Deci orice multime de 3 secvente binare de lungime 2 va putea fi folosita
drept cod. Sunt 4 astfel de multimi:
{00, 01, 10},

1.4

{00, 01, 11},

{00, 10, 11},

{01, 10, 11}

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 cu 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);
A = {a1 , a2 , . . . , an } este alfabetul sursa(multime ordonat
P = {P (a1 ), P (a2 ), . . . , P (an )} este multimea ordonat
a a probabilit
atilor elementelor lui A, deci

PRELEGEREA 1. CODIFICARE SI DECODIFICARE


0 P (ai ) 1, (1 i n);

n
X

P (ai ) = 1.

i=1

Fie K o codificare a unei surse de informatie. Daca se noteaza cu di = |K(ai )| (||


reprezinta lungimea secventei ), 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 secventelor 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 minima.
Lungimea medie minima a unui cod Huffmann se noteaza cu Lmin (S).
Exemplul 1.6 Sa se determine un cod Huffman binar pentru alfabetul sursa A =
{a, b, c, d, e, f } stiind ca a apare de doua ori mai des dec
at e si e de doua 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 a si unul de lungime doi lui e.
Atunci lungimile cuvintelor cod ramase sunt egale cu 4, iar inegalitatea lui Kraft
este saturat
a: 12 + 212 + 244 = 1. Un astfel de cod se poate construi:
K(a) = 0
K(b) = 1100

K(c) = 1101
K(d) = 1110

K(e) = 10
K(f ) = 1111

Lungimea sa medie este


L = 0.4 + 2 0.2 + 4 4 0.1 = 2.4
Deci, pentru acest exemplu, Lmin (S) 2.4

1.4.1

Constructia codurilor Huffman binare

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
gasi o codificare Huffman pentru sursa redusa
K(a1 ) = 0,

K(a2,3 ) = 1.

dupa care spargem cuvantul cod 1 n doua cuvinte: 10 si 11; n acest fel se obtine
un cod Huffman pentru sursa originala:

1.4. CODURI HUFFMAN

9
a1 a2 a3
0 10 11

In general, fie S o sursa de informatie cu simbolurile {a1 , a2 , . . . , an } ordonate dupa


probabilitati, adica:
P (a1 ) P (a2 ) . . . P (an ).
Contruim 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 care
codul Huffman se poate construi.
Daca se poate gasi o codificare Huffman K pentru sursa redusa S , atunci codul
din Tabelul 1.4 este un cod Huffman pentru S (vom demonstra aceasta afirmatie) .
Tabelul 1.4:
a1
a2
...
an2
an1
an
K (a1 ) K (a2 ) . . . K (an2 ) K (an1,n )0 K (an1,n )1

Lema 1.1
L(K) = L(K ) + P (an1 ) + P (an )
Demonstratie: Fie d1 , d2 , . . . , dn2 , d lungimile cuvintelor cod corespunzatoare lui
K . Atunci lungimile cuvintelor cod pentru K sunt d1 , d2 , . . . , dn2 , d + 1, d + 1.
Efectuand calculele, se obtine:
L(K) =
=

n2
X
i=1
n2
X

di P (ai ) + (d + 1)P (an1 ) + (d + 1)P (an ) =


di P (ai ) + d [P (an1 ) + P (an )] + P (an1 ) + P (an ) =

i=1

= L(K ) + P (an1 ) + P (an ).


Teorema 1.3 Fie K o codificare Huffman pentru o sursa de informatie redus
a S .
Atunci codificarea K definit
a de Tabelul 1.4 este un cod Huffman pentru sursa de
informatie S.
Demonstratie: Fie a1 , a2 , . . . , an simbolurile sursa, ordonate descrescator dupa probabilitate. Deoarece teorema este evidenta pentru P (an ) = 0, vom considera doar
cazul P (an ) > 0. Demonstratia consta din trei pasi:
S admite o codificare Huffman K0 cu lungimile cuvintelor cod ordonate:
d1 d2 . . . dn

(di = |K0 (ai )|, 1 i n).

Pentru a demonstra aceasta, plecam de la un cod Huffman arbitrar K pentru


S. Daca exista un simbol ai astfel ca di > di+1 , notam cu K 0 codificarea

10

PRELEGEREA 1. CODIFICARE SI DECODIFICARE


obtinuta din K prin permutarea cuvintelor cod corespunzatoare lui ai si ai+1 .
K 0 este evident un cod instantaneu, iar diferenta dintre lungimile medii L =
Lmin (al lui K) si L0 (al lui K 0 ) este:
Lmin L0 = [di P (ai ) + di+1 P (ai+1 )] [di+1 P (ai ) + di P (ai+1 )] =
= (di di+1 )[P (ai ) P (ai+1 )].
Aceasta expresie este produsul dintre un numar pozitiv si unul nenegativ, deci
Lmin L0 , iar din proprietatea de minimalitate rezulta Lmin = L0 . Cu alte
cuvinte, K 0 este un alt cod Huffman. Procedeul continua pana se obtine codul
K0 cerut.
S admite o codificare Huffman K1 n care ultimele cuvinte cod, K1 (an1 ) si
K1 (an ) difera doar prin ultimul simbol.
Fie K0 codul Huffman anterior si K0 codul rezultat din K0 eliminand ultimul
simbol din K0 (an ). Lungimea medie a lui K0 va fi evident mai mica decat cea
a lui K0 (pentru ca P (an ) > 0), deci K0 nu poate fi instantaneu. Cuvantul cod
K0 (ai ) = K0 (ai ), (1 i n 1) nu este prefixul nici unui cuvant cod; deci
exista un i (i n 1) astfel ncat K0 (an ) este prefixul lui K0 (ai ). Aceasta
este posibil numai daca di = dn si deci K0 (ai ) difera de K0 (an ) numai prin
ultimul simbol. Daca i = n 1, se ia K1 = K0 . Altfel, se observa ca di = dn
implica di = di+1 = . . . = dn ; deci se pot permuta cuvintele cod definite n K0
pentru ai si an1 . Codul K1 astfel obtinut are aceeasi lungime medie ca si K0 ,
deci este un cod Huffman.
Sa presupunem ca se da o codificare Huffman K pentru sursa redusa S
si definim un cod K pentru S conform Tabelului 1.4. Lungimile lor medii
L(K), L(K ) verifica relatia din Lema 1.1.
Sa folosim acum codul Huffman K1 construit mai sus. Deoarece ultimele doua
cuvinte cod difera numai prin ultimul simbol, K1 poate fi obtinut dintr-un cod
K1 al lui S prin spargerea ultimului cuvant - cod. In plus, K1 este evident
instantaneu. Prin calcule se ajunge la relatia
L(K1 ) L(K1 ) = P (an1 ) + P (an )
Cum avem si L(K) L(K ) = P (an1 ) + P (an ), rezulta
L(K) = L(K1 ) L(K1 ) + L(K ).
Acum, L(K ) = Lmin (S ), deci L(K1 ) + L(K ) 0. Rezulta L(K)
L(K1 ) = Lmin (S). Deci, K este un cod Huffman.
2

1.5. EXERCIT
II

1.5

11

Exercitii

Exercitiul 1.1 Care este cea mai mica lungime a unui cod bloc cu alfabetul sursa
A = {A, B, . . . , Z} si alfabetul cod B = {., , spatiu} (ca la codul Morse).
Exercitiul 1.2 Se defineste codificarea
1 01
2 011
3 10

4 1000
5 1100
6 0111

Este ea unic decodabil


a ? Este instantanee ? Se poate gasi un cod instantaneu cu
aceleasi lungimi ale cuvintelor cod ?
Exercitiul 1.3 Se defineste codificarea
A 1010
B 001
C 101

D 0001
E 1101
F 1011

Este ea unic decodabil


a ? Daca nu, gasiti doua mesaje sursa cu acelasi cod.
Exercitiul 1.4 Este unic decodabil
a codificarea:
0
1
2
3

AA
AABAB
ABBBBB
ABABA

4 ABBAA
5 BABBA
6 BBBAB

7 AAAABB
8 AAAABA
9 AAAAAB

Exercitiul 1.5 Se poate decide unic decodabilitatea codific


arilor
K(a) = 001
K(b) = 1001
K(c) = 0010
K(d) = 1110
K(e) = 1010
K(f ) = 01110
K(g) = 0101

K(a) = 00
K(b) = 10
K(c) = 011
K(d) = 101
K(e) = 111
K(f ) = 110
K(g) = 010

folosind inegalitatea lui Kraft ?


a se construiasc
a un cod binar instantaneu pentru urmatorul alExercitiul 1.6 S
fabet sursa cu lungimile corespunz
atoare ale cuvintelor cod:
Simbol
A B C D E F G H I J K L
Lungime 2 4 7 7 3 4 7 7 3 4 7 7
Exercitiul 1.7 S
a se construiasc
a un cod ternar (trei simboluri cod) instantaneu
pentru urmatorul alfabet sursa, cu lungimile corespunz
atoare ale cuvintelor cod:

12

PRELEGEREA 1. CODIFICARE SI DECODIFICARE


Simbol
1 2 3 4 5 6 7 8 9 0
Lungime 1 3 3 3 3 3 2 2 2 2

Exercitiul 1.8 C
ate simboluri cod sunt necesare pentru ca urmatorul alfabet sursa
s
a 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 stricta, este posibil sa se adauge un nou simbol sursa si sa se extinda
codul dat la un nou cod instantaneu (cu acelasi alfabet cod). Demonstrati aceasta
pentru codul definit la Exercitiul 1.6.

Prelegerea 2
Coduri liniare
2.1

Matrice generatoare

Definitia 2.1 Fie q un numar prim si n N un numar natural nenul. Se numeste


cod liniar orice subspatiu liniar al lui Zqn .
Un subspatiu k-dimensional al lui Zqn se numeste (n, k)- cod liniar peste alfabetul
Zq .
Sa notam n general cu An,k (An,k Zqn ) un (n, k) - cod liniar. Elementele sale se
numesc cuvinte-cod.
Fie n, k N, k < n. O codificare este o aplicatie injectiva : Zqk Zqn , iar
An,k = (Zqk ). Elementele lui Zqk se numesc mesaje de informatie.
Deci, x Zqk este un mesaj de informatie scris cu caractere din alfabetul Zq .
Daca transmitem succesiunea x de semnale printr-un canal de comunicatie, mesajul
este supus diverselor perturbari de canal care-l modifica. Ideea teoriei codurilor
este urmatoarea: n loc de a transmite elementele lui Zqk , sa lungim mesajul
informational scufundand (prin intermediul aplicatiei ) Zqk ntr-un spatiu liniar
Zqn (n > k) astfel ncat cele n k pozitii noi - numite pozitii de control - sa asigure
redondanta necesara refacerii mesajului de informatie initial.
Astfel, cu pretul lungirii mesajului, se castiga protectia fata de (anumite tipuri
de) erori.
Observatii:
Din definitie rezulta ca un cod liniar de lungime n este un set A de cuvinte
(secvente, siruri, vectori) de lungime n cu proprietatile:
a, b A = a + b A;
a A, t Zq = ta A.
Orice cod - liniar contine cuvantul cod nul 0 = (0, 0, . . . , 0).
|Zq | = r = |An,k | = rk
An,k fiind un spatiu liniar k-dimensional, admite o baza formata din k vectori cu n
elemente. Fie
e1 , e2 , . . . , en
13

14

PRELEGEREA 2. CODURI LINIARE

o astfel de baza. Atunci orice cuvant cod v An,k are forma


v=

k
X

ui ei

i=1

unde (u1 , u2 , . . . , uk ) Zqk este unic determinat.


Cu alte cuvinte, k simboluri de informatie u1 , . . . , uk Zq determina n mod
unic un cuvant - cod v An,k prin relatia de sus, si reciproc. Operatia de codificare
face aceasta asociere biunivoca:
u = (u1 , . . . , uk ) Zqk v =

k
X

ui ei An,k

i=1

Fiecare vector - cod ntr-un cod liniar va avea deci k simboluri de informatie; celelalte
n k simboluri se numesc simboluri de control.
Definitia 2.2 Fie An,k un cod liniar cu baza e1 , . . . , ek . Matricea

Gn,k =

e1
e2
...
ek

se numeste matricea generatoare a codului.


Deci operatia de codificare este definita prin matricea generatoare:
u Zqk , (u) = uG.
Exemplul 2.1 Matricea

G=

1 0 0 1 1
0 1 0 0 1

genereaz
a un (5, 2)-cod liniar peste Z2 . Rangul ei este 2 (primele doua coloane
formeaza matricea unitate), deci cele doua linii ale lui G sunt cuvinte - cod liniar
independente.

Multimea mesajelor de de informatie este Z22 = {00, 01, 10, 11}. Inmult
ind fiecare
mesaj cu matricea G se obtine spatiul liniar al cuvintelor - cod
A4,2 = {00000, 01001, 10011, 11010}.
Functia de codificare este:
00 00000,

01 01001,

10 10011,

11 11010.

Un cod liniar poate fi generat de mai multe baze posibile. Deci se pot construi
mai multe matrici generatoare pentru un (n, k)-cod liniar. Ele se pot transforma
una n alta prin operatiile liniare obisnuite, definite pentru liniile unei matrici. Prin
schimbarea matricii generatoare nu se schimba spatiul liniar al cuvintelor - cod, ci
numai modalitatea de codificare (functia ). Cum prin termenul cod se ntelege de
obicei spatiul liniar An,k , rezulta ca doua matrici diferite care se deduc una din alta
prin operatii pe linii, reprezinta acelasi cod.

2.1. MATRICE GENERATOARE

15

Exemplul 2.2 Relu


and Exemplul 2.1, prin adunarea liniei doi la prima linie se
obtine matricea

G0 =

1 1 0 1 0
0 1 0 0 1

Ea genereaz
a acelasi spatiu liniar A5,2 , dar codificarea difera:
00 00000,

01 01001,

10 11010,

11 10011

Exemplul 2.3 Matricea

1 1 0 0 0 0

G= 0 0 2 2 0 0
1 1 1 1 1 1
genereaz
a un (6, 3)-cod liniar peste Z3 . Aduc
and matricea la forma canonic
a, se
obtine

1 1 0 0 0 0

0
G = 0 0 1 1 0 0

0 0 0 0 1 1
Toate cele 33 = 27 cuvinte ale acestui cod au urmatoarea proprietate: fiecare simbol
este scris de doua ori. Din acest motiv, codul este numit cod cu repetitie.
Cea mai convenabila regula de codificare consta n scrierea simbolurilor de informatie
si suplimentarea lor cu n k simboluri de control. Aceasta corespunde matricii
generatoare (unice)
G = (I|B)
unde I este matricea unitate de ordin k, iar B este o matrice cu k linii si n k
coloane.
Definitia 2.3 Un cod liniar este numit sistematic daca admite o matrice generatoare de forma G = (I|B) unde I este matricea unitate.
Definitia 2.4 Dou
a coduri liniare A si A0 de aceeasi lungime n se numesc echivalente daca Sn astfel nc
at
v1 v2 . . . vn A v(1) v(2) . . . v(n) A0
(s-a notat cu Sn multimea permut
arilor de n elemente).
Exemplul 2.4 Codul din Exemplul 2.1 este un cod sistematic. Din codificare se
observ
a ca mesajul de informatie se afla n cuvantul - cod pe primele doua pozitii.
Codul cu repetitie din Exemplul 2.3 nu este sistematic. Totusi, folosind permutarea (1, 4, 6, 2, 5, 3) (se permut
a simbolurile doi cu patru si trei cu sase) se ajunge
la un cod sistematic generat de matricea

1 0 0 1 0 0

G = 0 1 0 0 0 1

0 0 1 0 1 0

16

PRELEGEREA 2. CODURI LINIARE

Teorema 2.1 Orice cod liniar este echivalent cu un cod liniar sistematic.
Demonstratie: Matricea generatoare G a unui (n, k) - cod liniar A are rangul k; deci
ea are k coloane liniar independente.
1. Sa presupunem ca primele k coloane ale lui G sunt liniar independente. Deci
G = (X|Y ) unde Y este o matrice k k inversabila. Exista atunci o succesiune
de operatii de linii care transforma X n matricea unitate. Aceeasi succesiune
de operatii efectuate acum pentru toata matricea G va conduce la matricea
G0 = (I|Y 0 ). Deoarece si G0 este matrice generatoare pentru codul A, rezulta
ca acesta este sistematic.
2. Fie (p1 , p2 , . . . , pn ) permutarea care aduce coloanele liniar independente ale
matricii G pe primele k pozitii. Se obtine n acest fel o noua matrice G0 . Fie
A0 codul liniar obtinut prin codificarea cu matricea generatoare G0 . Atunci A
si A0 sunt echivalente, iar A0 este sistematic, conform cazului anterior.
2

2.2

Matrice de control

Definitia 2.5 Fie An,k un cod liniar generat de matricea G = Gk,n . Se numeste
matrice de control o matrice H = Hnk,n cu proprietatea GH T = 0.
Observatii:
Din definitie rezulta ca matricea de control H a unui cod liniar A are urmatoarea proprietate:
v A vH T = 0
Lasam ca exercitiu demonstrarea acestei echivalente.
Prin transpunere, relatia de sus se poate scrie si HGT = 0. Aceasta nseamna
ca si H este matricea generatoare a unui (n, n k) - cod liniar peste corpul Zq ,
cod pentru care G este matrice de control. Cele doua coduri astfel definite se
numesc coduri duale. Cuvintele - cod din cele doua coduri duale sunt ortogonale (produsul lor scalar este zero). Intr-adevar, daca A si B sunt doua coduri
duale generate de matricile G respectiv H, iar x A, y B sunt cuvinte cod arbitrare, exista u, v cu x = uG, y = vH. In plus, xH T = 0, yGT = 0.
Atunci, xyT = uGyT = u(yGT )T = u0T = 0.
Exemplul 2.5 (7, 4) - codul liniar binar cu matricea generatoare

G=

are drept matrice de control

1
0
0
0

0
1
0
0

0
0
1
0

0
0
0
1

0
1
1
1

1
0
1
1

1
1
0
1

2.2. MATRICE DE CONTROL

17

0 0 0 1 1 1 1
0 1 1

1 0 1 0 1 0 1

H= 0 1 1 0

care la randul ei este matricea generatoare a unui (7, 3) - cod liniar binar.
Se verifica imediat relatia

GH T =

0
0
0
0

0
0
0
0

0
0
0
0

Un cod care coincide cu codul sau dual se numeste cod auto - dual.
Teorema 2.2 Un cod sistematic cu matricea generatoare G = (I|B) admite ca
matrice de control H = (B T |I).
Demonstratie: Cele doua matrici unitate din scrierea lui G si H sunt de ordin k
respectiv n k. Efectuand calculele, se obtine:

T
GH = (I|B)
= IB + BI = B + B = 0
I
2
Corolarul 2.1 Matricea de control a unui (n, k)-cod liniar are rangul n k.
Teorema de sus permite un algoritm de calcul extrem de simplu al matricii de control,
atunci cand se cunoaste matricea generatoare. Sa aratam aceasta pe un exemplu:
Exemplul 2.6 Plec
and de la matricea generatoare construit
a n Exemplul 2.4, se
poate construi matricea de control (calculele se fac n Z3 ):

1
0
0 1 0 0
2 0 0 1 0 0

0 1 0 1 0 = 0 0 2 0 1 0
H = 0
.
0 1
0 0 0 1
0 2 0 0 0 1
Aplic
and acum permutarea inversa coloanelor lui H , se ajunge la matricea de control a codului definit n Exemplul 2.3:

2 1 0 0 0 0

H= 0 0 0 0 1 2

0 0 1 2 0 0
Relatia xH T = 0 pe care o verifica orice cuvant - cod x An,k permite sa definim
un cod si sub forma unui sistem de ecuatii. Astfel, An,k este un cod peste Zq daca
si numai daca elementele sale sunt solutii ale sistemului liniar xH T = 0.

1 1 0 1 0
Exemplul 2.7 Codul cu matricea de control H =
1 1 1 1 1
este definit ca multimea solutiilor binare (x1 , x2 , x3 , x4 , x5 ) ale sistemului
x1 + x2 + x4 = 0,

x 1 + x2 + x3 + x4 + x5 = 0

18

2.3

PRELEGEREA 2. CODURI LINIARE

Sindrom

Fie codul liniar An,k Zqn peste Zq , cu matricea de control H si a Zqn . Se numeste
sindrom al vectorului a vectorul z cu n k componente obtinut prin relatia
zT = HaT ,
sau - echivalent - z = aH T .
Observatie: z = 0 a An,k .
Daca se transmite printr-un canal de comunicatie un cuvant a An,k pentru
care sindromul corespunzator verifica relatia z = aH T 6= 0, nseamna ca s-a detectat
faptul ca n timpul transmisiei au aparut erori.
Z2 , sindromul receptionat este egal cu suma coloanelor din maTeorema 2.3 In
tricea de control corespunz
atoare pozitiilor perturbate.
Demonstratie: Fie a = (a1 , a2 , . . . , an ) An,k cuvantul-cod transmis. Fara a restrange generalitatea, sa presupunem ca au intervenit trei erori, pe pozitiile i, j, k,
fiind receptionat vectorul
a0 = (a1 , . . . , ai1 , a0i , ai+1 , . . . , aj1 , a0j , aj+1 , . . . , ak1 , a0k , ak+1 , . . . , an )
unde a0i 6= ai , a0j 6= aj , a0k 6= ak . Avem
0 = aH T = a1 (h1 ) + . . . + ai (hi ) + . . . + aj (hj ) + . . . + ak (hk ) + . . . + an (hn )
pentru ca a An,k , iar (h1 ), . . . , (hn ) sunt coloanele matricii H.
Avem, de asemenea
a0 H T = a1 (h1 ) + . . . + a0i (hi ) + . . . + a0j (hj ) + . . . + a0k (hk ) + . . . + an (hn )
Prin adunarea acestor doua egalitati se obtine:
z0 = a0 H T = aH T + a0 H T = (0) + . . . + (0) + (hi ) + . . . + (hj ) + . . . + (hk ) + (0) +
. . . + (0) = (hi ) + (hj ) + (hk ).
2

2.4

Pondere, distant
a Hamming

Pentru orice cuvant x Zqn , se numeste pondere numarul w(x) de componente


nenule. Evident, 0 w(x) n.
Pentru doua cuvinte x, y Zqn , se numeste distanta Hamming ntre ele, numarul
d(x, y) = w(x y).
Ca o remarca, deoarece x y Zqn , rezulta ca distanta Hamming dintre doua
cuvinte este ponderea unui cuvant din Zqn .
Definitia 2.6 Se numeste distant
a (Hamming) a codului liniar An,k Zqn peste Zq
cea mai mica distant
a (Hamming) dintre elementele codului An,k , adica
d=

min

x,yAn,k ,x6=y

d(x, y)

2.5. DETECTARE SI CORECTARE DE ERORI

19

Folosind proprietatea anterioara si faptul ca 0 An,k , rezulta ca


d=

min

xAn,k ,x6=0

w(x).

Se poate verifica imediat ca d este o distanta cu ajutorul careia Zqn se poate structura
ca spatiu metric.
Teorema 2.4 Fie H matricea de control a unui cod liniar An,k . Codul are distanta
minim
a d daca si numai daca orice combinatie liniara de d 1 coloane ale lui H
este liniar independent
a si exista cel putin o combinatie liniara de d coloane liniar
dependente.
Demonstratie: Pentru orice cuvant a, cu w(a) = s, aH T este o combinatie liniara
de s coloane ale lui H. Cum exista un cuvant - cod de pondere minima egala cu
distanta d a codului, rezulta ca avem cel putin o combinatie de d coloane liniar
dependente ale lui H. O combinatie de mai putin de d coloane liniar dependente ar
conduce la contradictie.
2
Definitia 2.7 Pentru r > 0 si x Zqn , definim sfera de raz
a r si centru x ca
Sr (x) = {y|d(x, y) r}
Fie An,k Zqn un cod liniar peste Zq cu distanta Hamming d. Daca
Teorema
2.5
"
#
d1
, atunci
r=
2
x, y An,k , x 6= y,
Sr (x) Sr (y) = .
Demonstratie: Presupunem prin absurd ca exista z Zqn , z Sr (x) Sr (y).
Atunci d(x, z) r, d(y, z)
atii triunghiului, d(x, y)
h i r deci, conform inegalit
d1
d(x, z) + d(y, z) 2r = 2 2 < d, ceea ce contrazice afirmatia ca d este distanta
codului An,k .
2
Evident, n fiecare astfel de sfera exista un singur cuvant - cod: cel aflat n
centru.
Definitia 2.8 Un cod liniar An,k Zqn de distant
a d peste Zq este perfect daca
Zqn =

Sr (x)

xAn,k

unde r =

2.5

d1
2

Detectare si corectare de erori


h

Fie An,k Zqn un cod liniar peste Zq , de distanta d si t = d1


. Sa presupunem ca
2
n
s-a receptionat cuvantul z Zq ; va exista cel mult un cuvant x An,k astfel ncat
z St (x) (n cazul codurilor perfecte, acest cuvant exista totdeauna).
In cazul (ideal) cand z = x, cuvantul a fost transmis fara erori (sau cu erori
nedetectabile).

20

PRELEGEREA 2. CODURI LINIARE

Daca z 6= x, atunci mesajul a fost perturbat (si avem o detectare de erori);


n ipoteza ca numarul de erori aparute este minim si exista un x An,k astfel ca
d(x, z) t, atunci z provine din cuvantul - cod x - si se va transforma n acesta
prin corectarea corespunzatoare a erorilor.
In celelalte cazuri, z sau nu se poate corecta, sau se corecteaza gresit, n alt
cuvant cod.
Aceasta ultima situatie nu apare la codurile perfecte.
Metoda de detectare si corectare a erorilor descrisa mai sus se numeste decodificarea cea mai probabil
a. Pentru marea majoritate a codurilor liniare aceasta este
singura metoda utilizata.
Pentru orice cuvant e Zqn formam multimea
Ve = e + A = {e + v|v A}
Ve este multimea cuvintelor w = e + v care pot fi receptionate la transmiterea
cuvantului cod v, atunci cand a actionat un vector - eroare e. e va fi numit eroare
- tip.
In particular, A = 0 + A = V0 .
Propozitia 2.1 Pentru orice a Ve ,

Va = Ve .

Demonstratie: Din a Ve , rezulta ca exista x A cu a = e + x. Deoarece x+A = A


(evident, A fiind subspatiu liniar), avem Va = a + A = e + x + A = e + A = Ve . 2
Vom utiliza aceasta propozitie pentru definirea unei tehnici de decodificare.
Daca vrem sa detectam o anumita eroare - tip e care modifica cuvintele din A
n cuvintele subspatiului Ve , atunci vor fi mai usor de depistat cuvintele din Ve cu
ponderea minima.
Pentru fiecare Ve se alege un cuvant numit reprezentantul lui Ve ; acesta este un
element cu cea mai mica pondere din Ve .
Se construieste urmatorul tablou (numit tablou standard):
1. Pe prima linie se scriu cuvintele - cod, ncepand cu 0 (reprezentantul lui
A = V0 );
2. Pe prima coloana se scriu reprezentantii 0, e1 , e2 , . . .;
3. Pe linia cu reprezentantul ei , sub cuvantul cod xj se scrie cuvantul
ei + xj ( mod q).

1 0 0 1
Exemplul 2.8 Fie matricea generatoare G =
0 1 1 1
2
ifica Z2 = {00, 01, 10, 11} n A4,2 = {0000, 1001, 0111, 1110}.
Calculul multimilor Ve conduce la
V0000
V1000
V0100
V0010

=
=
=
=

V1001
V0001
V1101
V1011

=
=
=
=

V0111
V0110
V0011
V0101

=
=
=
=

V1110
V1111
V1010
V1100

peste Z2 . Ea va cod-

2.5. DETECTARE SI CORECTARE DE ERORI

21

Alegem ca reprezentanti pe 0000, 1000 (se poate si 0001), 0100, 0010. Tabloul
standard va fi:
0000
1000
0100
0010

1001
0001
1101
1011

0111
1111
0011
0101

1110
0110
1010
1100

Pentru receptie, acest tablou este ca un dictionar care se utilizeaz


a astfel: cuv
antul primit se decodific
a n cuvantul - cod din capul coloanei pe care se afla.
De exemplu, daca se receptioneaz
a 1101, el se va decodifica n 1001.
Evident, cuvintele de pe prima coloan
a se decodific
a n ele nsele (ele nu au fost
perturbate de nici o eroare).
Pentru orice cod liniar, un dictionar complet de tipul celui de mai sus constituie cea
mai simpla metoda de decodificare.
Problema apare atunci cand ntr-o multime Ve sunt mai multe cuvinte de pondere
minima. Atunci tabela va decodifica corect numai eroarea - tip aleasa ca reprezentant.
Astfel, revenind la Exemplul 2.8, cuvantul receptionat 1111 se decodifica n 0111
(considerand ca a fost alterat primul caracter).
Daca se ia nsa drept reprezentant pe linia a doua 0001 n loc de 1000, a doua
linie din tabloul standard este
0001

1000

0110

1111

Atunci, 1111 se decodifica n 1110 (considernd ultimul caracter ca fiind cel alterat
de canalul de transmisie). Care este cuvantul - cod corect transmis ? Acest lucru nu
poate fi decis. Singurul lucru care poate fi facut este sa se aleaga drept reprezentanti
erorile - tip cele mai probabile.
Pentru un (n, k) - cod peste Zq , un dictionar complet consta din toate cele q n
cuvinte posibile, lucru destul de dificil deoarece n practica codurile sunt destul de
lungi (de exemplu n = 100, k = 80). De aceea este utilizata o alta maniera de lucru
care reduce mult marimea tabloului de lucru.
Fie H matricea de control a unui (n, k) - cod liniar A; putem considera (Corolarul
2.1) ca liniile lui H sunt vectori liniar independenti.
Teorema 2.6 Pentru orice e Zqn , toate cuvintele din Ve au acelasi sindrom.
Demonstratie: Fie v A arbitrar si w = e + v. Avem
wH T = (e + v)H T = eH T + vH T = eH T + 0 = eH T .
Deci toate cuvintele din Ve au sindromul egal cu sindromul lui e.

Invers, pentru fiecare sindrom - deci pentru fiecare cuvant s de lungime n k, se


poate determina un vector - eroare e avand sindromul s. Mai mult, s va fi ales astfel
ncat sa aiba pondere minima (conform decodificarii cele mai probabile). Pentru

22

PRELEGEREA 2. CODURI LINIARE

aceasta, se rezolva sistemul de ecuatii liniare HeT = sT , care are solutie, deoarece
liniile lui H sunt liniar independente. Din multimea solutiilor alegem una de pondere
minima, cu ajutorul careia construim multimea Ve a tuturor cuvintelor de sindrom
s.
Pe baza celor de mai sus, se poate folosi urmatoarea procedura de decodificare:
1. La receptionarea unui cuvant w, se calculeaza sindromul s:
sT = HwT .
2. Se afla eroarea - tip e cu sindromul s.
3. Se considera cuvantul - cod corect ca fiind v = w e.
In acest fel, nu mai este necesar sa se retina tot tabloul standard; este suficient
sa se stie reprezentantii subspatiilor Ve si sindromurile corespunzatoare.
Exemplul 2.9 Relu
and codul definit n Exemplul 2.8, el are ca matrice de control

H=

0 1 1 0
1 1 0 1

Calcul
and sindromurile reprezentantilor, se ajunge la tabloul:
Sindrom
00
01
10
11

Reprezentant
0000
1000
0010
0100

care reprezint
a o reducere cu 50% a datelor stocate.
La receptionarea cuvantului 1101, i se calculeaz
a sindromul

0 1 1 0
1 1 0 1

1
1
0
1

1
1

Repezentantul sindromului 11 este 0100. Efectu


and operatia
1101 0100 = 1101 + 0100 = 1001
(n Z2 scaderea este de fapt adunare) se ajunge la cuvantul transmis, anume 1001.
am codul liniar peste Z3 definit de matricea de control
Exemplul 2.10 Sa consider

H=

1 0 2 1 0
0 1 2 1 2

Sindromurile sunt cuvinte de lungime 2 peste Z3 , deci n total noua cuvinte.


Lista sindromurilor si a reprezentantilor este:

2.6. EXERCIT
II

Sindrom
00
10
01
22
11
02
20
12
21

Reprezentant
00000
10000
01000
00100
00010
00001
20000
10001
20002

23

De remarcat ca un tablou standard pentru acest cod are dimensiunea 9 27 si


contine 243 cuvinte; volumul de date s-a redus deci cu 92%.
S
a presupunem ca s-a trimis cuvantul cod 21122 si s-a receptionat 11122.
Sindromul este

1 0 2 1 0
0 1 2 1 2

1
1
1
2
2

2
=

deci e = 20000; decodificarea este


v = w e = 11122 20000 = 21122.
Decodificarea a fost corect
a deoarece eroarea - tip aparut
a a fost una din cele
selectate prin reprezentanti.

2.6

Exercitii

2.1 S
a se construiasc
a coduri liniare care sa transforme cuvantul (a1 , a2 , . . . , an )
n
Zq n:
1. (a1 , a1 , a1 , a2 , a2 , a2 , . . . , an , an , an );
2. (a1 , b1 , a2 , b2 , . . . , an , bn ) unde b1 = a1 , b + 2 = a1 + a2 , bn = a1 + . . . + an ;
3. (a1 , 2an , 3a2 , 4an1 , . . .).
2.2 Un cod liniar peste Z5 are urmatoarea matrice generatoare:

1 2 3 1 2

G= 2 2 4 1 0
1 1 2 2 1
S
a se afle matricea de control.
2.3 Aceeasi problem
a pentru Z7 .

24

PRELEGEREA 2. CODURI LINIARE

2.4 Determinati daca urmatorul cod liniar binar este sistematic sau nu:

1 1 0 0 0 0

G= 0 0 1 1 1 1

0 0 0 0 1 1
Dac
a nu, gasiti un cod sistematic echivalent.
2.5 G
asiti matricea generatoare a unui cod liniar binar care are matricea de control:

H=

2.6 Se da matricea de control

1
1
1
0

0
1
1
0

1
1
0
1

1
0
0
0

0
1
0
0

0
0
1
0

0
0
0
1

1 1 0 1 0 1

H= 1 1 0 0 1 0
1 0 1 1 0 0
a unui cod liniar binar.
S
a se decodifice mesajele 110110,

010100.

2.7 Descrieti dualul (6, 3) - codului binar descris de ecuatiile:


x1 = x4 ,

x 2 = x5 ,

x 3 = x6 .

2.8 Fie A un cod liniar binar obtinut din toate sumele posibile ale cuvintelor
101011, 011101, 011010.
1. Aflati o matrice de control a codului.
2. Aflati un tablou standard si decodificati 111011.
2.9 Demonstrati ca codul liniar binar descris de ecuatiile
x3 = x1 + x2 ,

x 4 = x1 ,

x 5 = x1 + x2

corecteaz
a o eroare. Construiti tabloul standard.
2.10 Construiti o tabel
a de sindromuri de decodificare pentru:
1. Codul cu repetitie de lungime 7;
2. Codul din Exercitiul 2.7;
3. Codul peste Z3 cu matricea generatoare:

1 0 0 2 2

G= 0 1 0 0 1
0 0 1 1 0
2.11 Fie un cod liniar An,k Zqn si tabela de sindromuri de decodificare corespunz
atoare. Definim o operatie de decodificare : Zqn An,k cu proprietatea:
v An,k , e reprezentant din tabel
a, (v + e) = v. ( corecteaz
a erorile - tip din
tabela de decodificare). Sa se arate ca atunci nu corecteaz
a nici o alta eroare - tip:
dac
a e nu este un reprezentant din tabel
a, atunci exista v An,k cu (v + e) 6= v.
(Altfel spus, decodificarea cu sindromuri este optimala).

Prelegerea 3
Coduri liniare - II
3.1

Capacit
ati de detectare si corectare de erori

Dupa cum am vazut pana acum, un cod liniar este un spatiu liniar, codul dual este
complementul sau ortogonal etc. Teoria codurilor este interesata nsa n depistarea
unor coduri cu proprietati deosebite n detectarea si corectarea erorilor. Aceste
proprietati sunt legate n special de distanta minima a codului. Vom prezenta pentru
nceput cateva rezultate legate de diverse margini relativ la distanta, numarul de
simboluri de control, informatie etc.
Teorema 3.1 Un cod liniar An,k Zqn are distanta minima d dac
a si numai daca
poate detecta orice combinatie de maxim d 1 erori.
Demonstratie: Daca se transmite un cuvant a An,k si apar t(t < d) erori, se va
receptiona cuvantul a + e Zqn cu w(e) = t.
Deoarece d(a, a + e) = t, rezulta a + e 6 An,k , deci se detecteaza eroare.
Reciproca este evidenta.
2
Teorema 3.2 Un cod liniar An,k Zqn are
distant
a minima d dac
a si numai daca
h
i
poate corecta orice combinatie de maxim d1
erori.
2
Demonstratie: Sa presupunem prin absurd ca d 2t si vom arata ca exista erori
- tip de pondere t (numite si pachete de t erori) care nu pot fi corectate de codul
An,k . Aceasta contradict
a An,k poate corecta
h iie va duce la concluzia d 2t + 1, adic
d1
orice pachet de t 2 erori.
Fie a, b h An,k
a de b.
i cu d(a, b) = d si i1 , i2 , . . . , id toti indicii n care a difer
d+1
Alegand t = 2 , avem d 2t (t astfel ales este minim).
Sa presupunem ca se trimite a si se receptioneaza cuvantul a0 = (a01 , a02 , . . . , a0n )
unde

a i 6= i1 , i2 , . . . , id ,
ai = bi dac
0
daca i = i1 , i3 , . . . ,
ai = ai

bi
daca
i = i 2 , i4 , . . .
"

" #

d+1
d
Atunci, evident d(a, a ) =
= t si d(a0 , b) =
t = d(a0 , a). Aceasta va
2
2
duce la decodificarea lui a n b - incorect.
0

25

26

PRELEGEREA 3. CODURI LINIARE - II

Sa presupunem acum d 2t + 1. Atunci codul An,k poate corecta orice pachet


de t erori. Pentru a arata aceasta, sa presupunem ca se trimite un cuvant - cod
a si se primeste un cuvant a0 cu d(a, a0 ) t. Pentru orice cuvant cod b (deci cu
d(a, b) d 2t + 1) avem, conform inegalitatii triunghiului:
d(a, a0 ) + d(a0 , b) d(a, b) 2t + 1.
deci, d(a0 , b) 2t + 1 d(a, a0 ) 2t + 1 t = t + 1 > d(a, a0 ).
Deci, cu o decodificare cea mai probabila, a0 se va decodifica n a.

Teorema 3.3 Distanta minima a unui (n, k) - cod liniar verifica relatia
d n k + 1.
Demonstratie: Vom separa demonstratia n doua parti:
A: Fie An,k un cod sistematic. Atunci primele k simboluri din orice cuvant - cod
pot fi alese arbitrar. Fie v An,k cuvantul de forma v = 100 . . . 0vk+1 vk+2 . . . vn .
Evident, 0 < w(v) n k + 1. Cum d este cea mai mica pondere a unui cuvant cod nenul, rezulta inegalitatea ceruta.
B: Fie An,k un cod liniar arbitrar si A0n,k codul liniar sistematic echivalent. Se observa ca cele doua coduri au aceeasi parametri n, k, d. Folosind acum A, inegalitatea
se obtine din nou.
2
orice cod liniar An,k peste Zq avem
Teorema 3.4 In
d

nq k1 (q 1)
qk 1

(marginea Plotkin)

Demonstratie: Sa consideram elementele din An,k asezate ca linii ale unui tablou. Se
obtine un tablou cu q k linii si n coloane. Fiecare componenta nenula din Zq apare
pe fiecare coloana n q k1 linii. Atunci, suma ponderilor tuturor cuvintelor - cod
este egala cu nq k1 (q 1) deoarece fiecare componenta nenula apare de q k1 ori n
fiecare coloana si avem q 1 componente nenule distribuite pe n coloane.
Distanta minima a codului nu poate sa depaseasca ponderea medie a cuvintelor
codului, adica
nq k1 (q 1)
d
qk 1
deoarece n An,k sunt q k 1 cuvinte nenule.

Teorema 3.5 Fie An,k un cod liniar peste Zq care corecteaz


a orice combinatie de

maxim t erori. Intr-un


asemenea cod sunt necesare cel putin
n k logq [1 + Cn1 (q 1) + Cn2 (q 1)2 + . . . + Cnt (q 1)t ]
pozitii de control (marginea Hamming).

I DE DETECTARE SI CORECTARE DE ERORI


3.1. CAPACITAT

27

Demonstratie: Pentru ca An,k sa corecteze orice combinatie de cel mult t erori, este
necesar ca fiecare astfel de eroare - tip sa fie reprezentata n tabloul standard, deci
sa fie caracterizata printr-un sindrom distinct. Sunt q nk sindromuri distincte, deci
acesta este numarul maxim de erori care pot fi corectate de cod. Din cele q nk
sindromuri, 1 trebuie sa fie pentru 0 erori, Cn1 (q 1) - pentru erori - tip simple
(cuvinte e cu o singura componenta nenula), Cn2 (q 1)2 pentru erori duble etc.
Deci, este necesar ca
q nk 1 + Cn1 (q 1) + Cn2 (q 1)2 + . . . + Cnt (q 1)t .
Apoi se logaritmeaza.

a
Teorema 3.6 Dac
1
2
d2
(q 1) + Cn1
(q 1)2 + . . . + Cn1
(q 1)d2 ]
n k logq [1 + Cn1

atunci exista un cod liniar An,k peste Zq cu distanta minima d (marginea Varsamov
- Gilbert).
Demonstratie: Pentru ca sa existe un cod liniar An,k peste Zq cu distanta minima d
este suficient (Teorema 2.4) ca orice coloana din matricea de control Hnk,n sa nu
fie combinatie liniara a altor d 2 coloane, n acest fel ne-existand nici o combinatie
liniara ntre d 1 coloane ale lui H. Aceasta conditie este echivalenta cu
1
2
d2
q nk 1 Cn1
(q 1) + Cn1
(q 1)2 + . . . + Cn1
(q 1)d2 .

Aici, q nk 1 reprezinta numarul total de coloane distincte nenule care pot apare
n matricea H. Semnificatia termenilor din membrul drept este evidenta; astfel, de
2
exemplu Cn1
(q 1)2 reprezinta numarul combinatiilor liniare cu coeficienti nenuli
a doua din cele n 1 coloane etc.
Apoi se logaritmeaza.
2
Fie En,k un cod liniar peste Zq pentru care d 2t + 1 (deci cu capacitatea de a
corecta orice combinatie de maxim t erori). Reamintim ca n prelegerea precedenta
am definit pentru orice x An,k sfera centrata n x prin
St (x) = {y Zqn |d(x, y) t}.
Mai introducem si suprafata (scoarta) acestei sfere, definita:
At (x) = {y Zqn |d(x, y) = t}.
Vom nota numarul de elemente ale fiecareia din cele doua multimi prin
St = |St (x)|, At = |At (x)|
(valorile sunt aceleasi pentru orice x Zqn ).
Au loc relatiile evidente:
A t St ,

St =

t
X
i=0

Ai .

28

PRELEGEREA 3. CODURI LINIARE - II

Deoarece sferele de raza t centrate n cuvintele codului An,k sunt disjuncte, avem
q k St q n .
Aici, q k reprezinta numarul de cuvinte - cod, iar q n - numarul total de cuvinte
din Zqn .
Din aceasta relatie se obtine imediat
n k logq St ,
cunoscuta sub numele de inegalitatea volumului. Ea mai poate fi gasita si sub forma
k
1
1 logq St .
n
n
k
se numeste rata de informatie si da o masura a cantitatii de informatie
n
pe care o poarta un cuvant - cod. O rata de informatie mica (mai multe simboluri
de control) asigura o securitate mai mare a transmiterii datelor. In schimb, conditii
practice de eficienta cer o rata de informatie cat mai mare (mai multa informatie
pe unitatea de mesaj). Aceasta este una din solicitarile contradictorii ale teoriei
codurilor.
Raportul

3.2

Modific
ari ale codurilor liniare

Adesea este imposibil sa se utilizeze un cod bun deoarece el nu satisface anumite


restrictii tehnice, cum ar fi lungimea sau rata de informatie. De aceea este practic
sa se faca anumite modificari asupra codurilor, care sa nu afecteze proprietatile
principale de detectare si corectare de erori.
Definitia 3.1 Numim extensie a unui (n, k) - cod liniar A peste Zq , (n + 1, k) codul liniar A obtinut din A prin adaugarea la fiecare cuvant cod a1 a2 . . . an a unui
simbol nou an+1 cu proprietatea

n+1
X

ai = 0 (mod q).

i=1

Observatii:
In cazul binar, noul caracter an+1 poarta numele bit de paritate.
Daca H este matricea de control a codului An,k , atunci codul extins An+1,k are
matricea de control

H =

0
..
.

0
1 1 ... 1 1 1

De fapt, ultima linie reprezinta ecuatia

n
X
i=1

xi = 1.

ALE CODURILOR LINIARE


3.2. MODIFICARI

29

Daca un cod liniar binar A are o distanta minima impara d, atunci codul
extins are distanta minima d + 1. Intr-adevar, fie a = a1 a2 . . . an A cu
w(a) = d. Cum d este impar, rezulta

n
X

ai = 1 (n Z2 ), deci an+1 = 1.

i=1

Cuvantul a0 = a1 a2 . . . an 1 A , w(a0 ) = d + 1 si nu se poate construi un alt


cuvant - cod n A de pondere mai mica.
Definitia 3.2 Fie A un cod liniar de lungime n peste Zq .
1. Relaxarea lui A este un cod liniar A de lungime n 1 obtinut prin stergerea
ultimului simbol din cuvintele lui A;
2. Completarea lui A este un cod definit A = A(A+1) (unde 1 este cuvantul
cu toate elementele 1, iar suma se face modulo q);
3. Expurgarea lui A este codul A0 = {a A|w(a) 0 mod 2}.
Observatii:
Relaxarea este operatia inversa extensiei.
Prin completarea si expurgarea codurilor liniare se obtin coduri liniare numai
n cazul binar. In celelalte cazuri, noile multimi rezultate nu sunt spatii liniare.
Propozitia 3.1 Prin completarea unui cod liniar binar An,k se obtine un cod liniar
binar An,k+1 cu un numar dublu de cuvinte - cod.
Demonstratie: Completarea unui cod binar nseamna adaugarea la cuvintele - cod
ale lui A a tuturor cuvintelor obtinute prin complementare (schimbarea lui 0 n 1 si
a lui 1 n 0).
Fie Gk,n matricea generatoare a codului An,k . Se verifica usor ca matricea

G0 =

1 1 ... 1 1
genereaza An,k (1 + An,k ). Acest cod are k + 1 pozitii de informatie si lungime
n. Fiecare din cele doua submultimi are un numar egal de elemente.
2
Propozitia 3.2 Orice cod liniar binar are sau toate cuvintele - cod de pondere par
a,
sau numarul cuvintelor - cod de pondere par
a este egal cu al celor de pondere impar
a.
Demonstratie: Fie A un cod liniar binar cu un cuvant v1 de pondere impara. Sa
presupunem ca v1 , v2 , . . . , vr sunt toate cuvintele lui A; atunci A = A + v1 . Pentru
orice cuvant - cod vi de pondere para (impara), v1 + vi are pondere impara (para).
Pentru aceasta, sa presupunem ca w(v1 ) = 2p + 1, w(vi ) = 2q iar vi si v1 au 1 pe
r pozitii comune. Atunci w(vi + v1 ) = w(vi ) + w(v1 ) 2r (pentru ca 1 + 1 = 0)
= 2p + 1 + 2q 2r = 2s + 1. Similar daca vi are pondere impara.
Deci adunarea cu v1 defineste o corespondenta biunivoca ntre cuvintele - cod
de pondere para si cele de pondere impara, ceea ce completeaza demonstratia. 2

30

PRELEGEREA 3. CODURI LINIARE - II

Corolarul 3.1 Expurgarea unui cod liniar binar A este tot A sau un cod liniar
av
and ca elemente jumatate din elementele lui A.
Matricea generatoare Gexp a lui Aexp se poate obtine din matricea G a lui A astfel:
daca toate liniile lui G sunt vectori de pondere para cele doua coduri coincid. Altfel,
fie G = [e1 , e2 , . . . , er , er+1 , . . . , ek ]T n care - fara a micsora generalitatea, putem
presupune ca primele r au pondere impara, iar celelalte k r au pondere para.
Atunci Gexp = [0, e2 + e1 , . . . , er + e1 , er+1 . . . , ek ]T .
Exemplul 3.1 Sa construim codul A4,2 peste Z3 de matrice generatoare

G=

1 0 0 1
0 1 1 1

Ea codific
a cele 9 elemente din Z32 n
A4,2 = {0000, 0111, 0222, 1001, 1112, 1220, 2002, 2110, 2221}.
Codul liniar relaxat A3,2 = {000, 011, 022, 100, 111, 122, 200, 211, 222} este generat
de matricea

!
1 0 0
Grel =
.
0 1 1
Constructia a fost posibil
a deoarece prin eliminarea ultimei coloane, liniile ramase
sunt tot liniar independente. Daca acest lucru nu este realizabil, se caut
a k cuvinte
- cod n An,k cu proprietatea ca dupa eliminarea ultimei componente, ele sunt liniar
independente. Acestea formeaz
a liniile noii matrici generatoare.
Codul completat este
0000 0111 0222 1001 1112 1220 2002 2110 2221
1111 1222 1000 2112 2220 2001 0110 0221 0002
De remarcat ca el nu este un spatiu liniar (nu este nchis la adunarea din Z3 ).
Codul expurgat are cinci elemente: {0000, 1001, 1112, 2002, 2221}. Nici acesta
nu este cod liniar.
Exemplul 3.2 Sa relu
am matricea generatoare din Exemplul 3.1, dar pentru un
cod liniar peste Z2 . Codul generat de G este A4,2 = {0000, 0111, 1001, 1110}.
Toate codurile modificate sunt n acest caz coduri liniare. Astfel
Codul relaxat Arel = {000, 011, 100, 111} este generat de aceeasi matrice Grel
din Exemplul 3.1.
Codul completat Acom = {0000, 0111, 1001, 1110, 1111, 1000, 0110, 0001} este
un cod liniar generat de matricea

Gcom

1 0 0 1

=
0 1 1 1 .
1 1 1 1

Codul expurgat Aexp = {0000, 1001} este un cod liniar generat de matricea

Gex =

1 0 0 1
0 0 0 0

A ERORILOR
3.3. DETECTAREA SI CORECTAREA SIMULTANA

3.3

31

Detectarea si corectarea simultan


a a erorilor

Sa ncepem cu un exemplu.
Exemplul 3.3 Fie (7, 4) - codul liniar binar cu matricea de control

0 0 0 1 1 1 1

H = 0 1 1 0 0 1 1 .
1 0 1 0 1 0 1
El are distanta minima d = 3, deci poate detecta 2 erori si poate corecta o eroare
(Teoremele 3.1,3.2). Totusi, codul nu poate realiza acest lucru simultan.
Mai precis, atunci cand codul este utilizat pentru corectare de erori, erorile duble scap
a nedetectate. Astfel, daca se trimite 0000000 si se receptioneaz
a 1010000,
sindromul este 010. Tabloul standard conduce la corectarea celui de-al doilea bit, si
decodifica (incorect) n cuvantul - cod 111000.
Uneori nsa, se solicita n mod explicit un cod capabil sa detecteze si sa corecteze
erori n acelasi timp.
a t erori si detecteaz
a s erori simulDefinitia 3.3 Un cod A de lungime n corecteaz
tan daca orice cuvant - cod v are urmatoarea proprietate:
w Zqn [d(w, v) s = a A \ {v}, d(w, a) > t].
In aceasta situatie, detectarea si corectarea simultana a erorilor se realizeaza astfel:
la receptionarea unui cuvant w Zqn se cauta cel mai apropiat cuvant - cod v (n
sensul distantei Hamming). Daca d(w, v) t atunci cuvantul se corecteaza n v;
altfel, se anunta ca cel putin s simboluri sunt modificate.
Justificarea acestui procedeu rezulta imediat din definitie.
Teorema 3.7 Un cod corecteaz
a t erori si detecteaz
a s erori simultan daca si numai
dac
a
d t + s + 1.
Demonstratie: A: Sa presupunem d s + t + 1. Fie v un cuvant - cod si w Zqn
cu d(v, w) s. Pentru orice cuvant - cod v0 (v0 6= v) avem d(v, v0 ) d t + s + 1.
Folosind inegalitatea triunghiului,
d(v, w) + d(w, v0 ) d(v, v0 ) s + t + 1,
se deduce
d(w, v0 ) t + s + 1 d(v, w) t + s + 1 s = t + 1.
Deci, conditia din definitie este ndeplinita.
B: Sa presupunem prin absurd d < t + s + 1. Fie v, v0 doua cuvinte - cod cu
d(v, v0 ) = d t + s. Construim cuvantul w din v nlocuind primele s simboluri
n care acesta difera de v0 , cu valorile lor din v0 . Atunci d(v, w) = s si d(v0 , w) =
d s t + s s = t, ceea ce contrazice conditia din definitie.
2

32

PRELEGEREA 3. CODURI LINIARE - II

Exemplul 3.4 Sa consider


am (8, 4) - codul liniar binar generat de matricea

G=

1
0
0
0

0
1
0
0

0
0
1
0

0
0
0
1

1
1
1
0

1
1
0
1

1
0
1
1

0
1
1
1

El are distanta minima d = 4, deci - conform Teoremei 3.2 poate corecta maxim
o eroare, iar conform Teoremei 3.7 poate corecta o eroare si detecta simultan doua
erori.
Astfel receptionarea cuvantului 11110010 conduce la corectarea sa n 10110010
(deoarece d(11110010, 10110010) = 1 si 10110010 este cuvant - cod).
schimb receptionarea cuvantului 00001111 anunt
In
a ca au aparut cel putin doua

erori. In aceast
a situatie, nu mai putin de patru cuvinte - cod (00010111, 00101011,
01001101, 10001110) sunt situate la distanta 2 de cuvantul primit.
Exemplul 3.5 Codul binar cu repetitie de lungime 7 (care are 2 elemente) poate
realiza una din conditiile:
Corecteaz
a 3 erori;
a 6 erori;
Detecteaz
Corecteaz
a 2 erori si detecteaz
a 4 erori simultan.

3.4

Probabilitatea nedetect
arii erorilor

Sa ne punem urmatoarea problema: care este probabilitatea ca la transmiterea unui


cuvant - cod a sa fie receptionat alt cuvant - cod b (b 6= a). Altfel spus, care este
probabilitatea ca o eroare sa scape nedetectata ?
Notand cu e = b a, o eroare este nedetectata daca si numai daca e este un
cuvant - cod nenul.
Vom considera un canal de transmisie binar simetric, adica un canal n care
singurele simboluri transmise sunt 0 si 1, iar probabilitatea p (0 p 1) ca la
transmiterea lui 0 sa fie receptionat 1 este egala cu probabilitatea ca la transmiterea
lui 1 sa se receptioneze 0. Intr-un astfel de canal, daca w(e) = i (adica au fost
perturbate la transmisie i caractere), probabilitatea de aparitie a erorii - tip e este
pi q ni , unde q = 1 p. Notand cu Ai numarul cuvintelor - cod cu ponderea i, probabilitatea Pned a unei erori nedetectabile este suma probabilitatilor pi q ni , fiecare
termen aparand de Ai ori pentru i = 1, 2, . . . , n. Formal,
Pned =

n
X

Ai pi q ni

i=1

Cum A1 = A2 = . . . = Ad1 = 0, suma se reduce la Pned =

n
X
i=d

pi q ni .

3.5. IDENTITATEA MACWILLIAMS

33

Exemplul 3.6 Sa consider


am un cod care are un cuvant de pondere 0, cate sapte
cuvinte de pondere 3 si 4 si un cuvant de pondere 7. Atunci
Pned = 7p3 q 4 + 7p4 q 3 + p7
Dac
a folosim acest cod ntr-un canal binar simetric cu eroare de probabilitate
p = 0.01, avem
Pned = 7(0.01)3 (0.99)4 + 7(0.01)4 (0.99)3 + (0.01)7 7 106
deci - n medie - apar cam sapte erori nedetectabile la un milion de cuvinte
transmise.
Definitia 3.4 Polinomul de variabila x [0, 1] definit
P (x) =

n
X

A i xi

i=0

unde Ai este numarul de cuvinte din An,k de pondere i, se numeste numar


atorul
de ponderi al codului An,k .
Exemplul 3.7 Codul definit n Exemplul 3.2 are numar
atorul de ponderi
P (x) = 1 + x2 + 2x3
Propozitia 3.3 Fie An,k un cod liniar binar cu numar
ator de ponderi P (x). Probabilitatea aparitiei unei erori nedetectabile la folosirea codului An,k ntr-un canal binar
simetric este
" !
#
p
n
Pned = q P
1 .
q
Demonstratie: Relatia de definitie a lui Pned se poate rescrie
qn

n
X
i=1

Ai pi q i = q n

n
X

!i

Ai

i=1

p
q

Deoarece A0 = 1 (singurul cuvant - cod de pondere 0 este cuvantul - cod 0, expresia


devine n continuare

!i
" !
#
n
X
p
p
n
n

Pned = q
Ai
1 =q P
1 .
2
q
q
i=0

3.5

Identitatea MacWilliams

In acest paragraf vom arata un rezultat care face posibila determinarea numaratorului de ponderi PA al dualului A unui cod liniar A, direct din numaratorul de
ponderi PA al codului A.
Propozitia 3.4 Fie v Z2n si A un (n, k) - cod liniar binar. Atunci are loc egalitatea
(
1 X
1 daca w A
vw
(1)
=
0 altfel
2k vA

34

PRELEGEREA 3. CODURI LINIARE - II

Demonstratie: Daca w A atunci evident, (1)vw = (1)0 = 1 si suma este egala


cu numarul de cuvinte - cod din A, care este 2k .
Sa presupunem acum ca w 6 A , deci exista un cuvant - cod v0 A cu v0 w = 1.
Vom arata ca n acest caz, numarul cuvintelor - cod ortogonale pe w este egal cu
cel al cuvintelor - cod ne-ortogonale pe w (si deci suma din formula este 0).
Fie v1 , v2 , . . . , vr toate cuvintele - cod ortogonale pe w. Facem afirmatia ca
atunci v1 + v0 , v2 + v0 , . . . , vr + v0 sunt toate cuvintele - cod ne-ortogonale pe v0 .
Intr-adevar:
1. i (1 i r) (vi + v0 )w = vi w + v0 w = 0 + 1 = 1;
2. Daca v A verifica relatia vw = 1, atunci v v0 este un cuvant cod ortogonal pe w, deci v v0 = vi pentru un anumit i.
2
Teorema 3.8 Pentru orice (n, k) - cod liniar binar A are loc relatia (identitatea
MacWilliams):

1x
(1 + x)n
PA (x) =
PA
.
2k
1+x
Demonstratie: Sa rescriem numaratorul de ponderi sub o forma putin diferita:
B(x, y) =

n
X

Ai xi y ni .

i=0

!
n

Evident, deoarece P (x) = B(x, 1) si B(x, y) = y P

x
, cele doua expresii sunt
y

echivalente.
In notatia cu polinomul B, identitatea MacWilliams se scrie
BA (x) =

1
BA (y x, y + x).
2k

Cu ajutorul ponderii cuvintelor - cod, numaratorul de ponderi are forma


BA (x, y) =

n
X

Ai xi y ni =

i=0

xw(a) y nw(a)

aA

Prelucrand membrul drept al identitatii MacWilliams, avem:


BA (y x, y + x) =

(y x)w(a) (y + x)nw(a) =

n
XY

[y + (1)ai x] .

aA i=1

aA

In mod analog, membrul stang se scrie:


BA (x, y) =

xw(a) y nw(a) .

aA

Folosind Propozitia 3.4, el se poate reformula:


BA (x, y) =

X
aZ2n

"

1 X
(1)av xw(a) y nw(a) .
2k vA

3.5. IDENTITATEA MACWILLIAMS

35

Expresia din paranteze este 0 pentru toate cuvintele a care nu sunt n A . Deci
BA (x, y) =

1 X X
(1)va xw(a) y nw(a) .
k
2 vA aZ k
2

Suma interioara se face dupa toate secventele binare a de lungime n. Vom ordona
aceasta suma dupa ponderile lui a: pentru a = 0 sumandul este y n ; pentru cuvintele a de pondere 1 avem: [(1)a1 + (1)a2 + . . . + (1)an ]xy n1 etc; n final,
pentru ponderea n avem [(1)a1 + . . . + (1)an ]xn . Suma tuturor acestor sumanzi
n
X

[(1)ai1 + . . . + (1)aik ]xk y nk se observa usor ca este egala cu

k=0

[y + (1)a1 x][y + (1)a2 x] . . . [y + (1)ak x] =

n
Y

[y + (1)ai x]. Deci

i=1

n
1 XY
1
BA (x, y) = k
[y + (1)ai x] = k BA (y x, y + x).
2 aA i=1
2

Exemplul 3.8 Sa consider


am codul din Exemplul 3.2 al carui numar
ator de ponderi
a fost dat n Exemplul 3.7. Pentru codul dual,"numar
atorul de ponderi este#

(1 + x)4
1x
(1 + x)4
1x 2
1x 3
PA (x) =
P
=
1
+
+
2
=
A
22
1+x
4
1+x
1+x
(1 + x)4 + (1 + x)2 (1 x)2 + 2(1 + x)(1 x)3
4 + 4x2 + 4x3
=
=
= 1 + x2 + x3 .
4
4
Deci cele doua coduri au acelasi numar
ator de ponderi. Aceasta nu nseamn
a
ns
a ca cele doua coduri coincid (si deci codul ar fi auto - dual); a avea acelasi
num
ar
ator de ponderi este doar o conditie necesar
a, nu si suficienta pentru ca un
cod sa coincid
a cu dualul sau.
Exemplul 3.9 Fie codul cu repetitie de lungime par
a n A = {00 . . . 0, 11 . . . 1};
num
ar
atorul lui de ponderi este PA (x) = 1 + xn . Codul dual are numar
atorul de
ponderi


1x n
(1 + x)n
PA (x) =
1+
= 1 + Cn2 x2 + Cn4 x4 + . . . + xn .
2
1+x
Rezult
a din aceast
a forma ca dualul codului cu repetitie este codul liniar al cuvintelor de pondere par
a.

36

PRELEGEREA 3. CODURI LINIARE - II

3.6

Exercitii

Z n not
3.1 In
am cu x cuv
antul obtinut din x prin permutarea caracterelor 0 si 1
2
ntre ele. Sa se arate ca pentru orice a, b Z2n :
1. a + b = a + b;
2. a + b = a + b = a + b;
3. d(a, b) = d(a + b) = w(a + b).
3.2 Descrieti codurile modificate obtinute din codul liniar binar cu matricea generatoare

1 1 1 0 0

G= 0 0 1 1 1
1 1 1 1 0
a pentru codul peste Z3 definit prin
3.3 Aceeasi problem

1 0 0 2 2

G = 0 1 0 0 1 .
0 0 1 1 0
3.4 Fie A un (n, k) - cod liniar binar si A0 (n, k 1) - codul obtinut din A prin
expurgare. Ce relatie exista ntre matricile de control ale celor doua coduri ?
3.5 Ar
atati cum poate codul binar cu repetitie de lungime 7 sa corecteze doua erori
si sa detecteze 4 erori simultan. Cate erori poate detecta daca corecteaz
a o eroare ?
3.6 Fie A (15, 4) - codul liniar binar n care fiecare coloan
a i din matricea generatoare este scrierea binara a lui i sub forma unui vector cu 4 componente. Sa se
determine distanta minima, numar
atorul de ponderi si numar
atorul de ponderi al
codului dual.
3.7 Fie A un (2k + 1, k) - cod binar astfel ca A A. Descrieti A \ A.

Prelegerea 4
Clase de coduri liniare
4.1

Coduri Hamming

Fie H matricea de control a unui cod liniar binar. Daca se transmite un cuvant cod a si se receptioneaza a + e (deci cu eroarea - tip e, atunci sindromul este eH T .
Acest sindrom este egal cu suma coloanelor lui H care corespund pozitiilor afectate
de erori (Prelegerea II, Teorema 2.3).
In particular, o eroare care apare pe o pozitie corespunzatoare unei coloane nule
din H nu influenteaza sindromul. Deci, o astfel de eroare nu este detectata.
Daca H are doua coloane identice si se ntampla ca pe pozitiile corespunzatoare
lor sa apara simultan erori, acestea se anuleaza reciproc n calculul sindromului - si
deci nu pot fi detectate.
Pe de-alta parte, daca toate coloanele lui H sunt distincte si nenule, o eroare
singulara pe pozitia s va face ca sindromul sa fie egal cu coloana numarul s din H.
In acest caz, erorile singulare pot fi detectate si corectate foarte usor.
Pe baza acestor observatii am demonstrat teorema:
Teorema 4.1 Un cod liniar binar poate corecta o eroare daca si numai daca matricea sa de control are toate coloanele nenule si distincte.
Pentru a se putea corecta toate erorile simple, trebuie sa existe sindromuri distincte
pentru fiecare eroare - tip; deci, conform marginii Hamming (Prelegerea III, Teorema
3.5),
2nk n + 1.
Pe baza acestor considerente se defineste codul Hamming binar:
Definitia 4.1 Codul liniar binar n care coloanele matricii H sunt reprezentarea
binar
a a numerelor 1, 2, . . . , 2r 1 este numit cod Hamming binar.
Deci, pentru orice numar natural r (r 2) se poate construi un (n, k) - cod liniar
n care n = 2r 1, k = 2r r 1.
De remarcat ca definitia nu determina pentru fiecare r n mod unic matricea de
control a codului Hamming. De obicei se considera acea matrice H n care coloana
i reprezinta scrierea n binar a numarului i. Deoarece codul este sistematic (exista
coloane pentru 20 , 21 , . . . , 2r1 ), toate celelalte reprezentari au aceleasi proprietati.
37

38

PRELEGEREA 4. CLASE DE CODURI LINIARE

Exemplul 4.1 Pentru r = 3 avem codul Hamming de lungime n = 23 1 = 7 cu


k = 23 3 1 = 4 simboluri de informatie si 3 simboluri de control. Matricea de
control este:

0 0 0 1 1 1 1

H3,7 = 0 1 1 0 0 1 1
1 0 1 0 1 0 1
De aici rezult
a ca el este determinat de solutiile sistemului liniar:

x4

+ x5 + x6 + x7 = 0
x2 + x3 + x6 + x7 = 0

x1 + x3 + x5 + x7 = 0
S
a determinam matricea generatoare a acestui cod. Pentru aceasta, construim nt
ai
codul echivalent, permut
and coloanele pentru a aduce matricea de control la forma
esalonat
a canonic:

0 1 1 1 1 0 0

H3,7
= 1 0 1 1 0 1 0 .
1 1 0 1 0 0 1
De aici se obtine matricea generatoare esalonata canonic:

G4,7 =

1
0
0
0

0
1
0
0

0
0
1
0

0
0
0
1

0
1
1
1

1
0
1
1

1
1
0
1

Aplic
and permutarea inversa asupra coloanelor, se obtine matricea generatoare a
(7, 4) - codului Hamming binar:

G4,7 =

1
1
0
1

1
0
1
1

1
0
0
0

0
1
1
1

0
1
0
0

0
0
1
0

0
0
0
1

Codul este sistematic: coloanele corespunz


atoare matricii unitate: 3, 5, 6, 7, sunt
pozitiile simbolurilor de informatie n fiecare cuvant - cod. Deci simbolurile x1 , x2 , x4
sunt simboluri de control. Sistemul de sus poate fi rearanjat pentru a permite calculul
simbolurilor de control din simbolurile de informatie:

x1

= x3 + x5 + x7
x2 = x3 + x6 + x7

x4 = x5 + x6 + x7
Toate cuvintele codului sunt:

4.1. CODURI HAMMING


Informatie Cuvant cod Informatie Cuvant cod
0000
0000000
0110
0110011
1000
1000011
0101
0101010
0100
0100101
0011
0011001
0010
0010110
1110
1110000
0001
0001111
1101
1101001
1100
1100110
1011
1011010
1010
1010101
0111
0111100
1001
1001100
1111
1111111

39

Teorema 4.2 Un cod Hamming are distanta minima 3.


Demonstratie: Evident, orice doua coloane din matricea de control sunt liniar independente. In plus, se pot gasi trei coloane (de exemplu primele trei) a caror suma
sa fie 0. Conform Teoremei 2.4 (Prelegerea II), distanta minima a codului este 3.2
Deci orice cod Hamming poate corecta o eroare sau poate detecta doua erori. El
nu poate realiza acest lucru simultan (nu verifica conditia d s + t + 1 din Teorema
3.7, Prelegerea III).
Decodificarea se realizeaza foarte simplu, conform urmatorului algoritm:
Algoritm A:
Fie a vectorul receptionat.
1. Se calculeaza sindromul s = aH T .
2. Daca s = 0, nu a aparut nici o eroare (sau eroarea este nedetectabila),
deci v = a, STOP.
3. Altfel, eroarea este pe pozitia i, unde i este numarul a carui reprezentare
n binar este sindromul s. Decodificarea este v = a + ei , unde ei este
vectorul care are 1 pe pozitia i si 0 n rest.
Exemplul 4.2 Sa consider
am din nou (7, 4)
si sa presupunem ca s-a receptionat cuvantul
conduce la valoarea

1
xH T =
0
1

- codul Hamming din Exemplul 4.1


x = 0011101. Calculul sindromului

care este scrierea n binar a numarului 5. Deci a intervenit o eroare simpla pe pozitia
a cincea. Corect
am aceast
a pozitie - schimband 1 cu 0 si se obtine cuvantul - cod
0011001, care pe pozitiile 3, 5, 6, 7 contine mesajul de informatie: 1001.
Codul Hamming poate fi mbunatatit prin extensie. Aceasta operatie conduce la un
(2m , 2m m 1) - cod liniar, cu toate cuvintele - cod de pondere para.
Exemplul 4.3 Prin extensia (7, 4) de control

0 0
0 1
H =

1 0
1 1

codului Hamming se obtine codul cu matricea


0
1
1
1

1
0
0
1

1
0
1
1

1
1
0
1

1
1
1
1

0
0
0
1

40

PRELEGEREA 4. CLASE DE CODURI LINIARE

De remarcat ca H are rangul 4; n plus, toate liniile ei sunt cuvinte - cod n


codul Hamming extins. Deci H poate fi considerat
a matrice generatoare a acestui
cod. Rezult
a ca (8, 4) - codul Hamming extins este auto - dual.
Un cod Hamming extins este solutia unui sistem liniar de n k + 1 ecuatii, ecuatia
suplimentara

n+1
X

xi = 0 fiind numita ecuatia de control a parit


atii.

i=1

Propozitia 4.1 Un cod Hamming extins are d = 4.


Demonstratie: Fie a1 a2 . . . an un cuvant - cod de pondere d = 3 din codul Hamming. Trecand la codul extins, cuvantul a1 a2 . . . an an+1 verifica relatia suplimentara
n+1
X

ai = 0 (reamintim, sumele se fac modulo 2). Cum

i=1

n
X

ai = 1, rezulta an+1 = 1.

i=1

Noul cuvant are evident pondere minima, si aceasta este 3 + 1 = 4.

Codurile Hamming extinse corecteaza o eroare simpla si detecteaza 2 erori simultan. Algoritmul prezentat este bazat pe verificarea celor n k + 1 ecuatii de
control:
Algoritm B:
1. Daca nu sunt verificate ecuatia de control a paritatii si cel putin una
din primele n k ecuatii, nseamna ca a aparut o eroare simpla, care se
corecteaza cu Algoritmul A;
2. Daca ecuatia de control a paritatii este verificata dar cel putin una din
primele nk ecuatii de control nu se verifica, s-a detectat o eroare dubla;
3. In celelalte situatii nu au aparut erori (sau eroarea este nedetectabila).
Faptul ca se poate lua totdeauna o decizie se bazeaza pe urmatorul rezultat.
Teorema 4.3 Codul Hamming este perfect.
Demonstratie: Reamintim (Prelegerea II, Definitia 2.8) ca un cod A este perfect
daca
[
Zqn =
St (x).
xA

Scriind aceasta relatie n functie de numarul de elemente din fiecare sfera si tinand
cont ca toate sferele contin un numar egal de elemente, avem
h

q k 1 + Cn1 (q 1) + . . . + Cnt (q 1)t = q n .


Pentru cazul codurilor Hamming, q = 2, n = 2r 1, k = 2r r 1, t = 1, deci
totul revine la verificarea egalitatii 2k (1 + n) = 2n .
2
De remarcat ca rata de informatie a codurilor Hamming
R=

k
r
=1 r
n
2 1

creste rapid spre 1. Evident nsa ca odata cu aceasta crestere scade protectia fata
de erori.

4.1. CODURI HAMMING

4.1.1

41

Coduri Hamming nebinare


r

1
Definitia 4.2 Fie q num
ar prim, r (r 2) un ntreg si n = qq1
. Se numeste cod
Hamming nebinar un (n, n r) - cod liniar peste Zq n care matricea de control are
orice pereche de doua coloane liniar independente (nici o coloan
a nu este multiplu
scalar al altei coloane).

Multimea coloanelor unui astfel de cod formeaza o multime maximala de vectori


liniar independenti doi cate doi.
Exemplul 4.4 Sa consider
am q = 3, r = 2. Atunci n =
cod Hamming ternar poate fi dat de matricea de control

H=

0 1 1 1
1 0 1 2

32 1
= 4. Un (4, 2) 31

Decodificarea se poate face folosind tabela de sindromuri, n care s-au luat ca reprezentanti toate combinatiile posibile de o eroare:
Sindrom Reprezentant
01
1000
02
2000
10
0100
11
0010

Sindrom Reprezentant
12
0001
20
0200
21
0002
22
0020

Dac
a se receptioneaz
a de exemplu 1021, calculul sindromului da s = 02. Reprezentantul este 2000. Se calculeaz
a 1021 2000 = 1021 + 1000 = 2021 deci cuvantul cod transmis a fost 2021.

!
2 2 1 0
ultimele doua
Cum matricea generatoare a acestui cod este G =
1 2 0 1
caractere formeaz
a mesajul de informatie; deci s-a codificat mesajul 21.
Despre codurile Hamming nebinare se pot stabili urmatoarele rezultate:
Deoarece pentru q, r fixati codurile Hamming corespunzatoare sunt echivalente, se poate alege o anumita matrice de control. Uzual se foloseste matricea
n care se scriu toate coloanele nenule de r elemente din Zq , cu conditia ca
primul element nenul (de sus n jos) sa fie 1.
Codurile Hamming nebinare au d = 3 (evident, din constructia matricii de
control de mai sus). Deci ele pot corecta o eroare.
Proprietatea de a fi coduri perfecte se pastreaza. Intr-adevar, deoarece un
r 1
cod Hamming contine q nr cuvinte - cod iar n = qq1
, egalitatea stabilita n
nr
demonstratia Teoremei 4.3 se scrie q [1 + n(q 1)] = q n , care se verifica
imediat.

42

PRELEGEREA 4. CLASE DE CODURI LINIARE

Exemplul 4.5 Sa consider


am (13, 10) - codul Hamming ternar. Acest cod are o
aplicatie interesant
a n problema Pronosportului. Dupa cum se stie, un buletin
Pronosport contine rezultatele (notate cu 1, 2, X) a 13 meciuri. Pentru a avea sigur
13 rezultate exacte trebuiesc completate 313 buletine. Cate buletine sunt ns
a necesare
pentru a fi sigur de 12 rezultate ? La prima vedere s-ar parea ca 312 . Completand
ns
a buletinele cu elementele codului Hamming ternar (13, 10) (cu 0 n loc de X)
care sunt n numar de 310 , se atinge scopul dorit. Intr-adev
ar, acesta fiind un cod
13
perfect corector de o eroare, orice element din Z3 difer
a prin cel mult o pozitie de
un cuvant - cod.
Astfel, numarul buletinelor se reduce de nou
a ori.

4.2

Codul Golay

Al doilea cod liniar prezentat are capacitatea de corectie pentru maxim 3 erori.
Vom construi ntai varianta extinsa a codului, deoarece algoritmul de decodificare
este mai simplu si usor de aplicat ulterior la codul Golay normal.

4.2.1

Codul Golay binar extins

Acest cod a fost folosit de programul spatial Voyager la nceputul anilor 0 80, la
transmiterea fotografiilor planetelor Jupiter si Saturn.
Sa consideram matricea 12 12 din Figura 4.1:
Figura 4.1:

B=

1
1
0
1
1
1
0
0
0
1
0
1

1
0
1
1
1
0
0
0
1
0
1
1

0
1
1
1
0
0
0
1
0
1
1
1

1
1
1
0
0
0
1
0
1
1
0
1

1
1
0
0
0
1
0
1
1
0
1
1

1
0
0
0
1
0
1
1
0
1
1
1

0
0
0
1
0
1
1
0
1
1
1
1

0
0
1
0
1
1
0
1
1
1
0
1

0
1
0
1
1
0
1
1
1
0
0
1

1
0
1
1
0
1
1
1
0
0
0
1

0
1
1
0
1
1
1
0
0
0
1
1

1
1
1
1
1
1
1
1
1
1
1
0

Fie G matricea 12 24 G = (I12 |B). Codul liniar binar generat de G se numeste


codul Golay extins si va fi notat C24 .
Observatii:
Matricea B este mai usor de construit decat pare. Astfel, eliminand ultima
linie si coloana, matricea ramasa - sa spunem B1 - este generata ciclic (spre

4.2. CODUL GOLAY

43

stanga) de cuvantul binar 11011100010. Deci B =

B1 1T
1 0

unde 1 = 11111111111. Evident, B este simetrica (B T = B).


C24 are n = 24, k = 12 si 212 = 4096 cuvinte - cod.
Conform Teoremei 2.2, o matrice de control a codului este H = (B|I12 ).
Teorema 4.4 H = (I12 |B) este de asemenea matrice de control pentru C24 .
Demonstratie: Liniile din B au pondere impara (7 sau 11); deci produsul (scalar)
al unei linii cu ea nsasi este 1. O verificare simpla arata ca produsul primei linii cu
oricare alta linie din B este 0. Structura ciclica a lui B1 asigura ca atunci produsul
scalar al oricaror doua linii este 0.
In concluzie, BB T = I12 . Dar B T = B, asa ca putem scrie:

GH = (I|B)

I
B

= I 2 + B 2 = I + BB T = I + I = 0.

Vom folosi ambele matrici de control pentru decodificarea codului C24 .

Corolarul 4.1
A. C24 admite ca matrice generatoare si pe G = (B|I12 ).

B. Codul Golay extins este auto - dual (C24 = C24


).
Demonstratie: Se verifica imediat.

Teorema 4.5 C24 are distanta minima d = 8.


Demonstratie: Vom demonstra afirmatia n trei pasi.
1. Ponderea cuvintelor din C24 este multiplu de 4.
Sa observam ca liniile lui G au pondere 8 sau 12. Fie v C24 ca suma de doua
linii din G : v = ri + rj . Cum B are liniile ortogonale, rezulta ca si liniile lui
G sunt ortogonale. Deci ri si rj au un numar par (sa zicem 2x) de elemente 1
n comun. Atunci w(v) = w(ri ) + w(rj ) 2(2x), care este multiplu de 4.
Fie acum v C24 ca suma de trei linii din G : v = ri + rj + rs . Notam
v1 = ri + rj . Deoarece C24 este auto - dual, v1 si rs au un numar par (sa
zicem 2y) de elemente 1 n comun. Deci w(v) = w(v1 ) + w(rs ) 2(2y) care
este multiplu de 4.
Folosind acum un procedeu de inductie, cum orice cuvant - cod este combinatie
liniara de linii din G, ponderea sa va fi multiplu de 4.
2. Primele 11 linii din G sunt cuvinte - cod de pondere 8, deci distanta codului
C24 este 4 sau 8.
3. C24 nu are cuvinte de pondere 4.
Sa presupunem ca exista v C24 cu w(v) = 4. Exista atunci u1 , u2 Z212
cu v = u1 (I|B), v = u2 (B|I). Deoarece exista o jumatate din v care are cel
putin doi de 1, rezulta w(u1 ) 2 sau w(u2 ) 2. Pe de-alta parte, suma
a una sau doua linii din B nu poate avea o pondere mai mica de 4; deci
w(v) = w(ui ) + w(ui B) > 4, contradictie.
2

44

PRELEGEREA 4. CLASE DE CODURI LINIARE

4.2.2

Decodificarea codului Golay extins

Conform Teoremei 4.5, un cod Golay extins poate corecta orice combinatie de maxim
3 erori.
In aceasta sectiune vom nota cu a cuvantul receptionat, cu v cuvantul - cod cel
mai apropiat, si cu e eroarea - tip (v = a + e). Deoarece capacitatea de corectie
este de 3 erori, vom considera w(e) 3.
Pentru orice cuvant din Z224 , vom separa cu o virgula prima jumatate a cuvantului
de cea de-a doua. Eroarea - tip va fi notata u = [u1 , u2 ], unde u1 , u2 au fiecare
lungimea 12. Evident, conditia w(u) 3 implica w(u1 ) 1 sau w(u2 ) 1.
Folosind cele doua matrici
de
doua sindromuri pentru a:

! control, sepot defini


!
I12
I12
s1 = u
= [u1 , u2 ]
= u1 + u2 B,
B
B

!
B
B
s2 = u
= [u1 , u2 ]
= u1 B + u2 .
I12
I12
De aici rezulta urmatoarea observatie: daca w(u2 ) 1, atunci s1 este sau un
cuvant de pondere maxim 3 (daca w(u2 ) = 0), sau o linie a lui B cu cel mult doi
biti schimbati (daca w(u2 ) = 1).
Similar, daca w(u1 ) 1, atunci s2 este sau un cuvant de pondere maxim 3 sau
o linie a lui B cu cel mult doi biti schimbati.
Daca se foloseste si faptul ca s2 = u1 B + u2 = (u1 + u2 B)B = s1 B (deci se
poate folosi doar prima matrice de control), putem defini urmatorul algoritm de
decodificare a codurilor Golay extinse:
Algoritm C:
1. Se calculeaza sindromul s = aH;
2. Daca w(s) 3, atunci e = [s, 0], STOP.
3. Daca exista o linie bi a lui B cu w(s + bi ) 2, atunci e = [s + bi , ei ],
STOP.
4. Daca w(sB) 3, atunci e = [0, sB], STOP.
5. Daca exista o linie bi a lui B cu w(sB + bi ) 2, atunci e = [ei , sB + bi ],
STOP.
6. Daca e nu a fost determinat nca, se cere retransmiterea.
S-a notat cu ei un cuvant de lungime 12 cu 1 pe pozitia i si 0 n rest.
Dupa determinarea erorii e, cuvantul - cod transmis se determina prin v = a + e.
Exemplul 4.6 Sa decodific
am cuvantul a = 101111101111, 010010010010.
Sindromul este
s = aH T = 101111101111 + 001111101110 = 100000000001.
Deoarece w(s) = 2 3, se gaseste e = [s, 0] = 100000000001, 000000000000
deci s-a transmis cuvantul v = a + u = 001111101110, 010010010010.

4.2. CODUL GOLAY

45

Deoarece G = (I12 |B) este n forma esalonat canonica, mesajul de informatie (orice
cuvant din Z212 ) apare pe primele 12 pozitii ale cuvantului - cod. Astfel, n exemplul
de sus, mesajul de informatie a fost 001111101110.
Exemplul 4.7 Se cere decodificarea cuvantului a = 001001001101, 101000101000.
Sindromul este
s = aH = 001001001101 + 111000000100 = 110001001001.
Deoarece w(s) = 5, se trece la pasul 3 al Algoritmului C si se calculeaz
a:
s + b1
s + b2
s + b3
s + b4
s + b5

=
=
=
=
=

000110001100
011111000010
101101011110
001001100100
000000010010

Deoarece w(s + b5 ) 2, se determina


e = [s + b5 , e5 ] = 000000010010, 000010000000
si se decide ca s-a transmis cuvantul - cod
v = a + e = 001001011111, 101010101000.
Exemplul 4.8 Sa decodific
am cuvantul a = 000111000111, 011011010000.
Sindromul este
s = aH T = u1 + u2 B = 000111000111 + 101010101101 = 101101101010
care are ponderea 7. Trec
and la pasul 3 se gaseste w(s + bi ) 3 pentru toate
liniile lui B; deci se continu
a cu pasul 4: al doilea sindrom este sB = 111001111101
cu ponderea 8. Pasul 5 va da:
sB + b1
sB + b2
sB + b3
sB + b4

=
=
=
=

001110111000
010111110110
100101101010
000001010000

S-a ajuns la w(sB + b4 ) 2, deci se poate determina eroarea:


e = [e4 , sB + b4 ] = 000100000000, 000001010000
deci cuvantul - cod transmis a fost:
v = a + e = 000011000111, 011010000000.

4.2.3

Codul Golay

Prin relaxarea codului Golay extins (eliminarea ultimului bit din fiecare cuvant cod) se ajunge la Codul Golay binar.
matricea 12 11 obtinuta din B prin eliminarea ultimei coloane. Definim
Fie B
Codul liniar binar generat de G se numeste codul Golay si este notat
G = (I12 |B).
cu C23 . Caracteristicile sale sunt:
n = 23,

k = 12,

Numar de cuvinte - cod: 212 = 4096.

Evident, extensia lui C23 este C24 .

46

PRELEGEREA 4. CLASE DE CODURI LINIARE

Teorema 4.6 Distanta unui cod Golay este d = 7.


Demonstratie: Demonstratia se poate face fie direct (similar celei de la Teorema 4.5)
fie folosind faptul ca C23 este relaxarea codului C24 , care are distanta 8.
2
In consecinta, un cod Golay va corecta orice combinatie de maxim 3 erori.
Teorema 4.7 Codul Golay este perfect.
Demonstratie: Se verifica relatia:
0
1
2
3
212 (C23
+ C23
+ C23
+ C23
) = 212 (1 + 23 + 253 + 1771) = 212 211 = 223 .

Rezulta ca orice cuvant a Z223 se afla la distanta maxim 3 de un cuvant - cod.


Astfel, daca se adauga la sfarsit 0 sau 1, formand a0 respectiv a1 pentru a obtine
un cuvant de pondere impara, acest cuvant este la distanta maxim 3 de un cuvant
- cod c C24 . Se foloseste Algoritmul C pentru a obtine acest cuvant - cod, apoi se
elimina ultimul caracter din c; se ajunge astfel la cel mai apropiat cuvant - cod din
C23 fata de a.
Algoritmul D:
1. Se formeaza cuvantul extins de pondere impara a0 sau a1;
2. Se decodifica ai folosind Algoritmul C si se obtine c C24 ;
3. Se elimina ultimul caracter din c.
Exemplul 4.9 Sa decodific
am a = 001001001001, 11111110000.
Deoarece a are pondere impara, se construieste
a0 = 001001001001, 111111100000.
Sindromul acestui cuvant este s1 = 100010111110.
Pentru ca s1 = b6 + e9 + e12 , a0 se decodific
a n 001001000000, 111110100000,
asa ca a este decodificat n 001001000000, 11111010000.

4.3

Unicitatea codurilor perfecte binare

Ambele clase de coduri liniare prezentate aici sunt perfecte.


Se observa imediat ca pentru corectarea unei erori, singurele coduri binare perfecte sunt codurile Hamming.
Vom mai arata ca aceasta singularitate este valabila si n cazul codurilor Golay;
anume, singurul cod binar perfect corector de 3 erori este codul Golay. Pentru
aceasta sunt necesare doua leme:
a pentru existenta unui (n, k) - cod binar perfect corecLema 4.1 O conditie necesar
tor de t erori este

t
X

Cni = 2p pentru un anumit p.

i=0

Demonstratie: Rezulta imediat din relatia scrisa n demonstratia Teoremei 4.3, n


care se ia q = 2.
2

4.3. UNICITATEA CODURILOR PERFECTE BINARE


t
X

47

n+1
Rt (n)
t!
i=0
unde t este numar natural impar, Rt (X) Z[X], gr(Rt (X)) = t 1.

Lema 4.2

Cni =

Demonstratie: Pentru t = 1 se verifica imediat.


Presupumem adevarata afirmatia pentru
am pentru t +# 2. Avem
" t si o demonstr
t+2
t
X
Y
n+1
n+1
Cni =
+ Cnt+1 + Cnt+2 =
(t + 1)(t + 2)Rt (n) + (n i) .
t!
(t + 2)!
i=0
i=0
Expresia din paranteza dreapta este un polinom de gradul t + 1; notandu-l cu
Rt+2 (n), afirmatia este demonstrata.
2
Sa consideram acum cazul t = 3. Pentru ca sa existe un cod binar perfect
corector de 3 erori, cu lemele de sus, trebuie ca (n + 1)(n2 n + 6) = 3 2s , sau
(n + 1)[(n + 1)2 3(n + 1) + 8] = 3 2s .
Considerata ca o ecuatie n n + 1, singurele solutii ntregi pozitive sunt de forma
n + 1 = 2k p unde p = 1 sau p = 3. Inlocuind, se ajunge la
22k p3 2k 3p2 + 8p = 2sk 3

(1)

Pentru k 3 si p = 1, 3 verificarile se fac imediat. Pentru k 4 se ajunge la


contradictie. Singurele valori care verifica ecuatia sunt:
n = 0, 1, 2 nu corespund nici unui cod.
n=3
codul trivial cu un singur cuvant - cod de lungime 3.
n=7
codul (trivial) cu repetitie {0000000, 1111111}.
n = 23
codul Golay.
In acest mod am demonstrat teorema:
Teorema 4.8 Codul binar Golay este singurul cod binar perfect netrivial corector
de 3 erori.
Lemele 4.1 si 4.2 pot fi folosite si pentru alte valori impare ale lui t. Cercetarile nu
au condus la alte coduri perfecte binare, dar nici nu s-a demonstrat ca nu exista
nici un cod perfect binar corector de t (t > 3 impar) erori. Afirmatia este valabila
deocamdata pentru t < 20.
Un alt caz interesant de studiu este q = 2, t = 2. Aici se poate da teorema:
Teorema 4.9 Nu exista nici un cod netrivial binar perfect corector de 2 erori.
Demonstratie: Lema 4.1 conduce la relatia
(2n + 1)2 = 2s+3 7.
Ecuatia x2 + 7 = 2m a fost studiata n multe articole (vezi Math. Rev. 26, #74).
Singurele solutii sunt x = 1, 3, 5, 11, 181 carora le corespund:
n = 0, 1 fara coduri.
n=2
codul trivial cu un singur cuvant.
n=5
codul cu repetitie {00000, 11111}.
n = 90.

48

PRELEGEREA 4. CLASE DE CODURI LINIARE

Acest ultim caz este eliminat de urmatorul rezultat (Van Lindt - Coding theory,
pp. 95):
n+1
este numar
Daca exista un cod binar perfect corector de t erori, atunci
t+1
ntreg.
2

4.4

Exercitii

4.1 Fie (8, 4) - codul Hamming binar extins. Decodificati cuvintele


10101010 11010110

11111111.

4.2 S
a se demonstreze ca toate cuvintele - cod ale codului Hamming binar extins
r r
(2 , 2 r 1) au pondere par
a.
4.3 Construiti codurile Hamming ternare pentru r = 2, 3 si determinati decodificarea pe baza sindromurilor.
4.4 Construiti (5, 3) - codul Hamming cu q = 4. Determinati toate cuvintele - cod si
tabela de decodificare cu sindromuri. Decodificati cuvintele: 11223, 32101 2222 1100.
4.5 Demonstrati afirmatiile din Corolarul 4.1.
4.6 Ar
atati ca C24 contine un cuvant cu toate componentele egale cu 1 si nici un
cuv
ant de pondere 20.
Demonstrati ca numar
atorul de ponderi al lui C24 este:
1 + 759X 8 + 2576X 12 + 759X 16 + X 24 .
codul Golay extins C24 sa se decodifice - daca este posibil, cuvintele:
4.7 In
111000000000, 011011011011
111111000000, 101011100111
111000000000, 110111001101
000111000111, 101000101101

111111000000, 100011100111
111111000000, 111000111000
110111001101, 111000000000
110000000000, 101100100000

4.8 S
a se determine eroarea tip cea mai probabil
a pentru un cuvant cu sindromurile:
s1
s1
s1
s1
s1
s1

= 010010000000,
= 010010100101,
= 111111000101,
= 111111111011,
= 001101110110,
= 010111111001,

s2
s2
s2
s2
s2
s2

= 011111010000
= 001000110000
= 111100010111
= 010010001110
= 111110101101
= 100010111111

4.9 Folosind C23 , decodificati cuvintele:


101011100000, 10101011011
101010000001, 11011100010
100101011000, 11100010000
011001001001, 01101101111
4.10 Detaliati demonstratia Teoremei 4.6.
4.11 Rezolvati ecuatia (1).

Prelegerea 5
Coduri Reed - Muller
Vom introduce o noua clasa de coduri binare, caracterizate printr-o tehnica de decodificare deosebit de simpla: codurile Reed - Muller (R M ). Ele au fost definite
de Reed, iar Muller a construit modalitatea de decodificare si - implicit - de detectare si corectare a erorilor. Unul din aceste coduri - RM(1, 5) - a fost folosit n
1969 de sonda Mariner pentru transmiterea de imagini de pe Luna. Fiecare pixel
din imagine avea asignat una din 26 = 64 grade de umbra, iar acesti sase biti de
informatie erau codificati ntr-un cuvant de lungime 32. Codul poate corecta pana
la 7 erori.

5.1
5.1.1

Definirea prin functii booleene


Functii si polinoame booleene

Definitia 5.1 O functie booleana de m (m 1) variabile este o aplicatie


f : Z2m Z2 .
O modalitate simpla folosita pentru definirea unei functii booleene este asocierea
unei tabele de adevar: un tablou (m+1)2m care contine toate combinatiile posibile
de m valori binare, carora li se asociaza valoarea functiei (de asemenea o valoare
binara). Prin conventie, primii m biti de pe coloana i (0 i 2m 1) reprezinta
scrierea n baza 2 a numarului i.
Exemplul 5.1 Urmatoarea tabela de adevar defineste o functie boolean
a de 3 variabile:
x0
x1
x2
f

0
0
0
0

1
0
0
1

0
1
0
1

1
1
0
0

0
0
1
1

1
0
1
1

0
1
1
1

1
1
1
0

Observ
am ca o astfel de tabel
a defineste un cuvant binar de lungime 8. Afirmatia
este adevarat
a si invers: orice cuvant binar de lungime 8 este definit printr-o tabel
a
de adevar a unei functii booleene de 3 variabile. Astfel, se pot identifica functiile
tabela de sus, cuvantul
booleene de 3 variabile prin cuvintele binare de lungime 8. In
01101110 este pus n corespondent
a biunivoc
a cu functia f .
49

50

PRELEGEREA 5. CODURI REED - MULLER

In cele ce urmeaza, orice cuvant binar f = f0 f1 . . . f2m 1 de lungime 2m este considerat ca o functie booleana de m variabile, unde
f (0, 0, . . . , 0, 0) = f0 ,
f (0, 0, . . . , 0, 1) = f1 ,
f (0, 0, . . . , 1, 0) = f2 ,
..
.
f (1, 1, . . . , 1, 1) = f2m 1
In general, fi = f (im1 , . . . , i1 , i0 ), unde i =
(im1 . . . i1 i0 este scrierea n binar a lui i).

m1
X

ik 2k

k=0

Exemplul 5.2 Exista doua functii booleene constante:


1 = 11 . . . 11,

0 = 00 . . . 00.

Exemplul 5.3 Orice variabila poate fi tratat


a ca o functie boolean
a. De exemplu,
a care asigneaz
a fiec
arui m-tuplu (x0 , x1 , . . . , xm1 ) valoarea
x0 este functia boolean
primei coordonate x0 . Deci, valoarea este 0 pentru toate numerele pare si 1 pentru
toate numerele impare: x0 = 0101 . . . 01 (vezi Exemplul 5.1 pentru cazul m = 3).
general,
In
xi este cuvantul binar n care pe pozitia k (0 k 2m 1) este 1 atunci si
numai atunci cand scrierea binara a lui k contine 1 pe pozitia i.
Aceast
a observatie rezult
a din modul de scriere al tabelelor de adevar.
De exemplu, x1 = 00110011 . . . 0011 si xm1 = 00
. . 00} 11
. . 11}.
| .{z
| .{z
2m1

2m1

Pentru m = 4, cele patru variabile sunt descrise n Tabelul 5.1:


Tabelul 5.1:
x0
x1
x2
x3

0
0
0
0

1
0
0
0

0
1
0
0

1
1
0
0

0
0
1
0

1
0
1
0

0
1
1
0

1
1
1
0

0
0
0
1

1
0
0
1

0
1
0
1

1
1
0
1

0
0
1
1

Pe multimea functiilor booleene se definesc doua operatii:


Suma logic
a (sau exclusiv):

f +g =h

unde hi = fi + gi (mod 2), 0 i 2m 1.


Produsul logic (si):

fg = h

unde hi = fi gi (mod 2), 0 i 2m 1.


Observatii:

1
0
1
1

0
1
1
1

1
1
1
1

5.1. DEFINIREA PRIN FUNCT


II BOOLEENE
1. Produsul logic verifica relatia

51

ff = f .

Deci n reprezentarea functiilor nu vor apare exponenti mai mari de 1.


2. Exista si alte operatii care pot fi exprimate cu ajutorul sumei si produsului
logic. Astfel,
Negatia

f =1+f

(sau disjunctiv):

f g = f + g + fg

Definitia 5.2 Un polinom boolean de m nedeterminate este o suma de termeni din


multimea
{0, 1} {xi1 xi2 . . . xik |0 i1 < i2 < . . . < ik m 1, k 1}.
Functia 0 este numita polinom boolean de gradul 1, functia 1 este numita polinom
boolean de gradul 0, iar orice alt polinom boolean are gradul k unde k este numarul
maxim de factori dintr-un termen al lui f .
Exemplul 5.4 Polinomul boolean 1 + x0 x1 de 3 nedeterminate are gradul 2. El
este negatia polinomului
x0 x1 = (01010101)(00110011) = 00010001.
Deci 1 + x0 x1 = 11101110.
Acelasi polinom, considerat ca functie de 4 nedeterminate, este cuvantul
1110111011101110.
Exemplul 5.5 Polinomul xi xj (i 6= j) este cuvantul binar n care pe pozitia k este
1 daca si numai daca reprezentarea binara a lui k are 1 pe pozitiile i si j. Numarul
acestor situatii este 2m2 (deoarece celelalte m 2 pozitii din scrierea binara a lui k
pot fi alese arbitrar). Deci w(xi xj ) = 2m2 .
Mai general,
Daca i1 , i2 , . . . , ir sunt valori distincte din [0, m 1], atunci
w(xi1 xi2 . . . xir ) = 2mr .

()

Fiecare polinom boolean de m variabile determina un cuvant binar de lungime


2m : pentru o singura nedeterminata, se foloseste Exemplul 5.3, dupa care se opereaza
adunarile si multiplicarile necesare.
Invers, orice cuvant binar f = f0 f1 . . . f2m 1 poate fi translatat ntr-un polinom
boolean pe baza urmatoarei propozitii:
Propozitia 5.1 Dac
a f este o functie booleana de m variabile, atunci:
f (x0 , . . . , xm2 , xm1 ) = f (x0 , . . . , xm2 , 0)+
+[f (x0 , . . . , xm2 , 0) + f (x0 , . . . , xm2 , 1)]xm1 .
Demonstratie: Deoarece xm1 poate lua doar doua valori (0, 1), este suficient sa
verificam identitatea pentru acestea. Cazul xm1 = 0 se verifica banal. Pentru
xm1 = 1 avem:
f (x0 , . . . , xm2 , 0)+[f (x0 , . . . , xm2 , 0)+f (x0 , . . . , xm2 , 1)] = f (x0 , . . . , xm2 , 1).
2

52

PRELEGEREA 5. CODURI REED - MULLER

Exemplul 5.6 Sa translat


am f = 01101110 ntr-un polinom boolean de 3 variabile.
Vom aplica pe etape formula din Propozitia 5.1:
f = 0110 + [0110 + 1110]x2 = 0110 + 1000x2 =
= (01 + [01 + 10]x1 ) + (10 + [10 + 00]x1 )x2 = 01 + 11x1 + 10x2 + 10x1 x2 =
= (0 + [0 + 1]x0 ) + (1 + [1 + 1]x0 )x1 + (1 + [1 + 0]x0 )x2 + (1 + [1 + 0]x0 )x1 x2 =
= x0 + x1 + x2 + x0 x2 + x1 x2 + x0 x1 x2 .
Teorema 5.1 Spatiul liniar Z2n , (n = 2m ) are o baz
a formata din toate monoamele
booleene:
1
xi
xi xj
..
.

(i = 0, 1, . . . , m 1)
(i, j = 0, 1, . . . , m 1, i 6= j)

x0 x1 . . . xm1
Demonstratie: Fiecare cuvant de lungime n = 2m este o functie booleana de m nedeterminate, care poate fi exprimata printr-un polinom boolean. Monoamele booleene
pot fi considerate n Z2n si sunt evident liniar independente. In plus, deoarece pentru
k
fiecare k = 0, 1, . . . , m sunt Cm
monoame de grad k, numarul lor total va fi
m
X

k
Cm
= 2m = n, adica dimensiunea spatiului liniar.

k=0

5.1.2

Coduri Reed - Muller

Definitia 5.3 Se numeste cod Reed - Muller de lungime n = 2m si grad r


(0 r m), codul liniar RM(r, m) al tuturor cuvintelor binare de lungime n care
au - ca polinoame booleene - gradul maxim r.
Exemplul 5.7 RM(0, m) este format din toate polinoamele de grad cel mult 0,
adic
a 0 si 1. Deci RM(0, m) este codul cu repetitie de lungime 2m .
Exemplul 5.8 RM(1, m) are baza 1, x0 , . . . , xm1 ; orice polinom de grad cel mult
1 se poate scrie ca suma de o parte din aceste m+1 polinoame (liniar independente).
Deci, RM(1, m) este un (2m , m + 1) - cod liniar.
De exemplu, RM(1, 3) are matricea generatoare:

G=

1
x0
x1
x2

1
0
0
0

1
1
0
0

1
0
1
0

1
1
1
0

1
0
0
1

1
1
0
1

1
0
1
1

1
1
1
1

care genereaz
a codul Hamming extins (8, 4).
Similar, RM(1, 4) este un (16, 5) - cod liniar binar, iar RM(1, 5) este un (32, 6)
- cod liniar, folosit n 1969 de programul Mariner, dupa cum s-a mentionat anterior.
r
1
0
simboluri de informatie.
+ . . . + Cm
+ Cm
Propozitia 5.2 RM(r, m) are k = Cm

5.1. DEFINIREA PRIN FUNCT


II BOOLEENE

53

Demonstratie: Codul RM(r, m) are ca baza monoamele booleene


{1} {xi1 xi2 . . . xis |s r, 0 i1 < i2 < . . . < is < m}.
0
1
r
Numarul acestor monoame este Cm
+ Cm
+ . . . + Cm
. Cum ele sunt liniar independente, vor forma liniile matricii generatoare G a codului; ori numarul de linii
este egal cu numarul de simboluri de informatie.
2
Propozitia 5.3 Dualul codului RM(r, m) este codul RM(m r 1, m).
Demonstratie: Trebuie aratat ca cele doua coduri au baze ortogonale si suma dimensiunilor lor este egala cu suma ntregului spatiu.
A: Fie vi1 vi2 . . . vip (p r) un monom din baza codului RM(r, m) si
vj1 vj2 . . . vjs (s m r 1) un monom din baza codului RM(m r 1, m).
Produsul lor are t (t r + m r 1 = m 1) variabile distincte (variabilele comune
apar o singura data), deci ponderea lui este (conform ()) 2mt 2. Fiind un numar
par, rezulta ca produsul scalar (adica suma n binar a termenilor) este 0.
B: Suma dimensiunilor celor doua coduri este:
r
X
i=0

i
+
Cm

mr1
X

i
=
Cm

i=0

r
X

m
X

i
Cm
+

i=0

i=r+1

i
Cm
=

m
X

i
= 2m = n.
Cm

i=0

Exemplul 5.9 RM(m 2, m) este codul Hamming extins de lungime 2m . Intradev


ar, codul sau dual este RM(m (m 2) 1, m) = RM(1, m), deci RM(m
2, m) are matricea de control

H=

1
x0
..
.

1 1 1 1 ... 1 1 1 1

0 1 0 1 ... 0 1 0 1
=
.
..

xm

0 0 0 0 ... 1 1 1 1

Daca adunam prima linie la toate celelalte si apoi o permut


am cu ultima linie,
se obtine alta matrice de control a codului:

1 0 1 0 ... 1 0

1 1 0 0 ... 1 1

..
H
.

1 1 1 1 ... 0 0

1 1 1 1 ... 1 1

1 0

0 0

0
1 1

Dup
a eliminarea ultimei linii si coloane se obtine un (2m 1, m) - cod ale carui
coloane sunt nenule si diferite doua cate doua, adica matricea de control H0 a unui
cod Hamming binar. Deci H este matricea de control a unui cod Hamming extins.
Codificarea mesajelor cu un cod R M se realizeaza normal, nmultind mesajul de
informatie cu matricea generatoare. In acest fel bitii de informatie devin coeficientii
polinomului boolean corespunzator. De exemplu, n RM(1, m) codificarea celor
m + 1 caractere de informatie este:

(a1 , a2 , . . . , am+1 )

1
x0
..
.
xm1

= a1 1 + a2 x0 + . . . + am+1 xm1 .

54

PRELEGEREA 5. CODURI REED - MULLER

5.2

Definirea recursiv
a a codurilor R - M

Sa introducem o alta modalitate de definire a codurilor Reed - Muller, nu prin


polinoame booleene, ci prin constructie recursiva.
Definitia 5.4 Fie m 0 un numar natural. Se defineste codul Reed - Muller
RM(r, m) de ordin r (0 r m) si lungime n = 2m astfel:
RM(m, m) = Z2n .

RM(0, m) = {00 . . . 0, 11 . . . 1},

RM(p, m) = {[a, a + b]|a RM(p, m1), b RM(p1, m1)}, 0 < p r.


S-a notat cu [x, y] un cuvant de lungime 2m scris ca alaturare de doua subcuvinte
de lungimi egale (2m1 ), separate prin virgula.
Exemplul 5.10
RM(0, 0) = {0, 1}
RM(0, 1) = {00, 11},
RM(1, 1) = {00, 01, 10, 11}
RM(0, 2) = {0000, 1111},
RM(2, 2) = Z24
RM(1, 2) = {(a, a + b)|a {00, 01, 10, 11}, b {00, 11}} =
= {0000, 0011, 0100, 0111, 1000, 1011, 1100, 1111}
In mod similar se poate da o definitie recursiva a matricii generatoare G(r, m) pentru
codul RM(r, m).
G(0, m) = (11 . . . 1);

pentru 0 < p < m,

G(m, m) =

G(p, m) =

G(m 1, m)
00 . . . 01

G(p, m 1)
G(p, m 1)
0
G(p 1, m 1)

Teorema 5.2 G(r, m) este matrice generatoare pentru codul RM(r, m).
Demonstratie: Se verifica prin inductie dupa r.

Exemplul 5.11 Sa consider


am r = 2; atunci lungimea este n = 22 = 4 si pentru
r = 1, 2 avem

G(1, 2) =

G(1, 1) G(1, 1)
0
G(0, 1)

G(2, 2) =

G(1, 2)
0001

Din definitie, matricile generatoare pentru RM(0, 1) si RM(1, 1) sunt

G(0, 1) = (11),

G(1, 1) =

1 1 1 1

G(1, 2) = 0 1 0 1 ,
0 0 1 1

1 1
0 1

G(2, 2) =

, asa ca
1
0
0
0

1
1
0
0

1
0
1
0

1
1
1
1

A CODURILOR R-M
5.3. DEFINIREA GEOMETRICA

55

Propozitia 5.4 RM(r 1, m) RM(r, m).


Demonstratie: Sa consideram initial matricea

G(1, m) =

G(1, m 1) G(1, m 1)
0
G(0, m 1)

Pentru ca 1 este prima linie a lui G(1, m 1), cuvantul [1, 1] formeaza prima
linie a matricii (G(1, m 1) G(1, m 1)). Deci RM(0, m) = {0, 1} este continut
n codul RM(1, m).
In general, deoarece G(r 1, m 1) este submatrice a lui G(r, m 1) si
G(r 2, m 1) este o submatrice a lui G(r 1, m 1), este evident ca

G(r 1, m) =

G(r 1, m 1) G(r 1, m 1)
0
G(r 2, m)

este o submatrice a lui G(r, m), deci RM(r 1, m) este subcod al lui RM(r, m).
2
Teorema 5.3 RM(r, m) are distanta d = 2mr .
Demonstratie: Vom folosi o inductie dupa r:
Pentru r = 0, evident (RM(0, m) fiind codul cu repetitie, distanta sa este
d = n = 2m ).
La pasul II, deoarece
RM(r, m) = {[x, x + y]|x RM(r, m 1), y RM(r 1, m 1)} si
RM(r 1, m 1) RM(r, m 1) (Propozitia 5.4), rezulta x + y RM(r, m 1).
Daca x 6= y, conform ipotezei de inductie w(x + y) 2m1r . Cum si w(x)
2m1r , putem scrie w([x + y, x]) = w(x + y) + w(x) 2mr .
Daca x = y, atunci [x, x + y] = [y, 0]; dar y RM(r 1, m 1) si deci
w([y, 0]) = w(y) 2mr .
Cum orice linie a matricii generatoare este cuvant - cod, iar ultima linie are
ponderea exact 2mr , demonstratia este ncheiata.
2

5.3

Definirea geometric
a a codurilor R-M

Codurile Reed - Muller mai pot fi definite si geometric - prin folosirea spatiilor
afine. Avantajul acestei reprezentari consta n modalitatea mai simpla de aplicare
a algoritmilor de decodificare.
Pentru usurinta descrierii am construit ntai cazul tridimensional. De asemenea,
pentru a vedea echivalenta cu definirea anterioara a codurilor Reed - Muller, vom
face permanent legatura cu polinoamele booleene (sau cu functiile lor caracteristice).

56

PRELEGEREA 5. CODURI REED - MULLER

5.3.1

Cazul 3 -dimensional

Spatiul euclidian 3 - dimensional binar este multimea {(a, b, c)|a, b, c Z2 }. Spre


deosebire de spatiul euclidian obisnuit - unde cele trei coordonate luau valori n R
- aici numarul punctelor este finit: numai 8. Ele pot fi listate, renotandu-le astfel:
Punct
p0 = 000
p1 = 001
p2 = 010
p3 = 011
p4 = 100
p5 = 101
p6 = 110
p7 = 111

Functie caracteristica
00000001
00000010
00000100
00001000
00010000
00100000
01000000
10000000

Liniile pot fi definite n geometria euclidiana prin expresii de forma


a + tb

a, b Z23 , b 6= 0.

unde t este un parametru binar (t {0, 1}). Deci o linie n spatiul 3 - dimensional
binar are numai 2 puncte: a, a + b. Invers, orice pereche de doua puncte distincte
a, a0 formeaza o dreapta, anume a + t(a0 a). Putem astfel sa consideram liniile ca
fiind totalitatea celor C82 = 28 submultimi de cate doua puncte
{p0 , p1 }, {p0 , p2 }, . . . , {p6 , p7 }.
In mod similar, planele din geometria euclidiana sunt definite
a + t1 b + t2 c,

a, b, c Z23 ,

b, c liniar independente,

unde t1 , t2 sunt parametri binari. Un plan este format deci din patru puncte:
a, a + b, a + c, a + b + c. Aparent, desi numarul planelor n geometria euclidiana
binara 3 - dimensionala ar trebui sa fie C84 = 70, conditia de liniar independenta
reduce acest numar la 14:
Plan
{p1 , p3 , p5 , p7 }
{p2 , p3 , p6 , p7 }
{p4 , p5 , p6 , p7 }
{p0 , p2 , p4 , p6 }
{p0 , p1 , p4 , p5 }
{p0 , p1 , p2 , p3 }
{p1 , p2 , p5 , p6 }
{p1 , p3 , p4 , p6 }
{p2 , p3 , p4 , p5 }
{p1 , p2 , p4 , p7 }
{p0 , p3 , p4 , p7 }
{p0 , p2 , p5 , p7 }
{p0 , p1 , p6 , p7 }
{p0 , p3 , p5 , p6 }

Functie caracteristica
10101010
11001100
11110000
01010101
00110011
00001111
01100110
01011010
00111100
10010110
10011001
10100101
11000011
01101001

Polinom boolean
x0
x1
x2
1 + x0
1 + x1
1 + x2
x0 + x1
x0 + x2
x1 + x2
x0 + x1 + x2
1 + x0 + x1
1 + x0 + x2
1 + x1 + x2
1 + x0 + x1 + x2

A CODURILOR R-M
5.3. DEFINIREA GEOMETRICA

57

In general, un plan este descris de ecuatia generala


h 0 x0 + h 1 x1 + h 2 x2 = c
care defineste un subspatiu 2 - dimensional al lui Z23 .
Din faptul ca orice dreapta este o intersectie de doua plane, ea poate fi descrisa
printr-o pereche de doua ecuatii:
h00 x0 + h01 x1 + h02 x2 = c0 .

h0 x0 + h1 x1 + h2 x2 = c,

Liniile si planele sunt exemple de spatii afine. Un spatiu afin n Z23 este o multime
de forma
a + A = {a + b|b A}
unde a Z23 iar A este un subspatiu liniar din Z23 . Daca dimensiunea lui A este s,
numim acea multime un s - spatiu afin.
Deci liniile sunt 1 - spatii afine, iar planele: 2 - spatii afine. Pentru fiecare punct
pi avem un 0 - spatiu afin, si - n sfarsit - exista un 3 - spatiu afin unic - Z23 .
Orice spatiu afin L poate fi descris de un cuvant binar fL = f7 . . . f1 f0 definit
prin
(

fi =

1
0

daca pi L,
altfel

Cuvantul fL (sau functia booleana de trei variabile corespunzatoare) se numeste


functia caracteristic
a a spatiului afin L (tabelele anterioare listeaza aceste functii
pentru 0 si 2 - spatii afine).
Fiind date spatiile afine L, L0 , intersectia lor LL0 este caracterizata de produsul
logic fL fL0 .
a dupa linia
Exemplul 5.12 Primele doua plane din tabelul de sus se intersecteaz
{p3 , p7 }. Produsul logic al functiilor lor caracteristice este
x0 x1 = 10001000,
care se poate verifica imediat ca fiind functia caracteristic
a a dreptei {p3 , p7 }.

5.3.2

Cazul m - dimensional

Vom prezenta constructiile anterioare ntr-un cadru mai general, al geometriei euclidiene m - dimensionale binare. Punctele (elementele lui Z2m ) pot fi renotate dupa
extensia binara a indicilor; mai clar, vom scrie Z2m = {p0 , p1 , . . . , p2m 1 } unde
p0 = 000 . . . 00,
p1 = 000 . . . 01, p2 = 000 . . . 10, . . . , p2m 1 = 111 . . . 11.
Definitia 5.5 Fie A un subspatiu liniar r - dimensional al lui Z2m si a Z2m .
Multimea
Aa = a + A = {a + b|b A}
se numeste r - spatiu afin n geometria euclidiana m - dimensionala.
Un (m 1) - spatiu afin se numeste hiperplan.

58

PRELEGEREA 5. CODURI REED - MULLER

Daca b1 , . . . , br este o baza a lui A, r - spatiul afin Aa se noteaza


a + t 1 b1 + . . . + t r br .
El are 2r puncte (date de variantele de alegere ale parametrilor binari ti , 1 i r).
O alta modalitate de notare a r - spatiilor afine se realizeaza cu ajutorul sistemelor de ecuatii liniare: astfel, daca A este definit ca multimea solutiilor sistemului
HxT = 0T , atunci Aa este dat de multimea solutiilor sistemului
HxT = HaT .
Acest sistem are m r ecuatii. In particular, un hiperplan este definit printr-o
singura ecuatie:
h0 x0 + h1 x1 + . . . + hm1 xm1 = c.
Exemplul 5.13 Un 0 - spatiu afin cuprinde un singur punct. Exista deci 2m
0 - spatii afine distincte: {p0 }, {p1 }, . . . , {p2m 1 }.
Similar, orice 1 - spatiu afin (sau linie) este o multime formata din doua
puncte
a + tb {a, a + b},
si invers, orice multime de doua puncte distincte formeaz
a un 1 - spatiu afin.
Exist
a deci C22m 1 - spatii afine.
Exemplul 5.14 Fie Pi spatiul afin definit de ecuatia xi = 1. Deci Pi este multimea
punctelor pk care au 1 pe pozitia i. De exemplu P0 = {p1 , p3 , . . . , p2m 1 }.
Fiecare Pi este un hiperplan si - deoarece p2i are un singur 1 pe pozitia i si 0 n
rest, putem scrie
Pi p2i + A
unde A este spatiul liniar definit de ecuatia xi = 0, (deci tot un hiperplan).
Propozitia 5.5 Exist
a 2(2m 1) hiperplane.
Demonstratie: Deoarece se pot construi 2m 1 ecuatii cu coeficienti binari si variabile
x0 , x1 , . . . , xm1 , Z2m are 2m 1 subspatii A de dimensiune m 1. Fiecare din ele
2m
2
are 2m1 puncte, deci vor exista m1 = 2 spatii afine modulo A.
2
Exemplul 5.15 Pentru i 6= j, intersectia Pi Pj (multimea punctelor care au 1 pe

pozitiile i si j) este un (m 2) - spatiu afin. Intr-adev


ar, daca se ia a = p2i +2j ,
avem
Pi Pj a + A,
unde A este determinat de ecuatiile xi = xj = 0 (deci A are dimensiunea m 2).
Definitia 5.6 Functia caracteristic
a a unui r - spatiu afin L este cuvantul binar
fL = f2m 1 . . . f1 f0 definit prin
(

fj =

1
0

dac
a pj L,
altfel

A CODURILOR R-M
5.3. DEFINIREA GEOMETRICA

59

Functia caracteristica poate fi interpretata ca un polinom boolean fL (x0 , . . . , xm1 ).


Din proprietatile acestor polinoame rezulta
a0 a1 . . . am1 L

fL (a0 , a1 , . . . am1 ) = 1

Observatii:
1. Singurul m - spatiu afin (Z2m ) are functia caracteristica 1 = 11 . . . 1.
2. Un hiperplan Pi are functia fPi = xi .
3. Fie L un hiperplan definit de ecuatia h0 x0 + . . . hm1 xm1 = c. Functia sa
caracteristica va fi un polinom boolean de gradul 1, anume
fL (x0 , . . . , xm1 ) = h0 x0 + . . . + hm1 xm1 + c + 1
Aceasta relatie rezulta din faptul ca un punct a0 . . . am1 este n plan daca si
numai daca h0 a0 + . . . + hm1 am1 = c, adica fL (a0 , . . . , am1 ) = 1.
4. Pentru doua spatii afine L, L0 , functia caracteristica a intersectiei L L0 este
fL fL 0 .
Astfel, pentru Pi Pj (care este un (m 2) - spatiu afin) functia caracteristica
este xi xj .
Mai general, polinomul boolean xi1 xi2 . . . xis este functia caracteristica a unui
(m s) - spatiu afin.
a a unui r - spatiu afin este un polinom boolean
Teorema 5.4 Functia caracteristic
de gradul m r.
Demonstratie: Un r - spatiu afin L este definit ca solutia sistemului de ecuatii
HxT = cT , sau, detaliind,
m1
X

hij xj = ci ,

1 i m r.

j=0

Aceste ecuatii se pot scrie


m1
X

hij xj + ci + 1 = 1,

1 i m r.

j=0

Atunci, polinomul boolean de grad m r


f (x0 , . . . , xm1 ) =

mr
Y
i=1

este functia caracteristica a lui L.

hij xj + ci + 1

m1
X
j=0

Definitia 5.7 RM(r, m) este codul liniar generat de toate functiile caracteristice
ale spatiilor afine de dimensiune cel putin m r n geometria euclidiana m - dimensional
a peste Z2 .

60

PRELEGEREA 5. CODURI REED - MULLER

Faptul ca aceasta coincide cu definitia anterioara a codurilor Reed - Muller rezulta


din construtia spatiilor afine: RM(r, m) contine toate functiile caracteristice ale s
- spatiilor afine, unde s m r. Faptul ca aceste functii genereaza tot spatiul
RM(r, m) rezulta din Observatia 4.
Exemplul 5.16 Codul RM(1, 3) este generat de functiile caracteristice ale tuturor
planelor. Orice astfel de functie este un polinom de trei variabile de gradul 1.
Codul RM(2, 3) este generat de functiile caracteristice ale tuturor planelor si
liniilor. Cum o linie este intersectia a doua plane, functia sa caracteristic
a este
produsul a doua polinoame de gradul 1, deci un polinom de gradul 2 (cuv
ant - cod
din RM(2, 3)).

5.4

Exercitii

5.1 Ce polinom boolean are ultima linie a tabelei de adevar:


10100110

1010011010100110

0101001110011100

5.2 Determinati tabela de adevar a polinomului boolean 1 + x0 + x1 x2 :


1. Ca functie de trei variabile;
2. Ca functie de patru variabile.
5.3 Demonstrati afirmatia ().
5.4 G
asiti un (15, 5) - cod liniar binar corector de 3 erori (folositi un cod R M
relaxat).
5.5 Fiind dat codul RM(1, 3), codificati toate mesajele de informatie posibile.
Acelasi lucru pentru codul RM(2, 3).
5.6 Demonstrati Teorema 5.2
5.7 Construiti matricile generatoare G(1, 3), G(2, 3), G(r, 4), r = 0, 1, 2.
5.8 Demonstrati ca G(r, m) are k + 1 linii, unde k este dat de Propozitia 5.2
5.9 Calculati numarul de 2 - spatii afine n geometria euclidiana peste Z2m .
5.10 Este orice functie boolean
a functia caracteristic
a a unui anumit spatiu afin ?
Caracterizati astfel de functii.
5.11 Orice functie caracteristica a unui (r + 1) - spatiu afin apartine codului dual
lui RM(r, m).
5.12 Sa se arate ca RM(2, 5) este auto - dual. Sa se determine toate codurile
RM auto - duale.

Prelegerea 6
Decodificarea codurilor Reed Muller
Avantajul principal al codurilor Reed - Muller consta n facilitatea decodificarii,
facilitate bazata pe o tehnica diferita de cea de pana acum. Aceasta tehnica, numita
decodificare majoritara nu apeleaza la ideea de sindrom, ci corecteaza direct bitii
modificati, folosind diverse proprietati ale cuvantului receptionat.

6.1

Decodificarea majoritar
a

Sa prezentam pe scurt principiile generale ale decodificarii majoritare. Vom ncepe


cu un exemplu foarte simplu:
Exemplul 6.1 Fie codul binar cu repetitie de lungime 2n + 1 :
. . . 1}}.
C = {00
. . . 0}, 11
| {z
| {z
2n+1

2n+1

Ca sistem de ecuatii de control se poate lua

x1 + x2

x1 + x3

= 0
= 0
..
.

x1 + x2n+1 = 0

Dac
a se receptioneaz
a cuvantul y = x + e, la nlocuirea lui n sistem, acesta devine
y1 + yi = e1 + ei , 2 i 2n + 1.
Daca mai mult de n din cele 2n expresii y1 + yi iau valoarea 1, aceasta nseamn
a
c
a:
Au aparut mai putin de n erori, printre care si pe prima pozitie (e1 = 1), sau
Au aparut mai mult de n erori, dar nu pe prima pozitie (e1 = 0).
Din aceste doua variante, prima este mai probabil
a. Deci valoarea majoritara pe
care o iau cele n valori y1 + yi va fi valoarea lui e1 .
Definitia 6.1 Fie An,k un cod liniar. Un set de ecuatii de control pentru An,k este
ortogonal pe multimea de pozitii P {1, 2, . . . , n} dac
a si numai daca:
61

62

PRELEGEREA 6. DECODIFICAREA CODURILOR REED - MULLER


1. i P , termenul xi apare (cu coeficient nenul) n fiecare ecuatie;
2. i 6 P , termenul xi apare cel mult ntr-o ecuatie.

Decodificarea se realizeaza caracter cu caracter, dupa urmatorul procedeu:


Fie a = a1 . . . an cuvantul receptionat si i (1 i n) o pozitie.
Se construieste multimea maximala de ecuatii de control ortogonale pe pozitia
i.
Fie ei valoarea obtinuta n majoritatea acestor ecuatii. Al i-lea caracter decodificat este ai + ei .
Exemplul 6.2 Fie dualul (15, 11) - codului Hamming cu matricea de control

H=

0
0
0
1

0
0
1
0

0
0
1
1

0
1
0
0

0
1
0
1

0
1
1
0

0
1
1
1

1
0
0
0

1
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

Pentru fiecare pereche de coloane distincte din H exist


a o a treia coloan
a astfel nc
at
suma celor trei coloane este 0. Deci, fiecare cuvant de pondere 3 al codului Hamming
d
a o ecuatie de control cu trei termeni pentru codul dual; n acest fel se obtine pentru
fiecare caracter xi cate un sistem de 7 ecuatii ortogonale pe pozitia i. Astfel,
pentru x1 ele sunt: x1 = x2 + x3 = x4 + x5 = x6 + x7 = x8 + x9 = x10 + x11 =
x12 + x13 = x14 + x15 ;
pentru x2 : x2 = x1 + x3 = x4 + x6 = x5 + x7 = x8 + x10 = x9 + x11 = x12 + x14 =
x13 + x15 , etc.
Codul are distanta d = 8; deci poate corecta maxim 3 erori.
Daca n mesajul primit y apar cel mult 3 erori, atunci un sistem de ecuatii
ortogonal pe x1 va avea cel mult trei ecuatii care sa dea pentru x1 o valoare gresit
a
si cel putin cinci cu valoarea calculat
a corect. Valoarea gasit
a majoritar va fi cea n
care se decodific
a primul caracter.
Procedeul se reia pentru y2 , y3 , . . ..
S
a presupunem de exemplu ca s-a receptionat mesajul 001011110101011. Pentru
decodificarea primului caracter vom calcula sumele
0 + 1, 0 + 1, 1 + 1, 1 + 0, 1 + 0, 1 + 0, 1 + 1.
Se obtin 5 valori de 1 si doua de 0; deci, primul simbol este 1.
Proced
and similar pentru fiecare (folosind ecuatiile ortogonale corespunz
atoare
fiec
arei pozitii), se ajunge la cuvantul 10101011010101010.
Aceasta metoda este nu numai usor de implementat, dar are adesea si alte completari
(gen bitul de testare a paritatii) care fac posibila corectarea mai multor erori.
In aceasta prelegere vom construi trei algoritmi de decodificare a codurilor R
M . Doi din ei sunt bazati pe modurile de reprezentare (geometric si algebric) ale
acestor coduri; al treilea este un algoritm bzat pe definirea recursiva a codurilor
R M si este prezentat numai pentru cazul r = 1. Totii algoritmii sunt foarte usor
de implementat, utilizarea unuia sau a altuia depinzand de criterii particulare n
alegerea parametrilor codului.


6.2. ALGORITM GEOMETRIC DE DECODIFICARE MAJORITARA

6.2

63

Algoritm geometric de decodificare majoritar


a

Deoarece distanta unui cod RM(r, m) este d = 2mr , el va fi capabil sa corecteze


pana la 2mr1 1 erori. In cele ce urmeaza vom presupune ca s-a receptionat
cuvantul y = y2m 1 . . . y1 y0 , n care au fost modificate maxim 2mr1 1 pozitii.
Problema este de a determina pentru fiecare i (0 i 2m 1) daca bitul yi trebuie
corectat sau nu. Sau - altfel spus - de a vedea daca pozitia lui y corespunzatoare 0
- spatiului afin {pi } trebuie sau nu corectata.
Pentru a folosi proprietatile codurilor Reed - Muller exprimate de spatiile afine,
vom reformula totul n maniera urmatoare:
Pentru fiecare s - spatiu afin L (0 s r + 1) vom cerceta daca pozitiile
cuvantului receptionat y corespunzatoare punctelor lui L (adica acei biti yi pentru
care pi L) sunt modificati sau nu.
Vom da ntai cateva notiuni si notatii ajutatoare pentru a simplifica demonstratiile.
Definitia 6.2 Fie G un grup, A un subgrup al sau si x G. Se numeste subgrup
modulo A al lui G multimea
Ax = x + A = {x + a|a A}.
Lema 6.1 Subgrupurile unui grup modulo un subgrup arbitrar A, au urmatoarele
propriet
ati:
1. a G, x G, a Ax ;
2. Dac
a x 6= y atunci Ax Ay = sau Ax = Ay ;
3. Dac
a a, b Ax atunci a b A;
4. x, card(Ax ) = card(A).
Demonstratie: Este lasata ca exercitiu.
Teorema principala a acestui paragraf este:
Teorema 6.1 Orice s - spatiu afin din geometria binara m - dimensionala este
plus, orice punct din
continut n exact 2ms 1 (s + 1) - spatii afine distincte. In
afara lui L este exact n unul din aceste (s + 1) - spatii afine.
Demonstratie: I: Sa aratam ntai ca orice s - subspatiu liniar A Z2m este continut
n exact 2ms 1 subspatii distincte de dimensiune s + 1.
Orice (s + 1) - spatiu care contine A este de forma
A = A + tb {a + tb|a A, t = 0, 1},
unde b 6 A este un punct arbitrar fixat. Aceasta rezulta imediat din faptul ca orice
baza a lui A poate fi extinsa la o baza a lui A.
Pentru doua puncte b, b0 6 A, spatiile liniare A + tb si A + tb0 coincid daca si
numai daca b si b0 sunt n acelasi subspatiu modulo A (Lema 6.1).

64

PRELEGEREA 6. DECODIFICAREA CODURILOR REED - MULLER

2m
subspatii modulo A. Unul este chiar A, iar
2s
celelalte contin numai puncte dinafara lui A. Deci exista 2ms 1 spatii distincte
A + tb pentru b 6 A.
II: Orice s - spatiu afin L a + A (dimA = s) este continut n 2ms 1
(s + 1) - spatii afine distincte de forma a + A.
Cu I, orice spatiu care contine L este de forma b + A. Deoarece L este de forma
a + A, rezulta ca a b + A, deci a b A, de unde rezulta (Lema 6.1) ca punctele
a, b sunt n acelasi subspatiu modulo A.
III: Orice punct b 6 L = a + A este ntr-un (s + 1) - spatiu afin care contine L,
anume a + A unde A = A + t(b a).
Intr-adevar, alegand t = 1 si 0 A, avem b = a + [0 + (b a)].
Pentru a verifica ca A are dimensiunea s+1 este suficient de aratat ca b a 6 A;
daca prin absurd b a A, atunci a + (b a) = b A, contradictie.
In final, ar mai trebui aratat ca acest (s + 1) - spatiu afin care l contine pe
b este unic. Orice (s + 1) - spatiu afin care contine a + A are forma a + A unde
dim(A) = s + 1. Daca b a + A, atunci b a A, deci A contine spatiul liniar
A + (b a). Cum ambele spatii au aceeasi dimensiune (s + 1), ele coincid.
2
Din aceeasi lema rezulta ca sunt

a numarul de erori din cuvantul receptionat este t < 2mr1 ,


Corolarul 6.1 Dac
atunci pentru fiecare s - spatiu afin L (0 s r) majoritatea (s + 1) - spatiilor
afine care contin L au aceeasi paritate a erorilor ca L.
Demonstratie: Conform Teoremei 6.1, L este continut n 2mr 1 > 2t
(s + 1) - spatii afine L0 , fiecare L0 fiind unic determinat de un punct din afara lui L.
Sa consideram toate punctele pi 6 L pentru care caracterul yi este modificat. Lor
le corespund cel mult t (s + 1) - spatii afine L0 . Toate celelalte spatii L0 ramase au
proprietatea ca nu contin nici un punct pi din afara lui L pentru care yi este gresit.
Deci aceste spatii au aceeasi paritate de erori ca si L, iar numarul lor este cel putin
(2mr 1) t > t, deci majoritar.
2
Algoritm de decodificare pentru RM(r, m):
1. (Initializare): La receptionarea unui cuvant a Z2m se considera toate
(r + 1) - spatiile afine L. Un spatiu L se numeste impar daca afL = 1 (fL este
functia caracteristica a spatiului afin L). In caz contrar L este par.
2. (Inductie): Pentru fiecare s = r, r 1, . . . , 0 unde (s + 1) - spatiile afine
au fost definite drept pare sau impare, se considera toate s - spatiile afine. Un
s - spatiu afin L este par daca majoritatea (s + 1) - spatiilor afine care contin
pe L sunt pare; altfel L este impar.
3. (Final): Pentru i = 0, 1, . . . , 2m 1, se corecteaza ai daca si numai daca
0 - spatiul afin {pi } este impar.


6.2. ALGORITM GEOMETRIC DE DECODIFICARE MAJORITARA

65

Exemplul 6.3 Sa consider


am RM(1, 3) n care s-a receptionat cuvantul
a = 11101010.
Tabelul 6.1: Primul pas al decodificarii 11101010
Plan
Paritate
{p1 , p3 , p5 , p7 }
par
{p2 , p3 , p6 , p7 }
impar
{p4 , p5 , p6 , p7 }
impar
{p0 , p2 , p4 , p6 }
impar
{p0 , p1 , p4 , p5 }
par
{p0 , p1 , p2 , p3 }
par
{p1 , p2 , p5 , p6 }
impar

Plan
Paritate
{p1 , p3 , p4 , p6 }
impar
{p2 , p3 , p4 , p5 }
par
{p0 , p3 , p4 , p7 }
par
{p0 , p2 , p5 , p7 }
par
{p0 , p1 , p6 , p7 }
impar
{p1 , p2 , p4 , p7 }
par
{p0 , p3 , p5 , p6 }
impar

Tabelul 6.2: Al doilea pas al decodificarii 11101010


Linie
Paritate
{p0 , p1 }
par
{p0 , p2 }
par
{p0 , p3 }
par
{p0 , p4 }
par
{p0 , p5 }
par
{p0 , p6 }
impar
{p0 , p7 }
par
{p1 , p2 }
par
{p1 , p3 }
par
{p1 , p4 }
par

Linie
Paritate
{p1 , p5 }
par
{p1 , p6 }
par
{p1 , p7 }
par
{p2 , p3 }
par
{p2 , p4 }
par
{p2 , p5 }
par
{p2 , p6 }
impar
{p2 , p7 }
par
{p3 , p4 }
par

Linie
Paritate
{p3 , p5 }
par
{p3 , p6 }
impar
{p3 , p7 }
par
{p4 , p5 }
par
{p4 , p6 }
impar
{p4 , p7 }
par
{p5 , p6 }
impar
{p5 , p7 }
par
{p6 , p7 }
impar

La primul pas trebuie sa decidem care plane sunt pare si care sunt impare. De
exemplu planul L = {p1 , p3 , p5 , p7 } este par deoarece afL = 1110101010101010 = 0
(vezi Prelegerea V , Paragraful 5.3.1). Se obtine Tabelul 6.1.
La pasul urmator trebuie sa decidem paritatea fiec
arei linii.
De exemplu, linia {p0 , p1 } este continut
a n trei plane:
{p0 , p1 , p4 , p5 } (par), {p0 , p1 , p2 , p3 } (impar), {p0 , p1 , p6 , p7 } (impar).
mod similar se efectueaz
deci, prin majoritate, {p0 , p1 } este par
a. In
a calculele
pentru toate liniile, obtin
andu-se Tabelul 6.2.
Se poate trece acum la corectarea erorilor. RM(1, 3) poate corecta maxim
2mr1 1 = 2311 1 = 1 erori. {p0 } este continut n sapte linii, sase pare si una
impar
a, deci a0 este corect, etc. Singurul bit care trebuie corectat este a6 deoarece
{p6 } este n sapte linii impare. Cuvantul trimis a fost deci 10101010.
Algoritmul de decodificare se bazeaza pe urmatoarea observatie:

66

PRELEGEREA 6. DECODIFICAREA CODURILOR REED - MULLER


Fie codul RM(r, m) si a Z2m un cuvant receptionat.
Un (r + 1) - spatiu afin L este par

afL = 0.

Intr-adevar, daca a este cuvant - cod, atunci afL = 0 (Prelegerea V, Exercitiul


5.11). Acum, daca au fost perturbate un numar par de caractere din a, corespunzatoare unor puncte din L, valoarea produsului scalar afL nu se modifica. Pentru
un numar impar de pozitii perturbate, valoarea produsului scalar este 1.

6.3

Algoritm algebric de decodificare majoritar


a

In afara de algoritmul prezentat anterior, care foloseste reprezentarea geometrica a


codurilor R M , se poate da si o varianta algebrica de decodificare, bazata direct
pe definitia decodificarii majoritare.
In cele ce urmeaza sa consideram un cod RM(r, m) fixat si k = 1+C 1 +. . .+C r
m
m
m
numarul simbolurilor de informat

ie,
n
=
2
lungimea
codului.

x0

x1

In matricea Um,n =

..

care contine pe coloane toate elementele spatiului

.
xm1
liniar Z2m , vom nota cu ui (0 i m 1) coloanele care reprezinta baza (naturala)
a lui Z2m . Deci, orice coloana wj , 0 j n 1 din Z2m se poate scrie
wj =

m1
X

tij ui ,

tij {0, 1}.

i=0

Orice cuvant v Z2n poate fi considerat indicatorul unei multimi de cuvinte din Z2m :
acele coloane din U care corespund pozitiilor din v unde se afla valoarea 1.
Exemplul 6.4 Pentru orice j = 0, . . . , n 1, cuvantul ej = 00 . . . 010 . . . 0 cu 1 pe
pozitia j corespunde coloanei cuvantului de pe coloana j din U ;
Cuv
antul 1 = 11 . . . 1 corespunde ntregului spatiu Z2m .
Propozitia 6.1
ej =

m1
Y

[xi + (1 + tij )1] , j, 0 j 2m 1.

i=0

Demonstratie: Sa aratam ntai ca xi + (1 + tij )1 reprezinta indicatorul acelor coloane


din U care au aceeasi componenta i ca si coloana wj .
Intr-adevar:
1. Daca tij = 1, atunci xi + (1 + tij )1 = xi + (1 + 1)1 = xi care este indicatorul
multimii coloanelor cu 1 (ca si wj ) pe linia i.


6.3. ALGORITM ALGEBRIC DE DECODIFICARE MAJORITARA

67

2. Daca tij = 0, atunci xi + (1 + tij )1 = xi + 1 care are componentele lui xi cu 0


si 1 permutate, fiind deci indicatorul multimii coloanelor care au 0 (ca si wj )
pe linia i.
Cuvantul

m1
Y

[xi + (1 + tij )1] reprezinta indicatorul multimii acelor coloane din ma-

i=0

tricea U care au toate componentele egale cu cele ale coloanei wj . Cum coloanele
matricii U sunt distincte, aceasta multime este chiar {wj }, al carei indicator este ej .
2
Fie mesajul de informatie a1 a2 . . . ak Z2k . Ele se codifica cu ajutorul (2m , k) codului Reed - Muller n cuvantul - cod
f = (f0 , f1 , . . . , fn1 ) =
a1 1 + a2 x0 + . . . + am+1 xm1 + am+2 x0 x1 + . . . + ak xmr xmr+1 . . . xm1 .
Putem enunta acum rezultatul principal pe baza caruia se construieste algoritmul
algebric de decodificare majoritara al codurilor R M .
Teorema 6.2 Pentru fiecare component
a as din mesajul de informatie care se nmulteste - la codificare - cu un produs de forma xi1 xi2 . . . xir , exista 2mr sume
disjuncte (cu termeni diferiti) contin
and fiecare 2r componente ale cuvantului - cod
corespunz
ator f = f0 f1 . . . fn1 , care sunt toate egale cu as .
Demonstratie: T
inand cont de Propozitia 6.1 si de faptul ca e0 , e1 , . . . , en1 constituie de asemenea o baza pentru Z2n , putem scrie:
f = (f0 , f1 , . . . , fn1 ) =

n1
X

fj e j =

j=0

n1
X

fj

m1
Y

j=0

[xi + (1 + tij )1].

i=0

Prin urmare, ca un produs de forma xi1 . . . xiu sa fie n aceasta suma, trebuie ca
tij = 0 pentru i 6 {i1 , i2 . . . , iu }. Daca notam
C(i1 , . . . , ij ) = {p| p =

m1
X

tip 2i , tip = 0 daca i 6 {i1 , . . . , ij }} =

i=0

= {p| p = ti1 p 2i1 + ti2 p 2i2 + . . . + tij p 2ij , tip {0, 1}},
vom avea

f = (f0 , f1 , . . . , fn1 ) =

i1 <i2 <...<iu

fj xi1 xi2 . . . xiu

jC(i1 ,...,iu )

Pe de-alta parte,
f = (f0 , . . . , fn1 ) = a1 1+a2 x0 +. . .+am+1 xm1 +am+2 x0 x1 +. . .+ak xmr . . . xm1 .
Prin identificare, rezulta ca elementul as , coeficient al produsului xi1 xi2 . . . xir este
as =

fj

(1)

jC(i1 ,...,ir )

Fie z
6 {i1 , . . . , ir }. Deoarece baza codului RM(r, m) nu contine monoame de
forma xi1 . . . xir xir+1 , vom obtine prin codificare

68

PRELEGEREA 6. DECODIFICAREA CODURILOR REED - MULLER


X

fj = 0

(2)

jC(i1 ,...,ir ,z)

Insa, C(i1 , . . . , ir , z) = C(i1 , . . . , ir ) [C(i1 , . . . , ir ) + 2z ]


unde s-a notat C + = {x + | x C}. Intr-adevar, putem scrie
C(i1 , . . . , ir , z) = {j| j = ti1 j 2i1 + . . . + tir j 2ir + tzj 2z } =
= {j| j = ti1 j 2i1 + . . . + tir j 2ir } {j| j = ti1 j 2i1 + . . . + tir j 2ir + 2z } =
= C(i1 , . . . , ir ) [C(i1 , . . . , ir ) + 2z ],
cele doua multimi ale reuniuniiX
fiind disjuncte.X
Deci relatia (2) se scrie
fj +
avem

as +

fj = 0 si - tinand cont de (1),

jC(i1 ,...,ir )+2z

jC(i1 ,...,ir )

fj = 0

(3)

jC(i1 ,...,ir )+2z

Din (1) si (3) rezulta urmatoarea afirmatie: daca m = r + 1, pentru orice simbol de
informatie as nmultit la codificare cu un produs de forma xi1 . . . xir exista 2mr = 2
sume disjuncte ((1) si (3)), fiecare de cate 2r componente ale lui f .
Aceste doua relatii se numesc relatii de determinare a componentei as .
Fie acum t1 , t2 6 {i1 , . . . , ir }. Deoarece baza codului nu are produse de forma
xi1 . . . xir xir+1 xir+2 , vom avea
X

fj = 0.

(4)

jC(i1 ,...,ir ,t1 ,t2 )

Dar C(i1 , . . . , ir , t1 , t2 ) = C(i1 , . . . , ir ) [C(i1 , . . . , ir ) + 2t1 ] [C(i1 , . . . , ir ) + 2t2 ]


[C(i1 , . . . , ir ) + 2t1 + 2t2 ].
DeciX(4) se descompune
X n
X
X
fj +
fj +
fj +
fj = 0
jC(i1 ,...,ir )

jC(i1 ,...,ir )+2t1

jC(i1 ,...,ir )+2t2

jC(i1 ,...,ir )+2t1 +2t2

ceea ce, tinand cont de (1) si (3) devine as + as + as +

fj = 0

jC(i1 ,...,ir )+2t1 +2t2

deci
as =

fj

(5)

jC(i1 ,...,ir )+2t1 +2t2

Am aratat astfel ca, daca m = r + 2, atunci exista 2mr = 22 = 4 sume ((1), de


doua ori (3) pentru t1 respectiv t2 , si (5)) care dau pe as , fiecare suma continand 2r
componente ale lui f . Deci, pentru as exista n acest caz patru relatii de determinare.
Teorema rezulta n continuare printr-un procedeu de inductie finita.
2
Sa vedem cum se foloseste Teorema 6.2 la decodificarea majoritara a codurilor
Reed - Muller:
Dupa cum s-a vazut, pentru fiecare componenta as corespunzatoare unui produs
de forma xi1 . . . xir exista 2mr sume disjuncte, continand fiecare 2r componente ale
lui f care - n absenta erorilor - vor fi toate egale cu as .

6.4. DECODIFICAREA CODURILOR RM(1, M )

69

Deoarece sumele sunt disjuncte (deci termenii lor sunt elemente diferite ale
cuvantului - cod), orice eroare va afecta o singura relatie de determinare a lui as .
Prin urmare, daca apar n transmiterea cuvantului - cod f cel mult 2mr1 1 erori
independente, putem determina - prin majoritate - pe as , identificandu-l cu valoarea
a jum
atate plus unu din relatiile de determinare corespunzatoare.
Dupa ce se determina n acest mod coeficientii tuturor produselor xi1 . . . xir , se
scade din vectorul receptionat combinatia liniara
ap x0 . . . xr1 + . . . + ak xmr . . . xm1 .
In acest fel problema se reduce la decodificarea ntr-un cod de ordin r 1 si lungime
2m ; procedeul este similar, fiind determinate aici componentele de informatie care
se codifica prin nmultirea cu produsele de forma xj1 . . . xjr1 , s. a. m. d.
Exemplul 6.5 Fie codul RM(2, 4). El are lungimea n = 16, ordinul r = 2, k =
1 + C41 + C42 = 11 simboluri de informatie si n k = 5 simboluri de control. Deci
este un (16, 11) - cod liniar.
Orice mesaj de informatie (a1 , a2 , . . . , a11 ) Z211 se codific
a n cuvantul
f = (f0 , . . . , f15 ) = a1 1 + a2 x0 + a3 x1 + a4 x2 + a5 x3 + a6 x0 x1 + a7 x0 x2 + a8 x0 x3 +
a9 x1 x2 + a10 x1 x3 + a11 x2 x3 .
S
a stabilim de exemplu relatiile de determinare pentru a9 , care se codific
a prin
nmultire cu x1 x2 . Trebuiesc calculate multimile:
C(1, 2) = {j| j = t1j 21 + t2j 22 } = {0, 2, 4, 6}
C(1, 2) + 20 = {1, 3, 5, 7}
C(1, 2) + 23 = {8, 10, 12, 14}
C(1, 2) + 20 + 23 = {9, 11, 13, 15}.
Deci relatiile de determinare corespunz
atoare lui a9 devin
a9 = f0 + f2 + f4 + f6
a9 = f8 + f10 + f12 + f14

a9 = f1 + f3 + f5 + f7
a9 = f9 + f11 + f13 + f15

Dac
a intervine o eroare n timpul transmiterii cuvantului - cod f , va fi afectat
a o
singur
a relatie de determinare, celelalte trei relatii dand valoarea corect
a a lui a9 .
Dup
a ce s-a determinat valorile a6 , a7 , a8 , a9 , a10 , a11 , se trece la etapa a doua a
decodificarii, scaz
and din cuvantul receptionat combinatia
a6 x0 x1 + a7 x0 x2 + a8 x0 x3 + a9 x1 x2 + a10 x1 x3 + a11 x2 x3
si aplicand cuvantului obtinut procedeul de corectare a erorilor pentru codul R M
de ordinul r 1 = 1.

6.4

Decodificarea codurilor RM(1, m)

Pentru cazul r = 1 se poate da si un alt algoritm de decodificare, extrem de eficient.


El foloseste transformarea Hadamard pentru aflarea celui mai apropiat cuvant - cod.
Vom da initial cateva notiuni ajutatoare.

70

PRELEGEREA 6. DECODIFICAREA CODURILOR REED - MULLER

Definitia 6.3 Fie Am,n , Bp,q doua matrici. Se defineste produsul Kronecker A B
ca fiind matricea Cmp,nq = [aij B].
Acest produs este evident asociativ si necomutativ; el va fi utilizat pe larg si n alte
prelegeri.

Exemplul 6.6 Fie H =

I2 H =

1
1
1 1

1
1 0
0
1 1 0
0
0
0 1
1
0
0 1 1

I2 =

1 0
0 1

. Atunci

H I2 =

1
0
1
0

0
1
0
1
0
1
0 1
0
1
0 1

Se considera sirul de matrici definit


i
= I2mi H I2i1 ,
Hm

i = 1, 2, . . .

unde H este matricea (Hadamard) definita n Exemplul 6.6.


Exemplul 6.7 Fie m = 2. Atunci
H21 = I2 H I1 = I2 H,

H22 = I1 H I2 = H I2 .

Exemplul 6.8 Fie m = 3. Atunci:

1
H3 = I4 H I1 =

2
H3 = I2 H I2 =

1
1
0
0
0
0
0
0
1
0
1
0
0
0
0
0

1 0
0 0
0 0
0
1 0
0 0
0 0
0

0 1
1 0
0 0
0

0 1 1 0
0 0
0

,
0 0
0 1
1 0
0

0 0
0 1 1 0
0

0 0
0 0
0 1
1
0 0
0 0
0 1 1

0
1
0 0 0
0
0
1
0
1 0 0
0
0

0 1
0 0 0
0
0

1
0 1 0 0
0
0

,
0
0
0 1 0
1
0

0
0
0 0 1
0
1

0
0
0 1 0 1
0
0
0
0 0 1
0 1

6.4. DECODIFICAREA CODURILOR RM(1, M )

3
H3 = I1 H I4 =

1
0
0
0
1
0
0
0

0
1
0
0
0
1
0
0

0
0
1
0
0
0
1
0

0
1
0
0
0
0
0
1
0
0
0
0
0
1
0
1
0
0
0
1
0 1
0
0
0
0
0 1
0
0
0
0
0 1
0
1
0
0
0 1

71

Modalitatea recursiva de constructie a codurilor RM(r, m) (Prelegerea V , sectiunea


5.2) sugereaza existenta unui algoritm similar de decodificare. Acest algoritm exista
numai pentru RM(1, m) si l prezentam fara a demonstra corectitudinea lui.
Algoritm de decodificare a codurilor RM(1, m):
Fie a Z2m cuvantul receptionat si G(1, m) matricea generatoare a codului.
1. Se nlocuieste 0 cu 1 n a; fie a0 noul cuvant;
1
2. Se calculeaza a1 = a0 Hm
,

i
ai = ai1 Hm
, 2 i m;

3. Se determina pozitia j a celei mai mari componente (n valoare absoluta)


a lui am .
Fie v(j) Z2m reprezentarea binara a lui j (ncepand cu bitii cei mai
nesemnificativi). Cuvantul decodificat este:
(1, v(j))

daca a j - a componenta a lui am este pozitiva,

(0, v(j))

daca a j - a componenta a lui am este negativa.

Exemplul 6.9 Fie m = 3 si G(1, 3) matricea generatoare a codului RM(1, 3). Sa


presupunem ca s-a receptionat cuvantul a = 10101011.
Primul pas al algoritmului transform
a acest cuvant n
a0 = (1, 1, 1, 1, 1, 1, 1, 1). Se calculeaz
a apoi:
0 1
a1 = a H3 = (0, 2, 0, 2, 0, 2, 2, 0)
a2 = a1 H32 = (0, 4, 0, 0, 2, 2, 2, 2)
a3 = a2 H33 = (2, 6, 2, 2, 2, 2, 2, 2).
Cea mai mare compoment
a a lui a3 este 6 pe pozitia 1. Cum v(1) = 100 si 6 > 0,
rezult
a ca a fost trimis cuvantul 1100.
Daca s-a receptionat cuvantul a = 10001111, atunci a0 = (1, 1, 1, 1, 1, 1,
1, 1) si
a1 = a0 H31 = (0, 2, 2, 0, 2, 0, 2, 0),
a2 = a1 H32 = (2, 2, 2, 2, 4, 0, 0, 0),
a3 = a2 H33 = (2, 2, 2, 2, 6, 2, 2, 2).
Cea mai mare component
a a lui a3 este 6 aflata pe pozitia 4. Deoarece v(4) = 001
si 6 < 0, mesajul transmis este 0001.

72

PRELEGEREA 6. DECODIFICAREA CODURILOR REED - MULLER

6.5

Exercitii

codul Hamming (15, 11) sa se decodifice mesajele


6.1 In
111100000000000, 011101000111001.
6.2 Demonstrati Lema 6.1.
6.3 S
a se decodifice cuvantul 01111100 n RM(1, 3). Verificati corectitudinea decodific
arii.
6.4 S
a se decodifice 0111100 n RM(2, 3).
6.5 S
a se scrie toate relatiile de determinare din codul RM(2, 4).
6.6 Aceeasi problem
a pentru codul RM(1, 3).
6.7 S
a se decodifice 1111111011111111 n RM(2, 4).
6.8 Ar
atati ca orice hiperplan L n geometria euclidiana peste Z2m are drept complement Z2m \ L tot un hiperplan.
codul RM(1, 3), sa se decodifice cuvintele
6.9 In
01011110,
01100111,
00010100,
6.10 Sa se calculeze H4i pentru i = 1, 2, 3, 4.
codul RM(1, 4), sa se decodifice cuvintele:
6.11 In
1011011001101001,
1111000001011111.

11001110.

Prelegerea 7
Alte clase de coduri elementare
Inafara codurilor Hamming si Reed - Muller se pot construi si alte clase de coduri
cu proprietati remarcabile. Vom prezenta numai cateva astfel de coduri - nu toate
liniare - punand n evidenta la fiecare clasa caracteristicile sale specifice.

7.1

Codurile MacDonald

Fie An,k un cod liniar peste Z2 si G matricea sa generatoare.


Vom nota cu Mk,2k 1 o matrice care contine toate coloanele nenule posibile cu
k elemente care se pot construi peste Z2 . Ordinea acestor coloane este arbitrara
dar fixata. Coloana i din matricea M se va numi coloan
a de tip i. Pentru usurinta
notatiei se admite asertiunea ca tipul de coloana i este reprezentarea n binar a
numarului zecimal i.
Deoarece codul An,k nu este influentat de operatiile elementare efectuate asupra
coloanelor din matricea generatoare (n particular permutarea de coloane), este suficient sa definim acest cod indicand doar numarul coloanelor de fiecare tip care intra
n componenta matricii generatoare.
Se obtine astfel reprezentarea modular
a a codului An,k :
N = (n1 , n2 , . . . , n2k 1 )

(1)

unde ni este numarul coloanelor de tip i care apar (sau nu) n matricea G,
k 1
2X

ni = n.

i=1

Exemplul 7.1 Sa luam k = 2, n = 3 si matricea generatoare G =

Avem matricea M =

0 1 1
1 0 1

0 1 0
1 1 1

(coloanele sunt reprezent


arile binare ale

numerelor 1, 2, 3).
Reprezentarea modular
a a codului generat de matricea G este atunci N = (2, 0, 1)
(pentru ca n G exista doua coloane de tipul 1, nici una de tipul 2 si una de tipul
3).
73

74

PRELEGEREA 7. ALTE CLASE DE CODURI ELEMENTARE

Sa introducem matricea
K2k 1,n = M T G

(2)

K are drept linii toate cuvintele nenule ale codului An,k .


Fie de asemenea matricea patrata simetrica:
C2k 1,2k 1 = M T M

Astfel, pentru Exemplul 7.1,

1 0 1

(3)

K = 0 1 0 ,

1 1 1

C = 0 1 0 .

1 1 1

1 0 1

Teorema 7.1 O lista a ponderilor cuvintelor codului An,k se obtine nmultind (n


R) matricea de reprezentare modular
a cu matricea C:
W2k 1 = N C

(4)

Demonstratie: Scriem matricea M sub forma unei matrici linie


M = (v1 , v2 , . . . , v2k 1 )
unde vi (1 i 2k 1) este coloana de tip i din matricea M .
Matricea generatoare corespunzatoare reprezentarii modulare N = (n1 , n2 , . . . ,
n2k 1 ) este G = (v1 , . . . , v1 , v2 , . . . , v2 , . . . , v2k 1 , . . . , v2k 1 )
|

{z

} |

n1

{z

n2

{z

n2k 1

unde n1 + n2 + . . . + n2k 1 = n. Se obtine deci

v1
v1 v1
v1 v2

v2 v2
v2
v2 v1

C=
..

(v1 , . . . , v2k 1 ) =

...
...
..
.

v1 v2k 1
v2 v2k 1

v2k 1
v2k 1 v1 v2k 1 v2 . . . v2k 1 v2k 1
unde produsele scalare sunt efectuate n Z2 .
Acum, W = (w1 , w2 , . . . , w2k 1 ) = (n1 , n2 , . . . , n2k 1 )C, nmultire efectuata n
R.
Prin identificare rezulta wi = n1 v1 vi + n2 v2 vi + . . . + n2k 1 v2k 1 vi .
Deoarece toate produsele scalare vj vi sunt 0 sau 1, wi este un numar natural.
El este chiar ponderea cuvantului cod care ocupa linia i n matricea K. Intr-adevar,
avem

v1 v1
v1 v1
...
v1 v2k 1

v2 v1
...
v2 v2k 1
v2 v1

,
K2k 1,n =
..

.
v2k 1 v1 v2k 1 v1 . . . v2k 1 v2k 1
produsele scalare fiind n Z2 .
Deci ponderea cuvantului situat pe linia i n matricea K este:
v
v + .{z
. . + vi v1} + . . . + vi v2k 1 + . . . + vi v2k 1 = n1 vi v1 + . . . + n2k 1 vi v2k 1 .
|i 1
n1

{z

n2k 1

Ne punem problema de a determina un cod atunci cand se da vectorul ponderilor


cuvintelor sale (deci si ponderea minima, adica distanta Hamming). Formal, din (4)
se obtine

7.1. CODURILE MACDONALD


N = W C 1

75
(5)

nmultire efectuata n R. Formula este adevarata numai daca demonstram ca matricea C este inversabila. In acest sens avem:
Teorema 7.2 Matricea C este nesingulara. Inversa ei se calculeaz
a nlocuind n C
pe 0 cu 1 si mp
artind toate elementele cu 2k1 .
Demonstratie: I: Fiecare linie (deci si coloana) din C contine 1 pe 2k1 pozitii. Doua
linii (coloane) distincte din C au n comun 1 n 2k2 pozitii.
Intr-adevar, liniile lui C - la care se adauga linia nula - formeaza un spatiu liniar
cu 2k cuvinte binare. Sa consideram submultimea liniilor care au 1 n componentele
2k
i si j. Ele formeaza un subspatiu liniar cu 2 = 2k2 elemente deoarece, factorizand
2
cu acest spatiu se obtin patru clase de resturi corepunzatoare componentelor (i, j)
de forma (0, 0), (0, 1), (1, 0), (1, 1).
Pentru a arata ca 1 apare pe fiecare linie din C de 2k1 ori se rationeaza similar.
II: In aceste conditii, putem
scrie
k1

2
2k2 . . . 2k2
k2
2k1 . . . 2k2
2

= 2k2 (I + J)
C =
..

.
2k2 2k2 . . . 2k1
unde I este matricea unitate iar J este matricea patrata cu toate elementele
egale cu 1, ambele de ordin 2k .
Se mai observa ca CJ = 2k1 J. Deci
1
1
2C J
I = k1 (2C 2 2k1 J) = k1 (2C 2 CJ) = C k1 = CC 1 .
2
2
2
1
1
De aici rezulta ca C este inversabila si C = k1 (2C J).
2
2
Exemplul 7.2 Sa luam k = 3, n = 5. Vom avea:

1 0 1 0 1 0 1

0 1 1 0 0 1 1

1 1 0 0 1 1 0
0 0 0 1 1 1 1

0 0 0 1 1 1 1
M = 0 1 1 0 0 1 1 ,
C = MT M =
,

1 0 1 1 0 1 0
1 0 1 0 1 0 1

0 1 1 1 1 0 0

1 1 0 1 0 0 1

1 1
1 1
1 1
1

1
1
1 1 1
1
1

1
1 1 1
1
1 1

1
1 1 1
1
1
1
1
C 1 =
.

4
1 1
1
1 1
1 1

1
1
1
1
1 1 1

1
1 1
1 1 1
1

1 0 0 1 1

Daca luam codul generat de matricea G = 0 1 0 1 0 , el are reprezenta0 0 1 0 1


rea modular
a N = (1, 1, 0, 1, 1, 1, 0). Vectorul ponderilor cuvintelor - cod este

76

PRELEGEREA 7. ALTE CLASE DE CODURI ELEMENTARE

W = (2, 2, 4, 3, 3, 3, 3). Intr-adev


ar, cuvintele - cod sunt liniile matricii

K=

0
0
0
1
1
1
1

0
1
1
0
0
1
1

1
0
1
0
1
0
1

0
1
1
1
1
0
0

1
0
1
1
0
1
0

Sa determinam acum reprezentarea modulara a unui cod liniar binar n care toate
cuvintele - cod au aceeasi pondere w (si deci distanta minima va fi d = w). Vom
avea prin ipoteza W = (w, w, . . . , w).
|

{z

2k 1

Dupa cum am remarcat n demonstratia Teoremei 7.2, 1 apare pe fiecare linie


din C n 2k1 pozitii. Rezulta (Teorema 7.2) ca n C 1 , 1 va apare pe fiecare linie
(coloana) tot n 2k1 pozitii, n rest fiind 1. Deci
N = W C 1 = (w2(k1) , . . . , w2(k1) )
|

{z

2k 1

Problema enuntata are solutie daca w se divide cu 2k1 ; n acest caz, reprezentarea modulara este de forma N = (r, r, . . . , r), adica fiecare tip de coloana apare n
|

{z

2k 1
(k1)

matricea generatoare de r = w 2

ori.

Plecand de la aceste considerente, McDonald a introdus o clasa de coduri pentru


care reprezentarea modulara este de forma 0i 1j . Mai exact,
n
2 1
2k 2
2k 3
...
2k 2u
k

d
k1

2
2k1 1
2k1 2
...
2k1 2u1

N
(1, 1, 1, . . . , 1)
(0, 1, 1, . . . , 1)
(0, 0, 1, . . . , 1)
...
(0, . . . , 0, 1, . . . , 1)
|

{z

2u 1

} |

{z

2k 2u

Aceste coduri au proprietatea ca prezinta o distanta minima foarte apropiata de


marginea Plotkin.
Sa luam de exemplu al treilea cod din tabelul de sus. Reamintim, marginea
Plotkin este
nq k1 (q 1)
.
d
qk 1
In cazul codului McDonald avem q = 2, n = 2k 3, d = 2k1 2, deci
(2k 3)2k1
2k 2
nq k1 (q 1)
k1

d
=

(2

2)
=
< 1.
qk 1
2k 1
2k 1

7.2. CODURI DERIVATE DIN MATRICILE HADAMARD

7.2

77

Coduri derivate din matricile Hadamard

In prelegerea anterioara am folosit o matrice Hadamard pentru a construi un algoritm de decodificare al codurilor RM(1, m). De fapt matricile Hadamard pot fi
utilizate n mod direct la constructia de coduri.
Definitia 7.1 Se numeste matrice Hadamard Hn o matrice patrat
a de ordinul n cu
elemente 1 si 1, ale carei linii sunt ortogonale doua cate doua.
Teorema 7.3 Fiind data matricea Hadamard Hn , (n par) se poate construi un cod
n
de distant
a minima d = , format din 2n cuvinte de lungime n.
2
Demonstratie: In matricea Hn vom nlocui 1 cu 0 si 1 cu 1. Vom nota v1 , v2 , . . . , vn
vectorii care formeaza liniile noii matrici. Codul cautat este
C = {v1 , v2 , . . . , vn , v1 , v2 , . . . , vn }.
Acest cod (care nu este neaparat liniar) are 2n cuvinte de lungime n. Mai trebuie
aratat ca distanta sa minima este n/2.
Deoarece v si v difera n toate componentele, distanta Hamming dintre ele este
n. Pe de-alta parte, din proprietatea matricilor Hadamard rezulta
vi (vj ) = 0, i, j {1, . . . , n}, i 6= j.
Pentru ca aceasta egalitate sa fie adevarata, este necesar ca vi si vj sa coincida n
jumatate din componente si sa difere n cealalta jumatate (atentie, calculele se fac
n
n R, nu n Z2 !). Rezulta ca distanta Hamming dintre cele doua cuvinte este .
2
n
Deci d = .
2
2
Pentru n = 32 un astfel de cod a fost folosit de programul spatial Mariner.

Teorema 7.4 Dac


a Hn este matrice Hadamard, atunci H2n =

Hn Hn
Hn Hn

este matrice Hadamard.


Demonstratie: Evident, H2n este o matrice 2n 2n cu elemente 1. Mai trebuie
aratat ca liniile sale sunt ortogonale doua cate doua.
Avem: [vi , vi ][vi , vi ] = vi vi vi vi = n n = 0.
De asemenea, pentru i 6= j, [vi , vi ][vj , vj ] = [vi , vj ] [vi , vj ] = 0 0 = 0.
2
Pe baza acestei teoreme, putem construi coduri Hadamard a caror distanta sa
fie oricat de mare. Este suficient sa gasim o matrice Hadamard initiala, pe care
(folosind Teorema 7.4) sa o dilatam ulterior cat este nevoie. O astfel de matrice
Hadamard initiala a fost data n Prelegerea anterioara: ea este

H2 =

1
1
1 1

Pentru constructia altor matrici (si coduri) Hadamard mai generale au fost elaborate
diverse tehnici. Una din cele mai cunoscute este cea a lui Paley si Hall.

78

PRELEGEREA 7. ALTE CLASE DE CODURI ELEMENTARE

Definitia 7.2 O matrice patrat


a C de ordin n cu 0 pe diagonala principal
a si 1
nafara ei, astfel ca CC T = (n1)In se numeste matrice de conjunctur
a (conference
matrix).

Exemplul 7.3 Matricile

0 1
1 0

0
1
1
1
1
0 1
1
1
1
0 1
1 1
1
0

sunt matrici de conjunctur


a.
Fie q = pr cu p numar prim impar, r 1. Pe Zq definim functia astfel:

0
(x) = 1

daca x = 0
daca x este un patrat nenul
n rest

Vom nota elementele lui Zq cu a0 , a1 , . . . , aq1 unde a0 = 0, cu In matricea unitate


de ordin n si cu Jn matricea patrata de ordin n cu toate elementele egale cu 1.
Teorema 7.5 Matricea Paley Sq = (sij ) de ordin q definita prin sij = (ai aj ),
0 i, j < q are urmatoarele propriet
ati:
1. Sq Jq = Jq Sq = 0;
2. Sq SqT = qIq Jq ;
3. SqT = (1)

q1
2

Sq .

Demonstratie: Este lasata ca exercitiu.

0 1
1

0 1
Exemplul 7.4 Pentru q = 3, matricea Paley este S3 = 1
,
1
1
0

0
1 1 1
1

0
1
1
1

1
0
1 1
iar pentru q = 5,
S5 = 1
.

1
1
1
0
1

1 1 1
1
0
De remarcat ca S3T = S3 , S5T = S5 .
a q = pr (p numar prim impar, r 1) astfel nc
at q 3 (mod 4),
Teorema 7.6 Dac
atunci exista o matrice Hadamard de ordin q + 1.
Demonstratie: Din ipoteza si Teorema 7.5, exista o matrice Paley S de ordin q.
Construim matricea C de ordin q + 1 astfel:

C=

0 1 ... 1

1
S
1

7.3. CODURI PRODUS

79

Se verifica faptul ca C este o matrice de conjunctura cu proprietatea C T = C


(q 3 mod 4 conduce la relatia S T = S). Fie H = Iq+1 + C.
Avem HH T = (Iq+1 + C)(Iq+1 + C)T = (Iq+1 + C)(Iq+1 + C T ) = Iq+1 + C +
T
C + CC T = Iq+1 + qIq+1 = (q + 1)Iq+1 , deci orice doua linii distincte ale lui H sunt
ortogonale. Rezulta ca H este matrice Hadamard de ordin q + 1.
2
Plecand de la matricile Paley se pot construi alte coduri Hadamard.
Fie S o matrice Paley de ordin n (conform Teoremei 7.5). Un cod Hadamard de
1
1
ordin n poate fi definit cu 0, 1 si cu liniile matricilor (S +In +Jn ), (S +In +Jn ).
2
2
Acesta este un cod care contine 2n + 2 cuvinte - cod de lungime n si are distanta
n1
d=
.
2
Exemplul 7.5 Pentru n = 9 = 32 , codul este format din cele 20 cuvinte care
formeaza linile matricii

0
0

2
P

J P

J P2
1 1
1

unde P = 0
1
mentele egale cu

7.3

1
0
0
1,

0
0
P2
J
P
J P2
I
J P
1 1
1

0
0

J P

J P2

1 1
1

0
1
si J sunt matricile unitate, respectiv cu toate ele, iar I
0
ambele de ordin 3.

Coduri produs

Sa consideram un cod de lungime n = n1 n2 . In loc sa scriem cuvintele sale sub


forma de linii de lungime n, le putem reprezenta ca matrici cu n1 linii si n2 coloane.
Un mod simplu de a realiza acest lucru este de a scrie cuvantul cod a = a0 a1 . . . an1
ca o matrice X = [xij ], 0 i n1 1, 0 j n2 1, unde xij = ain2 +j . Aceasta
va fi numita scrierea canonic
a.
Definitia 7.3 Fie A1 , A2 dou
a coduri liniare de lungime n1 respectiv n2 . Se construieste codul A de lungime n1 n2 ca mai sus (cu scrierea canonic
a). Spunem ca
A = A1 A2 este codul produs al lui A1 cu A2 dac
a si numai daca A const
a din
toate cuvintele - cod n care reprezentarea matriciala verifica propriet
atile:
a a unei matrici este un cuvant - cod din A1 ;
Fiecare coloan
Fiecare linie a unei matrici este un cuvant - cod din A2 .
De remarcat ca prin permutarea lui A1 cu A2 se obtine un cod echivalent.

80

PRELEGEREA 7. ALTE CLASE DE CODURI ELEMENTARE

Teorema 7.7 Dac


a A1 este un (n1 , k1 ) - cod liniar si A2 este un (n2 , k2 ) - cod
liniar, atunci A1 A2 este un (n1 n2 , k1 k2 ) - cod liniar.
Demonstratie: Fie Gi , i = 1, 2 matricile generatoare ale celor doua coduri, pe care
le presupunem n forma esalonat canonica, deci Gi = [Iki Bni ki ]. Vom nota cu
(1)
(2)
gi (1 i k1 ) respectiv gi (1 i k2 ) liniile celor doua matrici.
Definim matricile Xij (1 i < k1 , 1 j < k2 ) de dimensiune n1 n2 , astfel:
(2)

Primele k1 linii sunt 0 cu exceptia liniei i care este gj ;


(1) T

Primele k2 coloane sunt 0 cu exceptia coloanei j care este gi

(1) (2)

Pentru k > k1 , linia k este gik gj ;


(2) (1) T

Pentru k > k2 , coloana k este gjk gi

Schematic, o astfel de matrice arata astfel:

0 ... 0 0 ... 0

... ... ... ... ... ...

1
x x x

... ... ... ... ... ...

Xij =

0 ... 0
0
.
.
.
0

0
x 0

... x ...
0 x 0
Evident, Xij reprezinta un cuvant - cod din A1 A2 si orice alt cuvant - cod este
o combinatie liniara formata din aceste matrici. Deci Xij , 1 i k1 , 1 j k2
formeaza o baza a codului A1 A2 .
Submatricile formate din primele k1 linii si k2 coloane din Xij formeaza multimea
mesajelor de informatie.
2
liniare binare
A 1 , A2
Exemplul 7.6 Sa consider
am codurile
!
1 0 1
1 0
respectiv G2 =
G1 =
0 1 1
0 1
Deci n1 = n2 = 3, k1 = k2 = 2. Sunt 4 matrici Xij , toate

X11 = 0
1

X21 = 1
1

0
0
0
0
0
0

1
0

0
1

X12 = 0
0

X22 = 0
0

1
0
1
0
1
1

generate
de matricile
!
1
.
0
de dimensiune 3 3:

0
0

0
0
.
0

S
a consider
de informatie 1011 pe care l asez
am sub forma unei matrici
am mesajul
!
1 0
22:
. Matricea - cod va fi
1 1

7.3. CODURI PRODUS

81
1 0 1

0 0 0
0 0 0
1 0

1 + 0 1 0 = 1 1
1 0 1
1 0 1
0 1 0
0 1
Se observa ca liniile sunt cuvinte - cod din A2 , iar coloanele sunt cuvinte
din A1 .


X11 + X21 + X22 = 0 0 0 + 1 0

1
1
.
0
- cod

Propozitia 7.1 Matricea generatoare a codului produs A1 A2 este G1 G2 unde


G1 si G2 sunt matricile generatoare ale celor doua coduri, iar 00 00 este produsul
Kronecker.
Demonstratie: Fie (n1 , k1 ), (n2 , k2 ) cele doua coduri, cu matricile generatoare G1
respectiv G2 , si sa consideram matricea G1 G2 obtinuta prin produsul Kronecker
(Prelegerea 6, Definitia 6.3). Daca se ia linia k2 i + j din aceasta matrice si se
reprezinta sub forma canonica ca o matrice n1 n2 , se obtine exact matricea Xij din
constructia Teoremei 7.7. Cum Xij reprezinta o baza pentru codul A1 A2 , rezulta
ca G1 G2 este matricea sa generatoare.
Din acest motiv, n primii ani, codurile produs erau numite si coduri Kronecker.
2
Exemplul 7.7 Matricea generatoare a codului produs A1 A2 din Exemplul 7.6
este:

G = G1 G2 =

G2 0 G2
0 G2 G2

1
0
0
0

0
1
0
0

1
0
0
0

0
0
1
0

0
0
0
1

0
0
1
0

1
0
1
0

0
1
0
1

1
0
1
0

Se observa imediat ca prin plierea celor patru linii din aceast


a matrice se obtin
matricile Xij din Exemplul 7.6.
S
a consider
am din nou mesajul de informatie 1011. Prin nmultirea cu matricea
G se ajunge la cuvantul - cod 101111010 care - scris ca o matrice 3 3 - coincide
cu rezultatul din Exemplul 7.6.
Teorema 7.8 Distanta codului A1 A2 este egal
a cu d1 d2 (d1 si d2 fiind distantele
codurilor A1 respectiv A2 ).
Demonstratie: Daca Ai are lungimea ni (i = 1, 2), sa consideram o matrice X
reprezentand un cuvant - cod nenul din A1 A2 (am vazut ca asemenea cuvinte
exista). Putem gasi deci cel putin o linie cu minim d2 elemente nenule. Fiecare
astfel de element se afla pe o coloana cu minim d1 elemente nenule; deci matricea
X are minim d1 d2 elemente nenule.
2
Exemplul 7.8 Cele doua coduri din Exemplul 7.6 au d1 = d2 = 2 (se gasesc imediat
cuvintele - cod si se observa ca ponderea lor nenula minima este 2). Deci codul produs
va avea distanta d = 2 2 = 4. De remarcat ca - desi A1 si A2 nu pot corecta erori,
A1 A2 este capabil sa corecteze o eroare.
Codurile produs - desi cunoscute de la nceputul anilor 0 60, au devenit foarte importante odata cu folosirea lor n transmisiile telefonice fara fir si codificarea informatiei
pe CD - uri. Vom relua ulterior - pe larg - analiza acestor coduri.

82

PRELEGEREA 7. ALTE CLASE DE CODURI ELEMENTARE

7.4

Coduri optimal maximale

Fie multimea A Zqn . Se numeste diametrul multimii A numarul


d(A) = min d(x, y), x 6= y.
x,yA

De remarcat ca, daca A este cod liniar, atunci d(A) este chiar distanta minima a
codului.
Definitia 7.4 A este multime optimala de distant
a minima d dac
a:
d(A) = d;
x Zqn \ A, d(A {x}) < d.
Z 6 , urmatoarele multimi sunt optimale de distant
Exemplul 7.9 In
a minima 3:
2
A = {000000, 010101, 101010, 111111}
B = {000000, 101010, 011001, 000111, 110100, 111111}
Definitia 7.5 Se numeste multime optimala cardinal maximala de distant
a d o
multime optimala cu un numar maxim de elemente.
Vom nota acest numar cu a(n, d).
Exemplul 7.10 Multimile date n Exemplul 7.9 sunt optimale dar nu cardinal maximale pentru distanta 3. O multime optimala cardinal maximala din Z26 pentru
d = 3 este:
C = {000000, 001011, 010101, 011110, 100110, 101101, 110011, 111000},
deci a(6, 3) = 8.
Definitia 7.6 Un cod liniar A de distant
a d este optimal daca A este multime
optimala cardinal maximala de distant
a d.
Spunem ca un astfel de cod satisface conditia max - min, deoarece are un numar
maxim de vectori aflati la distanta minima d.
Nu se cunosc algoritmi de constructie a unor astfel de coduri. In aceasta sectiune
vom da cateva conditii necesare pentru codurile optimale.

Teorema 7.9 Intr-un


cod optimal maximal A de distant
a minima d (d < n),
a(n, d) q a(n 1, d).
Demonstratie: Putem presupune - fara a micsora generalitatea - ca primul caracter
al codului este caracter de informatie.
Fie K multimea cuvintelor din A care au 0 pe prima componenta. Cum pe prima
componenta pot apare q caractere distincte, va rezulta
a(n, d)
.
card(K) =
q

7.4. CODURI OPTIMAL MAXIMALE

83

K este un cod cu distanta d n care toate cuvintele au 0 pe prima pozitie. Daca


eliminam aceasta componenta, se obtine un cod din Zqn1 , tot de distanta d, cu
acelasi numar de cuvinte. Acest cod nu este neaparat optim, deci conditia va fi
a(n 1, d)

a(n, d)
q

Mai trebuie facuta observatia ca a(n 1, n 1) = q pentru ca un cod cu repetitie


este optimal maximal de distanta minima egala cu lungimea cuvintelor - cod.
2
Corolarul 7.1 Dac
a j d, atunci q nj a(j, d) a(n, d).
Demonstratie: Din Teorema 7.9 rezulta inegalitatile:
q a(n 1, d) a(n, d)
q a(n 2, d) a(n 1, d)
...
q a(n i, d) a(n i + 1, d)
Prin nmultire se obtine q i a(n i, d) a(n, d), dupa care se face notatia n i = j.
2
Teorema 7.10 Fie A un cod liniar optimal maximal de distant
a minima d.
qd
Daca n <
, atunci numarul simbolurilor de informatie verifica inegalitatea
q1
k n

dq 1
+ 1 + logq d.
q1

Demonstratie: Deoarece A este cod liniar, numarul de simboluri de informatie va fi


dat de relatia a(n, d) = q k .
Rescriem inegalitatea lui Plotkin sub forma d(q k 1) nq k1 (q 1), sau
q k1 (dq + n nq) n.
dq
Deoarece - din ipoteza - dq + n nq > 0, avem q k
, sau
dq + n nq
dq
a(n, d)
.
dq + n nq
"
#
(
)
dq 1
dq 1
dq 1
Fie
= i + f unde i =
, f=
.
q1
q1
q1
Deci qd 1 = (q 1)i + (q 1)f si avem
dq
dq
dq
a(i, d)
=
=
.
dq + i iq
dq (q 1)i
1 "+ (q 1)f
#
"
#
d1
dq 1
Folosind Corolarul 7.1 si i d (deoarece
= d+
d), rezulta
q1
q1
dq1

a(n, d) q

ni

q n q1 +f
a(i, d)
qd
1 + (q 1)f

Dezvoltand n serie Taylor, q f 1 + (q 1)f


a(n, d) q
sau q k q

n dq1
q1

n dq1
q1

(f < 1) si deci
qd,

qd, de unde - prin logaritmare - se obtine relatia din enunt.

84

7.5

PRELEGEREA 7. ALTE CLASE DE CODURI ELEMENTARE

Exercitii

7.1 S
a se construiasc
a vectorul ponderilor pentru codurile Hamming (7, 4) si
RM(1, 3).
7.2 Folosind vectorul ponderilor, sa se construiasc
a numar
atorul de ponderi al unui
cod liniar.
7.3 S
a se construiasc
a matricile generatoare si matricile K pentru codurile
McDonald cu k = 2, 3, 4.
7.4 S
a se construiasc
a matricile si codurile Hadamard pentru n = 4 si n = 8.
7.5 S
a se arate ca daca Hn este o matrice Hadamard, atunci Hn HTn = nIn .
7.6 S
a se construiasc
a o matrice Hadamard de ordin 12.
7.7 S
a se arate ca matricea Hadamard H8 genereaz
a (8, 4) - codul Hamming binar
extins.
7.8 S
a se construiasc
a codurile produs pentru codul cu repetitie de lungime n (A1 )
si codul cu repetitie de lungime p (A2 ).
7.9 S
a se construiasc
a matricea generatoare a codului produs A1 A2 unde A1 = A2
este codul Hamming (7, 4).
7.10 Aceeasi problem
a pentru codul RM(1, 3).
7.11 Demonstrati Teorema 7.5.
7.12 Folosind matricile Paley, sa se construiasc
a codurile Hadamard de ordin 5 si
respectiv 7.
7.13 Sa se arate ca un cod binar liniar optimal maximal de distant
a minima d are
cel putin 2d 1 log2 d simboluri de control.

Prelegerea 8
Circuite liniare si extensii Galois
8.1

Circuite liniare pentru operatii elementare

In aceasta sectiune presupunem ca toate calculele se realizeaza n Zq (q numar prim).


Un circuit liniar este un graf orientat, cu trei tipuri de noduri (conectori):
sumator - este un conector cu cel putin doua intrari si o iesire. Efectul este
acela de a scoate suma modulo q a elementelor aflate la intrare. Operatia se
executa instantaneu. Sumatorul se noteaza astfel:
?

Multiplicator - este un conector cu o singura intrare si o iesire unde se obtine


rezultatul nmultirii cu c Zq a elementului de la intrare. Operatia se executa
(de asemenea) instantaneu. Notatie:

Element de nmagazinare - Este un registru buffer cu o intrare si o iesire; efectul


este ntarzierea cu un tact a intrarii: elementul a Zq intra n momentul k si
iese n momentul k + 1. Notatie:
-

Aceste trei tipuri de conectori se pot grupa arbitrar - folosind eventual si noduri
obisnuite. Utilizarea practica revine la obtinerea de circuite liniare care pot realiza
automat operatii uzuale cu polinoame: adunari, scaderi, nmultiri si mpartiri.
In cele ce urmeaza, vom identifica un vector cu n + 1 componente
a = (a0 , a1 , . . . , an )
cu polinomul de gradul n cu o variabila
a(x) = a0 + a1 X + . . . + an X n .
85

86

PRELEGEREA 8. CIRCUITE LINIARE SI EXTENSII GALOIS

In cursul transmisiei mesajului a, ordinea de prelucrare (transmisie) se face dupa


puterile descrescatoare ale lui X; deci, sensul de circulatie a semnalelor va fi:
a0

8.1.1

a1

...

an

Constructia unor circuite liniare uzuale

A Circuit de nmultire cu un polinom.


Fie h(X) = b0 +b1 X +. . .+bn X n un polinom fixat si a(X) = a0 +a1 X +. . .+ak X k
un polinom arbitrar. Coeficientii ambelor polinoame pot fi luati ntr-un inel arbitrar
(din considerente pur aplicative, acesta este de obicei Zq , dar constructiile raman
valabile n general).
Un circuit de nmultire cu h(X) este:

- +n

6
s -

- +n -

bn1

bn

a(X)

Figura 8.1:
...

- +n

b1

6
s -

...

6
s -

b0

6
-

Initial elementele de nmagazinare contin 0; coeficientii polinomului a(X) intra


n stanga jos - dupa puterile descrescatoare ale lui X - cate unul la un tact, iar
coeficientii produsului ies n dreapta sus. Circuitul functioneaza n+k +1 tacti; dupa
k + 1 tacti, la intrare se introduc zerouri n cei n tacti ramasi, pna ce elementele de
nmagazinare contin din nou numai 0.
De remarcat ca un element de nmagazinare functioneaza dupa principiile unei
variabile de memorie (aducerea unei valori face sa dispara vechea valoare din locatie).
Circuitul lucreaza dupa formula de nmultire obisnuita:
a(X)h(X) = a0 b0 + (a0 b1 + a1 b0 )X + . . . + (ak1 bn + ak bn1 )X k+n1 + ak bn X n+k
Exemplul 8.1 Sa luam polinomul h(X) = X 3 5X 2 + 2 Z[X] (vectorul corespunz
ator este h = (2, 0, 5, 1)). Circuitul de nmultire cu h(X) va fi:
6

-+

- +
6

s-

6
s -

6
-

De remarcat ca multiplicarea cu 1 se face prin arc simplu (far


a conector), iar

multiplicarea cu 0 revine la suprimarea arcului. In cazul operatiilor cu polinoame


din Z2 [X], toti multiplicatorii se reduc la aceste doua cazuri.

8.1. CIRCUITE LINIARE PENTRU OPERAT


II ELEMENTARE

87

Daca dorim sa nmultim h(X) cu polinomul a(X) = 2X + 8 (vector a = (8, 2)),


circuitul liniar va functiona 5 tacti (pan
a cand toate elementele de nmagazinare
revin la 0); comportarea sa este relatat
a de tabelul:

Nr. tact Intrare Inmagazinare


Iesire
0
0
0 0 0
0
1
2
0 0 0
2
2
8
2 0 0
2
3
0
8 2 0 40
4
0
0 8 2
4
5
0
0 0 8
16
6
0
0 0 0
0
Deci, polinomul produs este 2X 4 2X 3 40X 2 + 4X + 16; sau - n termeni de
vectori, (16, 4, 40, 2, 2).
Aceeasi operatie de nmultire este realizata si de circuitul liniar:
Figura 8.2:
6

-+
6

b0

b1

- + - ...

b2

6
s

- ...

-+
6

-+

bn1

bn

Exemplul 8.2 Circuitul liniar care realizeaz


a nmultirea cu polinomul
4
h(X) = 1 + X + X peste Z2 este
6
s

-+
6

-+

6
-

deoarece vectorul corespunz


ator polinomului h(X) este h = (1, 1, 0, 0, 1).
B. Fie h(X) = h0 + h1 X + . . . + hn X n si g(X) = g0 + g1 X + . . . + gn X n doua
polinoame fixate. Un circuit liniar care sa realizeze operatia
a(X)h(X) + b(X)g(X)
pentru doua polinoame arbitrare a(X), b(X), este:

88

PRELEGEREA 8. CIRCUITE LINIARE SI EXTENSII GALOIS

b(X)

s
?

g0

- +
6

6
s

- ...

- ...

- ...

gn

-+
6

-+
6

hn1

h1

6
s

s
?

gn1

g1

h0

a(X)

s
?

6
s

hn

-6

De remarcat ca polinoamele g(X) si h(X) pot avea grade diferite; n acest caz se
alege n ca fiind gradul cel mai mare si se completeaza celalalt polinom cu coeficienti
nuli pana la gradul n.
Exemplul 8.3 Fie polinoamele g(X) = 1 + X 2 , h(X) = X + X 2 + X 4 cu coeficienti
n Z2 ; deci vectorii corespunz
atori vor fi h = (0, 1, 1, 0, 1), g = (1, 0, 1, 0, 0). Circuitul liniar care realizeaz
a expresia a(X)h(X) + b(X)g(X) este:
b(X)

s
? -

a(X)

-+
s6

-+
6
s

-+

-6

C. Circuit liniar de mp
artire cu un polinom.
Fie polinomul (fixat) g(X) = g0 + g1 X + . . . + gk X k , gk 6= 0. Un circuit liniar
care realizeaza mpartirea unui polinom arbitrar a(X) = a0 + a1 X + . . . + an X n la
g(X) este:

#
?

g0
"!
?

a(X) -
+ -

Figura 8.3:

...

s
#
?

gk1

g1
"!
?

-+

s
#
?

...

"!
-

-+

6
#

gk1
"!
6
-

Initial, toate cele k elemente de nmagazinare contin 0. La intrare, timp de


n + 1 tacti se introduc coeficientii polinomului a(X) (n ordinea descrescatoare a
puterilor). In primii k tacti, iesirea va scoate numai 0. Primul coeficient nenul
apare la iesire la momentul k + 1 si este an gk1 (operatii n inelul coeficientilor celor
doua polinoame) - coeficientul termenului X nk din cat.
Pentru fiecare coeficient qj al catului, polinomul qj g(X) trebuie scazut din dempartit; aceasta operatie se realizeaza printr-un procedeu de conexiune inversa (feedback).

8.1. CIRCUITE LINIARE PENTRU OPERAT


II ELEMENTARE

89

Dupa momentul n + 1 (cand au intrat toti coeficientii polinomului a(X)) la iesire


s-a obtinut catul q(X) al mpartirii la g(X), iar n elementele de nmagazinare se
gasesc coeficientii restului.
Exemplul 8.4 Un circuit liniar de mp
artire (peste Q) la polinomul g(X) = 2 + X
este:

2
6

-+

Exemplul 8.5 Fie polinomul g(X) = 1 + X 2 + X 5 + X 6 Z2 [X]. Circuitul care


realizeaz
a mp
artirea este:

- +

s
?

-+

s
?

-+

S
a luam polinomul a(X) = 1 + X 4 + X 5 + X 7 + X 9 + X 10 pe care sa-l mp
artim n
4
5
3
Z2 la polinomul g(X). Se obtine catul X + X si restul X + X + X + 1.
Circuitul functioneaz
a 11 tacti. Etapele prin care trece n efectuarea acestei
mp
artiri sunt reprezentate de tabelul urmator:
Nr. tact Intrare Elemente de nmagazinare Iesire
0

0 0 0 0 0 0

1
1
1 0 0 0 0 0
0
2
1
1 1 0 0 0 0
0
3
0
0 1 1 0 0 0
0
4
1
1 0 1 1 0 0
0
5
0
0 1 0 1 1 0
0
6
1
1 0 1 0 1 1
0
7
1
0 1 1 1 0 0
1
8
0
0 0 1 1 1 0
0
9
0
0 0 0 1 1 1
0
10
0
1 0 1 0 1 0
1
11
1
1 1 0 1 0 1
0
Vectorii (1, 1, 0, 1, 0, 1) - de pe ultima linie si (0, 1, 0, 0, 1) - scris mai gros si n
ordine inversa pe ultima coloan
a - reprezint
a restul 1 + X + X 3 + X 5 respectiv catul
4
X + X mp
artirii lui a(X) la g(X).

90

PRELEGEREA 8. CIRCUITE LINIARE SI EXTENSII GALOIS

D. Circuitul liniar are realizeaza nmultirea cu polinomul h(X) = h0 + h1 X +


. . . + hn X n urmata de mpartirea la polinomul g(X) = g0 + g1 X + . . . + gn X n este:

s
s
...
?

g0

gn1

g1

h0

-+
6

...

-+

hn1

h1

6
s

gn1

-+
6

...

hn

6
s

-6

Cand gradele polinoamelor sunt diferite, se construieste ntai circuitul liniar corespunzator polinomului de grad maxim, dupa care se completeaza cu circuitul corespunzator celuilalt polinom.
Exemplul 8.6 Sa luam polinoamele h(X) = 1 + X + X 3 , g(X) = 2 + X + X 4 cu
coeficienti n Z3 . Circuitul liniar care realizeaz
a nmultirea cu h(X) si mp
artirea la
g(X) este

s
?

6
s

-+
6
s

- +`

-6

Deoarece calculele se fac n Z3 , 2 = 1, 1 = 2, si 11 = 1.


Pentru intrarea a(X) = 1 + 2X + 2X 2 , comportarea circuitului este urmatoarea:

2
2
1

0
2
1
0

0
2
2
0

0
0
2
2

0
2
2
0

2
2

ceea ce corespunde catului 2 + 2X si restului 2X 2 .


De remarcat ca primul coeficient (de grad maxim) al catului este scos de circuit
cu o nt
arziere de grad(g(X)) grad(f (X)) = 1 tact.

8.2. EXTENSII GALOIS

91

Exemplul 8.7 Un circuit liniar pentru nmultirea cu h(X) = 1 X 2 + 2X 4 si


mp
artirea la g(X) = 3 2X + X 2 , ambele din Z[X], este:

-+
6

-+

6
s

-+

-6

Fie intrarea a(X) = 2 + X; comportarea circuitului este:

0
0
0
0

1
1
0 7
4
2
2 2
1
2 7
0
0
0 2 22 12 7
0
0
0 34 2 12
deci catul este 2X 3 7X 12 iar restul 34 2X.
De remarcat ca circuitul este lasat sa functioneze grad(h(X)) grad(f (X)) = 2
tacti n plus (prin introducerea de zero-uri), pentru golirea elementelor de nmagazinare necontrolate de mp
artitor.

8.2

Extensii Galois

Fie q un numar prim si g(X) = g0 + g1 X + . . . + gn X n Zq [X]. Vom considera


algebra polinoamelor modulo g(X).
Fiind dat un polinom oarecare din Zq [X], clasa sa de resturi modulo g(X) se
gaseste mpartind polinomul respectiv cu g(X). Restul mpartirii specifica clasa de
resturi respectiva.
Doua polinoame carora le corespunde acelasi rest la mpartirea cu g(X) sunt
echivalente, intrand n aceeasi clasa de resturi modulo g(X).
Fiecare clasa de resturi modulo g(X) se reprezinta prin polinomul (unic) de grad
strict mai mic decat n, care apartine clasei respective. Toti acesti reprezentanti pot
fi considerati ca polinoame de gradul n 1, avand eventual coeficienti nuli.
Vom nota cu {f (X)} clasa de resturi a polinomului f (X) modulo g(X). Deci
f (X) va corespunde unui vector (distinct) de lungime n, cu componente din Zq (prin
completare eventual cu zerouri).
Operatiile n algebra claselor de resturi sunt:
{a(X)} + {b(X)} = {a(X) + b(X)}
c{a(X)} = {ca(X)}, c Zq
{a(X)}{b(X)} = {a(X)b(X)}

92

PRELEGEREA 8. CIRCUITE LINIARE SI EXTENSII GALOIS

toate calculele fiind facute modulo g(X).


Evident, {0} = {g(X)}, unde {0} este polinomul de grad n1 cu toti coeficientii
nuli (sau vectorul cu n componente zero). Vom nota {0} = 0.
Pentru un polinom s(X) Zq [X], clasa de resturi modulo g(X) se obtine foarte
usor. Teorema mpartirii cu rest da:
s(X) = a(X)g(X) + r(X) unde grad(r(X)) < grad(g(X)) = n. Atunci:
{s(X)} {r(X)} = {s(X) r(X)} = {a(X)g(X)} = {a(X)}{g(X)} = 0.
Sa reluam circuitul liniar de mpartire definit n Figura 8.3, n care facem urmatoarele modificari (vezi Figura 8.4):
Se neglijeaza intrarea si iesirea;
La momentul initial elementele de nmagazinare contin coeficientii unui polinom b(X) = b0 + b1 X + . . . + bn1 X n1 .

Figura 8.4:

#
?

g0
b0

"!
?

-+ b1

s
#
?

gn1

g1

"!
?
-

...

s
#
?

...

6
#

gn1

"! "!
?

6
-+ - b
n1

La urmatorul tact, n elementele de nmagazinare se obtin coeficientii polinomului:


b0 (X) = g0 gn1 bn1 + (b0 g1 gn1 bn1 )X + (b1 g2 gn1 bn1 )X 2 + . . .
+(bn2 gn1 gn1 bn1 )X n1 =
= b0 X + b1 X 2 + . . . + bn1 X n bn1 X n gn1 bn1 (g0 + g1 X + . . . + gn1 X n1 ) =
= Xb(X) gn1 bn1 g(X).
Daca notam = {X} ({X} este clasa de resturi a polinomului X), din relatia
de mai sus se obtine:
b0 () = {b0 (X)} = {Xb(X)} = {X}{b(X)} = {X}b({X}) = b().
Deci circuitul de mpartire cu polinomul g(X) poate fi utilizat pentru nmultirea lui
b() cu .
algebra polinoamelor modulo g(X), grad(g(X)) = n, avem:
Teorema 8.1 In
1. g() = 0 unde = {X};
2. g este polinomul de grad minim care are pe ca rad
acin
a.
Demonstratie:

8.2. EXTENSII GALOIS

93

1. Fie g(X) = g0 + g1 X + . . . + gn Xn Zq [X], gn 6= 0. Vom avea g() =


g0 +g1 +. . .+gn n = g0 +g1 {X}+. . .+gn {X}n = g0 +g1 {X}+. . .+gn {X n } =
{g0 + g1 X + . . . + gn X n } = {g(X)} = 0.
2. Folosind acelasi rationament, se obtine pentru orice polinom f (X) cu
grad(f (X)) < n, ca f () = {f (X)} 6= 0, deoarece toate polinoamele neidentic nule de grad strict mai mic decat n apartin la clase de resturi distincte.
2
Sa presupunem acum ca g(X) Zq [X] este un polinom ireductibil. Conform
Teoremei 8.1, = {X} este radacina a lui g(X). Acest element poate fi considerat
fie ca polinom de grad n 1 (cu toti coeficientii nuli nafara de cel al lui X), fie ca
vector cu n componente (0, 1, 0, . . . , 0).
Vom nota cu GF (q n ) multimea vectorilor din Zqn , sau - echivalent:
- multimea polinoamelor de grad n 1 cu coeficienti n Zq , sau
- multimea claselor de resturi modulo polinomul g(X) Zq [X], ireductibil
peste Zq .
GF (q n ) se numeste extensia Galois de grad n a lui Zq .
Spunem ca GF (q n ) se obtine prin adaugarea la Zq a unei radacini a polinomului
g(X) Zq [X] de grad n, ireductibil peste corpul de baza Zq .
Observatie: Procedeul de trecere de la Zq la GF (q n ) este similar trecerii de la
corpul numerelor reale R la cel complex C, prin adaugarea radacinii i = {X} n
algebra claselor de resturi modulo 1 + X 2 , ireductibil peste R. Putem considera
multimea C a numerelor complexe fie ca multimea polinoamelor de grad 2 1 =
1, a + bi cu a, b R, fie ca multimea vectorilor (a, b) cu doua componente reale.
Daca polinomul g(X) Zq [X] este ireductibil peste Zq si primitiv, puterile lui
= {X} vor genera toate elementele lui GF (q n ) \ {0} unde n = grad(g(X)). Acest
lucru se poate realiza cu circuitul liniar din Figura 8.4, introducand la momentul
initial n elementele de nmagazinare coeficientii polinomului b(X) = 1 (adica vectorul (1, 0, . . . , 0)). Conform celor observate mai sus, la momentul urmator se obtine
{Xb(X)} = {X} = , dupa care urmeaza pe rand 2 , 3 , . . .. Cum g(X) a fost ales
primitiv, el va genera toate elementele nenule din GF (q n ).
Exemplul 8.8 Fie polinomul 1 + X + X 4 ireductibil peste Z2 si = {X} n algebra
claselor de resturi modulo 1+X +X 4 . Circuitul liniar care va genera toate elementele
nenule din GF (24 ) este:

?
-

s
?

-+

unde, la momentul initial, n elementele de nmagazinare este vectorul (1, 0, 0, 0).


Conform Teoremei 8.1, este o rad
acin
a a polinomului 1 + X + X 4 , adica
1 + + 4 = 0.
L
as
and circuitul sa functioneze, n elementele de nmagazinare se obtin toate elementele lui GF (24 ), pe care le interpret
am fie ca vectori cu patru componente peste
Z2 , fie ca polinoame de gradul 3 n cu coeficienti n Z2

94

0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

PRELEGEREA
8. CIRCUITE LINIARE
= 1
1
0SI EXTENSII
0
0 GALOIS
=

0
1
0
0
2
=

0
0
1
0
3
=

0
0
0
1
= 1 +
1
1
0
0
2
=
+
0
1
1
0
0
0
1
1
=
2 + 3
3
= 1 +
+
1
1
0
1
2
= 1
+
1
0
1
0
=

+ 3
0
1
0
1
2
= 1 + +
1
1
1
0
=
+ 2 + 3
0
1
1
1
2
3
= 1 + + +
1
1
1
1
2
3
= 1
+ +
1
0
1
1
= 1
+ 3
1
0
0
1
= 1
1
0
0
0

Vedem deci ca polinomul 1 + X + X 4 este primitiv, puterile lui epuizand toti


vectorii nenuli din GF (24 ) = {0, 0 , , . . . , 14 }.
Exemplul 8.9 Tabelul din exemplul precedent descrie operatia de nmultire din
GF (24 ), generat
a de rad
acina a polinomului primitiv 1 + X + X 4 . Daca s-ar
alege ca rad
acin
a a altui polinom primitiv - de exemplu 1 + X 3 + X 4 , se va genera
tot GF (24 ), dar ntr-o alta ordine. Las
am ca exercitiu aceast
a generare.
GF (24 ) se poate defini si operatia de adunare, nsum
In
and modulo 2 cei doi
4
operanzi, pe componente. Astfel, daca relu
am GF (2 ) generat n Exemplul 8.8 de
r
ad
acina polinomului 1 + X + X 4 , tabela de adunare va fi:
+
0
0

2
3
4
5
6
7
8
9
10
11
12
13
14

0
0
0

2
3
4
5
6
7
8
9
10
11
12
13
14

0
0
0
4
8
14

10
13
9
2
7
5
12
11
6
3

4
0
5
9
0
2
11
14
10
3
8
6
13
12
7

2
2
8
5
0
6
10

3
12
0
11
4
9
7
14
13

3
3
14
9
6
0
7
11
2
4
13

12
5
10
8
0

4
4

0
10
7
0
8
12
3
5
14
2
13
6
11
9

5
5
10
2

11
8
0
9
13
4
6
0
3
14
7
12

6
6
13
11
3
2
12
9
0
10
14
5
7

4
0
8

7
7
9
14
12
4
3
13
10
0
11
0
6
8
2
5

8
8
2
10
0
13
5
4
14
11
0
12

7
9
3
6

9
9
7
3
11

14
6
3
0
12
0
13
2
8
10
4

10
10
5
8
4
12
2
0
7
6

13
0
14
3
9
11

11
11
12
6
9
9
13
3

8
7
2
14
0
0
4
10

12
12
11
13
7
10
6
14
4
2
9
8
3
0
0

13
13
6
12
14
8
11
7
0
9
3
10
9
4

0
2

Fie acum a(X) = a0 + a1 X + . . . + ak1 X k1 Zq [X]. Valoarea a() se obtine


folosind circuitul de mpartire dat n Figura 8.3, cu urmatoarele observatii:

14
14
3
7
13
0
9
12
8

6
4
11
10
5
2
0

8.2. EXTENSII GALOIS

95

Se ignora iesirea;
Coeficientii lui a(X) se introduc la intrare n ordinea descrescatoare a puterilor;
Initial, elementele de nmagazinare contin valorile (0, 0, . . . , 0).
Pentru calculul unei valori de forma a()j , (j 0 fixat), se pot construi circuite
liniare care sa realizeze direct acest produs.
Exemplul 8.10 Fie GF (24 ) element primitiv, solutie a ecuatiei 1+X+X 4 = 0.
Polinomul a(X) va avea atunci gradul maxim 3. Fie a(X) = a0 +a1 X +a2 X 2 +a3 X 3 .
S
a construim un circuit liniar care sa efectueze a()5 .
Folosind tabelul din Exemplul 8.8, avem:
(a0 + a1 + a2 2 + a3 3 )5 = a0 5 + a1 6 + a2 7 + a3 8 = a0 ( + 2 ) + a1 (2 +
3 )+a2 (1++2 )+a3 (1+2 ) = (a2 +a3 )+(a0 +a2 )+(a0 +a1 +a3 )2 +(a1 +a2 )3
Pentru acest polinom se va construi circuitul liniar:
6
6

a0

a1

-+
6

a2
?

-+

a3
?
?

-+

-6
?

La momentul initial, n elementele de nmagazinare se gasesc coeficientii lui a();


dup
a un tact, aici vor fi coeficientii polinomului a()5 .

96

8.3

PRELEGEREA 8. CIRCUITE LINIARE SI EXTENSII GALOIS

Exercitii

8.1 S
a se realizeze circuite liniar (n ambele modalit
ati de constructie) care sa
efectueze nmultiri cu polinoamele:
h(X) = 1 + 2X + 3X 2 + 4X 3 Z[X]
h(X) = 1 + 2X + X 5 Z7 [X]
8.2 S
a se reprezinte comportamentul circuitelor realizate anterior, la nmultirea cu
polinoamele:
a(X) = 2 + 5X + X 3 ,
a(X) = X X 3 2X 4 ,
a(X) = 0.
8.3 Se da cav
antul g = (1, 0, 0, 1, 0, 1). Sa se realizeze circuitul de nmultire
cu polinomul corespunz
ator si sa se reprezinte comportamentul acestui circuit la
nmultirea cu a = (1) si a = (1, 1, 1, 0, 0, 0, 1).
8.4 S
a se realizeze un circuit liniar care realizeaz
a produsul a(X)g(X) + b(X)h(X)
pentru polinoamele:
g(X) = 1 + X + X 3 , h(X) = 1 5X 2X 2 + 3X 3 ;
g(X) = 4X 3 + X 5 2X 8 , h(X) = X 2 + 2X 4 + X 6 ;
g(X) = X X 3 + 3X 4 , h(X) = 2X 3 + X 5 + X 9 .
8.5 S
a se faca mp
artirea n Q[X] la polinomul g(X) = X 2 2X +1 a polinoamelor
a(X) = X 5 4X 3 2X + 5,
a(X) = X + 7.
8.6 Aceeasi problem
a pentru polinoamele g(X) = 2X 1 si respectiv a(X) = X 3 3.
Q[X];
(1) : In
Z3 [X].
(2) : In
8.7 S
a realizeze un circuit care s
a efectueze (n Q) nmultirea cu polinomul
3
g(X) = 1 2X + X si mp
artirea cu polinomul h(X) = g(X).
8.8 Aceeasi problem
a pentru polinoamele:
g(X) = X 2X 3 X 4 , h(X) = 2 + X + X 3 n Z5 [X];
g(X) = 1 + X X 6 , h(X) = X 2 4X 3 2X 5 + 3X 7 n Z11 [X].
8.9 S
a se rezolve problema enuntat
a n Exemplul 8.9.
8.10 Sa se genereze toate puterile lui , rad
acin
a a polinomului 1 + X 2 + X 5
Z2 [X] si 1 + X + X 3 Z3 [X].
a circuite de generare
8.11 Folosind elementele din Exemplul 8.10 sa se construiasc
pentru a(), a()2 si a()7 .
8.12 Sa se construiasc
a circuite de generare n GF (25 ) pentru a() si a()10 ,
unde este rad
acin
a a polinomului 1 + X 2 + X 5 Z2 [X].

Prelegerea 9
Coduri ciclice
9.1

Relatii de recurent
a liniar
a

algebra poliTeorema 9.1 Fie q prim si f (X) Zq [X], grad(f (X) = n. In


noamelor modulo f (X), fie I un ideal si g(X) polinomul de grad minim a carui
clas
a de resturi apartine lui I : {g(X)} I. Atunci:
1.

{s(X)} I

2.

g(X)|f (X).

g(X)|s(X);

Demonstratie: (1): Fie {s(X)} I. Folosind identitatea mpartirii, avem


s(X) = b(X)g(X) + r(X), grad(r(X)) < grad(g(X)).
Trecand la clasele de resturi respective, se obtine {s(X)} = {b(X)}{g(X)} +
{r(X)}. Cum {s(X)} I, {b(X)}{g(X)} I deoarece I este ideal, rezulta
{r(X)} I, absurd, deoarece g(X) este polinomul de grad minim a carui clasa de
resturi apartine idealului I. Deci r(X) 0, adica s(X) = b(X)g(X).
Reciproca este imediata, deoarece din s(X) = b(X)g(X) rezulta {s(X)} =
{b(X)}{g(X)} I.
(2): Prin mpartirea polinomului f (X) cu g(X) se obtine
f (X) = c(X)g(X) + r(X) unde grad(r(X)) < grad(g(X)).
Avem 0 = {f (X)} = {c(X)}{g(X)} + {r(X)} de unde rezulta {r(X)} I, absurd;
deci r(X) 0.
2
algebra polinoamelor modulo f (X), pentru orice ideal I exist
Teorema 9.2 In
a un
polinom normat unic g(X) de grad minim, cu {g(X)} I.
Reciproc, pentru orice divizor normat al lui f (X) exist
a un ideal generat de acel
divizor.
g(X) se numeste generatorul idealului I si scriem I = ({g(X)}).
Demonstratie: Fie h(X) un polinom de grad minim cu {h(X)} I; vom nota
g(X) = h1
n h(X) unde hn este coeficientul termenului de grad maxim din polinomul
h(X)).
Sa presupunem ca g(X), g 0 (X) sunt doua astfel de polinoame de grad minim,
normate, ale caror clase de resturi sunt n I. Conform Teoremei 9.1, g(X) si g 0 (X)
97

98

PRELEGEREA 9. CODURI CICLICE

se divid unul pe altul si - avand acelasi grad - difera printr-o constanta. Polinoamele
fiind normate, aceasta constanta este 1. Deci g(X) = g 0 (X).
Reciproc, fie g(X) un divizor normat al polinomului f (X) si ({g(X)}) idealul
generat de el. Un element al acestui ideal este {a(X)} ({g(X)}), deci are forma
{a(X)} = {b(X)}{g(X)} = {b(X)g(X)}.
2
Teorema 9.3 Fie q un numar prim, f (X) Zq [X], normat, cu grad(f (X)) = n
si fie f (X) = g(X)h(X). Daca grad(h(X)) = k, atunci n algebra polinoamelor
modulo f (X), idealul ({g(X)}) are dimensiunea k.
Demonstratie: Sa observam ca vectorii (asociati polinoamelor)
{g(X)}, {Xg(X)}, . . . , {X k1 g(X)}
sunt liniar independenti. Intr-adevar, pentru orice k elemente c0 , . . . , ck1 Zq , nu
toate nule, avem
c0 {g(X)} + c1 {Xg(X)} + . . . + ck1 {X k1 } = {(c0 + c1 X + . . . + ck1 X k1 )g(X)} 6= 0
deoarece s-a obtinut un polinom de grad cel mult n k + k 1 = n 1 < n.
In acelasi timp, pentru orice {s(X)} ({g(X)}) avem
{s(X)} = {a(X)g(X)} = {(a0 + a1 X + . . . + ak1 X k1 )g(X)} = a0 {g(X)} +
a1 {Xg(X)} + . . . + ak1 {X k1 g(X)}, unde unii din coeficientii a0 , a1 , . . . , ak1 pot
fi nuli.
Deci vectorii de sus formeaza o baza a subspatiului liniar ({g(X)}), care are deci
dimensiunea k.
2

Teorema 9.4 Fie f (X) Zq [X] un polinom normat si f (X) = g(X)h(X). In


algebra polinoamelor modulo f (X),
{a(X)} ({g(X)}) {a(X)} este n spatiul nul al idealului ({h(X)}).
Demonstratie: 00 =00 : Fie {a(X) ({g(X)}), deci {a(X)} = {v(X)g(X)}.
Fie de asemenea {b(X)} ({h(X)}), deci {b(X)} {w(X)h(X)}. Vom avea
{a(X)}{b(X)} = {v(x)w(X)g(X)h(X)} = {v(X)w(X)f (X)} =
= {v(X)w(X)}{f (X)} = 0.
00
=00 : Sa consideram {a(X)} n spatiul nul al idealului ({h(X)}). Atunci
{a(X)}{h(X)} = 0, adica a(X)h(X) = c(X)f (X) = c(X)g(X)h(X) de unde
rezulta a(X) = c(X)g(X). Deci {a(X)} ({g(X)}).
2
Definitia 9.1 Se numeste relatie de recurent
a liniara egalitatea
k
X

hj ai+j = 0

(1)

j=0

unde i 0, hk = 1, h0 6= 0, hj Zq , ai+j Zq .
Realtiile de recurenta liniara se pot scrie si
ai+k =

k1
X

hj ai+j , i = 0, 1, . . .

j=0

O solutie a unei astfel de relatii de recurenta liniara este orice succesiune infinita de
forma a0 , a1 , . . . , ap , . . . care verifica relatia data, cu h0 , h1 , . . . , hk date, h0 6= 0,

LINIARA

9.1. RELAT
II DE RECURENT
A

99

hk = 1. Relatia va determina succesiv pe ak din a0 , . . . , ak1 , apoi pe ak+1 din


a1 , . . . , ak , s.a.m.d.
Altfel spus, conditiile initiale a0 , a1 , . . . , ak1 determina o solutie a relatiei de
recurenta liniara.
Observatii:
Orice combinatie liniara de solutii ale unei relatii de recurenta liniara este tot
o solutie.
Solutiile pentru care conditiile initiale sunt respectiv (1, 0, . . . , 0), (0, 1, . . . , 0),
. . . , (0, 0, . . . , 1) determina orice alta solutie. Deci, spatiul solutiilor relatiei de
recurenta (1) are dimensiunea cel mult k.
Fiind date conditiile initiale (arbitrare) a0 , a1 , . . . , ak1 , solutia relatiei de recurenta
liniara (1) corespunzatoare lor se poate obtine folosind circuitul liniar
- +j - . . .
6
6

h0

- +j

6
6

hk2

h1

- +j
hk1



aj+1 . . . 6
6 aj 6
r
r aj+k2 6
r aj+k1 ?

n care, la momentul initial, n elementele de nmagazinare se gasesc a0 , a1 , . . . , ak1 .


Sa consideram acum polinomul (fixat) h(X) Zq [X], h(X) = h0 + h1 X + . . . +
hk X k , h0 6= 0, hk = 1, si fie n cel mai mic numar natural pentru care X n 1 se
divide cu h(X). Notam
g(X) =

Xn 1
h(X)

(2)

Pe baza acestor date construim relatia de recurenta liniara


ai+k =

k1
X

hj ai+j , i 0

(3)

j=0

Teorema 9.5
1. Solutiile relatiei de recurent
a (3) sunt periodice, de perioad
a n.
2. Multimea formata din prima perioad
a a fiec
arei solutii, scrisa ca polinom
n1
a(X) = a0 X
+ . . . + an2 X + an1 constituie idealul ({g(X)}) n algebra
polinoamelor modulo X n 1.
Demonstratie: (a): Vom arata ca oricarui element {a(X)} ({g(X)}) cu
a(X) = a0 X n1 + . . . + an2 X + an1 i corespunde o solutie periodica
a1 , a1 , . . . , an1 , a0 , a1 , . . . , an1 , a0 , . . .
a relatiei de recurenta (3). Evident, nu este obligatoriu ca toti coeficientii ai sa
fie nuli, gradul real al polinomului f (X) putand fi chiar zero.

100

PRELEGEREA 9. CODURI CICLICE

Fie {a(X)}{h(X)} = {c(X)}. Vom nota c(X) = c0 + c1 X + . . . + cn1 X n1 .


Avem:
- pentru k p n 1, cp = h0 an1p + h1 an1p+1 + . . . + hk an1p+k
(4)
- pentru 0 p < k, cp = h0 an1p + h1 an1p+1 + . . . + hp an1 + hp+1 a0 + . . . +
hk akp1 .
(5)
Conform Teoremei 9.4, daca {a(X)} ({g(X)}) atunci {a(X)}{h(X)} = 0,
adica cp = 0, (0 p n 1).
Considerand (ai )i ca o succesiune periodica, vom avea evident ai+n = ai , i =
0, 1, . . .. T
inand cont de aceasta introducand cp = 0 n (4) si (5), se obtine (3).
(b): Idealul ({g(X)}) are dimensiunea k = grad(h(X)) (Teorema 9.3) si fiecare
element al acestui ideal (polinom sau vector - dupa cum este scris) va da (conform
cu (a)) o solutie a relatiei de recurenta liniara (3). Dar spatiul solutiilor relatiei (3)
are dimensiunea cel mult k. Deci idealul ({g(X)} va da toate solutiile relatiei de
recurenta liniara (3). Mai trebuie aratat ca perioada acestor solutii este chiar n.
Din cele de pana acum a rezultat ca perioada este cel mult n. Vom arata ca
solutia corespunzatoare clasei de resturi {g(X)} are perioada n.
Sa presupunem prin absurd ca solutia corespunzatoare lui {g(X)} are perioada
m < n. Dar n este divizibil cu m si deci coeficientii polinomului g(X) - considerat
n
blocuri care
ca fiind de grad n 1 (prin completare cu coeficienti nuli) formeaza
m
se repeta.
Deci g(X) = q(X)(1 + X m + x2m + . . . + X nm ) unde q(X) este un polinom de
Xn 1
gradul m 1. Relatia se poate scrie si g(X) = q(X) m
.
X 1
Vom avea acum (X n 1)(X m 1) = g(X)h(X)(X m 1) = q(X)h(X)(X n 1)
adica X m 1 = q(X)h(X), ceea ce contrazice definitia numarului n (minim).
Deci m = n.
2
Exemplul 9.1 Sa consider
am polinomul h(X) = 1+X +X 2 +X 4 Z2 [X]. Relatia
de recurent
a liniara asociat
a este
ai+4 = ai+2 + ai+1 + ai , i 0.
Circuitul liniar corespunz
ator are forma
6

-+

6
s

-+

6
s

Cel mai mic n pentru care X n 1 se divide cu h(X) este n = 7. Cum g(X) =
X7 1
= X 3 + X + 1, rezult
a ca circuitul va genera cuvintele idealului ({g(X)}).
h(X)
Fiecare din ele este caracterizat de cele patru valori binare initiale din elementele
de nmagazinare. Vor fi deci 24 = 16 cuvinte de lungime 7. Ele corespund tuturor
polinoamelor de grad maxim 6 din Z2 [X], care se divid cu g(X).
De exemplu, pentru valorile initiale (1, 0, 1, 1), functionarea circuitului timp de
sapte tacti este:

9.2. DEFINIREA CODURILOR


Iesire

1
0
1
1
0
0
0

CICLICE
1
0
0
1
1
1
1
0
0
0
0
0
0
1
1
0

101
1
1
0
0
0
1
0
1

1
0
0
0
1
0
1
1

elementele de nmagazinare se reg


In
asesc valorile initiale, iar la iesire s-a obtinut
6
4
3
polinomul f (X) = X + X + X = X 3 g(X).
Exemplul 9.2 Circuitul liniar corespunz
ator polinomului
h(X) = 1 + X 3 + X 5 + X 6 +
X 8 Z2 [X] este

-+
-+
-+

6
r

6
r

6
r

El da solutiile relatiei de recurent


a liniara ai + ai+3 + ai+5 + ai+6 + ai+8 = 0,
X 255 1
care formeaz
a idealul generat de polinomul g(X) =
ideal compus din
h(X)
28 = 256 cuvinte de lungime 255.

9.2

Definirea codurilor ciclice

Fie n 2 un numar natural. Sa notam cu An algebra polinoamelor din Zq [X],


modulo X n 1. Dupa cum s-a convenit, identificam cuvantul cuvantul a0 a1 . . . an1
cu vectorul (a0 , a1 , . . . , an1 ) si cu polinomul a(X) = a0 + a1 X + . . . + an1 X n1 .
In cadrul dualismului vector - polinom vom face o deosebire: anularea produsului
a doua polinoame nu nseamna ortogonalitatea vectorilor corespunzatori. Pentru
aceasta situatie se foloseste urmatoarea propozitie:
Propozitia 9.1 Produsul a doua polinoame este zero daca si numai daca toate
produsele scalare dintre vectorul unui polinom si permut
arile ciclice ale vectorilor
celuilalt polinom sunt zero.
Demonstratie: Fie a(X), b(X) Zq [X], a(X) =

n1
X
i=0

ai X , b(X) =

n1
X

bi X i .

i=0

Atunci {c(X)} = {a(X)}{b(X)} = {c0 + c1 X + . . . + cn1 X n1 } unde


cj =

j
X
i=0

ai bji +

n1
X

ai bj+ni = (a0 a1 . . . an1 ) (bj bj1 . . . b0 bn1 bn2 . . . bj+1 )T

i=j+1

si Propozitia rezulta din faptul ca cj = 0 j.

Definitia 9.2 Un subspatiu liniar Vn An se numeste ciclic daca


(a0 , a1 , . . . , an1 ) Vn

(an1 , a0 , . . . , an2 ) Vn .

Teorema 9.6 Un subspatiu liniar Vn An este ciclic daca si numai daca este ideal.

102

PRELEGEREA 9. CODURI CICLICE

Demonstratie: Inmultirea cu clasa de resturi {X} nseamna de fapt permutarea


ciclica a componentelor cu o unitate spre dreapta, pentru ca:
{X}{a0 + a1 X + . . . + an1 X n1 } = {an1 + a0 X + . . . + an2 X n1 }
=: Daca Vn An este ideal, atunci pentru orice v Vn avem v0 = {X}v Vn
(s-a notat tot cu v clasa de resturi modulo X n 1 corespunzatoare polinomului ai
carui coeficienti sunt componentele vectorului v). Deci Vn este ciclic.
=: Presupunem ca subspatiul liniar Vn An este ciclic si fie v Vn . Atunci,
din {X}v Vn rezulta {X j }v Vn , j = 1, . . . , n 1. Deci
{c0 + c1 X + . . . + cn1 X n1 }v Vn , adica Vn este ideal n An .
2
Definitia 9.3 Se numeste cod ciclic un ideal din An .
Codurile ciclice au fost introduse de Prange (1957), care a evidentiat bogatia de
informatie rezultata din structura lor algebrica.

9.3

Generarea codurilor ciclice

Pentru a construi un cod ciclic se foloseste structura idealelor n algebra modulo


X n 1. Fie I un ideal n An si g(X) polinomul normat de grad minim cu {g(X)} I.
Atunci (Teorema 9.1) {f (X)} I daca si numai daca g(X)|f (X).
De asemenea, g(X)|X n 1. Oricarui divizor al lui X n 1 i corespunde un ideal
n An , generat de el.
Pentru a da un cod ciclic este suficient sa dam generatorul sau g(X), divizor al
lui X n 1. Fie g(X) = g0 + g1 X + . . . + gnk X nk , (k < n). O baza a idealului
({g(X)}) se poate alege (Teorema 9.3)
{g(X)}, {Xg(X)}, . . . , {X k1 g(X)}.
Matricea generatoare
corespunzatoare codului ciclic va fi

g0 g1 . . .
gnk
0 0 ...

0
g
.
.
.
g
g
0 ...

0
nk1
nk
Gn,k =
.

..

0
0

0 0 ...
0
g0 g1 . . . gnk
Rezulta ca un cod ciclic poate fi organizat ca un (n, k) - cod liniar, unde n este
Xn 1
.
gradul polinomului X n 1 iar k este gradul polinomului h(X) =
g(X)
Exemplul 9.3 Codul cu repetitie este un cod ciclic al carui polinom generator este
g(X) = 1 + X + X 2 + . . . + X n1 .
am codul ciclic binar A de lungime 7, cu polinomul genExemplul 9.4 Sa consider
erator g(X) = 1 + X + X 3 (vezi si Exemplul 9.1). El are matricea generatoare

1 1 0 1 0 0 0
0 1 1 0 1 0 0

G=

.
0 0 1 1 0 1 0
0 0 0 1 1 0 1

9.3. GENERAREA CODURILOR CICLICE

103

Exemplul 9.5 Fie codul ciclic de lungime 6 peste Z3 , de polinom generator g(X) =
2 + X 2 . Matricea sa generatoare
este

2 0 1 0 0 0
0 2 0 1 0 0

.
G=
0 0 2 0 1 0
0 0 0 2 0 1
El este deci un (6, 4) - cod ternar.
Idealul generat de {g(X)} este spatiul nul al idealului ({h(X)}) unde
Xn 1
h(X) =
. Acest ideal ({h(X)}) se construieste luand ca baza polinoamele
g(X)
{h(X)}, {Xh(X)} . . . , {X nk1 h(X)}.
T
inand cont de Propozitia 9.1, pentru a construi matricea de control H a codului
ciclic ({g(X)}), luam ca linii ale matricii cele n k polinoame de sus, cu ordinea
componentelor inversata.
Exemplul 9.6 Sa relu
am codul din Exemplul 9.4. Deoarece X 7 1 = (1 + X)(1 +
X + X 3 )(1 + X 2 + X 3 ), pentru acest cod, avem
h(X) = (1 + X)(1 + X + X 3 ) = 1 + X 2 + X 3 + X 4 .
Matricea generatoare
a codului ({h(X)}) este
1 0 1 1 1 0 0

0 1 0 1 1 1 0 .
0 0 1 0 1 1 1
deci matricea de control
asociat
a codului din

Exemplul 9.4 va fi
0 0 1 1 1 0 1

H = 0 1 1 1 0 1 0 .
1 1 1 0 1 0 0
Deoarece coloanele sale sunt nenule si distincte doua cate doua, codul astfel construit este echivalent cu un cod Hamming (7, 4).
Pentru a obtine un cod ciclic sistematic, este convenabil sa alegem o alta baza pentru
idealul ({g(X)}). Sa observam ca pentru i = n k, n k + 1, . . . , n 1, putem scrie
X i = qi (X)g(X) + ri (X) cu grad(ri (X)) < grad(g(X)) = n k.
Deci
{X i ri (X)} ({g(X)}), i = n k, n k + 1, . . . , n 1.
Aceasta multime de vectori este liniar independenta si conduce la o matrice
generatoare de forma
G = [R I]
unde linia j din matricea R este vectorul coeficientilor lui rj (X) pentru j = n
k, . . . , n 1. Codul obtinut este deci sistematic, iar matricea sa de control se scrie
imediat:
H = [I RT ]
De remarcat ca matricea H T are pe linii componentele resturilor ri (X) pentru i =
0, 1, . . . , n 1.

104

PRELEGEREA 9. CODURI CICLICE

Exemplul 9.7 Sa luam din nou X 7 1 = g(X)h(X) peste Z2 , unde


g(X) = 1 + X 2 + X 3 , h(X) = 1 + X 2 + X 3 + X 4 (deci n = 7, k = 4). Avem
X0
X1
X2
X3
X4
X5
X6

=
0g(X)
=
0g(X)
=
0g(X)
=
g(X)
=
(1 + X)g(X)
=
(1 + X + X 2 )g(X)
= (X + X 2 + X 3 )g(X)

+ 1
+ X
+ X2
+ 1
+ X2
+ 1 + X + X2
+ 1 + X
+ X + X2

Baza corespunz
atoare idealului ({g(X)}) este
{1 + X 2 + X 3 }, {1 + X + X 2 + X 4 }, {1 + X + X 5 }, {X + X 2 + X 6 }
care conduce la matricea generatoare
a unui cod sistematic:

1 0 1 1 0 0 0
1 1 1 0 1 0 0

= [R4,3 I4 ].
G7,4 =

1 1 0 0 0 1 0
0 1 1 0 0 0 1
Matricea de control corespunz
atoare se scrie simplu:

1 0 0 1 1 1 0

T
H7,3 =
].
0 1 0 0 1 1 1 = [I3 R3,4
0 0 1 1 1 0 1

9.4

Generarea automat
a a codurilor ciclice

Codurile ciclice sunt coduri a caror implementare este mult facilitata de circuitele
liniare. Cu ajutorul acestora se poate realiza automat codificarea, calculul sindromului, corectarea si detectarea erorilor.
In constructia practica vom distinge doua cazuri:

9.4.1

Circuit cu k elemente de nmagazinare

Este o metoda de generare a codurilor ciclice, avantajoasa daca sunt mai putine
simboluri de informatie decat de control: k < n k.
Xn 1
Fie codul ciclic ({g(X)}) An si h(X) =
= h0 + h1 X + . . . + hk X k cu
g(X)
h0 6= 0, hk = 1. Conform Teoremei 9.5, idealul ({g(X)}) este generat de circuitul
liniar care construieste secvential solutiile relatiei de recurenta liniara
k
X

hj ai+j = 0,

i = 0, 1, . . .

j=0

Mesajul de informatie care trebuie codificat - continand k simboluri pe fiecare bloc


- se introduce la momentul initial n elementele de nmagazinare ale circuitului,
sub forma de conditii initiale. Lasand circuitul sa functioneze, obtinem dupa n
momente cuvantul - cod corespunzator, apartinand idealului ({g(X)}) si avand pe
primele k pozitii elementele de informatie.

A CODURILOR CICLICE
9.4. GENERAREA AUTOMATA

105

Exemplul 9.8 Circuitul liniar construit n Exemplul 9.1 este un circuit de codificare
pentru codul generat de polinomul g(X) = 1 + X + X 3 . Exemplul descrie si un mod
de functionare pentru cuvantul de informatie 1011.
Daca s-ar lua drept polinom generator 1 + X 2 + X 3 + X 4 , idealul generat de el
este dat de circuitul liniar
6

deoarece h(X) =

9.4.2

- +

s6

X7 1
= 1 + X 2 + X 3.
2
3
4
1+X +X +X

Circuit cu n k elemente de nmagazinare

Este o strategie avantajos de utilizat n cazul n k < k.


Daca interpretam mesajul de informatie ca un polinom de gradul k 1, atunci
codificarea se poate face utilizand un circuit de nmultire cu polinomul generator
g(X) (vezi Prelegerea anterioara). La decodificare se recapata mesajul initial (daca
nu au aparut erori) folosind un circuit de mpartire cu g(X).
Exemplul 9.9 Codul ciclic de polinom generator g(X) = 1 + X + X 3 poate codifica
mesajele de informatie folosind circuitul liniar:
6
-

u3 u2 u1 u0

- +

6
s-

- +
-6

Astfel, mesajul de informatie u = 1001 se codific


a n v = 1100101, conform
calculelor:
v(X) = u(X)g(X) = (1 + X 3 )(1 + X + X 3 ) = 1 + X + X 4 + X 6
Pentru decodificare se foloseste circuitul

v(X) -
+ -

s
?

-+

- u(X)
6

Dezavantajul unei asemenea metode l constituie faptul ca, nefiind un cod sistematic, prin codificare pozitiile de informatie se pierd. Pentru a obtine un cod
sistematic, procedam n felul urmator: mesajul de informatie este considerat un
polinom u0 (X) de gradul n 1 avand pozitiile de informatie drept coeficientii lui
X nk , . . . , X n1 , restul coeficientilor fiind nuli. Atunci avem u0 (X) = q(X)g(X) +
r(X) cu grad(r(X)) < grad(g(X)) = n k de unde
{u0 (X) r(X)} ({g(X)}).
{u0 (X) r(X)} reprezinta un cuvant - cod n care coeficientii lui X nk , . . . , X n1
sunt pozitiile de informatie nealterate, iar coeficientii lui r(X) cu semnul schimbat
(deci coeficientii lui X 0 , X 1 , . . . , X nk1 ) sunt caracterele de control.
Circuitul care realizeaza aceasta codificare este urmatorul:

106

PRELEGEREA 9. CODURI CICLICE


i
P
PP

s
s
P
... s
#
#
#
#
#
?
?
?
?
6
g0

g1

gnk1

g2

1
gnk

"!
"!"! "!"!
?
?
?

6
?
-+ - +- ... - + r +

3
-
1 6

s
- Canal
u(X)

El functioneaza astfel:
Initial cele n k elemente de nmagazinare contin 0, ntrerupatorul de iesire
este decuplat iar cel de feedback - cuplat.
Se introduc cele k elemente ale mesajului de informatie atat n circuit cat si
n canalul de comunicatie. Dupa k momente, n elementele de nmagazinare
avem coeficientii restului r(X).
Se decupleaza feedbackul si se cupleaza circuitul la canalul de comunicatie.
Coeficientii restului - cu semn schimbat - se transmit n canal imediat dupa
pozitiile de informatie.
Deoarece provine din circuitul de mpartire cu g(X), acelasi circuit poate fi folosit
si pentru detectarea erorilor la receptie. Pentru aceasta, dupa decuplarea ntrerupatorului de iesire si cuplarea celui de feedback, se introduce n circuit cuvantul
receptionat. Daca n momentul n restul nu este nul (cel putin un element de
nmagazinare contine un element nenul) nseamna ca a aparut cel putin o eroare
n transmisie.
Exemplul 9.10 Codul de lungime 7 generat de g(X) = 1 + X 2 + X 3 , poate fi
construit folosind circuitul liniar:

?
-

r
?
- +j
-

u3 u2 u1 u0

9.5

Z
}
Z

6
r +j
>
? -
6
r
- Canal

Exercitii

9.1 S
a se determine toate codurile ciclice de lungime 5
(a) : peste Z2 ;
(b) : peste Z3 .
9.2 Construiti o baz
a pentru cel mai mic cod ciclic de lungime n care contine
cuv
antul v:
(a) v = 1101000, n = 7;
(b) v = 010101, n = 6;
(c) v = 11011000, n = 8.
9.3 Pentru fiecare din cuvintele de mai jos gasiti polinomul generator al celui mai
mic cod ciclic care contine cuvantul:

9.5. EXERCIT
II

107

010010
001000101110000

01100110
000010010000000

0101100
010111010000000

9.4 S
a se afle polinomul generator al codului ciclic C stiind o baz
a S a sa:
S = {010, 011, 111};
S = {1010, 0101, 1111};
S = {0101, 1010, 1100};
S = {1000, 0100, 0010, 0001};
S = {11000, 01111, 11110, 01010}.

9.5 Intr-o
codificare sistematica, codificati mesajul de informatie 1101 ntr-un cuv
ant - cod al unui cod binar ciclic de lungime 7 cu polinomul generator g(X) =
1 + X 2 + X 3.
9.6 Pentru codul definit mai sus codificati mesajele de informatie date de polinoamele: 1 + X 2 , X, X + X 2 + X 3 .
Fiind date cuvintele - cod X 2 + X 4 + X 5 , 1 + X + X 2 + X 4 , X 2 + X 3 + X 4 + X 6 ,
g
asiti mesajele de informatie corepunz
atoare.
9.7 Construiti circuite liniare pentru codificare si decodificare ale codului ciclic binar de lungime 7 generat de polinomul g(X) = (1 + X 2 + X 3 )(1 + X).
9.8 Care este lungimea minima a unui cod ciclic binar de polinom generator
g(X) = 1 + X 2 + X 3 + X 4 ?
Construiti circuite liniare pentru codificarea si decodificarea sa.
9.9 Construiti un circuit liniar pentru codificarea (15, 11) - codului Hamming binar.
9.10 Construiti matricea de control a codului ciclic binar de lungime n si polinom
generator g(X):
n = 6, g(X) = 1 + X 2 ;
n = 8, g(X) = 1 + X 2 ;
n = 9, g(X) = 1 + X 3 + X 6 ;
n = 15, g(X) = 1 + X + X 4 (genereaz
a codul Hamming);
5
6
n = 23, g(X) = 1 + X + X + X + X 7 + X 9 + X 11 (genereaz
a codul Golay);
n = 15, g(X) = 1 + X 4 + X 6 + X 7 + X 8 .
9.11 Sunt ciclice codurile liniare binare definite de matricile generatoare definite
mai jos ?

1
1
1
0

0
1
1
0

1
0
0
1

1
1
0
0

1
0
1
1

0
0
0
1

0
0
1
1

1
0
0
0

1
1
0
0

1
1
1
0

1
1
1
1

0
1
1
1

0
0
1
1

0
0
0
1

atati ca daca polinomul generator al unui cod binar se divide cu polinomul


9.12 Ar
1 + X, atunci toate cuvintele sale au pondere par
a.
Reciproca este adevarat
a?

108

PRELEGEREA 9. CODURI CICLICE

9.13 Dati o conditie necesar


a si suficienta pentru polinomul generator al unui cod
ciclic de lungime impar
a pentru ca 11 . . . 1 s
a fie cuvant - cod.
9.14 Ar
atati ca daca g(X) genereaz
a un (n, k) - cod ciclic, atunci g(X i ) genereaz
a
un (in, kn) - cod ciclic.
Descrieti codurile pentru g(X) = 1 + X si g(X) = 1 + X + X 3 cu n = 7.
9.15 Ar
atati ca intersectia a doua coduri ciclice de aceeasi lungime este tot un cod
ciclic.
Care este polinomul sau generator ?

Prelegerea 10
Decodificarea codurilor ciclice
Dupa cum se stie de la codurile liniare, o caracterizare importanta a tipurilor de
erori care pot apare n transmisia mesajelor este data de sindrom. In cazul codurilor
ciclice este convenabil sa lucram cu un sindrom polinomial.
Definitia 10.1 Fie A un cod ciclic de lungime n cu polinomul generator g(X). Se
numeste sindrom polinomial s(X) al cuvantului a de lungime n, restul mp
artirii
polinomului corespunz
ator a(X) la g(X).
Deci, daca se transmite cuvantul - cod q(X)g(X) si se primeste a(X), sindromul va
fi
e(X) = a(X) q(X)g(X), grad(e(X) < grad(g(X)).
Observatii:
Deoarece a(X) e(X) este divizibil cu g(X), rezulta ca resturile mpartirii lui
a(X) si e(X) la g(X) coincid. Deci se poate vorbi despre tipul de eroare e.
Similar cu rationamentul de la coduri liniare, sindromurile vor fi toate polinoamele din Zq [X] de grad < n k; pentru fiecare sindrom s(X) putem alege
o eroare - tip e(X) de pondere minima care are acel sindrom.
Structura algebrica a codurilor ciclice permite constructia de metode de decodificare
(cu corectarea posibilelor erori aferente) mai eficiente decat algoritmii similari de la
codurile liniare.
Vom ncepe cu prezentarea unui exemplu.
Exemplul 10.1 Fie A codul Hamming de lungime 7, care are polinomul generator
g(X) = 1 + X + X 3 (Prelegerea 9, Exemplele 9.4 si 9.6).
Eroare - tip
0
1
X
X2
X3
X4
X5
X6

Sindrom
0
1
X
X2
1+X
X + X2
1 + X + X2
1 + X2
109

110

PRELEGEREA 10. DECODIFICAREA CODURILOR CICLICE

Sindromul cuvantului receptionat a = 1011001 este restul mp


artirii lui X 6 + X 3 +
2
3
X + 1 la X + X + 1, adica s(X) = X + 1. Se stie ca orice cod Hamming corecteaz
a
o eroare, deci va fi util sa avem un tabel cu sindromurile tuturor erorilor - tip
e(X) = X i (0 i 6). Pentru ca X + 1 este sindromul lui e(X) = X 3 , tragem
concluzia ca a fost perturbat al treilea bit si vom decodifica
a(X) e(X) = 1011001 0001000 = 1010001.
O dificultate n aceasta metoda de decodificare bazata pe sindrom consta n necesitatea de a lista toate erorile - tip corespunzatoare sindromurilor si de a le parcurge la
receptia fiecarui cuvant. O simplificare este nsa propusa de Meggitt (1960), bazata
pe structura ciclica a codurilor. Vom face corectia numai pentru ultimul caracter
(de grad maxim) al cuvantului a receptionat. Dupa aceea se efectueaza o permutare
ciclica si se studiaza din nou ultimul caracter. In acest fel, dupa n permutari ciclice,
toate pozitiile au fost corectate.
Metoda prezinta doua avantaje majore:
1. Se foloseste o lista a erorilor - tip numai pentru sindromurile de grad n 1.
(Astfel, n Exemplul 10.1 numai un sindrom are gradul 6).
2. Calculul sindromului se efectueaza o singura data la nceput folosind circuitul liniar de mpartire cu g(X). Dupa ce a functionat n momente, n elementele de nmagazinare se gaseste sindromul. Dupa aceea se neglijeaza iesirea
si se lasa sa functioneze circuitul. La fiecare pas (Prelegerea 8, Figura 8.4) sindromul se nmulteste cu X, avand ca efect permutarea sa ciclica cu o pozitie.

Propozitia 10.1 Dac


a un cuvant a = (a0 , a1 , . . . , an1 ) are sindromul s(X), atunci
permutarea sa ciclica are sindromul s0 (X), care este restul mp
artirii lui Xs(X) la
polinomul generator g(X).
Demonstratie: Sindromul s(X) este dat de identitatea mpartirii
a(X) = q(X)g(X) + s(X)
unde q(X) este catul mpartirii lui a(X) la g(X). Deoarece se lucreaza n algebra polinoamelor modulo X n 1, permutarea ciclica a lui {a(X)} este {a0 (X)} =
{Xa(X)}, construit astfel:
a0 (X) = Xa(X) an1 X n + an1 = Xa(X) an1 (X n 1) =
= Xa(X) an1 g(X)h(X) = Xq(X)g(X) + Xs(X) an1 g(X)h(X) =
= Xs(X) + g(X)[Xq(X) an1 h(X)].
Rezulta de aici ca resturile mpartirii lui a0 (X) si Xs(X) la polinomul generator
g(X) sunt aceleasi.
2
Se poate da acum

111
Algoritmul de decodificare Meggitt pntru (n, k) - codurile ciclice
binare:
1. Se listeaza toate sindromurile reprezentate prin polinoame de grad
n k 1;
2. Cuvantul receptionat a este introdus n circuitul liniar de mpartire cu
g(X), care va functiona n tacti;
3. Daca sindromul rezultat este n lista, se modifica bitul cel mai din dreapta
al cuvantului primit;
4. Simultan se permuta ciclic cuvantul primit si si se lasa sa functioneze un
tact circuitul liniar (neglijand iesirea), dupa care se reia Pasul (3).
Se repeta acest procedeu de n 1 ori.
Exemplul 10.2 Relu
and codul Hamming din Exemplul 10.1, algoritmul va lucra
astfel:
- Singurul sindrom din list
a este 1 + X 2 .
- Daca se receptioneaz
a de exemplu a = 1011001, el se introduce n circuitul
liniar

1011001

?
- +j
-

?
- +j
-

Dup
a 7 tacti, n elementele de nmagazinare se obtine sindromul 110.
- 110 nu este pe lista, deci a6 a fost corect.
- Se permut
a circular a n 1101100 si se lasa circuitul sa functioneze un tact;
elementele de nmagazinare vor contine 011.
- Nici acest sindrom nu este pe lista, deci a5 a fost corect, etc.
Pasii de lucru ai algoritmului sunt reprezentati n tabloul:
Pas Bit Sindrom
7
a6
110
8
a5
011
9
a4
111
10 a3
101
11 a2
100
12 a1
010
13 a0
001
Deci singurul bit corectat (unde se transform
a 1 n 0) este a3 .
Exemplul 10.3 Sa consider
am codul ciclic binar generat de polinomul g(X) = 1 +
X 4 + X 6 + X 7 + X 8 . El este un (15, 7) - cod de distant
a d = 5 (dup
a cum vom
vedea mai tarziu) deci poate corecta 2 erori. Lista complet
a a sindromurilor (deci a
2
1
0
tuturor erorilor - tip de pondere 0, 1, 2) are C15 +C15 +C15 = 121 elemente. Folosind
algoritmul Meggitt, numarul lor se reduce la 15, anume

112

PRELEGEREA 10. DECODIFICAREA CODURILOR CICLICE

Tip eroare
Sindrom
14
7
X
X + X6 + X5 + X3
1 + X 14
X7 + X6 + X5 + X3 + 1
14
X +X
X7 + X6 + X5 + X
X 2 + X 14
X7 + X6 + X5 + X3 + X2
3
14
X +X
X7 + X6 + X5
X 4 + X 14
X7 + X6 + X5 + X4 + X3
X 5 + X 14
X7 + X6 + X3
6
14
X +X
X7 + X5 + X3
X 7 + X 14
X6 + X5 + X3
8
14
5
X +X
X + X4 + X3 + 1
X 9 + X 14
X7 + X4 + X3 + X + 1
X 10 + X 14
X3 + X2 + X
11
14
7
6
5
X +X
X + X + X + X4 + X2 + X
X 12 + X 14
X7 + X6 + X4 + X
13
14
X +X
X7 + X4 + X3 + X2
Deci, la primirea unui cuvant a de lungime 15, vom calcula sindromul si - daca
acesta se afla n tabelul de sus - vom modifica bitul a14 . Apoi se face o permutare
ciclic
a si se corecteaz
a a13 , s.a.m.d.
De remarcat ca n Exemplul 10.3 decodificarea nu este completa: algoritmul Meggitt
corecteaza n total 121 erori - tip. Privit nsa ca un cod liniar tabela de decodificare
va avea 215 /27 = 256 linii. Deci cu algoritmul Meggitt se vor corecta toate erorile
simple sau duble ignorand complet posibilitatea altor tipuri de erori.
Vom ncerca n continuare sa mbunatatim aceasta situatie.

10.1

Corectarea pachetelor de erori

Fie A An un (n, k) - cod ciclic peste Zq capabil sa corecteze t erori.


Definitia 10.2 Pentru un polinom e(X) = X s e0 (X) Zq [X] cu e0 (0) = 1, spunem
c
a lungimea pachet a lui e este 1 + grad(e0 (X)).
Cuv
antul e Zqn este un pachet - tip de lungime j daca gradul minim al
polinoamelor {X s e(X)} este j 1.
Daca se trimite un cuvant v si se receptioneaza a, spunem ca erorile au afectat
j pozitii daca eroarea - tip e = a v este un pachet - tip de lungime j.
Exemplul 10.4 Fie n = 7 si e = 0101100. Atunci e(X) = X + X 3 + X 4 =
X(1 + X 2 + X 3 ). Efectu
and toate permut
arile ciclice, se obtine ca toate au grad mai
6
mare dec
at 3, nafar
a de {X e(X)} = {1 + X 2 + X 3 }, tot de gradul 3. Deci e este
un pachet - tip de lungime 4.
Daca se ia e = 1000100, 1 + X 4 are gradul 4, dar permutarea ciclica {X 3 (1 +
X 4 )} = {1 + X 3 } are gradul 3, deci si acesta este un pachet - tip de lungime 4.

10.2. DETECTAREA PACHETELOR DE ERORI

113

Reamintim ca la codurile liniare se construia un tablou standard n care pe fiecare


linie se aflau toate cuvintele cu acelasi sindrom. Codul era corector de t erori daca
toate cuvintele din Zqn de pondere cel mult t erau pe linii diferite; acestea constituiau
reprezentantii sindromurilor si apareau pe prima coloana, fiind considerate erori tip pentru fiecare linie.
Astfel de tabele se pot construi si pentru codurile ciclice; aici se iau ca reprezentanti n fiecare linie, pachetele de erori de lungime minima. In acest fel, un cod
liniar corector de t erori (independente) este corector de pachete de j erori daca
toate cuvintele de lungime - pachet cel mult j sunt reprezentanti.
Lema 10.1 Dac
a un cod A este corector de t erori independente si corector de
pachete de j erori, atunci t j.
Demonstratie: Exercitiu.

Definitia 10.3 Un (n, k) - cod ciclic corecteaz


a pachetele de j erori daca orice
pachet - tip de lungime cel mult j este un sindrom.
Exemplul 10.5 Sa consider
am toate pachetele - tip nenule de lungime cel mult 3
15
n Z2 . Fiecare astfel de cuvant este de forma
{e(X)} = {X s e0 (X)} cu 0 s 14 si e0 (X) {1, 1 + X, 1 + X 2 , 1 + X + X 2 }.
total sunt 15 4 = 60 astfel de pachete de erori.
In
Exemplul 10.6 Fie g(X) = 1 + X + X 2 + X 3 + X 6 polinomul generator al unui
(15, 9) - cod ciclic binar. El nu este un cod corector de 3 erori independente pentru
c
a sunt 576 tipuri de erori de pondere cel mult 3 si numai 215 /29 = 64 sindromuri.

In schimb sunt numai 61 pachete - tip de lungime maxim 3 (Exemplul 10.5, la care
se adauga pachetul nul), deci acest cod poate corecta pachetele de 3 erori. Faptul ca
este un cod ciclic corector de pachete de 3 erori rezult
a din calculul sindromurilor
s
polinoamelor {X e0 (X)} unde 0 s 14 si e0 (X) {1, 1 + X, 1 + X 2 , 1 + X + X 2 }.

10.2

Detectarea pachetelor de erori

Teorema 10.1 Un (n, k) - cod ciclic detecteaz


a orice pachet de maxim n k erori.
Demonstratie: Daca {e(X)} este o eroare - tip de lungime cel mult n k, atunci
e(X) = X s e0 (X) cu grad(e0 (X)) < n k. Fie g(X) polinomul generator al codului,
cu grad(g(X)) = n k.
Stim ca {e(X)} este cuvant - cod g(X)|e(X).
Cum g(X)|X n 1, el va fi prim cu X s ; deci {e(X)} este n cod daca si numai
daca g(X)|e0 (X), absurd deoarece grad(e0 (X)) < n k = grad(g(X)).
2
Teorema 10.2 Proportia pachetelor - tip de j > n k erori pe care nu le poate
detecta un (n, k) - cod ciclic este
q (nk1)
q1
(nk)
q

dac
a j =nk+1
dac
a j > n k + 1.

114

PRELEGEREA 10. DECODIFICAREA CODURILOR CICLICE

Demonstratie: Fie {e(X)} = {X s e0 (X)} unde grad(e0 (X)) = j 1. Sa numaram


cate asemenea pachete - tip de erori sunt posibile. Ca prim si ultim coeficient al
lui e0 (X) poate fi orice element din Zq \ {0} (n numar de q 1), iar coeficientii
intermediari pot fi orice elemente din Zq (n numar de q). Deci sunt (q 1)2 q j2
pachete - tip de eroare care ncep si se termina n aceeasi pozitie.
Un pachet - tip de eroare {e(X)} nu este detectat de un (n, k) - cod ciclic
daca si numai daca {e(X)} este cuvant - cod, adica e0 (X) = g(X)h(X), unde
grad(h(X)) = grad(e0 (X)) grad(g(X)) = j 1 (n k). Deci polinomul h(X)
are j n + k coeficienti. Apar doua situatii:
1. grad(h(X)) = 0, adica j = n k + 1. Atunci h(X) se reduce la o constanta
si exista q 1 asemenea polinoame h(X). Deci, raportul dintre numarul pachetelor - tip de lungime j nedetectabile si numarul total al pachetelor - tip
de lungime j care pot fi localizate este
q (nk1)
q1
=
.
(q 1)2 q j2
q1
2. Daca grad(h(X)) > 0, adica j > nk+1, vom avea (q1)2 q jn+k2 polinoame
h(X) posibile (pachete - tip de lungime j) nedetectabile. Rezulta ca raportul
de sus este n acest caz
(q 1)q jn+k2
= q (nk) .
2
j2
(q 1) q
2
Exemplul 10.7 Codul ciclic definit n Exemplul 10.6 detecteaz
a orice pachet de
maxim 9 erori.
Dintre pachetele de 10 erori posibile care pot apare, doar 1/28 nu pot fi detectate,
iar dintre pachetele de 11 15 erori nu pot fi detectate 1/29 .

10.3

Corectarea pachetelor de erori

Algoritmul este o varianta a Algoritmului Meggitt.


Fie A = ({g(X)}) un (n, k) - cod ciclic corector de pachete - tip de j erori si
a Zqn un cuvant receptionat.
1. Se calculeaza sindromul {s(X)};
2. Pentru fiecare i 0 se calculeaza si (X) = X i s(X) mod g(X), pana se
ajunge la un p cu grad(sp (X)) < j 1.
Atunci eroarea - tip este {e(X)} = {X np sp (X)} si se genereaza cuvantul
a + e.

10.4. TRANSPUNERE

115

Exemplul 10.8 Polinomul g(X) = 1 + X + X 2 + X 3 + X 6 genereaz


a un (15, 9) cod ciclic corector de pachete - tip de 3 erori. Sa folosim algoritmul de sus pentru a
decodifica a = 111100100001010.
s(X) = 1 + X + X 2 + X 3 + X 6 + X 11 + X 13 (mod g(X)) = 1 + X 3 + X 4 + X 5 .
s1 (X) = Xs(X) (mod g(X)) = 1 = X 2 + X 3 + X 4 + X 5 ,
s2 (X) = X 2 s(X) = 1 + X 2 + X 4 + X 5 ,
s3 (X) = X 3 s(X) = 1 + X 2 + X 5 ,
s4 (X) = X 4 s(X) = 1 + X 2 .
S-a ajuns la grad(s4 (X)) = 2 < 3 1. Deci eroarea - tip este
{e(X)} = {X 154 s4 (X)} = X 11 + X 13 .
Cuv
antul - cod transmis a fost
v = a + e = 111100100001010 + 000000000001010 = 111100100000000.

10.4

Transpunere

O metoda eficienta de utilizare a capacitatilor de corectare a pachetelor - tip de erori


de catre codurile ciclice este utilizarea de transpuneri (interleaving).
In mod natural, mesajele de informatie m1 , m2 , . . . sunt codificate n cuvintele
- cod c1 , c2 , . . . si transmise prin canal n ordinea codificarii. Transmisia se poate
realiza nsa si dupa o rearanjare a caracterelor de informatie din mai multe cuvinte
- cod consecutive.
Formal, prin transpunere la adancimea s se ntelege scrierea a s cuvinte - cod
c1 , c2 , . . . , cs ca linii ale unei matrici

Cs,n

c11 c12 c13 . . . c1n

c21 c22 c23 . . . c2n


=
..

cs1 cs2 cs3 . . . csn


si transmiterea a n mesaje de lungime s, formate din coloanele matricii C:
c11 c21 . . . cs1 ,

c12 c22 . . . cs2 ,

...,

c1n c2n . . . csn

1 0 0 1 1 0

Exemplul 10.9 Sa consider


am codul generat de G = 0 1 0 1 0 1
0 0 1 0 1 1
si sase mesaje codificate c1 , c2 , . . . , c6 , unde
c1 = 100110 c2 = 010101 c3 = 111000
c4 = 010101 c5 = 100110 c6 = 111000
Deci - la nivel de caracter - secventa va arata:
100110 010101 111000 010101 100110 111000.
Printr-o transpunere la adancimea 3, forma mesajelor este:
101 011 001 110 100 010 011 101 001 110 010 100
iar cu o transpunere la ad
ancimea 6:
101011 011101 001001 110110 100010 010100.

116

PRELEGEREA 10. DECODIFICAREA CODURILOR CICLICE

Ce efect are o transpunere la adncimea s asupra capacitatii de corectie de pachete


- tip de erori ale codului ? Raspunsul este dat de
Teorema 10.3 Fie A un cod corector de pachete - tip de j erori. Daca A este
transpus la adancimea s, atunci toate pachetele de cel mult sj erori pot fi corectate,
n ipoteza ca fiecare cuvant - cod este afectat de maxim un pachet - tip de j erori.
Demonstratie: Daca primul caracter al cuvantului - cod c este al i - lea caracter
transmis, atunci celelalte caractere apar pe pozitiile i + s, i + 2s, . . . , i + (n 1)s.
Orice pachet de maxim sj erori va produce un pachet - tip de maxim j erori n c,
deci c va putea fi regasit la receptie (daca el nu a mai fost cumva afectat si de alte
pachete de erori).
2
Restrictia ca fiecare cuvant - cod sa fie afectat de cel mult un pachet de erori
impune conditia ca pachetele de erori sa fie separate de perioade n care transmisia
este corecta, perioade suficient de lungi pentru evitarea situatiei ca un bloc de s
cuvinte sa fie afectat de doua pachete distincte de erori. In acest fel, crescand s,
creste si lungimea pachetului de erori care poate fi corectat, dar creste si lungimea
perioadelor necesare de transmisie fara erori.
Exemplul 10.10 Codul din Exemplul 10.9 corecteaz
a o eroare. Folosind o transpunere la adancimea 3, el poate corecta toate pachetele - tip de cel mult 3 erori.
Un dezavantaj al transpunerii este acela ca nu se poate face transmisia pana nu au
fost codificate toate cele s cuvinte, fapt care nu va permite folosirea directa a circuitelor liniare. Pentru a evita acest neajuns se va folosi un s - cadru de transpunere
nt
arziat
a, care aranjeaza caracterele codificate, nu sub forma unei matrici C ci sub
forma de scara - ca n tabelul:
c1,1 c2,1 . . . cs+1,1 cs+2,1 . . . c2s+1,1 c2s+2,1 . . . c(n1)s+1,1 . . .
c1,2
c2,2
. . . cs+1,2 cs+2,2 . . . c(n2)s+1,2 . . .
c1,3
c2,3
. . . c(n3)s+1,3 . . .
..
.
c1,n

...

Deoarece transmisia se face pe coloane, spatiile libere trebuiesc marcate. Acest lucru
se realizeaza practic introducand pe aceste pozitii un caracter special 6 Zq .
Exemplul 10.11 S
a relu
am mesajul codificat c1 , c2 , . . . , c6 din Exemplul 10.9.
Un 1 - cadru de transpunere nt
arziat
a va fi
1

0
0

1
1
0

0
1
0
1

1
1
1
1
1

1 ...
0 1 ...
0 0 1 ...
0 1 1 0 ...
0 0 0 1 0 ...
0 1 0 1 0 0 ...

Scventa de caractere transmise este


1 00 110 0101 11111 100000 . . .
Dac
a se foloseste un 2 - cadru de transpunere nt
arziat
a, avem

10.4. TRANSPUNERE

1
0

0
1

117

1
1
0

1
1
0

...
0
1
1

1
0
1

...
0
0
1

1
1
0

...
1 0 ...
0 0 1 0 ...
0 1 0 1 0 0 ...

iar secventa de caractere transmise este:


1 0 10 01 110 110 . . .
Este usor de gasit o teorema analoga cu Teorema 10.3:
Teorema 10.4 Fie A un cod capabil sa corecteze pachetele - tip de j erori. Daca A
foloseste un s - cadru de transpunere n
arziat
a, atunci se poate corecta orice pachet
- tip de maxim j(sn + 1) erori, n ipoteza ca orice cuvant - cod este afectat de cel
mult un pachet - tip de j erori.
Demonstratie: Exercitiu.
Ca o alta facilitate, pentru codificarea unui mesaj se folosesc adesea doua coduri.
De exemplu, pentru codificarea muzicii pe compact - discuri se utilizeaza doua coduri
Reed - Solomon, iar NASA si Agentia Spatiala Europeana folosesc doua coduri
convolutionale (ambele vor fi definite mai tarziu).
Fie Ci (i = 1, 2) doua (ni , ki ) coduri liniare. Transpunerea ncrucisat
a a lui C1
cu C2 se realizeaza astfel:
1. Mesajele de informatie sunt codificate cu C1 iar cuvintele - cod rezultate
sunt transpuse la adancimea k2 .
2. Coloanele obtinute n acest proces de transpunere (care sunt de lungime
k2 ) - privite ca mesaje de informatie - sunt codificate de codul C2 .
3. Cuvintele - cod rezultate sunt transpuse la o adancime s fixata, sau cu
un s - cadru de transpunere ntarziata.
Avantajul principal al celei de-a doua codificari este urmatorul:
Fie d1 , d2 distantele celor doua coduri. C2 poate detecta d2 1 erori (nu ne punem
problema corectarii lor). Daca s-au detectat erori pentru un cuvant - cod din C2 ,
atunci toate caracterele acestui cuvant sunt marcate si tratate drept simboluri care
pot fi incorecte. Se considera apoi cuvintele - cod din C1 . Daca n1 d1 + 1 caractere
dintr-un cuvant - cod din C1 sunt corecte, atunci se pot determina unic celelalte
d1 1 caractere (deoarece este imposibil ca doua cuvinte - cod distincte din C1 sa
coincida pe n1 d1 + 1 pozitii, ele diferind pe minim d1 pozitii; afirmatia este bazata
si pe faptul ca pozitiile caracterelor corecte sunt cunoscute).
Deci, daca un cuvant - cod din C1 are cel mult d1 1 simboluri marcate si se stie
ca toate caracterele gresite sunt marcate, cuvintele - cod pot fi decodificate corect.

118

PRELEGEREA 10. DECODIFICAREA CODURILOR CICLICE

Cat de mare este un pachet de erori pe care l poate corecta aceasta schema ?
Sa presupunem ca C2 a fost transpus la adancimea s, si ca orice cuvant - cod (atat
din C1 cat si din C2 ) a fost afectat de cel mult un pachet de erori. Daca apare un
pachet de cel mult s(d2 1) erori, atunci el va afecta maxim d2 1 simboluri din
fiecare cuvant - cod din C2 . Deci aceste erori vor fi detectate si se vor marca toate
caracterele cuvintelor - cod implicate. Daca s d1 1, atunci orice cuvant - cod
din C1 are cel mult d1 1 simboluri marcate. In ipoteza ca nu exista decat maxim
un pachet de erori care l-a perturbat, caracterele marcate pot fi corectate.
Am aratat astfel:
Teorema 10.5 Fie o codificare care foloseste transpunerea ncrucisat
a a (n1 , k1 ) codului C1 cu (n2 , k2 ) - codul C1 , C2 fiind transpus la adancimea s (s d1 1).
Dac
a fiecare cuvant - cod este afectat de cel mult un pachet - tip de erori, atunci
toate pachetele - tip de erori de lungime maxim s(d2 1) pot fi corectate.
(d1 , d2 sunt distantele minime ale celor doua coduri).
Exemplul 10.12 Fie C1 si K2 codurile binare, definite respectiv de matricile generatoare

G1 =

1
0
0
0

0
1
0
0

0
0
1
0

0
0
0
1

1
1
1
0

1
1
0
1

1
0
1
1

0
1
1
1

1 0 0 1 1 0

G2 = 0 1 0 1 0 1
.
0 0 1 0 1 1

Deci, n1 = 8, k1 = 4, d1 = 4, n2 = 6, k2 = 3, d2 = 3.
S
a codific
am mesajele de informatie m1 = 1000, m2 = 1100, m3 = 1010
folosind o transpunere ncrucisat
a a lui C1 cu K2 , C2 fiind transpus la o adancime
s = 3 = d1 1.
Codificarea mesajelor de informtie cu codul C1 da:
c1 = m1 G1 = 10001110,

c2 = m2 G1 = 11000011,

c3 = m3 G1 = 10100101.

Transpunerea acestor cuvinte la adancimea k2 = 3 conduce la mesajul


111 010 001 000 100 101 110 011
Aceste 8 mesaje de informatie sunt codificate cu C2 n:
c01 = 111000, c02 = 010101, c03 = 001011, c04 = 000000,
c05 = 100110, c06 = 101101, c07 = 110011, c08 = 011110.
si apoi transpuse la adancimea s = 3 (c06 si c07 vor fi transpuse cu urmatorul
cuv
ant - cod c09 obtinut de urmatoarele trei mesaje de informatie m4 , m5 , m6 ).
Scventa de caractere transmis
a va ncepe cu
100 110 101 010 001 011 011 000 001 011 010 001 . . .
Conform Teoremei 10.5, folosind C2 pentru a detecta d2 1 = 2 erori, si apoi C1
pentru a corecta toate caracterele marcate, se pot corecta n ansamblu toate pachetele
de cel mult s(d2 1) = (d1 1)(d2 1) = 6 erori.

10.5. EXERCIT
II

119

De exemplu, sa presupunem ca primii 6 biti au fost transmisi incorect, deci s-a


primit 011 001 101 010 001 011 . . .. Eliminand efectul transpunerii la adancimea
s = 3, se ajunge la cuvintele
001000

100101

111011

(care comparate respectiv cu c01 , c02 , c03 au erori fiecare pe primele doua pozitii). Deoarece sindromurile sunt nenule, C2 va detecta erori n toate cele trei cuvinte, deci toti
cei 18 biti sunt marcati (i vom nlocui cu ).
Presupun
and ca nu mai sunt alte erori, dupa un procedeu similar se obtin cuvintele c04 , . . . , c08 , far
a caractere marcate.
Elimin
and acum efectul transpunerii la ad
ancimea k2 = 3, se obtin cuvintele
c1 = 01110,

c2 = 00011,

c3 = 100101.

Exist
a o modalitate unica de a ajunge la cuvinte - cod din C1 prin nlocuirea cu
caractere 0 sau 1.

10.5

Exercitii

10.1 Demonstrati Lema 10.1


10.2 Ar
atati ca daca un cod ciclic detecteaz
a o eroare - tip e, atunci detecteaz
a
toate erorile - tip obtinute prin permut
ari ciclice ale lui e.
10.3 Verificati ca pachetele ciclice - tip de erori de lungime 3 din Z215 au sindromuri
diferite pentru codul din Exemplul 10.6.
atati ca g(X) = 1+X 2 +X 4 +X 5 genereaz
a un (15, 10) - cod ciclic corector
10.4 Ar
de pachete de maxim 2 erori. Este acesta un cod corector de 2 erori independente ?
10.5 Ar
atati ca g(X) = 1 + X 3 + X 4 + X 5 + X 6 genereaz
a un (15, 9) - cod ciclic corector de pachete de maxim 3 erori. Este acesta un cod corector de 3 erori
independente ?
10.6 Ar
atati ca g(X) = 1 + X 4 + X 6 + X 7 + X 8 genereaz
a un (15, 7) - cod ciclic
corector de 2 erori independente si de pachete de 4 erori.
10.7 Fie codul din Exemplul 10.6. Sa se decodifice mesajele:
101101110001000,
001101100010101,
100110101010011
101101000010111,
000000111110000
10.8 Fie (15, 10) - codul ciclic binar generat de g(X) = 1 + X 2 + X 4 + X 5 .
C
ate erori au pachetele - tip pe care le poate corecta ?
Decodificati mesajele:
010101000010010,
011010010010100,
001101000000100
000100010100101,
000000011111001.

120

PRELEGEREA 10. DECODIFICAREA CODURILOR CICLICE

10.9 Fie codul generat de polinomul g(X) = 1 + X + X 2 + X 3 + X 6 . Codificati


mesajele de informatie m1 (X) = 1, m2 (X) = X 2 , m3 (X) = 1 + X,
m4 (X) = 1 + X 2 , m5 (X) = X 3 , m6 (X) = 1.
Determinati sirul de biti transmisi daca se foloseste o transpunere la adancimea
s unde
(a) s = 1
(b) s = 2
(c) s = 3.
10.10 Ce secvent
a de caractere este transmis
a daca se foloseste un 0 - cadru de
transpunere nt
arziat
a?
10.11 Demonstrati Teorema 10.4
10.12 Folosind codurile definite n Exemplul 10.12, sa se codifice urmatoarele mesaje de informatie prin transpunerea ncrucisat
a a lui C1 cu C2 :
(a) m1 = 0110, m2 = 1011, m3 = 1111, s = 2
(b) m1 = 0110, m2 = 1011, m3 = 1111, s = 3
(c) m1 = 0010, m2 = 1111, m3 = 1010, s = 3
(d) m1 = 1000, m2 = 0100, m3 = 0010, m4 = 0001, m5 = 0011,
m6 = 0100 s = 3
10.13 Folosind codurile din Exemplul 10.12 au fost obtinute prin transpunere
ncrucisat
a a lui C1 cu C2 la adancimea s = 3, urmatoarele secvente binare:
(a) 000001001110110001000111000111000111000000000000000000 . . .
(b) 100011001111101010011001111010100110100100011101000100 . . .
Aflati meajele de informatie m1 , m2 , m3 .
asiti un rezultat analog Teoremei 10.5 daca pentru C2 se foloseste s - cadrul
10.14 G
de transpunere nt
arziat
a n loc de s - transpunere.

Prelegerea 11
Alte definitii ale codurilor ciclice
Primele doua sectiuni ale acestei prelegeri vor trece n revista cateva notiuni algebrice
fundamentale n construirea codurilor ciclice.

11.1

Elemente primitive n extensii Galois

Definitia 11.1 Fie F un corp finit. Un element a F are ordin n (n 1) dac


a
n
k
a = 1 si a 6= 1, k, 0 < k < n. Vom scrie ord(a) = n.

corp finit:
Propozitia 11.1 Intr-un
- Orice element nenul are un ordin finit;
- Daca n = ord(a) atunci a, a2 , . . . , an sunt distincte;
- ak = 1 daca si numai daca ord(a)|k (ord(a) este divizor al lui k).
Demonstratie: Fie a F, a 6= 0. Cum F este finit, elementele a, a2 , a3 , . . . nu pot
fi toate distincte. Vom alege cel mai mic n pentru care i an+i = ai . Relatia se
poate simplifica (lucram ntr-un corp) cu ai si se obtine an = 1. Din constructie,
a, a2 , . . . , an sunt distincte, deci n este ordinul lui a.
Pentru k = ni avem ak = (an )i = 1i = 1. Reciproc, sa presupunem ak = 1.
Teorema mpartirii cu rest da k = qn + r, r < n. Avem 1 = ak = aqn ar = ar .
Cum r < n rezulta r = 0.
2
Definitia 11.2 Un element a F este primitiv daca toate puterile sale genereaz
a
F \ {0}.
Observatie: Daca F are r elemente, atunci un element este primitv daca si numai
daca are ordinul r 1.
Teorema 11.1 Orice corp finit are cel putin un element primitiv.
Demonstratie: Cum F este finit (card(F ) = r), se poate gasi un element a F de
ordin n maxim. Evident n r 1. Mai trebuie aratat ca n r 1.
Fie b F de ordin s. Sa-l descompunem pe s n factori primi: s = pi q j . . . (p, q, . . .
numere prime). La randul lui n = pt n0 unde n0 nu este divizibil cu p (iar t poate fi
eventual zero).
121

122

PRELEGEREA 11. ALTE DEFINIT


II ALE CODURILOR CICLICE
t

Sa consideram s0 = s/pi (deci s = pi s0 ) si fie c = ap bs F . Vrem sa aratam ca


c are ordinul m = pi n0 . Pentru aceasta, avem:
t
0
t 0 i
i 0 0
i
0
i
0
cm = ap m bs m = ap n p bp s n = (an )p (bs )n = 1p 1n = 1.
0
Mai ramane de aratat ca cm = 1 = m0 m. Este suficient sa verificam ca pi
si n0 sunt divizori ai lui m0 ; deoarece ei sunt primi intre ei, va rezulta ca produsul
m = pi n0 este de asemenea divizor al lui m0 .
0
0
i 0 0
0 0
0
0 0
0 0
Din calculul 1 = (cm )n = ap n m bs m = (an )m bs m = bs m rezulta (Propozitia
11.1) ca ordinul s = pi s0 al lui b divide s0 m0 ; deci pi |m0 .
In plus, din 1 = (cm0 )p0 = apt pi m0 bpi s0 m0 = apt pi m0 (bs )m0 = apt pi m0 rezulta ca ordinul
n = pt n0 al lui a divide pt pi m0 ; deci n0 |pi m0 .
Cum n este cel mai mare ordin ale elementelor din F , avem pi n0 pt n0 , deci
i t, adica pi divide n = pi n0 .
In mod similar, toti factorii lui s sunt divizori ai lui n, deci s|n.
Am aratat urmatoarea afirmatie:
b F = ord(b)|n
Deci b este p radacina a polinomului X n 1 = 0, de unde rezulta ca polinomul
n
X 1 = 0 are r 1 radacini, adica r 1 n.
2
Fie F un corp fixat si f (X) F [X] un polinom arbitrar. Spunem ca a F este
r
ad
acin
a a lui f daca f (a) = 0.
Se poate demonstra imediat afirmatia:
Propozitia 11.2 Dac
a un polinom f are rad
acinile distincte a1 , a2 , . . . , an atunci
el este divizibil cu polinomul (X a1 )(X a2 ) . . . (X an ).
Exemplul 11.1 Polinomul X 3 + 1 are o rad
acin
a 1 n Z2 . Deci X 3 + 1 se divide
cu X + 1:
X 3 + 1 = (X + 1)(X 2 + X + 1)
Aceasta este o factorizare complet
a; deoarece X 2 + X + 1 nu are rad
acini n Z2 ,
el nu poate fi descompus n produsul a doua polinoame de gradul 1. Acelasi polinom
X 3 + 1 are n Z3 pe 2 ca rad
acin
a tripla, deci aici putem scrie:
X 3 + 1 = (X + 1)3 .
Rezult
a ca factorizarea unui polinom depinde de corpul n care este definit.
Din Teorema 11.1 si Propozitia 11.2 rezulta ca daca a F este un element de
ordin n, atunci X n 1 se poate descompune n
X n 1 = (X a)(X a2 ) . . . (X an ).
Definitia 11.3 Un polinom f (X) F [X] de grad n este ireductibil daca nu se poate
descompune n produsul a doua polinoame din F [X] de grad mai mic dec
at n.
Observatii;
Orice polinom liniar este ireductibil. Pentru polinoame de grad cel putin 2,
Propozitia 11.2 afirma ca:
Un polinom ireductibil ntr-un corp nu are rad
acini n acel corp.
Este interesant ca reciproca nu este adevarata decat pentru polinoamele de
grad 2 si 3. Astfel, polinomul f (X) = (X 2 + X + 1)2 Z2 [X], desi nu are
radacini n Z2 , este reductibil.

11.2. POLINOAME MINIMALE

123

In R singurele polinoame ireductibile sunt de gradul 1 sau 2. Daca un polinom


are grad impar, el are sigur o radacina reala, iar daca este de grad par, atunci
are sau cel putin o radacina reala, sau cel putin doua radacini complexe de
forma a ib. In acest ultim caz, el se va divide cu (x a)2 + b2 , care este un
polinom din R[X] de gradul 2.
In corpul complex C, teorema fundamentala a algebrei asigura ca orice polinom
ireductibil are gradul 1.
Definitia 11.4 Caracteristica unui corp finit F este cel mai mic numar de termeni
ai sumei S = 1 + 1 + . . . + 1 cu proprietatea S = 0.
Propozitia 11.3 Caracteristica unui corp finit este numar prim.
Demonstratie: Sa consideram elementele ai = 1 + 1 + . . . + 1 de cate i termeni
fiecare. Deoarece nu pot fi o infinitate de valori distincte, fie p minim cu proprietatea
i, ai = ai+p . Rezulta ap = ai+p ai = 0. Deci F are caracteristica p.
Presupunem p = st cu 1 s < p. Evident 0 = ast = as +as +. . .+as (t termeni).
Deoarece s < p avem as 6= 0. Impartind relatia cu as se obtine 0 = 1+1+. . .+1 = at .
Deci t = p.
2
Corolarul 11.1 Orice corp de caracteristic
a p este o extensie a lui Zp .
Demonstratie: Exercitiu.
Corolarul 11.2 GF (q r ) este un corp de caracteristic
a q.
Demonstratie: Reamintim ca GF (q r ) contine toate polinoamele din Zq [X] de grad
cel mult r 1. In particular, polinoamele de grad 0 (constantele) formeaza un
subcorp izomorf cu Zq care are caracteristica q.
2

corp de caracteristic
a p avem (a + b)p = ap + bp
Propozitia 11.4 Intr-un
Demonstratie: Se foloseste binomul lui Newton, n care Cpk = 0, k, 0 < k < p. 2

11.2

Polinoame minimale

In cele ce urmeaza vom restrange studiul la cazul F = Zq , q numar prim.


Definitia 11.5 Fie un element dintr-o extensie a lui Zq . Se numeste polinom
minimal al lui polinomul normat g(X) Zq [X] de grad minim, cu g() = 0.
am extensia GF (23 ) generat
a de r
ad
acina a plinomuExemplul 11.2 Sa consider
3
3
lui 1+X +X . Deoarece este primitiv, avem GF (2 ) = {0, 1, , 2 , 3 , 4 , 5 , 6 }.
Polinoamele minimale ale fiec
arui element sunt date n tabelul:
Element
0
1
, 2 , 4
3 , 5 , 6

Polinom minimal
X
1+X
1 + X + X3
1 + X2 + X3

124

PRELEGEREA 11. ALTE DEFINIT


II ALE CODURILOR CICLICE

Propozitia 11.5 Un polinom minimal g(X) Zq [X] este ireductibil peste Zq .


Demonstratie: Daca ar exista descompunerea g(X) = u(X)v(X) cu u(X), v(X)
Zq [X], atunci vom avea u() = 0 sau v() = 0, ceea ce contrazice definitia polinomului minimal pentru .
2
Propozitia 11.6 Dac
a f (X) Zq [X] verific
a f () = 0 atunci g(X)|f (X).
Demonstratie: Conform identitatii mpartirii, avem
f (X) = q(X)g(X) + r(X) cu grad(r(X)) < grad(g(X)).
Cum f () = 0, g() = 0, va rezulta r() = 0, contradictie.
Singura posibilitate ramane r(X) 0, deci f (X) = q(X)g(X).

Din Propozitiile 11.5 si 11.6 rezulta ca un polinom normat peste Zq care admite
pe ca radacina este polinom minimal al lui . Acest polinom este unic.
Teorema 11.2 Fie GF (q k ). Atunci exista un polinom minimal al lui de grad
cel mult k.
Demonstratie: Dupa cum am vazut (Prelegerea 8), GF (q k ) are dimensiunea k. O
baza a lui este {1}, {X}, . . . , {X k1 }. Deci cele k + 1 elemente 1, , 2 , . . . , k
GF (q k ) sunt liniar dependente.
Rezulta ca exista un polinom de grad maxim k pentru care este radacina. 2
Teorema 11.3 Solutiile ecuatiei X q1 1 = 0 dau elementele nenule din Zq .
Demonstratie: Elementele nenule din Zq formeaza grup multiplicativ. Ordinul
fiecarui element divide ordinul grupului, care este q 1 (Teorema 11.1).
Fie Zq \ {0}; subgrupul ciclic generat de este 1, , 2 , . . . , t1 unde bt = 1
si t|q 1. Deci q1 = 1.
In plus, ecuatia X q1 1 = 0 are q 1 radacini.
2
Teorema 11.4 X m 1|X n 1

m|n.

Demonstratie: : Fie n = md. Cum Y 1 divide pe Y d 1, daca se ia Y = X m ,


vom avea X m 1|X md 1.
: Sa presupunem ca X m 1|X n 1 si fie n = md + s, (s < m). Avem
n
X 1 = X s (X md 1) + X s 1 = q(X)(X m 1) + r(X) cu grad(r(X)) = s < m.
Pentru a verifica ipoteza, trebuie ca s = 0, deci n = md.
2
Teorema 11.5 Fie f (X) Zq [X] si o rad
acin
a a sa (eventual dintr-o extensie
a lui Zq ). Atunci si q este rad
acin
a a lui f (X).
Demonstratie: Scriem f (X) = a0 + a1 X + . . . + an X n . Cum Zq este corp de caracteristica q, este adevarata relatia (a + b)q = aq + bq (Propozitia 11.4).
De asemenea (Teorema 11.3) a Zq \ {0} avem aq1 1 = 0, deci aq = a.
Atunci se poate scrie
(f (X))q = aq0 + aq1 X q + . . . + aqn (X n )q = a0 + a1 X q + . . . + an X nq = f (X q ).
In particular, f ( q ) = (f ())q = 0.
2

11.2. POLINOAME MINIMALE

125

Teorema 11.6 Orice polinom normat ireductibil peste Zq de grad m este un factor
m
al polinomului X q X.
Demonstratie: Daca g(X) = X, afirmatia este banala.
Sa presupunem ca g(X) 6= X si fie GF (q m ) o radacina nenula a sa, deci
m
g() = 0. Atunci (Teorema 11.3) satisface ecuatia X q 1 1 = 0, deci (Propozitia
m
11.6) X q 1 1 se divide cu polinomul minimal g(X).
2
m

Teorema 11.7 Orice factor ireductibil g(X) Zq [X] al lui X q X are gradul cel
mult m.
m

Demonstratie: Fie g(X)|X q X, ireductibil peste Zq , cu grad(g(X)) = k.


Vom considera algebra polinoamelor modulo g(X), n care luam = {X}. Se
stie (Prelegerea 8) ca g() = 0. Un element oarecare din aceasta algebra este de
forma
= a0 + a1 + . . . + ak1 k1 .
m

Atunci q = aq0 + aq1 q + . . . + aqk1 (k1 )q = a0 + a1 q + . . . + ak1 (q )k1 =


a0 + a1 + . . . + ak1 k1 =
deoarece GF (q m ) are tot caracteristica q ca si Zq , iar fiind o radacina a lui g(X),
m
m
m
este radacina si a lui X q X, deci q = , de unde rezulta jq = j j 0.
m
Am obtinut n final faptul ca este o solutie a ecuatiei X q X = 0. Sunt
posibile q k asemenea elemente distincte, iar cum ecuatia are q m radacini, rezulta
q k q m sau k m.
2
m

Teorema 11.8 Fie GF (q m ) de polinom minimal g(X), grad(g(X)) = k si


ord() = t. Atunci
(i) t|q k 1;
(ii) k este minim cu proprietatea (i).
k

Demonstratie: Stim (Teorema 11.6) ca g(X) este un factor al lui X q X; deci


k
q = , de unde rezulta t|q k 1.
p
Sa presupunem acum ca exista p < k cu t|q p 1. Atunci q 1 = 1, adica este
p
p
o radacina a ecuatiei X q X = 0, deci g(X) este un factor al polinomului X q X.
Conform Teoremei 11.7, rezulta k p, contradictie.
2
Teorema 11.9 Fie polinomul g(X) Zq [X], grad(g(X)) = m si GF (q m ) o
2
m1
r
ad
acin
a a sa. Atunci , q , q , . . . , q
sunt toate rad
acinile lui g(X).
2

Demonstratie: Deoarece g() = 0, avem conform Teoremei 11.5 ca q , q , . . . ,


m1
q
sunt si ele radacini ale lui g(X). De asemenea, conform Teoremei 11.6, este
m
m
radacina a lui X q X, adica q = . Mai ramane de aratat ca aceste radacini
j
i
sunt distincte. Presupunem ca exista 0 i < j < m cu q = q . Avem
m

= q = q

qmj

= q

qmj

= q

m+ij

m+ij

Deci este radacina a polinomului X q


= X si cu Teorema 11.7,
grad(g(X)) = m m + i j < m, contradictie.
Din Teorema 11.9 rezulta ca n extensia GF (q m )[X] se poate scrie
g(X) = (X )(X q ) . . . (X q

m1

).

126

PRELEGEREA 11. ALTE DEFINIT


II ALE CODURILOR CICLICE

Teorema 11.10 Fie g(X) un polinom normat ireductibil peste Zq , grad(g(X)) =


m, si o rad
acin
a a sa din GF (q m ). Atunci toate rad
acinile lui g(X) au acelasi
ordin.
j

Demonstratie: Fie p = ord(), p0 = ord( q ) care conform Teoremei 11.9 este


tot radacina a lui g(X). Avem:
j
j p
= ( p )q = 1 si deci p0 |p.
q
De asemenea,
p0

qm

p0

qj

qmj p0

qj

p0 qmj

=1

p|p0 .

S-a mai folosit Teorema 11.8, conform careia p divide q m 1 dar nu divide nici
un numar de forma q s 1 cu s < m.
Deci p = p0 .
2

11.3

Definirea codurilor ciclice prin r


ad
acini

O alta metoda de definire a unui cod ciclic consta n a da initial toate radacinile
(eventual ntr-o extensie a lui Zq ) cuvintelor - cod, considerate ca polinoame.
Definitia 11.6 Fie 1 , 2 , . . . , r elemente dintr-o extensie a lui Zq . Codul ciclic
A este format din toate elementele {f (X)} din algebra polinoamelor modulo X n 1
care admit pe i , 1 i r ca rad
acini simple.
De remarcat ca n aceasta definitie n este deocamdata nedeterminat.
Conform Definitiei 11.6, f (X) se va divide cu fiecare polinom minimal mi (X)
corespunzator radacinii i (1 i r). Deci polinomul generator al codului ciclic
este
g(X) = cmmmc {m1 (X), m2 (X), . . . , mr (X)} .
Propozitia 11.7 A = ({g(X)}).
Demonstratie: Este lasata ca exercitiu.
Deoarece polinomul generator g(X) divide pe X n 1, rezulta ca fiecare i este
radacina a lui X n 1. Deci ordinul ord(i ) al fiecarei radacini i (1 i r) va
divide pe n. O modalitate naturala de definire a lui n este
n = cmmmc {ord(1 ), ord(2 ), . . . , ord(r )}
Un caz particular important este acela n care toate radacinile 1 , 2 , . . . , r sunt
puteri ale unui anumit element, adica
i = ui ,

1 i r.

Fie p = ord(). Atunci polinomul minimal mi (X) al lui i va avea (Teorema 11.9)
2
toate radacinile printre elementele ui , qui , q ui , . . ..
Numarul factorilor lui g(X) si gradul fiecarui polinom minimal mi (X) se vor
determina atunci din ordinul p si din exponentii ui , qui , q 2 ui , . . . (1 i r). Intradevar, numarul de clase de resturi modulo p n succesiunea ui , qui , . . . va da gradul
polinomului minimal mi (X).

ACINI

11.3. DEFINIREA CODURILOR CICLICE PRIN RAD

127

Exemplul 11.3 Fie GF (24 ) primitiv, rad


acin
a a polinomului 1 + X + X 4 ,
ireductibil peste Z2 . Sa definim un cod care sa aiba ca rad
acini , 2 , 3 , 4 , 5 , 6 .
Fiind primitiv, ord() = 24 1 = 15 (vezi si Prelegerea 8, Exemplul 8.8).
Fie mi (X) polinomul minimal al rad
acinii i , 1 i 6.
R
adacinile lui m1 (X) sunt , 2 , 4 , 8 (16 = ), deci
m1 (X) = m2 (X) = m4 (X) = (X )(X 2 )(X 4 )(X 8 ).
Acest polinom este cunoscut, anume 1 + X + X 4 .
R
adacinile lui m3 (X) sunt 3 , 6 , 12 , 24 = 9 (18 = 3 ), deci m3 (X) este un
polinom de gradul 4, egal cu m6 (X). Notam m3 (X) = a0 +a1 X +a2 X 2 +a3 X 3 +X 4 .
Detaliind m3 (3 ) = 0, avem

a0

1
0
0
0

+ a1

0
0
0
1

+ a2

0
0
1
1

+ a3

0
1
0
1

1
1
1
1

0
0
0
0

de unde se poate scrie sistemul de ecuatii


a0 + 1 = 0,

a3 + 1 = 0,

a2 + 1 = 0,

a1 + a2 + a3 + 1 = 0

cu solutia a0 = a1 = a2 = a3 = 1, deci m3 (X) = m6 (X) = 1 + X + X 2 + X 3 + X 4 .


R
adacinile lui m5 (X) sunt 5 , 10 (20 = 5 ), deci m5 (X) este un polinom de
gradul 2 : m5 (X) = b0 + b1 X + X 2 . Cum m5 (5 ) = 0, se obtine:

b0

1
0
0
0

+ b1

0
1
1
0

1
1
1
0

0
0
0
0

care are solutia b0 = b1 = 1, deci m5 (X) = 1 + X + X 2 .


Polinomul generator este
g(X) = cmmmc{m1 (X), m2 (X), m3 (X), m4 (X), m5 (X), m6 (X)} =
= m1 (X)m3 (X)m5 (X) = (1 + X + X 4 )(1 + X + X 2 + X 3 + X 4 )(1 + X + X 2 ) =
1 + X + X 2 + X 4 + X 5 + X 8 + X 10 .
De remarcat ca era suficient s
a cerem ca , 3 , 5 s
a fie rad
acini ale codului.
Exemplul 11.4 Fie = 89 unde GF (211 ) este primitiv. Deoarece
11
211 1 = 89 23, rezult
a 23 = 2 1 = 1.
S
a consider
am drept rad
acini elementele , 3 , 9 , 16 .
Fie m(X) polinomul minimal al lui . Radacinile lui m(X) sunt (conform Teoremei 11.9) , 2 , 4 , 8 , 16 , 32 = 9 , 18 , 36 = 13 , 26 = 3 , 6 , 12 . ( 24 = )
Deci m(X) este un polinom de gradul 11 care are ca rad
acini pe , 3 , 9 , 16 ,
deci polinomul generator al codului respectiv este g(X) = m(X).
Fie polinomul f (X) = a0 + a1 X + . . . + an1 X n1 Zq [X] si o radacina a sa.
Atunci 0 = f () = a0 + a1 + a2 2 + . . . + an1 n1 , sau altfel scris:

(a0 a1 a2 . . . an1 )

..
.
n1

=0

128

PRELEGEREA 11. ALTE DEFINIT


II ALE CODURILOR CICLICE

Deci cuvantul corespunzator polinomului f (X) este n spatiul nul al matricii


(1 . . . n1 )
(1).
Aceasta este si conditia de divizibilitate a polinomului f (X) cu polinomul minimal m(X) al lui . Multimea polinoamelor care satisfac conditia formeaza idealul
generat de m(X). Dimensiunea acestui ideal este (Prelegerea 9) n k unde
k = grad(m(X)). Deci spatiul liniar generat de matricea (1) are dimensiunea k.
Prin urmare, a cere ca f (X) sa admita pe 1 , 2 , . . . , r GF (q m ) ca radacini
este echivalent cu a cere ca vectorul corespunzator sa apartina spatiului nul al matricii

Hmr,n

1 1 12 . . . 1n1

n1
2
1 2 2 . . . 2
=
..

1 r r2 . . . rn1
Exemplul 11.5 Sa revenim la Exemplul 11.3. Polinomul {f (X)} apartine codului
respectiv daca si numai daca vectorul corespunz
ator apartine spatiului nul al matricii

1 2 3 4 5 6 7 8 9 10 11 12 13 14

H = 1 3 6 9 12 1 3 6 9 12 1 3 6 9 12
1 5 10 1 5 10 1 5 10 1 5 10 1 5 10

1
0
0
0
1
0
0
0
1
0
0
0

0
1
0
0
0
0
0
1
0
1
1
0

0
0
1
0
0
0
1
1
1
1
1
0

0
0
0
1
0
1
0
1
1
0
0
0

1
1
0
0
1
1
1
1
0
1
1
0

0
1
1
0
1
0
0
0
1
1
1
0

0
0
1
1
0
0
0
1
1
0
0
0

1
1
0
1
0
0
1
1
0
1
1
0

1
0
1
0
0
1
0
1
1
1
1
0

0
1
0
1
1
1
1
1
1
0
0
0

1
1
1
0
1
0
0
0
0
1
1
0

0
1
1
1
0
0
0
1
1
1
1
0

1
1
1
1
0
0
1
1
1
0
0
0

1
0
1
1
0
1
0
1
0
1
1
0

1
0
0
1
1
1
1
1
1
1
1
0

S-a obtinut o matrice 12 15, desi - conform rezultatelor teoretice, n = 15, n


k = 10, k = 5 si deci matricea de control a codului ar trebui sa aiba dimensiunile
(n k) n = 10 15. Se observa ns
a ca de fapt ultima linie este nula, iar
urm
atoarele doua linii sunt identice (deci penultima se poate elimina).

DEFINIT
11.4. ALTA
IE A CODURILOR CICLICE

11.4

129

Alt
a definitie a codurilor ciclice

Vom mai prezenta si o a treia constructie a codurilor ciclice, realizata de Edwin


Berlekamp n 1968.
2

Definitia 11.7 Fie polinomul T r(X) = X + X q + X q + . . . + X q


Se numeste urma lui GF (q r ) expresia T r().

r1

GF (q r )[X].

Propozitia 11.8 T r este o aplicatie : GF (q r ) Zq .


Demonstratie: Trebuie aratat ca GF (q r ) avem T r() Zq . Pentru aceasta
este suficient sa aratam ca T r() verifica ecuatia X q X = 0. Folosind faptul ca
r
ca GF (q r ) este corp de caracteristica q si ca GF (q r ) avem q = , se verifica
imediat relatia [T R()]q = T R().
2
Propozitia 11.9 T r este aplicatie liniara.
Demonstratie: Relatia T r( + ) = T r() + T r() este usor de verificat, deoarece
se lucreaza n corpuri de caracteristica q.
2
a q r1 valori GF (q r ) cu T r() =
Propozitia 11.10 Pentru orice a Zq exist
a.
Demonstratie: Fiecare ecuatie T r(X) = a admite maxim q r1 radacini, iar numarul
de elemente a posibile este q. Mai trebuie aratat ca toate cele q ecuatii au radacini
distincte. Aceasta se poate deduce foarte simplu folosind derivata formala ntr-un
corp de caracteristica q: toate ecuatiile au aceeasi derivata: 1.
2
Teorema 11.11 Polinomul T r(X) se poate descompune n GF (q r ) n produs de
polinoame minimale.
Demonstratie: Demonstratia se bazeaza pe urmatorul algoritm:
(1) Fie polinomul g(X) = T r(X);
(2) Se considera GF (q r ) cu g() = 0. Deci g(X) este divizibil cu polinomul
minimal m(X) al lui .
(3) g(X) := g(X)/m(X). Daca g(X) = 1, STOP, altfel se reia pasul (2).
Existenta radacinilor pentru g(X) (pasul (2)) este asigurata de faptul ca n
GF (q r ) orice polinom ireductibil este polinom minimal.
Exemplul 11.6 Sa consider
am GF (24 ), deci q = 2, r = 4. Aici se poate verifica
descompunerea
T r(X) = X + X 2 + X 4 + X 8 = X(1 + X)(1 + X + X 2 )(1 + X + X 4 )
care sunt toate polinoame minimale.
Fie GF (24 ) rad
acin
a (primitiva) a ecuatiei 1 + X + X 4 = 0. Deci toate
elementele nenule din GF (24 ) se pot scrie ca puteri ale lui . Vom folosi aceasta
pentru a lista valorile functiei T r : GF (24 ) Z2 :

130

PRELEGEREA 11. ALTE DEFINIT


II ALE CODURILOR CICLICE

X T r(X)
0
0
1
0

0
2

X T r(X) X T r(X)
3
1
7
1
4

0
8
0
5
9

1
6
10

X T r(X)
11
1
12
1
13

1
14

Dup
a cum se observa, sunt 8 = 23 valori 0 si 8 valori 1.
Putem da acum teorema principala care defineste codurile ciclice folosind operatorul T r:
Teorema 11.12 Fie n num
ar natural, q num
ar prim, k ordinul lui q modulo n
(q k 1 mod n) si GF (q k ) element primitiv de ordin n. Atunci
A = {c = (T r(), T r(), T r( 2 ), . . . , T r( n1 ))| GF (q k )}
este un (n, k) - cod ciclic peste Zq .
Demonstratie: Din Propozitia 11.9 rezulta ca A este cod liniar.
Se verifica apoi ca c 1 A este o permutare ciclica a lui c ; deci A este
cod ciclic. Deoarece este primitiv, nseamna ca polinomul sau minimal m(X) =
h0 + h1 X + . . . + hk X k are gradul k. Daca c = (c0 , c1 , . . . , cn1 ), avem
k
X

ci hi = T r(m()) = T r(0) = 0

i=0

care constituie una din cele n k ecuatii de control pentru A. Deoarece m(X) este
minimal (deci ireductibil), h(X) = X k m(X 1 ) este polinomul de control pentru A.
Cum gradul lui este k, avem un (n, k) - cod ciclic peste Zq .
2
De remarcat ca aceasta teorema defineste numai codurile ciclice ireductibile
(care nu contin subcoduri ciclice proprii), deci clasa lor este inclusa strict n clasa
codurilor ciclice data de cele doua definitii anterioare (prin ideale si prin radacinile
polinomului generator).
GF (24 ) vom lua ,
Exemplul 11.7 Sa luam n = 15, q = 2, deci k = 4. In
r
ad
acina polinomului 1 + X + X 4 . Se stie ca ea este un element primitiv. Aplicatia
T r este T r(X) = X + X 2 + X 4 + X 8 iar codul A este format din 16 cuvinte de forma
(T r(), T r(), . . . , T r(n1 )), GF (24 ).
Pentru = 0, 00 . . . 0 A.
Pentru = 1, (T r(1), T r(), . . . , T r(n1 )) = 000100110101111
Celelalte 14 cuvinte sunt permut
arile circulare ale
acestuia.
1
1
4
+ 4 = 1 + X 3 + X 4,
Polinomul de control al codului este h(X) = X 1 +
X X
iar polinomul generator
X 16 X
g(X) = 4
= X + X 4 + X 5 + X 7 + X 9 + X 10 + X 11 + X 12 ,
X + X3 + 1
al carui vector corespunz
ator se obtine n constructia de sus pentru = 2 .
Acesta este un (15, 4) - cod ciclic, ireductibil.
De remarcat ca pentru n = 15 sunt numai doua astfel de coduri, cel
alalt fiind
3
4
codul dual (rad
acina polinomului 1 + X + X este de asemenea primitiva).

11.5. EXERCIT
II

11.5

131

Exercitii

11.1 Demonstrati Corolarul 11.1.


11.2 Demonstrati Propozitia 11.7
11.3 Construiti urmatoarele corpuri:
(a) GF (22 );
(b) GF (23 ) folosind polinomul 1 + X 2 + X 3 ;
(c) GF (24 ) folosind polinomul 1 + X 3 + X 4 ;
(d) GF (25 ) folosind polinomul 1 + X 2 + X 5 .
11.4 Gasiti o extensie a lui Z2 n care X 9 1 sa se descompun
a n factori liniari.
11.5 Gasiti toate elementele primitive din GF (23 ) si GF (24 ).
11.6 Gasiti toate elementele primitive din GF (32 ) si GF (52 ).
11.7 Construiti GF (24 ) ca o extensie a lui GF (22 ).
11.8 Fie GF (24 ), rad
acin
a a polinomului 1 + X + X 4 .
G
asiti polinoamele minimale al lui = 7 si = 10 .
11.9 Gasiti polinoamele minimale al tuturor elementelor din:
- GF (23 ), generat cu 1 + X + X 3 ;
- GF (25 ), generat cu 1 + X 2 + X 5 ;
- GF (32 ), generat cu 2 + X + X 2 ;
- GF (52 ), generat cu 3 + 2X + X 2 .
11.10 Orice element nenul din GF (q m ) are un ordin prim cu q.
11.11 G
asiti polinomul generator al unui cod ciclic de lungime 15, de rad
acini
5
7
4
4
1, , , GF (2 ) fiind radacin
a a polinomului 1 + X + X .
Construiti matricea de control a codului.
Ar
atati ca v(X) este polinom - cod daca si numai daca ponderea w(v) este par
a.
11.12 G
asiti polinomul generator al unui cod ciclic de rad
acini 2 , 3 , 6 unde
GF (23 ) este rad
acina polinomului 1 + X + X 3 .
11.13 Ar
atati ca orice cuvant - cod al unui cod ciclic are pondere par
a daca si
numai daca 1 + X este un factor al polinomului generator.
11.14 S
a se descompun
a T r(X) n produs de polinoame minimale n corpurile:
(a) GF (23 )
(b) GF (25 )
(c) GF (32 )
(d) GF (33 )
(e) GF (52 ).
11.15 Folosind Teorema 11.12 sa se construiasc
a toate codurile ireductibile pentru
3
5
2
GF (2 ), GF (2 ), GF (3 ).
11.16 Verificati c
a polinomul h(X) construit n demonstratia Teoremei 11.12 este
polinomul generator al codului dual.

Prelegerea 12
Coduri BCH
Codurile BCH constituie cea mai relevanta clasa de coduri ciclice. Ele au fost
definite n mod independent de Bose si Chaudhuri pe de-o o parte, Hocquenheim
de pe de-alta parte. Numele de BCH (Bose - Chaudhuri - Hocquenheim) a fost
dat de Peterson, care s-a ocupat de ele n mod special, construind si algoritmul de
decodificare.

12.1

Definirea codurilor BCH

Definitia 12.1 Fie q numar prim, m0 , m, d numere naturale si GF (q m ). Un


cuv
ant {f (X)} este n codul BCH daca polinomul are ca rad
acini
m0 , m0 +1 , . . . , m0 +d2 .
In majoritatea cazurilor studiate se considera m0 = 0 sau m0 = 1.
Teorema 12.1 Lungimea n a cuvintelor - cod este egal
a cu ordinul e al lui .
Demonstratie: Conform constructiei codurilor ciclice bazata pe radacinile polinomului generator, lungimea n a cuvintelor - cod este cel mai mic multiplu comun al
ordinelor radacinilor. In cazul codurilor BCH avem
(m0 )n = m0 n = 1 si 1 = (m0 +1 )n = m0 +n = m0 n
deci n = 1. Prin urmare e|n si n e.
De asemenea, (j )e = (e )j = 1 j = m0 , m0 + 1, . . . , m0 + d 2, adica n e.
Rezulta n = e.
2
De remarcat ca, daca este primitiv, atunci e = q m 1.

Teorema 12.2 Intr-un


cod BCH definit de rad
acinile m0 , m0 +1 , . . . , m0 +d2 (
GF (q m )), distanta minima a codului
si deci codul poate corecta cel
"
#este cel putin d (
d1
putin orice combinatie de t
erori).
2

133

134

PRELEGEREA 12. CODURI BCH

Demonstratie: Un cod BCH este spatiul nul al matricii

H=

m0
m0 +1

(m0 )2
(m0 +1 )2
..
.

...
...

(m0 )n1
(m0 +1 )n1

1 m0 +d2 (m0 +d2 )2 . . . (m0 +d2 )n1


Sa consideram urmatorul determinant, obtinut prin alegerea arbitrara a d 1
coloane din H:

(m0 )j1
(m0 )j2
...
(m0 )jd1

m +1 j
(m0 +1 )j2 . . . (m0 +1 )jd1
( 0 ) 1
=

D=
..

(m0 +d2 )j1 (m0 +d2 )j2 . . . (m0 +d2 )jd1

1
1
...
1

j1
j2
jd1

.
.
.

m0 (j1 +j2 +...+jd1 )


=
=
..

.
= m0 (j1 +j2 +...+jd1 )

(j2 )d2 . . . (jd1 )d2


(ji jk ) 6= 0

(j1 )d2
Y
i>k

pentru ca ji 6= jk daca i 6= k.
Deci orice submultime formata cu maxim d 1 coloane din H este liniar independenta de unde - conform Teoremei 2.4 (Prelegerea 2) - distanta minima a codului
este cel putin d.
2
acinilor se pot omite
Exemplul 12.1 Daca se lucreaza n binar, puterile pare ale rad
din lista(dac
a i este rad
acin
a, atunci si 2i este rad
acin
a - conform Teoremei 11.9,
Prelegerea 11). Atunci un cod BCH binar corector de 3 erori este dat de rad
acinile
3
5
, , , unde este un element primitiv dintr-o extensie a lui Z2 . De exemplu,
dac
a = , rad
acin
a a polinomului 1 + X + X 4 , se obtine codul din Exemplul 11.3,
Prelegerea 11.
Exemplul 12.2 Fie GF (32 ) generat de rad
acina a polinomului ireductibil 2 +
X + X 2 . Deoarece ord() = 8, orice cod va avea lungimea 8. Sa construim codul
BCH de rad
acini 2 , 3 , 4 . Polinoamele minimale sunt:
m2 (X) = 1 + X 2 cu rad
acini 2 , 6 ;
2
m3 (X) = 2 + X + X cu radacini 3 ,
m4 (X) = 1 + X numai cu rad
acina 4 .
Deci polinomul generator este
g(X) = (1 + X 2 )(2 + X + X 2 )(1 + X) = 2 + X 2 + X 3 + 2X 4 + X 5 .
Codul este un (8, 3) - cod ciclic. Deoarece printre rad
acini este si , se poate
considera m0 = 1, d = 5, deci codul poate corecta cel putin doua erori.
De remarcat ca daca folosim acest cod drept cod liniar, cum ponderea minima
a cuvintelor sale este 4 (de exemplu 02010201 este cuvant - cod), distanta minima
este 4, deci codul nu poate corecta dec
at o singura eroare. Astfel, tratarea codurilor
ciclice sub forma de coduri liniare scade de obicei puterea de corectie a erorilor.

12.2. ALGORITMUL PETERSON DE DECODIFICARE

135

Numerele m, m0 , d, q sunt parametrii codului BCH. Ideea este de a-l mari pe d,


pentru a putea corecta cate mai multe combinatii de erori. Acest lucru este posibil
totdeauna, deoarece m si q sunt arbitrari.
Sa observam ca pentru primitiv, toate puterile lui pana la q m 1 sunt
distincte. In cazul binar, avem urmatorul rezultat:
Teorema 12.3 Fie m un numar natural oarecare si GF (2m ) primitiv. Atunci
m
exist
un cod
a orice combinatie de
a m
BCH de lungime n = 2 1 care corecteaz
2 1
t
erori independente, folosind mt pozitii de control.
2
Demonstratie: Vom considera codul binar definit de radacinile , 2 , . . . , 2t . Acesta
este un cod BCH pentru q = 2, m0 = 1, d = 2t + 1, n = 2m 1 si care are distanta
minima cel putin 2t + 1. Pentru ca radacinile mentionate mai sus sa fie distincte,
trebuie ca 2t 2m 1.
Sa observam ca orice putere para a lui este radacina a unui polinom minimal
al unei puteri impare anterioare a lui . Deci este suficient sa dam la nceput doar
radacinile , 3 , . . . , 2t1 ale cuvintelor codului binar.
Avem - dupa definitie: g(X) = cmmmc{m1 (X), m3 (X), . . . , m2t1 (X)}.
m
Pe de - alta parte, mi (X)|X n 1 = X 2 1 1 si deci - conform Teoremei 11.7
(Prelegerea 11), grad(mi (X)) m. Din cele doua relatii rezulta grad(g(X)) mt.
Cum grad(g(X)) da numarul de simboluri de control, teorema este demonstrata. 2

12.2

Algoritmul Peterson de decodificare

Fie codul BCH definit de radacinile m0 , m0 +1 , . . . , m0 +2t1 (d = 2t + 1) cu


GF (q m ).
Un asemenea cod corecteaza orice combinatie de maxim t erori independente.
Fie {f (X)} un cuvant - cod transmis si
{r(X)} = {f (X) + e(X)} = {f (X)} + {e(X)}
secventa receptionata, unde {e(X)} este vectorul - eroare.
Avem, pentru j = m0 , m0 + 1, . . . , m0 + 2t 1 :
Sj = r(j ) = f (j ) + e(j ) = e(j ).
Sj se numesc componentele sindromului.
La decodificare, tipul e de eroare este determinat complet daca se stiu:
Valorile erorilor Yi Zq ;
Localizarile erorilor Xi GF (q m ).
Vom nota pozitiile elementelor cuvintelor din GF (q m ) prin puterile lui ; pe pozitia
i n e() se afla coeficientul lui i1 , deci i1 va localiza a i - a componenta dintr-un
cuvant.
Daca au intervenit t erori, modelul de eroare este complet caracterizat de cunoasterea celor t perechi nenule (Yi , Xi ), 1 i t.

136

PRELEGEREA 12. CODURI BCH

Putem conveni (evident) ca


Yi = 0

Xi = 0.

De remarcat ca Xi nu reprezinta i ci un j arbitrar care va trebui aflat.


Deci, a gasi pe {e(X)} revine la a determina 2t elemente Xi , Yi , 1 i t,
grupate n t perechi, cu proprietatea Yi = 0 i, t < i q m 1. Avem
j

Sj = e( ) =

t
X

Yi Xij ,

m0 j m0 + 2t 1.

i=1

Atunci
q

(Sj ) =

t
X

!q

Yi Xij

i=1

t
X
i=1

Yiq Xijq

t
X

Yi Xijq = Sjq

i=1

Deci, determinarea polinomului - eroare {e(X)} se reduce la aflarea solutiilor


(Yi , Xi ), 1 i t ale sistemului de ecuatii
t
X

Yi Xij = Sj , m0 j m0 + 2t 1.

(1)

i=1

Daca au intervenit k (k < t) erori, se completeaza cele k perechi nenule cu alte


tk perechi nule (Yi , Xi ). De fapt, acest numar k nu este cunoscut apriori; de aceea,
se pleaca de la t erori potentiale (maximul pe care codul BCH l poate corecta sigur),
caracterizate de t perechi (Yi , Xi ). Problema care se pune este deci de a-l determina
pe k si cele 2k necunoscute Yi , Xi (1 i k).
Orice metoda de corectare a erorilor revine la rezolvarea sistemului de ecuatii
(1), care este un sistem neliniar de 2t ecuatii cu 2t necunoscute, problema N P completa.
Fie polinomul
(X1 X)(X2 X) . . . (Xt X) = t + t1 (X) + . . . + 1 (X)t1 + (X)t .
unde j sunt functiile simetrice date de relatiile lui V i`
ete.
Daca n aceasta relatie se ia X = Xi (i = 1, . . . , t), obtinem
Xit + (1)1 Xit1 + . . . + (1)t1 t1 Xi + (1)t t = 0, 1 i t.
Inmultim cu Yi Xij si sumam dupa i. Se obtine:
t
X
i=1

Yi Xij+t + (1)1

t
X
i=1

Yi Xij+t1 + . . . + (1)t1 t1

0, j = m0 , m0 + 1, . . . , m0 + t 1
relatie care se poate scrie

t
X

Yi Xij+1 + (1)t t Yi Xij =

i=1

Sj (1)t t + Sj+1 (1)t1 t1 + . . . + Sj+t1 (1)1 + Sj+t = 0,


m0 j m0 + t 1
(2)
Algoritmul lui Peterson de corectare a k (k t) erori ntr-un cod BCH este:

12.2. ALGORITMUL PETERSON DE DECODIFICARE

137

1. Se rezolva sistemul (2) n care necunoscutele sunt (1)p p , 1 p t;


2. Se nlocuiesc valorile aflate n ecuatia
X t + (1)1 X t1 + . . . + (1)t1 t1 X + (1)t t = 0
si se afla cele t radacini X1 , X2 , . . . , Xt GF (q m ) ale sale;
3. Cu aceste valori introduse n sistemul (1), se determina din primele t
ecuatii valorile Y1 , Y2 , . . . , Yt Zq ;
4. Daca (Yi , Xi ), Xi = ji sunt cele k t valori nenule ale solutiei obtinute,
atunci:
Pentru k = 0, cuvantul receptionat este {r(X)} (fara erori);
Pentru 0 < k t, fie e(X) =

k
X

Yi X ji .

i=1

Cuvantul - cod decodificat este {f (X)} = {r(X)} {e(X)}.


De remarcat ca n cazul binar, pasul (3) nu mai este necesar, deoarece
Yi = 1, i k.
Pentru corectitudinea algoritmului, trebuie studiate compatibilitatile sistemelor
de ecuatii (1) si (2).
Teorema 12.4 Sistemul

t
X

Yi Xij = Sj , m0 j m0 + t 1, de necunoscute Yi

i=1

este compatibil daca si numai daca au intervenit t erori.


Demonstratie: Considerat ca sistem n Y , este liniar; determinantul principal este

X1m0
X1m0 +1
X1m0 +2

X2m0
X2m0 +1
X2m0 +2

X1m0 +t1 X2m0 +t1

m0 m0
m0
= X1 X2 . . . Xt

. . . Xtm0 +t1
Y

. . . Xtm0
. . . Xtm0 +1
. . . Xtm0 +2
..
.

= X1m0 X2m0 . . . Xtm0

1
X1
X12

1
X2
X22

Xtt1

... 1
. . . Xt
. . . Xt2
..
.

X1t1 X2t1 . . .

(Xi Xj )

1j<it

El este nenul numai daca au intervenit t erori, pentru ca atunci toti Xi sunt distincti
si nenuli.
2

Teorema 12.5 Matricea

Sm0

Sm0 +1

M =

Sm0 +1 . . . Sm0 +t1


Sm0 +2 . . . Sm0 +t
..
.

Sm0 +t1 Sm0 +t . . . Sm0 +2t1


este nesingulara daca au intervenit t erori si este singulara daca au intervenit
mai putin de t erori.

138

PRELEGEREA 12. CODURI BCH

Demonstratie: T
inand cont de forma sistemului (1), este posibila descompunerea
matricii M n produs de 3 matrici M = ABAT unde:

A=

1
X1
X12

1
X2
X22

... 1
. . . Xt
. . . Xt2
..
.

X1t1 X2t1 . . . Xtt1

0
...
Y1 X1m

m
0
Y2 X2 . . .

B=
..

.
0

0
0

. . . Yt Xtm

M este nesingulara daca cele doua matrici din descompunere sunt nesingulare.
Matricea A este nesingulara daca si numai daca valorile Xi , (1 i t) sunt distincte
si nenule, deci daca au intervenit t erori. Matricea diagonala B este nesingulara daca
toate elementele de pe diagonala principala sunt nenule, deci daca toate perechile
(Yi , Xi ), 1 i t sunt nenule - adica au aparut t erori.
2
Aplicarea algoritmului Peterson se face n felul urmator:
1. Folosind polinomul receptionat {r(X)}, se calculeaza marimile
Sj = r(j ),

j = m0 , m0 + 1, . . . , m0 + 2t 1

2. Se studiaza compatibilitatea sistemului


Sj (1)t t + Sj+1 (1)t1 t1 + . . . + Sj+t1 (1)1 + Sj+t = 0,
m0 j m0 + t 1.
Daca matricea M a sistemului este nesingulara, nseamna ca au aparut t erori.
Daca M este singulara, atunci se observa ca t = 0 (deoarece t = X1 X2 . . . Xt )
si - neglijand prima sau ultima din ecuatiile de mai sus, n care se nlocuieste
t = 0 - se obtine un nou sistem liniar format din t 1 ecuatii cu t 1
necunoscute.
Se studiaza matricea acestui nou sistem. Daca ea este nesingulara, nseamna
ca au aparut t 1 erori. Daca si aceasta este singulara, cum t1 = 0, se
repeta procedeul.
Primul sistem compatibil (cu matricea nesingulara) care se obtine va da numarul k t de erori care au intervenit n transmisie, precum si valorile
(1)1 , (1)2 2 , . . . , (1)k k .
3. Se introduc valorile determinate mai sus n polinomul
P = X k + (1)1 X k1 + . . . + (1)k1 k1 X + (1)k k
si se afla cele k radacini X1 , X2 , . . . , Xk GF (q m ) ale ecuatiei P = 0 (prin
diverse metode, eventual chiar prin simpla verificare a ecuatiei cu toate elementele din GF (q m )). Aceste radacini vor da localizarile erorilor.
De remarcat ca ordinea de notare a erorilor X1 , X2 , . . . , Xm este neesentiala.

12.2. ALGORITMUL PETERSON DE DECODIFICARE

139

4. Se introduc aceste solutii n ecuatiile sistemului


k
X

Yi Xij = Sj ,

j = m0 , m0 + 1, . . . , m0 + k 1

i=1

si se determina valorile erorilor Y1 , Y2 , . . . , Yk .


5. Se calculeaza astfel polinomul eroare {e(X)}, care se scade din polinomul
receptionat si se obtine cuvantul - cod transmis:
{r(X)} {e(X)} = {r(X) e(X)} = {f (X)}
Exemplul 12.3 Fie codul BCH definit de rad
acinile , 2 , 3 , 4 , 5 6 unde
4
GF (2 ) este element primitiv, rad
acin
a a polinomului 1 + X + X 4 (Exemplul 11.3,
Prelegerea 11 si Exemplul 12.1). Deoarece t = 3, acest cod este capabil sa corecteze
maxim 3 erori.
S
a presupunem ca au aparut doua erori, pe pozitiile 3 si 10 (adica pe pozitiile
4 si 11) ale cuvantului transmis. Ele reprezint
a polinomul eroare e(X) = X 3 + X 10 .
S
a calcul
am sindromul (pentru operatile folosite, a se vedea Exemplele 8.8 si 8.9,
Prelegerea 8):
S1 = r() = e() = 3 + 10 = 12
S2 = (S1 )2 = 24 = 9
S3 = r(3 ) = e(3 ) = 9 + 30 = 9 + 0 = 7
S4 = (S2 )2 = 18 = 3
S5 = r(5 ) = e(5 ) = 15 + 50 = 0 + 5 = 10
S6 = (S3 )2 = 14 .
Observ
am ca ntr-o situatie real
a, nu se stie unde sunt localizate erorile si deci
- n cazul n care au intervenit doua erori pe pozitiile 3 si 10 (care nu se cunosc
nc
a), din vectorul receptionat se obtine direct sindromul
S = (S1 , S2 , S3 , S4 , S5 , S6 ) = (12 , 9 , 7 , 3 , 10 , 14 )
f
ar
a sa stim din combinatiile caror localiz
ari ale erorilor provin aceste componente ale sindromului.
S
am sistemul de ecuatii
a consider

12
9
7
3

+
S
2 2 + S3 1 = S4
1 3
3 + 2 + 1 =
S2 3 + S3 2 + S4 1 = S5 adica
9 3 + 7 2 + 7 1 = 10

7
S2 3 + S4 2 + S5 1 = S6
3 + 3 2 + 10 1 = 14

Inmult
im cele trei ecuatii ale sistemului respectiv cu
7 = 8 , 3 = 12 , 10 = 5
si obtinem:
5
2
11

3 + 2 + 1 =
6
4
7
3 + 2 + 1 =

12
3 + 8 2 + 1 = 4
Adun
am prima ecuatie la ultimele doua si atunci
(

9 3 + 10 2 = 8
14 3 + 0 2 = 13

140

PRELEGEREA 12. CODURI BCH

Deoarece a doua ecuatie se obtine din prima prin nmultire cu 5 , ele nu sunt independente; deci au aparut mai putin de 3 erori. Facem 3 = 0 si a doua ecuatie
va da 2 = 13 . Din prima ecuatie a sistemului se ajunge la 0 + 1 = 11 , adica
1 = 12 .
Deci, n acest caz k = 2, 1 = 12 , 2 = 13 . Se ajunge la polinomul X 2 +
1 X + 2 = X 2 + 12 X + 13 , care are ca rad
acini X1 = 3 , X2 = 10 .
Am redescoperit astfel cele doua localiz
ari ale erorilor. Codul fiind binar, corectarea se face imediat: se modific
a (din 1 n 0 sau din 0 n 1) bitii de pe pozitiile 4
respectiv 11 din cuvantul receptionat.
Exemplul 12.4 Fie codul BCH definit de rad
acinile , 2 , 3 , 4 unde GF (24 )
este rad
acina polinomului 1 + X + X 4 . Acest cod are m0 = 1, m0 + 2t 1 = 4, deci
t = 2; codul poate corecta n mod sigur cel putin doua erori. Sa presupunem ca s-a
receptionat cuvantul
r = 100100110000100
de 15 componente. Sa determinam cuvantul - cod transmis.
Polinomul corespunz
ator acestui cuvant este r(X) = 1 + X 3 + X 6 + X 7 + X 12 .
Componentele sindromului sunt
S1 = r() = 0
S2 = r(2 ) = (S1 )2 = 0
S3 = r(3 ) = 4
S4 = r(4 ) = (S2 )2 = 0
Trebuie rezolvat sistemul
(

S1 2 + S2 1 = S3
S2 2 + S3 1 = S4

adica

0 2 + 0 1 = 4
,
0 2 + 4 1 = 0

de unde se obtine 1 = 0 , 1 = .
Polinomul de localizare a erorilor este X 2 +1 X +2 = X 2 +X +, cu rad
acinile
7
9
X1 = , X2 = . Au aparut deci doua erori, pe pozitiile 8 si 10. Pentru ca suntem
n cazul binar, Y1 = Y2 = 1; vectorul - eroare obtinut este e(X) = X 7 + X 9 , deci
cuv
antul - cod transmis este
{f (X)} = {r(X)} {e(X)} = {r(X) + e(X)} = 1 + X + X 6 + X 9 + X 12
adic
a f = 100100100100100.

12.3

Localizarea erorii la codurile BCH binare

Dupa cum s-a observat, n cazul codurilor BCH binare este suficient sa se localizeze
eroarea; corectarea se face imediat prin complementaritatea bitilor aflati pe pozitiile
respective. Dupa determinarea valorilor 1 , 2 , . . . , t , algoritmul Peterson nu expliciteaza modul de rezolvare a ecuatiei de localizare al erorii, care uneori poate fi
dificil de prelucrat.
Un procedeu eficient de determinare a pozitiilor erorilor pentru codurile BCH
binare a fost realizat de Chien.
Fie polinomul (de localizare a erorii):
S(X) = (1 X1 X)(1 X2 X) . . . (1 Xt X) = 0 + 1 X + 2 X 2 + . . . + t X t

12.3. LOCALIZAREA ERORII LA CODURILE BCH BINARE

141

unde
0 = 1
1 = X1 + X2 + . . . + Xt
...
t = X1 X2 . . . Xt
(operatiile fiind efectuate n binar, semnul este asimilat cu +).
Radacinile acestui polinom sunt inversele localizarilor erorilor Xi1 , 1 i t.
Procedeul lui Chien de corectare a erorilor n cazul binar pentru codurile BCH,
este urmatorul:
Fie r = r0 r1 . . . rn1 cuvantul receptionat; componentele lui se vor decodifica pas
- cu - pas (pe masura ce sunt receptionate).
Sa consideram primul bit primit rn1 si sa cercetam daca el este corect sau nu.
Aceasta este echivalent cu a verifica daca n1 este o localizare a erorii, sau daca
(n1) = este o radacina a polinomului S(X) de localizare a erorii.
Daca 1 + 2 2 + . . . + t t = 1 adica S() = 0, atunci a intervenit o eroare
pe pozitia n1 si deci componenta rn1 trebuie corectata.
Daca 1 + 2 2 + . . . + t t 6= 1 adica S() 6= 0, atunci rn1 s-a receptionat
corect.
Procedeul se repeta: n general componenta receptionata rns este corecta daca
(ns)

= s nu este radacina a polinomului S(X), adica


1 s + 2 2s + . . . + t st 6= 1
In caz contrar, rns va fi corectata n rns + 1.
Algoritmul lui Chien este deci:
1. s := 0;
2. while s n do
(a) s := s + 1;
(b) Se calculeaza P := 1 s + 2 2s + . . . + t ts ;
(

(c) Se decodifica ans := rns + v unde v =

0
1

daca P = 0
daca P =
6 0

Circuitul liniar care implementeaza acest algoritm este:

6
- 1
6

- 2
6

...

?
?


2
...

- t
6

r0 , r1 , . . . , rn1

?
t
X

? ?

i=1

si

- +

A
-

142

PRELEGEREA 12. CODURI BCH

Cele t circuite din stanga realizeaza la fiecare tact multiplicarea cu i .


La momentul initial blocul A calculeaza suma 1 + 2 2 + . . . + t t dand la
iesire valoarea 1 (scalar) daca aceasta suma este egala cu 1 si 0 (scalar) daca suma
anterioara da orice element din GF (2m ) diferit de 1 = (1, 0, . . . , 0). In functie de
acest rezultat, componenta rn1 este schimbata, respectiv pastrata.
La momentul urmator, blocul A calculeaza suma 1 2 + 2 4 + . . . + t 2t . Daca
aceasta suma este 1, 2 este radacina a polinomului de localizare a erorii S(X),
deci 2 = n2 este o localizare a erorii. In caz contrar, suma este diferita de
1. La iesirea din blocul A se obtine scalarul 1 respectiv 0 - componenta rn2 fiind
modificata respectiv pastrata.
Exemplul 12.5 Fie GF (24 ) primitiv, rad
acina polinomului 1 + X + X 4 . Sa
presupunem si ca se stiu 1 si 2 . Circuitul care multiplica cu este (Prelegerea 8,
Figura 8.4) circuitul de mp
artire cu m(X) = 1 + X + X 4 :

?
-

s
?

-+

Circuitul de nmultire cu 2 este - conform egalit


atii
2
2
3
2
3
(a1 + a2 + a3 + a4 ) = a1 + a2 + a3 4 + a4 5 = a3 + (a3 + a4 ) +
(a1 + a4 )2 + a2 3 urmatorul (vezi si Exemplul 8.10, Prelegerea 8):

?
-

s
?

- +
6
?

6
- 6
-

6
?

- +

s6

Initial n elementele de nmagazinare ale celor doua circuite se afla 1 respectiv 2 .


Pentru cazul binar vom nota cu

- - x1 x2 . . . xn

x1
x2
xn

dispozitivul sau care da valoarea (scalar) 0 dac


a si numai daca
x1 = x2 = . . . = xn = 0,
si cu
x

- x

dispozitivul non.
Atunci, circuitul de implementare a procedeului Chien de localizare a erorii este:

12.4. EXERCIT
II

r
?

- +

6
-

-+

?
-+

?
-+
-?

-+

?
?
? ??? ?

?
?

r0 , r1 , . . . , rn1

r
-+

+
6

?
? ?

143

?
?
?
?

-+

acest circuit, cele patru elemente de nmagazinare din stanga formeaz


In
a circuitul
de nmultire cu (unde initial se introduce 1 ), iar cele patru elemente din dreapta
formeaza circuitul de nmultire cu 2 , aranjat n ordine inversa (unde 2 se introduce
initial de la dreapta spre stanga).
De asemenea, exista un element de nmagazinare care contine numai 1, element
pe care l furnizeaz
a la fiecare tact.
Initial, circuitul functioneaz
a odat
a la momentul 0 f
ar
a a introduce nimic de pe
canal (pentru amorsarea n elementele de nmagazinare a coeficientilor pentru 1
respectiv 2 2 ).
La momentul urmator se ncepe procesul efectiv de decodificare. Daca rn1 a fost
perturbat, atunci n1 este localizarea erorii, adica este rad
acin
a a polinomului de
2

localizare a erorii si avem 1 + 1 + 2 = 0. In acest caz, la intrarea n sumatorul


sau este vectorul 0 = (0, 0, 0, 0), iar la iesire scalarul 0. Dupa negare se obtine
scalarul 1, care se aduna (pentru corectie) la rn1 .
Daca rn1 este corect, la intrarea n sumator se obtine o valoare nenula, deci
iesirea va fi 1, care prin negare este 0 si rn1 ram
ane nemodificat.

12.4

Exercitii

12.1 Sa se verifice valabilitatea descompunerii M = ABAT din demonstratia Teoremei 12.5


12.2 Fie GF (2m ), m > 2 primitiv. Atunci polinoamele minimale m1 (X) si
m3 (X) au acelasi grad.
12.3 Construiti un cod BCH binar corector de 2 erori de lungime 11.
12.4 Construiti un cod BCH ternar de lungime 26 si d = 5.

144

PRELEGEREA 12. CODURI BCH

12.5 Sa se determine polinomul generator si cel de control pentru codul BCH binar
corector de 3 erori de lungime
(a) 15
(b) 31.
Codificati mesajul de informatie format numai din 1.
12.6 Caracterizati codurile BCH care sunt definite de toate elementele extensiei
Galois GF (q m ).
12.7 Daca g(X) = 1 + X 4 + X 6 + X 7 + X 8 este polinomul generator al unui cod
BCH binar de lungime 15, sa se cerceteze daca urmatoarele secvente sunt cuvinte cod:
(a) 011001011000010 (b) 000111010000110
(c) 011100000010001 (d) 111111111111111
12.8 Aflati rad
acinile polinoamelor cu coeficienti n GF (24 ) ( este rad
acina polinomului 1 + X + X 4 ):
X 2 + 4 X + 13 , X 2 + 7 X + 2 , X 2 2 X + 5
X 2 + 6 , X 2 + 2 X, X 2 + X + 8 .
12.9 Definim codul BCH de polinom generator g(X) = m1 (X)m3 (X) peste GF (24 )
folosind elementul primitiv , rad
acin
a a polinomului 1 + X + X 4 . Se receptioneaz
a
cuvintele a si se calculeaz
a sindromurile aH. Stiind aceste sindromuri, localizati
erorile (daca se poate):
01000101 11101000 11001101 01000000
00000100 10100100 00111101 00000000
12.10 Pentru codul BCH definit n exemplul anterior, decodificati mesajele:
110000000000000 000010000100001 010001010100000
110011100111000 110011100100000 111000000000001
101110000000000 101010010110001 010000100000000
010101001011000 110111011101100 101110000001000
111001011000000 000111010000110
codul BCH de lungime 15 corector de 3 erori, sa se decodifice mesajele:
12.11 In
(a) 001000100000000, (b) 101011001000000.
codul BCH peste Z3 de lungime 8, corector de 2 erori, s
a se decodifice
12.12 In
mesajele
(a) 00100000
(b) 12121212
(c) 11211122
(d) 02020202
(e) 10201020
(f ) 22110011.
12.13 Fie GF (25 ) primitiv, rad
acin
a a polinomului 1 + X 2 + X 5 . Se defineste
un cod BCH de lungime 31 cu d = 5.
a polinomul generator al codului: g(X) = m1 (X)m3 (X).
1. Sa se construiasc
2. Sa se decodifice mesajul 1001011011110000110101010111111.

Prelegerea 13
Coduri Reed - Solomon
13.1

Definirea codurilor RS

O clasa foarte interesanta de coduri ciclice a fost definita n 1960 de Reed si Solomon.
Numite n articolul initial coduri polinomiale, Peterson arata un an mai tarziu ca ele
sunt de fapt un caz particular de coduri BCH. Constructia data de Reed - Solomon
a fost urmatoarea:
Fie GF (q m ) primitiv (deci ord() = n = q m 1).
Daca a0 a1 . . . ak1 GF (q m )k este secventa de informatie, se defineste polinomul
h(X) = a0 + a1 X + . . . + ak1 X k1 GF (q m )[X]. Codul polinomial va fi format de
toate cuvintele de forma h(1)h() . . . h(n1 ).
Teorema 13.1 Un cod polinomial este un cod BCH peste GF (q m ), definit de rad
acinile , 2 , . . . , nk .
Demonstratie: Sa consideram polinomul {f (X)} asociat cuvantului - cod:
f (X) = h(1) + h()X + . . . + h(n1 )X n1 = a0 (1 + X + X 2 + . . . + X n1 ) +
a1 (1 + X + 2 X 2 + . . . + n1 X n1 ) + a2 (1 + 2 X + 4 X 2 + . . . + (2 X)n1 ) + . . . +
ak1 (1 + k1 X + . . . + (k1 X)n1 ).
Se stie ca toate elementele nenule din GF (q m ) sunt radacinile polinomului
m
X q 1 1 = X n 1 = (X 1)(1 + X + X 2 + . . . + X n1 ), deci toate elementele din
GF (q m ) \ {0, 1} sunt radacini ale polinomului 1 + X + X 2 + . . . + X n1 .
Prin calcul se obtine f (1) = a0 , f (1 ) = a1 , f (2 ) = a2 , . . . ,
f ((k1) ) = ak1 si f (j ) = 0 daca n 1 j k.
Dar cum n = 1, avem j = nj si deci f (i ) = 0, 1 i n k.
2
In continuare vom numi aceste coduri Reed - Solomon pentru care vom folosi
urmatoarea definitie:
Definitia 13.1 Fie GF (q m ) primitiv. Se numeste cod Reed - Solomon (RS)
codul BCH de polinom generator g(X) GF (q m )[X],
g(X) = (X m0 )(X m0 +1 ) . . . (X m0 +d2 ).
Deci, diferenta fata de codurile BCH generale este aceea ca un cod RS este definit
direct pe extensie, nu pe corpul de baza. Astfel, la un cod BCH cuvintele - cod sunt
din Zqn , pe cand la un cod RS, ele sunt din GF (q m )n . Cum si GF (q m ) este corp,
toate proprietatile codurilor BCH se pastreaza si n cazul codurilor RS.
145

146

PRELEGEREA 13. CODURI REED - SOLOMON

Deoarece au fost studiate (si utilizate) numai codurile Reed - Solomon de caracteristica 2, vom considera n continuare q = 2.
Exemplul 13.1 Fie GF (23 ) generat de rad
acina a polinomului 1 + X + X 3 , si
s
a consider
am codul RS definit de polinomul g(X) = ( + X)(2 + X) = 1 + +
( + 2 )X + X 2 . Este un cod ciclic de lungime n = 7, k = 5 si d = 3. Folosind
definitia din sectiunea 9.3, se poate construi matricea generatoare a codului:

G=

1 + + 2
1
0
0
0
2
0
1+ +
1
0
0
2
0
0
1+ +
1
0
0
0
0
1 + + 2
1
0
0
0
0
1 + + 2

0
0
0
0
1

Codul are 85 cuvinte, obtinute prin nmultirea cu g(X) a tuturor polinoamelor din
GF (23 )[X] de grad cel mult 4 sau - echivalent - din nmultirea cu matricea G a
tuturor cuvintelor din GF (23 )5 .
De exemplu, codificarea mesajului de informatie a = 1003 , sau a(X) = 1 +
X +3 X 4 este a(X)g(X) = 1++(+2 )X 2 +X 3 +(1+2 )X 4 +X 5 +(1+)X 6
(respectiv 3 04 6 13 ).
O matrice de control foarte simpla se obtine folosind (conform sectiunii 11.3)
r
ad
acinile si 2 ale cuvintelor - cod:

H=

1 2 3 4 5 6
1 2 4 6 3 5

Teorema 13.2 Distanta minima a unui cod RS este d = n k + 1.


Demonstratie: Sa notam - temporar - cu dH distanta minima a unui cod. Conform
Teoremei 3.3, dH n k + 1. Pe de-alta parte, ntr-un cod RS, grad(g(X)) =
n k = d 1 deci d = n k + 1. Din cele doua afirmatii rezulta dH d. Pe de-alta
parte, din Teorema 12.2, cum codul RS este un caz particular de cod BCH, rezulta
dH d.
2
Din aceasta teorema rezulta ca un cod RS are distanta maxima separabila (se
mai spune ca este un cod DMS).

13.2

Coduri RS scurte

Deoarece GF (2m ) este primitiv, toate cuvintele unui cod RS au lungimea


n = 2m 1 si k = n d + 1 = 2m d simboluri de informatie. Uneori nsa sunt
necesare coduri RS a caror lungime sa nu fie de aceasta forma. Ele se obtin astfel:
Fie A un (n, k) - cod RS de distanta d si s (1 s < 2m d) un numar ntreg.
Se construieste codul RS scurt A(s) format din toate cuvintele lui A care au 0 pe
ultimele s pozitii, din care apoi aceste s pozitii se ignora.
Exemplul 13.2 Fie A codul dat de g(X) = +X unde este rad
acina polinomului
2
2
1 + X + X si genereaz
a GF (2 ). A are deci n = 3, k = 2, d = 2 si 16 cuvinte

13.2. CODURI RS SCURTE

147

- cod. Codul A(1) se obtine luand toate cuvintele lui A care au 0 pe ultima pozitie
(acestea sunt 000, 10, 2 0, 10), din care se elimina ultimul caracter.
Deci A(1) = {00, 1, 2 , 1}.
Atentie: Ultima pozitie nu nseamn
a ultimul bit. Fiecare element din cuvant are
aici doua pozitii binare. Astfel, cele patru cuvinte - cod alese din A au reprezentarea
binar
a
000000, 011000, 110100, 100100

iar codul scurt, reprezentat n binar este A(1)


= {0000, 0110, 1101, 1001}.
Daca g(X) este polinomul generator al codului A, atunci
A(s) = {b A|grad(b(X)) < n s}.
Sau - altfel spus - A(s) contine toate polinoamele de forma b(X) unde
b(X) = a(X)g(X), grad(a(X)) < k s = 2m d s (deoarece grad(g(X)) =
d 1 = n k).
De aici rezulta ca matricea generatoare a unui cod RS scurt A(s) este

G=

g(X)
Xg(X)
..
.

X ks1 g(X)
care se obtine din matricea generatoare a codului A, din care se elimina ultimele s
linii. Numarul de simboluri de informatie este egal cu numarul de linii din G, deci
ks = k s = 2m d s
Sa notam acum cu d respectiv ds distantele minime ale celor doua coduri. Se
observa ca c1 , c2 A(s), c01 = c1 00 . . . 0, c02 = c2 00 . . . 0 A si deci d(c1 , c2 ) =
d(c01 , c02 ), adica ds d.
Pe de-alta parte (Teorema 3.3), ds ns ks +1 = 2m 1s(2m ds)+1 = d,
deci ds = d.
Din cele aratate mai sus putem enunta teorema:
Teorema 13.3 Fie A un (n, k) - cod RS cu distanta minima d si A(s) codul sau
scurt, cu parametrii ns , ks , ds . Atunci
ns = 2m 1 s,

ks = 2m d s,

ds = d

si A(s) este un cod DMS.


Observatie: Alte coduri scurte se pot obtine eliminand orice set de s elemente din
cuvintele unui cod RS. Se poate vedea imediat ca proprietatile aratate mai sus nu
se schimba.
and de la codul RS din Exemplul 13.1, codul scurt A(2) va
Exemplul 13.3 Plec
avea ca matrice generatoare matricea G far
a ultimele doua linii si coloane, iar ca
parametri n2 = 5, k2 = 3, d2 = 3.

148

13.3

PRELEGEREA 13. CODURI REED - SOLOMON

Decodificarea codurilor RS

Fiind cazuri particulare de coduri BCH, codurile RS se pot decodifica folosind algoritmul Peterson (Sectiunea 12.2). Sa reluam detaliat pe un exemplu aplicarea
acestui algoritm.
Exemplul 13.4 Fie g(X) = (1 + X)( + X)(2 + X)(3 + X) unde GF (23 )
este rad
acina (primitiva) a polinomului 1 + X + X 3 . Codul are d = 5, deci poate
corecta maxim 2 erori independente. Mai stim ca:
3 = 1 + , 4 = + 2 , 5 = 1 + + 2 , 6 = 1 + 2 .
S
a presupunem ca s-a receptionat cuvantul v = 6 5 2 102 . Pentru decodificare se aplica urmatorii pasi:
(1): Se calculeaz
a cele patru sindromuri:
S0 = v(0 ) = 6 ++5 +2 +1+0+2 = 1+2 ++1++2 +2 +1+2 = 1
S1 = v() = 6 + 2 + 7 + 5 + 4 + 0 + 8 = 3
S2 = v(2 ) = 6 + 3 + 9 + 8 + 8 + 0 + 14 = 3
S3 = v(3 ) = 6 + 4 + 11 + 11 12+ 0 + 20!= 1
!
S0 S1
1 3
(2) Deoarece rangul matricii
=
este 2, cuvantul
S1 S2
3 3
v are doua erori; cum distanta este 5, ele pot fi corectate.
(3) Se rezolv
a sistemul liniar
(

S0 2 + S1 1 = S2
adica
S1 2 + S2 1 = S3

2 + 3 1 = 3
2 + 3 1 = 1
3

Adun
and cele doua ecuatii, se obtine (1 + 3 )2 = 1 + 3 , deci 2 = 1.

Inlocuind
n prima ecuatie, avem 3 1 = 3 + 1 = , de unde, prin nmultire cu
4
se ajunge la 1 = 5 .
(4) Polinomul de localizare a erorii este (X) = X 2 + 1 X + 2 = X 2 +
5
X + 1. Prin ncerc
ari se obtine () = (6 ) = 0, deci cele doua erori sunt pe
pozitiile X1 = , X2 = 6 .

!
!

!
X10 X20
Y1
S0
a sistemul liniar
(5) Se rezolv

=
, adica:
X1 X2
Y2
S1
(

Y1 +
Y2 = 1
6
Y1 + Y2 = 3

Inmult
ind a doua ecuatie cu si adunand, se obtine 6 Y1 = 5 , deci Y1 = 6 . Dupa
nlocuire n prima ecuatie, se determina si Y2 = 2 .
(6) Rezum
and, au aparut erorile 6 pe pozitia 1 si 2 pe pozitia 6. Deci
6
eroarea este e = 0 00002 , iar cuvantul - cod trimis a fost
c = v + e = 6 5 5 2 100.

13.4

Alt
a constructie a codurilor RS

Plecand de la constructia initiala, se poate realiza si o alta definitie pentru codurile


RS. Ea se bazeaza pe o modalitate diferita de reprezentare a cuvintelor din Zqn :
folosind polinoamele ca functii.

CONSTRUCT
13.4. ALTA
IE A CODURILOR RS

149

Exemplul 13.5 Fie S = GF (23 ), construit folosind rad


acina primitiva a polinomului 1 + X + X 3 . Definim functia f : S Z2 prin
x
0 1 2 3 4 5 6
f (x) 0 0 1 1 0 1 0 0
Atunci f (x) se poate reprezenta prin
vf = f (0)f (1)f ()f (2 )f (3 )f (4 )f (5 )f (6 ) = 00110100.
Exemplul 13.6 Fie S = GF (23 ) si functia f : S S definita vf = 4 012 100.
Pe baza valorilor n fiecare punct din S, f se poate reprezenta si ca un polinom
f (X) = 4 + 2 X + 3 X 2 + X 3 .
a aceeasi
Definitia 13.2 Fie S GF (2m ). Doua polinoame p(X), q(X) reprezint
m
functie : S GF (2 ) daca si numai daca S, p() = q().
Multimea A = {f (X) GF (2m )[X]|grad(f (X)) k 1} se poate structura evident
ca un spatiu liniar de dimensiune k, cu baza {1, X, X 2 , . . . , X k1 }. Deoarece toate
aceste polinoame pot fi scrise si ca functii definite pe o multime S GF (2m ), vom
numi A spatiul functiilor pe S.
De remarcat ca n aceasta faza S nu este definit explicit.
Teorema 13.4 Fie multimea S, |S| = n si k n. Multimea tuturor functiilor
: S GF (2m ) reprezentate prin polinoame de grad k 1 formeaz
a un spatiu
liniar de functii, cu baza {1, X, . . . , X k1 }.
Demonstratie: Evident, orice polinom de grad cel mult k 1 este generat de
{1, X, . . . , X k1 }. Tot ce trebuie aratat este ca fiecare functie are o reprezentare
unica sub forma de polinom.
Sa presupunem (prin absurd) ca p(X) si q(X) sunt egale ca functii pe S. Deci
S, p() = q(). Dar atunci p(X) q(X) este un polinom de grad < k care
are n (n k) radacini, deci p(X) q(X) 0, adica p(X) q(X).
2
Exemplul 13.7 Fie S = GF (23 ) construit folosind 1 + X + X 3 , si sa consider
am
3
toate polinoamele din GF (2 )[X], de grad cel mult doi. O baz
a pentru acest spatiu
de functii este {1, X, X 2 }, cu reprezentarea corespunz
atoare:
1
X
X2

11111111
012 3 4 5 6
012 4 6 3 5

Atunci, orice polinom p(X) = a0 + a1 X + a2 X 2 considerat ca o functie, poate fi


reprezentat sub forma de vector prin

1 1 1 1 1 1 1 1

vp = (a0 a1 a2 ) 0 1 2 3 4 5 6

2
4
6
3
5
0 1
Teorema 13.5 Spatiul functiilor pe S GF (2m ) (|S| = n) al tuturor polinoamelor
din GF (2m )[X] de grad k 1 formeaz
a un (n, k) - cod liniar DMS.

150

PRELEGEREA 13. CODURI REED - SOLOMON

Demonstratie: Alegem o multime S GF (2m ) de cardinal n si consideram spatiul


functiilor tuturor polinoamelor p : S GF (2m ) de grad cel mult k 1. Lungimea
fiecarui cuvant - cod este n, iar dimensiunea este k (cu Teorema 13.4). Mai ramane
de aratat ca acest cod este DMS (are distanta maxima separabila), adica d = n
k + 1. Pentru aceasta, sa observam ca orice polinom p(X) are maxim k 1 radacini
distincte; deci reprezentarea vp are cel mult k 1 zero-uri, adica w(vp ) n k + 1.
Conform Teoremei 3.3, d n k + 1, deci d = n k + 1.
2
Fie n un divizor al lui 2m 1 si S = { GF (2m )|n = 1} multimea radacinilor
de ordinul n ale unitatii din GF (2m ). Evident, S contine toate radacinile din GF (2m )
ale ecuatiei X n + 1 = 0 si S are cel putin un element primitiv (Teorema 11.1).
Teorema 13.6 Fie p(X), q(X) GF (2m )[X] si S GF (2m ) multimea rad
acinilor
de ordinul n ale unitatii. Atunci p(X) si q(X) reprezint
a aceeasi functie f : S
GF (2m ) daca si numai daca p(X) q(X) (mod 1 + X n ).
Demonstratie: Fie q(X) = h(X)(1 + X n ) + p(X). Atunci pentru orice S avem
q() = h()(1 + n ) + p(). Dar 1 + n = 0, deci q() = p().
Invers, fie S primitiv. Deci orice element din S are forma i (0 i < n).
Daca q(i ) = p(i ), atunci i este radacina a polinomului p(X) q(X). Putem scrie
atunci
p(X) q(X) = h(X)

n1
Y

(1 + i ) = h(X)(1 + X n ).

i=0

2
acinilor de ordinul n ale unitatii din GF (2m ).
Teorema 13.7 Fie S multimea rad
Atunci spatiul functiilor tuturor polinoamelor din GF (2m )[X] de grad k 1 pe S
formeaza un (n, k) - cod ciclic peste GF (2m ).
Demonstratie: Sa notam cu C acest spatiu si fie S generat de primitiv. Atunci,
daca p(X) GF (2m )[X] este un polinom de grad cel mult k 1, avem vp =
p(1)p() . . . p(n1 ) C.
Fie q(X) = p(X). Cum grad(q(X)) k 1, rezulta vq C. Dar
q(1)q() . . . q(n1 ) = p()p(2 ) . . . p(n1 )p(1) C,
ceea ce reprezinta chiar definitia unui cod ciclic.
2
am GF (23 ) construit cu 1 + X + X 3 si fie p(X) =
Exemplul 13.8 Sa consider
4 + 2 X + 3 X 2 + X 3 , care are reprezentarea 012 100. Permutarea ei ciclica
este 12 1000, care corespunde functiei p(X) = 4 + 3 X + 5 X 2 + 3 X 3 =
(4 + X)(5 + X)(6 + X)3 .
Definitia 13.3 Fie polinomul V (X) = V0 + V1 X + . . . + Vn1 X n1 GF (2m )[X]
si GF (2m ) o radacin
a primitiva de ordinul n a unitatii. Spunem ca v(X) =
n1
v0 + v1 X + . . . + vn1 X
este transformata lui V (X) daca
V (j ) =

n1
X
i=0

Vi ji = vj ,

j = 0, 1, . . . , n 1

CONSTRUCT
13.4. ALTA
IE A CODURILOR RS

151

Altfel spus, daca se noteaza cu A = (aij ), aij = ij , atunci


(V0 V1 . . . Vn1 )A = (v0 v1 . . . vn1 ).
Matricea A este numita transformata Fourier finita. Ea este nesingulara, deci se
poate scrie (V0 V1 . . . Vn1 ) = (v0 v1 . . . vn1 )A1 sau
Vi =

n1
X

vj ij = v(i )

i=1

Vom arata aceasta nsa n mod direct, fara a folosi inversa matricii A:
Teorema 13.8 Fie GF (2m ) o rad
acin
a primitiva de ordin n a unitatii. Daca
vj = V (j ) pentru V (X) = V0 + V1 X + . . . + Vn1 X n1 GF (2m )[X], atunci
Vi = v(i ) unde v(X) = v0 + v1 X + . . . + vn1 X n1 .
Demonstratie: Deoarece( este primitiv, vom avea
n1
X
n (mod 2) daca k i = 0
(ki)j =
0
daca k i 6= 0
j=0
Atunci

!
v(i ) =

n1
X
j=0

vj ij =

n1
X

n1
X

j=0

k=0

Vk kj ij =

n1
X
k=0

Vk

n1
X

(ki)j = Vi .

j=0

Deci, fiind dat un vector de valori (v0 , v1 , . . . , vn1 ), se pot regasi coeficientii
polinomului V (X) = V0 + V1 X + . . . + Vn1 X n1 , lucru esential n definirea unui
algoritm de decodificare.
Teorema 13.9 Fie S GF (2m ) multimea radacinilor de ordinul n ale unitatii din
GF (2m ), generat
a de elementul primitiv . Spatiul functiilor tuturor polinoamelor
de grad < n d + 1 pe S este un cod ciclic DMS cu polinomul generator
g(X) = ( + X)(2 + X) . . . (d1 + X).
Demonstratie: Functia polinomiala V (X) a carei reprezentare corespunde lui v(X) =
a(X)g(X) este V (X) =

n1
X

v(ni )X. Deoarece v(ni ) = 0 pentru i = n d +

i=0

1, n d + 2, . . . , n 1 (grad(v(X) < n d + 1), coeficientul lui X i din V (X) este


zero, deci V (X) are gradul < n d + 1.
2
Daca se ia n = 2m 1, se ajunge la o alta modalitate de constructie a codurilor
RS, care are o alta matrice generatoare (deci o alta dispunere a bitilor de informatie).
Exemplul 13.9 Fie rad
acina polinomului 1 + X + X 3 cu care se construieste
3
GF (2 ). Consideram codul RS de polinom generator g(X) = (1 + X)( + X)(2 +
X)(3 + X) = 6 + 5 X + 5 X 2 + 2 X 3 + X 4 care corespunde reprezent
arii
6

100). Transformata lui g(X) este polinomul G(X) =

6
X
k=0

g(7k )X k .

Pentru ca g(0 )g() . . . g(6 ) = 000014 , avem


G(X) = g(71 )X +g(72 )X 2 +g(73 )X 3 = 4 X +X 2 +X 3 = X(4 +X +X 2 ).
Se verifica usor ca G(X) este o functie cu reprezentarea

152

PRELEGEREA 13. CODURI REED - SOLOMON

G(0 )G() . . . G(6 ) = 6 5 5 2 100.


Putem gandi acest cod RS ca spatiul tuturor polinoamelor de grade 1, 2 si 3, adica
{Xp(X)|p(X) GF (23 )[X], grad(p(X)) < 3}.
Baza pentru acest spatiu liniar este {X, X 2 , X 3 }, iar matricea generatoare

1 2 3 4 5 6

1 2 4 6 3 5
1 3 6 2 5 4
Deci G(X) =4 X + X 2 + X 3 va
1 2 3 4

4
( 1) 1 2 4 6
1 3 6 2 5

13.4.1

avea
5
3

reprezentarea

6
5
= (6 5 5 2 1 0 0).
4

Algoritmul de decodificare Berlekamp - Massey

Fie g(X) polinomul generator al unui cod RS, c(X) = a(X)g(X) un polinom cod transmis, si v(X) = c(X) + e(X) polinomul receptionat. Notam V (X), C(X)
si E(X) transformatele lui v(X), c(X) respectiv e(X). Cum transformata Fourier
finita este o aplicatie liniara, se verifica imediat V (X) = C(X) + E(X).
Deoarece g(X) are d 1 radacini consecutive i , m0 i m0 + d 2, sindromul
s(X) va avea s(ni ) = e(ni ) = Ei pentru n m0 d + 1 i n m0 . Deci
sindromul va putea determina d1 coeficienti ai transformatei E(X). Pentru ceilalti
coeficienti va trebui sa reluam polinomul de localizare a erorilor (X).
(X) are proprietatea ca (k ) = 0 ek 6= 0. Deoarece E(k ) = ek , vom
avea (k )E(k ) = 0 k, deci - lucrand n algebra polinoamelor modulo 1 + X n :
{(X)}{E(X)} = 0
si
(
!
!)
{(X)}{E(X)} =

t
X
i=0

i X i

n1
X

Ek X k

k=0

unde t = [(d 1)/2]. Calculand n ambele relatii coeficientul lui X t+k , se obtine:
t Ek + t1 Ek+1 + . . . + 0 Ek+t = 0.
Pentru ca stim deja d 1 valori consecutive ale lui Ek , putem determina recursiv
coeficientii i , pe care i folosim la generarea tuturor valorilor Ek .
In [5] se defineste o alta forma a acestui algoritm.
a relu
am codul RS definit n Exemplul 13.4, n care consider
am
Exemplul 13.10 S
c
a s-a receptionat cuvantul v = 6 5 2 102 . Deoarece d = 5, avem t 2 si
E0 = v(0 ) = 1, E6 = v() = 3 , E5 = v(2 ) = 3 , E4 = v(3 ) = 1. Polinomul de
localizare a erorii este (X) = X 2 + 1 X + 0 . Determinam 0 , 1 ca n Exemplul
13.4 si gasim 0 = 1, 1 = 5 . Se poate determina astfel relatia de recurent
a:
5
Ek = Ek+1 + Ek+2
Deoarece (E0 , E6 , E5 , E4 ) = (1, 3 , 3 , 1), vom avea:
E3 = 5 E4 + E5 = 5 + 3 = 2 ,
E2 = 5 E3 + E4 = 5 2 + 1 = 0,
E1 = 5 E2 + E3 = 0 + 2 = 2

13.5. STERGERI

153

Am determinat transformata lui e(X), adica E(X) = 1 + 2 X + 2 X 3 + X 4 +


X 5 + 3 X 6 . De aici rezult
a e = (E(0 ), E(), E(2 ), . . . , E(6 )) = 06 00002 ,
deci cuvantul decodificat este
c = v + e = 6 5 5 2 100.
Pe de-alta parte, daca s-ar fi folosit matricea generatoare din Exemplul 13.9, nu
ar mai fi fost necesar sa se determine vectorul eroare e, ci doar sa se calculeze toate
valorile lui v(k ), 0 k 6, din care se obtine direct mesajul transmis; mai precis,
se afla transformata lui v(X), care se aduna la transformata lui e(X):
v0 v1 . . . v6 = v(0 )v(6 )v(5 ) . . . v() = 16 13 3 ,
E0 E1 . . . E6 = 12 02 13 3 , si deci
C0 C1 . . . C6 = V0 V1 . . . V6 + E0 E1 . . . E6 = 04 1000.
S-a obtinut C(X) = 4 X + X 2 + X 3 . Deci bitii de informatie sunt (4 , , 1).
De aici se obtine forma cuvantului transmis c = 6 5 5 2 100.
3

13.5

S
tergeri

O stergere este o eroare detectata, pentru corectarea careia trebuind determinata


doar valoarea erorii. Num
arul locatiei de stergere este pozitia elementului perturbat.
Acest numar este n general cunoscut (din citirea fizica a mesajului primit sau din
structura codului).
Astfel, fie A un cod RS peste GF (2m ) si sa consideram codul A format din
reprezentarea binara a cuvintelor codului A (fiecare element din GF (2m ) se scrie ca
un cuvant binar de lungime m). Se defineste si codul A0 obtinut prin adaugarea cate

unui bit de paritate la fiecare simbol din componenta cuvintelor codului A.


Exemplul 13.11 S
a consider
am codul RS din Exemplul 13.2. Pentru a forma A0 ,
se nlocuieste fiecare element 0, 1, , 2 respectiv cu 000, 101, 011, 110 (al treilea bit
este bitul de paritate). Astfel, pentru 10 A avem 011101000 A0 .
Deoarece fiecare element dintr-un cuvant - cod c A este reprezentat printr-un
cuvant binar de lungime m + 1, cuvantul - cod corespunzator c0 A0 va avea
lungimea (2m 1)(m + 1). Se observa ca fiecare element nenul din c este nlocuit
cu un cuvant de pondere para. Deci, c0 va fi format din 2m 1 cuvinte binare de
lungimi m + 1, fiecare de pondere para. In acest fel, daca n cuvantul receptionat
v0 exista un grup de pondere impara, stim ca a aparut o eroare printre cei m + 1
biti corespunzatori. Considerat din nou ca un cuvant cu elemente din GF (2m ), stim
ca acest cuvant are un element perturbat; nu cunoastem valoarea erorii, dar stim
pozitia sa. Avem deci o stergere.
Exemplul 13.12 Relu
and constructia din exemplul anterior, sa presupunem ca sa primit 011100000. Deci, au aparut erori n al doilea grup de 3 biti (acesta are
pondere impar
a), asa ca 1 este un numarul locatiei de stergere. Stiind acest numar,
putem nlocui al doilea element cu 0 (usureaz
a calculul sindromului), si vom ncerca
decodificarea lui v = 00 n cel mai apropiat cuvant - cod din A, stiind ca pozitia
erorii este X1 = .

154

PRELEGEREA 13. CODURI REED - SOLOMON

Teorema 13.10 Fie A un cod RS peste GF (2m ) de distanta d, si v un cuvant


receptionat care are s stergeri si t erori care nu sunt stergeri. Atunci v poate fi
decodificat corect daca 2t + s d 1.
Demonstratie: De remarcat ca n Teorema 3.7, o conditie mai slaba (t + s d 1)
asigura corectarea celor t erori, dar detecteaza numai celelalte s stersaturi. Aceasta
teorema realizeaza corectarea completa a cuvantului.
Fie B multimea pozitiilor stersaturilor si A multimea pozitiilor erorilor; deci
A
aturi. Definim B (X) =
Y\ B este multimea pozitiilor erorilor care nu sunt sters
(i + X) ca fiind polinomul de localizare a stersaturilor. Atunci polinomul de
iB

localizare a erorilor se poate scrie


A (X) = B (X)A\B (X).
Aflarea pozitiilor erorilor revine la determinarea radacinilor polinomului A\B (X).
Pentru aceasta se poate folosi algoritmul Peterson de decodificare a codurilor BCH,
cu cateva schimbari, corespunzatoare sindromurilor modificate.
Astfel, fie B (X) = B0 + B1 X + . . . + Bs1 X s1 + X s si A\B (X) = A0 + A1 X +
. . . + At1 X t1 + X t .
Similar algoritmului Peterson, vom nmulti ambii membrii ai egalitatii
B (X)A\B (X) = A (X) cu Yi Xij (m0 j m0 + d 2) (reamintim, Xi sunt
locatiile, iar Yi sunt valorile erorilor).
Apoi se nlocuieste X = Xi si se face suma dupa i = 1, . . . , t + s. Se obtine
0
0
0
Sj0 A0 + Sj+1
A1 + . . . + Sj+t1
At1 + Sj+t
= 0 (m0 j m0 + d 2)
(1)
0
unde Sk sunt sindromurile modificate, de forma
Sk0 = B0 Sk + B1 Sk+1 + . . . + Bs1 Sk+s1 + Sk+s .
(2)
Pentru ca se stiu valorile lui Sj pentru j = m0 , . . . , m0 +d2 iar B0 , B1 , . . . , Bs1
sunt cunoscute, se pot determina Sj0 pentru m0 j d 1 s. Deoarece 2t + s
d 1, deci 2t d 1 s, se poate rezolva sistemul (1) scris matricial

0
Sm
0
0
Sm0 +1

0
0
Sm
. . . Sm
0 +1
0 +t1
0
0
Sm0 +2 . . . Sm
0 +t
..
.

0
0
Sm
Sm
. . . Sm0 +2t1
0 +t1
0 +t

A0
A1
..
.
At1

0
Sm
0 +t
0
Sm0 +t+1
..
.

(3)

Sm0 +2t

cu t necunoscute A0 , A1 , . . . , At1 .
Dupa determinarea polinomului de localizare a erorilor, algoritmul Peterson se
poate aplica n continuare nemodificat.
2
Fie A un cod RS peste GF (2m ), de polinom generator g(X) = (m0 + X) . . .
(
+ X). Se transmite cuvantul - cod c si se receptioneaza v cu s stergeri
localizate n elementele multimii B = {X1 , . . . , Xs }. Fie B (X) = B0 + B1 X + . . . +
Bs1 X s1 + X s polinomul de localizare al stergerilor.
Polinomul de localizare a erorilor A (X) = A\B (X)B (X) poate fi determinat
afland A\B (X) = A0 + A1 X + . . . + At1 X t1 + X t astfel:
m0 +d2

(a) Se calculeaza Sj = v(j ) pentru j = m0 , m0 + 1, . . . , m0 + d 2;


(b) Se determina Sj0 (m0 j m0 + d 2 s) cu relatiile (2);
(c) Se rezolva sistemul liniar (3) de necunoscute Ai .

13.6. EXERCIT
II

155

Exemplul 13.13 Fie A codul RS peste GF (24 ) construit de 1 + X + X 4 , cu polinomul generator g(X) = (1 + X)( + X) . . . (4 + X) si A0 codul binar asociat n
care sunt codificate mesajele. S-a primit mesajul
v0 = 11101 11001 00101 00110 10010 0 . . . 0,
deci v = 10 02 06 14 0 . . . 0.
Singura stergere localizat
a este 1 , deci B (X) = + X.
Trebuie sa determinam polinomul de localizare a erorilor.
Din v(X) = 10 + 2 X 2 + 6 X 4 + 14 X 5 calcul
am sindromurile
5
3
S0 = , S1 = 0, S2 = , S3 = 4 , S4 = 3 .
Deoarece B0 = si s = 1, relatia de recurent
a pentru sindromurile modificate
0
este Sj = B0 Sj + Sj+1 = Sj + Sj+1 (0 j 3).
Se determina astfel S00 = 6 , S10 = 3 , S20 = 0, S30 = 11 .
Deoarece
d = 5! avem
t!= 2, deci !sistemul (3)este

!
0
0
S1
a0
6 3
A0
S0
S20
0
=
sau
=
S10 S 20
3 0
A1
S30
A1
11
cu solutia A0 = 8 , A1 = 11 . S-a obtinut polinomul A\B (X) = 8 +11 X +X 2 .
Deci,
A (X) = B (X)A\B (X) = (+X)(8 +11 X +X 2 ) = (+X)(3 +X)(5 +X).
Rezult
a ca erorile sunt localizate pe pozitiile X1 = , X2 = 3 , X3 = 5 .
Mai departe se lucreaz
a pentru determinarea valorilor erorilor, folosind sindromurile originale n
algoritmul
Peterson.
Trebuie
sistemul:

rezolvat

5
1 1 1
Y1

3
5

Y
=

2
0
2 6 10
Y3
3
cu solutia Y1 = 12 , Y2 = 1, Y3 = 3 .
Deci v(X) se decodific
a n c(X) = v(X)+e(X) = (10 +2 X 2 +6 X 4 +14 X 5 )+
(12 X + X 3 + 3 X 5 ), adica c = 10 12 2 16 10 . . . 0, sau - n A0 :
11101 11110 00101 10001 00110 10001 0 . . . 0.

13.6

Exercitii

13.1 Construiti matricea generatoare si listati toate cuvintele - cod ale codului RS
din Exemplul 13.2. Scrieti si forma binara a acestor cuvinte.
13.2 Fie codul definit de g(X) = (1+X)(+X)(2 +X)(3 +X), bazat pe extensia
Galois GF (23 ) generat
a de , rad
acin
a a polinomului 1 + X + X 3 .
1. Determinati n, k, d si numarul de cuvinte - cod.
2. Construiti o matrice generatoare si o matrice de control a codului.
3. Codificati mesajele de informatie
102 ,

111,

2 4 6 .

13.3 Construiti coduri RS cu urmatorii parametri:


(a) m = 2, d = 3, m0 = 2;

156

PRELEGEREA 13. CODURI REED - SOLOMON


(b) m = 3,
(c) m = 3,
(d) m = 4,
(e) m = 5,

d = 3,
d = 5,
d = 5,
d = 7,

m0 = 2;
m0 = 0;
m0 = 0;
m0 = 0.

13.4 Pentru fiecare cod determinat la exercitiul anterior determinati n, k si numarul de cuvinte - cod.
atati ca un (2m 1, k) - cod RS are 2mk cuvinte - cod.
13.5 Ar
13.6 Fie codul RS de polinom generator g(X) = (1 + X)( + X)(2 + X)(3 +
X)(4 + X)(5 + X) GF (24 )[X] unde este rad
acina polinomului 1 + X + X 4 .
Decodificati mesajele:
03 5 3 2 6 10 000000
14 2 00105 3 2 010
07 012 3 3 10000000
13.7 Fie codul RS generat de g(X) = ( + X)(2 + X)(3 + X)(4 + X) unde
GF (24 ) este rad
acina polinomului 1 + X + X 4 . Decodificati mesajele:
0018 005 00000000
010 06 13 08 11 3 5 00000
4 01002 5 12 al14 000000
13.8 Plec
and de la codul RS din exercitiul precedent, se formeaz
a codul scurt A(4)
de lungime n = 11 (si k = 7). Deecodificati mesajele:
0018 005 0000
010 06 13 08 11 3 5 0
4 01002 5 12 14 00
13.9 Ar
atati ca transformata Fourier finita A este inversabila.
13.10 Fiind dat GF (23 ) construit cu polinomul 1 + X + X 3 , gasiti matricea generatoare pentru un cod DMS de lungime 7 pentru spatiul functiilor definit pe
S = GF (23 ) \ {0}, cu baza:
(a) {X, X 2 , X 3 }
(b) {1, X, X 2 , X 3 , X 4 }
(c) {X, X 2 , X 3 }.
Ar
atati ca toate aceste coduri sunt ciclice. Determinati polinomul generator pentru fiecare cod.
13.11 Fiind dat GF (23 ) construit cu 1 + X + X 3 , determinati pentru fiecare G(X)
reprezentarea vg :
G(X) = X + X 3 ,
G(X) = 1 + X 2 + X 4 .
aceleasi conditii din exercitiul precedent, determinati G(X) stiind valorile
13.12 In
lui vg :
vg = 3 4 06 5 2
vg = 4 2 3 06 1.
13.13 Folosind codul definit n Exemplul 13.13, decodificati mesajele:
11101 11110 11010 00111 11110 10100 10110 10100 0 . . . 0
11000 00000 01010 11111 11011 00000 10001 00101 0 . . . 0
00000 10000 10000 10000 00101 10100 11101 0 . . . 0.

Bibliografie
[1] J. Adamek - Foundations of Coding, Wiley - Interscience, 1991;
[2] C. Carlet - Codes de Reed - Muller; Codes de Kerdok et de Preparata (teza de
doctorat), PARIS VI, 1990;
[3] G. Cullmann - Coduri detectoare si corectoare de erori, Editura Tehnica, 1972;
[4] S. Guiasu - Teoria Codurilor, Tipografia Universitatii Bucuresti, 1976;
[5] D.G. Hoffman, D.A. Leonard, C.C. Lindner, K.T. Phelps, C.A. Rodger, J.R.
Wall - Coding Theory; The Essentials, Marcel Dekker, Inc, 1991;
[6] A.M.Kerdok - A class of low-rate non linear codes, Information and control, 20
(1972), 182-187;
[7] J.H. van Lindt - Coding Theory, Springer Verlag, 1971;
[8] J.H. van Lindt - Introduction to Coding Theory, Springer Verlag, 1982;

157

Prelegerea 14
Alte clase de coduri ciclice
14.1

Coduri Hamming ciclice

Sa consideram spatiul nul al matricii


H = (1 2 . . . n1 )
unde GF (2p ) este primitiv, deci n = ord() = 2p 1.
Cum poate fi considerat ca un vector coloana cu p componente, H este o
matrice p 2p n care toate coloanele sunt distincte. Acesta este dupa cum se stie
(Prelegerea 4) un cod Hamming (2p 1, 2p p 1) - construit nsa ca un cod ciclic.
Exemplul 14.1 Fie GF (23 ), rad
acin
a a polinomului ireductibil 1 + X + X 3 .
Se verifica imediat ca ord() =
7, deci este primitiv. Construim matricea
1 0 0 1 0 1 1

H = (1 2 3 4 5 6 ) = 0 1 0 1 1 1 0
0 0 1 0 1 1 1
Ea este matricea de control pentru un (7, 4) - cod Hamming.
Deci codul studiat n Exemplul 4.1 (Prelegerea 4) poate fi tratat si ca un cod ciclic
de polinom generator h(X) = 1 + X + X 3 .
Un cod Hamming ciclic se defineste cerand ca orice polinom - cod {f (X)} sa admita
ca radacina pe GF (2p ) primitiv. Generatorul unui asemenea cod este chiar
polinomul minimal al lui : g(X) = m(X).
Deoarece si 2 este radacina a polinoamelor - cod (Teorema 11.9), codul Hamming ciclic este un caz particular de cod BCH cu d = 3, capabil sa corecteze o
eroare.
Codificarea se face folosind circuitul liniar cu p = nk elemente de nmagazinare
(vezi paragraful 9.4.2, Prelegerea 9), corespunzator polinomului minimal m(X). Calculul sindromului cuvantului receptionat {r(X)} - adica rH T = r() se realizeaza
folosind acelasi circuit de mpartire cu m(X). Acest sindrom - n cazul n care este
nenul, deci a intervenit o eroare simpla - este una din coloanele matricii H, adica
una din valorile 1, , 2 , . . . , n1 .
Pentru a afla care componenta a fost afectata de eroare, se poate folosi acelasi
circuit n felul urmator: neglijam intrarea si lasam circuitul sa functioneze, avand
initial n elementele de nmagazinare sindromul r(), care este de forma
157

158

PRELEGEREA 14. ALTE CLASE DE CODURI CICLICE

j (0 < j 2p 2).
La fiecare tact circuitul nmulteste continutul elementelor de nmagazinare cu ;
deci, dupa n j = 2p 1 j momente, n elementele de nmagazinare se obtine
p 1j+j

= 2

p 1

= n = 0 = 1 = (1, 0, . . . , 0).

Cum componentele cuvantului receptionat sunt scrise n ordinea descrescatoare a


puterilor (prima componenta este coeficientul termenului de rang maxim), nseamna ca va trebui sa corectam componenta n j din cuvant, nlocuind 0 cu 1 sau 1 cu
0.
Exemplul 14.2 Fie GF (24 ), rad
acin
a a polinomului 1 + X + X 4 . Codul
Hamming (15, 11) obtinut folosind ca rad
acin
a pe - deci polinom generator
4
g(X) = 1 + X + X , are matricea de control

H = (1 . . . 14 ) =

1
0
0
0

0
1
0
0

0
0
1
0

0
0
0
1

1
1
0
0

0
1
1
0

0
0
1
1

1
1
0
1

1
0
1
0

0
1
0
1

1
1
1
0

0
1
1
1

1
1
1
1

1
0
1
1

1
0
0
1

Circuitul care realizeaz


a (n functie de necesit
ati) codificarea, calculul sindromului si
corectarea erorilor simple este:

?
Intrare 2 - +j

Z
}
Z

r
?
- +j
-

Intrare 1

6
- +j

*?6
-
r

Codificarea se obtine introduc


and la Intrarea 1 mesajul de informatie de lungime k,
mesaj considerat ca un polinom de gradul n 1 cu primii coeficienti (corespunz
atori
termenilor de rang mare) elementele mesajului informational si cu ultimii n k
coeficienti nuli.
La momentul initial n elementele de nmagazinare se afl
a numai 0, circuitul
feedback este nchis, iar circuitul spre canal este deschis. De asemenea, Intrarea 2
este ignorat
a.
Simultan cu transmiterea pe canal, elementele de informatie se introduc si n
circuitul liniar. Dupa k momente, aici se afla pozitiile de control.
acest moment se decupleaza feedback-ul, se cupleaz
In
a leg
atura spre canal si se
ignor
a cele doua intrari. Timp de n k tacti elementele de control nmagazinate
sunt trimise pe canal, imediat dupa mesajul de informatie.
Pentru calculul sindromului: se neglijeaz
a canalul, se nchide feedback-ul, iar n
elementele de nmagazinare se gaseste initial (0, 0, . . . , 0). Cuvantul receptionat este
introdus prin Intrarea 2. Dupa n tacti, aici se va gasi r().
Pentru corectarea erorii: se neglijeaz
a cele doua intrari, se nchide feedback-ul si
se lasa sa functioneze circuitul pan
a cand n elementele de nmagazinare se obtine
vectorul (1, 0, . . . , 0). Numarul de tacti scursi da indicele componentei din mesajul
receptionat, care trebuie corectat
a prin complementare.

14.1. CODURI HAMMING CICLICE

159

Sa consideram spatiul nul al matricii

H=

1 2 . . . 2 2
1 1 1 ...
1

unde GF (2p ) este primitiv. H are p + 1 linii si n = 2p 1 coloane (pe prima


coloana, primele p pozitii formeaza vectorul 1 = 0 , iar pe a p + 1-a pozitie se afla
scalarul 1 Z2 ). Codul obtinut este codul Hamming extins (Definitia 3.1), capabil
sa corecteze o eroare si sa detecteze doua erori.
Un asemenea cod se poate defini cerand ca orice cuvant - cod {f (X)} sa aiba
ca radacini si 1. Generatorul unui astfel de cod ciclic este g(X) = (1 + X)m(X),
unde m(X) este polinomul minimal al lui .
Codificarea n acest caz se face - ca mai sus - folosind circuitul cu n k + 1 =
p + 1 elemente de nmagazinare. Pentru calculul sindromului cuvantului receptionat
{r(X)} se folosesc nsa practic doua circuite: unul de mpartire la m(X) (pentru calculul lui r()) si altul de mpartire la 1+X (pentru r(1)). Discutia este urmatoarea:
Daca r() = r(1) = 0, atunci nu a intervenit nici o eroare (sau avem o eroare
nedetectabila);
Daca r() 6= 0, r(1) 6= 0, avem o eroare simpla care se corecteaza cu circuitul
de mpartire cu m(X), dupa procedeul descris n Exemplul 14.2;
Daca r() 6= 0, r(1) = 0, atunci au fost detectate doua erori.
Exemplul 14.3 Sa extindem codul Hamming din Exemplul 14.2. Vom avea polinomul generator
g(X) = (1 + X)(1 + X + X 4 ) = 1 + X 2 + X 4 + X 5
Circuitul liniar care codific
a mesajele de informatie (de lungime k = 10) este:

?
-

r
?

- +

r
?

-+

Q
kQ

-+

*
? 6
-
r
-

Sindromul se calculeaz
a cu ajutorul circuitului liniar corespunz
ator polinomului
4
m(X) = 1 + X + X :

?
- +j 6

r
?
- +j -

iar r(1) se obtine din circuitul de mp


artire la 1 + X:

?
- +j -

6
-

Circuitul liniar construit pentru m(X) face si corectarea erorilor simple.

160

14.2

PRELEGEREA 14. ALTE CLASE DE CODURI CICLICE

Coduri Hamming ciclice nebinare

Am studiat codurile Hamming atat sub forma liniara, cat si ca un caz particular
de coduri Reed - Muller sau coduri ciclice. In aceasta ultima situatie, ele se pot
implementa cu ajutorul circuitelor liniare si - fapt important - admit o varianta de
generalizare naturala la cazul nebinar.
Definitia 14.1 Fie GF (q p ) un element primitiv. Se defineste codul Hamming
ciclic nebinar A astfel:
{f (X)} A

f (X) are rad


acina = q1

sau - echivalent - A are matricea de control H = (1 2 . . . n1 ) unde n = ord().


Din

qp 1

qp 1
.
q1
Se observa imediat ca H are un numar maxim de coloane distincte si nenule.
n = 1 = ()q

Propozitia 14.1

p 1

= q1

q1

rezulta n =

(n, q 1) = 1 dac
a si numai daca (p, q 1) = 1

Demonstratie: Din q 1|q j 1 rezulta q j = (q 1)sj + 1. Deci


qp 1
n=
= q p1 + q p2 + . . . + q + 1 = (q 1)(sp + sp1 + . . . + s1 ) + p
q1
si atunci
(p, q 1) = 1 (n, q 1) = 1.

Teorema 14.1 Spatiul nul al matricii H = (1 2 . . . n1 ) unde = q1 ,


qp 1
n=
si GF (q p ) primitiv, are distanta minima d 3 dac
a si numai daca
q1
(n, q 1) = 1.
Demonstratie: : Sa presupunem ca exista doua coloane liniar dependente n
matricea H. Deci i = a j cu a Zq , adica ij = a.
Elementele nenule din Zq sunt radacinile ecuatiei X q1 1 = 0 (Teorema 11.3).
Mai mult, ele sunt chiar primele q 1 puteri ale lui n . Intr-adevar, pentru orice
s = 0, 1, . . . , q 2 avem
m s
(ns )q1 = q 1 = 1s = 1.
Deci pentru a Zq avem a = ns . Se poate scrie atunci ij = ns , adica
(ij)(q1) = ns (i j)(q 1) = ns.
Dar s < q 1 iar (n, q 1) = 1, deci i = j, de unde rezulta a = 1, i = j .
Orice doua coloane din H sunt liniar independente, adica (Teorema 2.4) d 3.
: Daca q 1 si n nu sunt prime ntre ele, atunci ecuatia anterioara admite
si solutia i 6= j; deci exista doua coloane distincte liniar dependente i si j n
matricea H, ceea ce contrazice faptul ca d 3.
2
Pentru operatia de codificare se foloseste circuitul de mpartire cu polimul minimal m(X) al lui (care aici este chiar polinomul generator al codului Hamming ciclic
A). Acelasi circuit va calcula sindromul r() al polinomului receptionat {r(X)}.

14.2. CODURI HAMMING CICLICE NEBINARE

161

In cazul n care a intervenit o eroare, r() este de forma b j (eroarea b a aparut


pe pozitia j ). Functionarea secventiala a circuitului liniar (fara intrari) revine la
nmultirea succesiva cu . Deci, dupa n j tacti, n elementele de nmagazinare se
obtine vectorul (b 0 . . . 0). Atunci, din componenta n j a cuvantului receptionat
se va scadea eroarea b. De observat ca - deoarece coloanele lui H sunt nenule
si distincte - primul tact n care se obtine un vector cu toate componentele nule
nafara de prima, este n j.
Exemplul 14.4 Sa consider
am p = q = 3 (astfel, (m, q 1) = 1). Folosind
r
ad
acina a polinomului primitiv 1 + 2X + X 3 vom genera extensia GF (33 ). Fie
3
= q1 = 2 . Deoarece 3 1 = 26 = 1, avem ord() = 13, deci n = 13. Pentru
a construi polinomul minimal m(X) al lui , sa observam (Sectiunea 11.3) ca el are
ca rad
acini 2 , 6 si 18 (54 = 2 ). Deci m(X) = a + bX + cX 2 + X 3 . Punand
conditia m(2 ) = a + b2 + c4 + 6 = 0, obtinem ecuatia matriciala:

1
0
0
1
0

a 0 + b 0 + c 2 + 1 = 0
0
1
1
1
0
cu solutia a = 2, b = c = 1. Deci m(X) = 2 + X + X 2 + X 3 .
Codul ciclic de polinom generator g(X) = m(X) = 2 + X + X 2 + X 3 are matricea
de control

1 0 0 1 2 0 2 0 1 1 1 2 1

H = (1 2 4 . . . 24 ) = 0 0 2 1 0 1 0 2 2 2 1 2 1
0 1 1 1 2 1 1 0 0 1 2 0 2
Am definit astfel (13, 10) - codul Hamming ternar, evocat n Exemplul 4.5 relativ
la Problema Pronosportului.
S
a consider
am mesajul de informatie 0120120120. Pentru operatia de codificare
se va folosi circuitul (pentru detalii, a se revedea sectiunea 9.4.2):

?
-

r
?
2j
?
- +j -

r
?
2j
?
- +j -

6
- +j
6
r

0210210210

primii 10 tacti de functionare, bitii de


(s-a tinut cont ca 1 = 2, 2 = 1). In
informatie sunt trimisi pe canal si - simultan - intra n circuitul liniar, a carui
functionare este (pe prima coloan
a se afla informatia, iar pe celelalte trei - continutul
elementelor de nmagazinare):
0
1
2
0
1

0
1
1
1
0

0
2
0
0
1

0
2
1
2
0

2
0
1
2
0

2
2
0
2
0

1
0
2
1
2

2
2
0
0
1

162

PRELEGEREA 14. ALTE CLASE DE CODURI CICLICE

elementele de nmagazinare au ramas caracterele de control 021. Ele sunt trimise


In
prin canal la tactii 11 13 de la dreapta spre stanga, cu semn schimbat: n ordine
1 = 2, 2 = 1, 0 = 0. Deci cuvantul - cod transmis a fost a = 0120120120210.
Se verifica imediat ca aH T = 0.
La receptie, primele 10 caractere sunt cele de informatie. Pentru a verifica daca
au aparut sau nu erori, se foloseste acelasi circuit, dar cu alta intrare:

0120210210210

r
?
2j
?
- +j -

?
- +j
-

r
?
2j
?
- +j -

6
-

Functionarea acestui circuit liniar timp de 13 tacti, este data de tabelul:


0
1
2
0
1
2

0
0
1
2
0
2
0

0
0
0
1
2
2
1

0
0
0
0
1
1
1

0
1
2
0
2
1
0

1
1
1
2
2
0
0

2
1
2
2
2
0
0

0
2
2
0
2
0
0

Sindromul a(2 ) obtinut este 000, deci nu a aparut nici o eroare. Daca s-ar fi
receptionat ns
a cuvantul a0 = 0120120100210, dupa functionarea circuitului timp
de 13 tacti s-ar fi ajuns n elementele de nmagazinare la 220. Cum acesta este
nenul, circuitul se lasa sa functioneze n continuare, far
a intrare, pan
a se ajunge
la un sindrom de forma b00 cu b 6= 0. Mai exact, functionarea circuitului va fi (pe
prima coloan
a se numar
a tactii):
0
1
2
3
4

2
0
2
0
1

2
2
1
2
2

0
2
0
1
1

5
6
7
8
9

1
1
2
1
1

0
0
2
1
0

1
2
1
1
0

Deci, dupa 9 tacti s-a ajuns la 100. Corectia se face astfel: din componenta a 9 - a
a cuvantului receptionat se scade b = 1, obtin
andu-se 0 1 = 2 (mod 3).
Observatie: Definitia codurilor Hamming ciclice nebinare nu este echivalenta cu cea a
codurilor Hamming nebinare data n Sectiunea 4.1.1. De exemplu, codul de matrice
de control

!
1 0 1 2
H=
0 1 2 2
este un (4, 2) - cod Hamming ternar. El contine 9 cuvinte
(0000, 1101, 2202, 0211, 1012, 2110, 0122, 1222, 2021),
care - evident - nu formeaza un cod ciclic.
Deci ntre cele doua definitii ale codurilor Hamming nebinare (liniare si ciclice)
exista doar o relatie de incluziune stricta.

14.3. CODURI GOPPA

14.3

163

Coduri Goppa

Aceasta clasa de coduri a fost introdusa de Goppa n 1970. Desi coduri neciclice,
ele constituie o generalizare a codurilor BCH si sunt o punte ntre teoria codurilor
si criptografie. Din acest motive, prezentarea lor este necesara.
Fie q un numar prim si g(X) Zq [X]. Daca a Zq este un element cu proprietatea g(a) 6= 0, vom nota
g(X) g(a)
1
=
g(a)1
X a
X a
algebra polinoamelor din Zq [X] modulo g(X), polinomul
Propozitia 14.2 In
1
este inversul lui X a.
X a
1
Demonstratie: Faptul ca
este polinom se verifica imediat. Pe de-alta parte,
X a
1
(X a)
= [g(a) g(X)]g(a)1 = 1 g(a)1 g(X) 1 (mod g(X))
2
X a
Definitia 14.2 Un cod Goppa de lungime n peste Zq este determinat prin:
1. Un polinom g(X) peste o extensie Galois F a lui Zq , grad(g(X)) 2;
2. a1 , a2 , . . . , an F cu g(ai ) 6= 0, 1 i n.
Codul contine toate cuvintele v = v1 v2 . . . vn

Zqn

pentru care

n
X

vi
= 0.
i=1 X ai

Teorema 14.2 Codul Goppa contine numai cuvintele v = v1 v2 . . . vn pentru care


n
X

vi g(ai )1 asi = 0,

s = 0, 1, . . . , t 1

i=1

unde t = grad(g(X)).
1
. Daca g(X) = g0 + g1 X + . . . +
X a
t
gt X (gt 6= 0), atunci pentru orice a Zq cu g(a) 6= 0, are loc descompunerea
g(X) g(a)
= gt X t1 + (agt + gt1 )X t2 + (a2 gt + agt1 + gt2 )X t3 + . . . +
X a
(at1 gt + at2 gt1 + . . . + g1 ).
t
X
1
1
k1
Deci coeficientul lui X
(1 k t) n polinomul
este g(a)
atj gj .
X a
j=k
n
X
vi
Ecuatia caracteristica a codurilor Goppa
= 0 implica faptul ca toti
i=1 X ai
coeficientii lui X k1 , k = 1, . . . , t sunt nuli. Deci
Demonstratie: Sa explicitam polinomul

n
X
i=1

vi g(ai )1

t
X
j=k

atj gj = 0,

1 k t.

164

PRELEGEREA 14. ALTE CLASE DE CODURI CICLICE

Cazul k = t conduce la
n
X

gt

n
X

vi g(ai )1 = 0

si - deoarece gt 6= 0 - se obtine

i=1

vi g(ai )1 = 0.

i=1

Din cazul k = t 1 se obtine gt

n
X

vi g(ai )1 ai + gt1

i=1

suma este zero, iar gt 6= 0, va rezulta

n
X

n
X

vi g(ai )1 = 0. Cum a doua

i=1

vi g(ai )1 ai = 0, s.a.m.d.

i=1

Am obtinut echivalenta
n
X

vi
=0
i=1 X ai

n
X

vi g(ai )1 asi = 0, 0 s t 1

i=1

2
Corolarul 14.1 Codul Goppa determinat de un polinom g(X) de gradul t are matricea de control

1
1
1
1
.
.
.
g(a
)
g(a
)
g(a
)
g(a
)
n
2
3
a11

a2
a3
an

g(a1 ) g(a2 ) g(a3 ) . . . g(an )

.
H=
..

at1
2
g(a2 )

at1
g(a1 )

at1
3
g(a3 )

at1
n
g(an )

...

Demonstratie: Este lasata ca exercitiu.


acin
aa
Exemplul 14.5 Polinomul 1 + X + X 3 Z2 [X] este ireductibil. Fie o rad
3
sa, cu ajutorul careia se genereaz
a extensia GF (2 ). Daca alegem g(X) = 1+X +X 2
si drept elemente ai cele 8 componente ale lui GF (23 ), vom obtine un cod Goppa de
lungime 8 cu matricea de control

H=

1
g(0)

1
g(1)
1
g(1)

1
g()

g()

1
g(6 )
6
g(6 )

...
...

1
0
0
0
0
0

1
0
0
1
0
0

0
0
1
1
1
0

0
1
1
1
0
1

0
0
1
1
1
1

1 1 2 4 2 4
0 1 3 6 5 5 6 3
0
1
0
1
1
1

0
1
0
1
0
1

0
1
1
1
1
0

Acest cod este format din numai patru cuvinte:


00000000,

00111111,

11001011,

11110100.

El are distanta minima 5; s-a obtinut deci un (8, 2) - cod binar corector de doua
erori. De remarcat ca acesta nu este un cod ciclic.
Observatie: Sa consideram un cod BCH definit prin radacinile
m0 , m0 +1 , . . . , m0 +d2
unde GF (q m ) are ordinul n. Acest cod se poate scrie ca un cod Goppa astfel: Se

14.3. CODURI GOPPA

165

ia polinomul g(X) = X m0 +d2 si elementele 0 , 1 , . . . , (n1) . Vom avea pentru


orice i = 0, 1, . . . , d 2 si k = 0, 1, . . . , n 1:
(k )i
= (k )m0 +d2i = (m0 +d2i )k
(k )m0 +d2
Pe baza aceasta, codul Goppa rezultat are matricea de control

1 m0 +d2 (m0 +d2 )2 . . . (m0 +d2 )n1

m +d3
(m0 +d3 )2 . . . (m0 +d3 )n1
1 0
H=
..

.
1

m0

(m0 )2

...

(m0 )n1

care coincide cu matricea de control a codului BCH considerat, n care s-a efectuat
o inversare a liniilor.
Se poate arata (Van Lint) ca singurele coduri Goppa ciclice sunt codurile BCH.
Propozitia 14.3 Codul Goppa binar de lungime n, determinat de un polinom de
grad t peste GF (2m ) are k n mt simboluri de informatie si distanta minima
t + 1.
Demonstratie: Matricea de control a codului Goppa are t linii n GF (2m ), deci mt
linii scrise n binar. Rezulta ca numarul n k de simboluri de control este cel mult
mt : n k mt.
Pe de-alta parte, se arata usor ca orice combinatie liniara de t coloane din H
este liniar independenta.
2
Definitia 14.3 Fie g(X) un polinom ireductibil peste GF (q m ). Codul Goppa determinat de g(X) si de toate elementele lui GF (q m ) se numeste ireductibil.
Codul prezentat n Exemplul 14.5 este un cod ireductibil. Despre codurile Goppa
ireductibile se poate prezenta urmatorul rezultat:
Teorema 14.3 Un cod Goppa binar ireductibil, determinat de un polinom de gradul
t poate corecta cel putin t erori independente.
Pentru demonstratie va trebui sa facem o constructie suplimentara.
Definitia 14.4 Derivata formala a polinomului a(X) = a0 + a1 X + . . . + an X n este
definit
a prin a0 (X) = a1 + 2a2 X + 3a3 X 2 + . . . + nan X n1 .
Lema 14.1 Pentru derivata formala sunt adevarate egalit
atile:
1. (a(X) + b(X))0 = a0 (X) + b0 (X);
2. (a(X)b(X))0 = a0 (X)b(X) + a(X)b0 (X)
Demonstratie: Exercitiu.

Lema 14.2 Intr-un


corp de caracteristic
a 2 derivata formala a unui polinom este
un patrat perfect.

166

PRELEGEREA 14. ALTE CLASE DE CODURI CICLICE

Demonstratie: Deoarece (X n )0 = nX n1 = 0 pentru n par, derivata va avea numai


puteri pare. Cum fiecare coeficient se poate scrie ca un patrat perfect (se lucreaza
ntr-un corp de caracteristica 2), avem f 0 (X) = f02 + f22 X 2 + f42 X 4 + . . . si, daca se
ia g(X) = f0 + f2 X + f4 X 2 + . . ., avem f 0 (X) = g 2 (X).
2
Sa revenim acum la Demonstratia Teoremei 14.3: Fie g(X) un polinom ireductibil de grad t peste GF (2m ) = {a1 , a2 , . . . , an } (n = 2m ) si v = v1 v2 . . . vn
un cuvant al codului Goppa, w(v) = s. Notam vi1 , vi2 , . . . , vis bitii egali cu 1 din
n
s
X
X
vi
1
v. Deoarece v este cuvant - cod, avem
=
= 0. Polinoi=1 X ai
k=1 X aik
mul f (X) = (X ai1 )(X ai2 ) . . . (X ais ) nu este divizibil cu g(X) (deoarece
g(X) este ireductibil de grad t 2). Rezulta ca, n algebra claselor de resturi
Z2 [X]/g(X), f () 6= 0 deci admite invers. Rezulta ca exista un polinom r(X) cu
{f ()}{r()} = 1.
s
X
f (X)
Sa calculam derivata formala f 0 (X) =
. Facand X = si nmultind
k=1 X aik
relatia cu r(), obtinem
s
s
X
1
{f ()}{r()} X
=
= 0 (mod g(X)).
{f 0 ()}{r()} =
aik
k=1 aik
k=1
Aceasta nseamna ca f 0 (X)r(X) este divizibil cu g(X). Cum g(X) este ireductibil
si nu divide r(X) (deoarece r() 6= 0), rezulta g(X)|f 0 (X).
Deoarece suntem ntr-un corp de caracteristica 2, conform Lemei 14.2 derivata
formala este un patrat perfect: f 0 (X) = b2 (X). Din faptul ca g(X) este divizor
ireductibil al lui b2 (X) rezulta g(X)|b(X). Deci g 2 (X)|b2 (X) = f 0 (X).
Se stie ca grad(f 0 (X)) = s 1 si s 1; deci grad(f 0 (X)) grad(g 2 (X)), adica
s 1 2t.
Cum ponderea oricarui cuvant - cod este 2t + 1, rezulta ca distanta minima a
codului este cel putin 2t + 1, deci codul corecteaza sigur t erori independente.
2
Exemplul 14.6 Sa consider
am GF (23 ) generat de o rad
acin
a a lui g(X) = 1 +
3
X + X . Deoarece g(X) are 3 rad
acini n GF (23 ), el nu va avea nici o rad
acin
a
5
5
3
n corpul GF (2 ) (GF (2 ) nu este o extensie a lui GF (2 )), deci aici g(X) este
ireductibil.
Codul Goppa ireductibil corespunz
ator are n = 32, k 32 5 3 = 17, d 7;
deci este un (32, 17) - cod corector de 3 erori.
Decodificarea codurilor Goppa se face n maniera similara decodificarii codurilor
BCH. Astfel, fie C un cod Goppa definit de g(X) Zq [X] (grad(g(X)) = t),
si a1 , . . . , an GF (q m ); consideram v = v0 v1 . . . vn1 un cuvant - cod si r =
r0 r1 . . . rn1 cuvantul receptionat dupa transmiterea lui v.
Vom nota cu e = r v = e0 e1 . . . en1 secventa - eroare.
Pentru w(e) t/2 se poate folosi un algoritm din cei uzuali. In practica nsa
t = grad(g(X)) este mare si exista algoritmi eficienti de decodificare pentru cazul
w(e) < t/2. Un astfel de algoritm vom construi mai jos.
Fie M = {i|ei 6= 0}, card(M ) = e < t/2; consideram polinomul sindrom
n1
X
ei
(mod g(X)).
{s(X)} =
i=0 X ai

14.4. EXERCIT
II

167

De remarcat ca {s(X)} se poate determina prin calcul la primirea cuvantului r.


Se definesc polinoamele (X) (de localizare a erorii) si (X) prin
(X) =

Y
iM

(X ai ),

(X) =

X
iM

ei

(X aj ).

jM \{i}

Din definitie rezulta ca (X) si (X) sunt prime ntre ele. In plus, grad((X)) =
e, grad((X)) < e. Intre ele exista relatia
n1
X
Y
ei
{s(X)}{(X)} =
(X ai ) {(X)} (mod g(X)).
(1)
i=0 X ai iM
(X) si (X) sunt polinoamele normate de grad minim care verifica relatiile de
sus. Intr-adevar, sa presupunem ca exista 1 (X) un polinom nenul normat de grad
< e si 1 (X) polinomul corespunzator, astfel ca
{s(X)}{1 (X)} {1 (X)} (mod g(X))
Fie d(X) = cmmdc(s(X), g(X)). Din relatiile
s(X)(X) = a(X)g(X) + (X), s(X)1 (X) = b(X)g(X) + 1 (X),
rezulta ca d(X) va( divide)si polinoamele
) 1 (X). Deci,
( (X),
s(X)
(X)
{(X)}
0,
d(X) )
d(X) )
(
!
(

s(X)
1 (X)
g(X)
{1 (X)}
0
mod
d(X)
d(X)
d(X)
sau
)
(
s(X) {1 (X)(X) (X)1 (X)}
0 (mod g(X)).
d(X)
{d(X)}
Deci {1 (X)(X) (X)1 (X)} 0 (mod g(X)). Deoarece polinomul din membrul stang are grad mai mic decat t, rezulta ca membrul stang este 0. Apoi,
cum cmmdc((X), (X)) = 1, deducem (X)|1 (X) ceea ce contrazice faptul
ca grad(1 (X)) < grad((X)) si {1 (X)} 6 0.
Rezumand, procedeul de decodificare a mesajelor la codurile Goppa are loc astfel:
1. Din mesajul receptionat r se calculeaza sindromul s(X);
2. Se determina polinomul normat (X) de grad minim < t/2 care verifica
relatia (1) (un algoritm eficient a fost dat de Berlekamp).
Din rezolvarea ecuatiei (X) = 0 se afla locatiile erorilor;
Y
3. Se determina ei (i M ) din relatiile (ai ) = ei
(ai aj ).
jM \{i}

Pe baza acestor valori se construieste secventa - eroare e;


4. Cuvantul decodificat este v = r e.

14.4

Exercitii

a matricea generatoare a (13, 10) - codului Hamming ternar


14.1 Sa se construiasc
din Exemplul 14.4.

168

PRELEGEREA 14. ALTE CLASE DE CODURI CICLICE

codul din Exemplul 14.4 sa se codifice mesajele de informatie:


14.2 In
(a) 1122002211
(b) 0000111122
(c) 1020012210
(d) 2200211101
(e) 2222222222
(f ) 0000000000
14.3 Sa se construiasc
a toate codurile Hamming peste Z3 si Z5 .
14.4 Demonstrati Corolarul 14.1
14.5 Demontrati Lema 14.1
14.6 Pentru g(X) = X 2t ar
atati ca

2t
X
1
=
aj X j1 .
X a j=1

14.7 Gasiti distanta minima a codului binar Goppa determinat de g(X) = 1 + X 2


si de elementele 0, , 2 GF (22 ).
14.8 Gasiti o matrice de control a (16, 8) - codului Goppa binar ireductibil dat de
g(X) = 3 + X + X 2 , unde GF (24 ) este primitiv.
14.9 Polinomul generator este g(X) = 1 + X 2 iar parametrii sunt cele 15 elemente
nenule ale extensiei GF (24 ) generat
a de rad
acina polinomului 1 + X + X 4 . Analizati
codul Goppa binar astfel construit.
14.10 S
a se construiasc
a codul Goppa ireductibil peste GF (24 ), cu g(X) = 1 + X +
3
X . Sa se determine matricea de control si matricea generatoare.
Care este distanta minima a codului ?
14.11 Folosind codul construit anterior, sa se decodifice (folosind algoritmi de coduri liniare) cuvintele:
0110110010011110 0111011001000000 1011110101100100
1111111111111111 1011011111001011 1010010110000010
14.12 Pentru acelasi cod Goppa binar ireductibil, sa se decodifice cuvintele
0101100101111001 1100101100110100 0001100010010110
folosind algoritmul rapid specific.
14.13 Verificati ca polinomul 1 + X + X 2 este ireductibil n GF (25 ). Determinati
parametrii si matricea de control a codului Goppa ireductibil corespunz
ator.

Prelegerea 15
Coduri Preparata
In 1968 Preparata a introdus o clasa de coduri neliniare corectoare de doua erori, care
s-au dovedit foarte interesante prin proprietatile si prin legaturile pe care le au cu
diverse alte coduri deja studiate. Ele sunt o combinatie ntre codurile Reed - Muller
si codurile BCH corectoare de doua erori. Definitia pe care o vom folosi apartine lui
Baker si permite o abordare mai simpla a algoritmilor de codificare/decodificare.

15.1

Definirea codurilor Preparata extinse

Sa revenim la modalitatea de marcare a pozitiilor cuvintelor de lungime 2r folosind


elementele lui GF (2r ), asa cum s-a definit n algoritmul de decodificare Peterson
pentru codurile BCH. Deci:
Fie r 2 un numar ntreg, GF (2r ) primitiv, si U GF (2r ); se noteaza
(U ) cuvantul de lungime 2r definit prin
1 pe pozitia i daca i U (0 i 2r 2),
1 pe pozitia 2r 1 daca 0 U ,
0 n rest.
Exemplul 15.1 Fie GF (23 ) primitiv. Atunci
({0}) = 00000001
({ , 5 , 6 }) = 00100110
() = 00000000.
2

Se definesc n mod natural operatiile:


U + = {u + |u U }, U = {u|u U },
U V = {u|u U V, u 6 U V }, U, V GF (2r ), GF (2r ).
Se verifica usor relatiile
(U ) + (V ) = (U V ), w((U )) = card(U ).

(1)

Exemplul 15.2 Fie GF (23 ) construit folosind rad


acina (primitiva) a polinomului 1 + X + X 3 , si multimile U = {2 , 5 , 6 }, V = {5 , 0}. Atunci
U + 2 = {2 + 2 , 5 + 2 , 6 + 2 } = {0, 3 , 0 },
2 U = {2 2 , 2 5 , 2 6 } = {4 , 0 , },
(U ) + (V ) = 00100110 + 00000101 = 00100011 = ({2 , 6 , 0}) = (U V ).
169

170

PRELEGEREA 15. CODURI PREPARATA

Definitia 15.1 Fie r > 2 un numar impar. Codul extins Preparata P (r) este multimea cuvintelor de forma (U )(V ) unde U, V GF (2r ) verifica conditiile
1. card(U ), card(V ) sunt numere pare;
2.

X
uU

3.

u=

v;

vV

u +

uU

X
uU

!3

v3.

vV

Pentru usurinta vom nota cuvintele - cod cu [(U ), (V )] (vezi si codul Golay).
ipotezele din Exemplul 15.2, sa consider
Exemplul 15.3 In
am U = {, 2 , 5 , 0},
V = {0 , , 2 , 3 , 6 , 0}. Prima conditie din definitie este verificat
a. Pentru a
douaXconditie avem:
u = + 2 + 5 + 0 = 010 + 001 + 111 + 000 = 100 = 0 ,
uU
X

v = 0 + + 2 + 3 + 6 + 0 = 100 + 010 + 001 + 110 + 101 + 000 = 100 = 0 .

vV

A
si ea verificat
a deoarece
Xtreia conditie este
u3 = 3 + 6 + + 0 = 110 + 101 + 010 + 000 = 001 = 2 ,
uU
X

v 3 = 0 +3 +6 +2 +4 +0 = 100+110+101+001+011+000 = 101 = 6

vV

si 2 + (0 )3 = 6 .
Deci [(U ), (V )] = 01100101 11110011 este cuvant - cod n P (3).
Observatii:
Deoarece card((U )) = card((V )) = 2r , P (r) este un cod de lungime 2r+1 .
Faptul ca 0 este sau nu un element al multimilor U sau V nu afecteaza cu
nimic conditiile 2 si 3 din Definitia 15.1. Acest element se introduce n cele
doua multimi numai pentru a asigura prima conditie din definitie. Rezulta
ca bitii de pe pozitia 2r 1 din (U ) si (V ) sunt biti de paritate (ceea ce
justifica termenul de cod Preparata extins).
Exponentul 0 30 din Definitia 15.1 nu este esential. Daca el se nlocuieste cu
s = 2t + 1 astfel ca aplicatiile f, g : GF (2r ) GF (2r ), f (x) = xs , g(x) =
xs2 sa fie bijective, toate proprietatile se pastreaza.
Aceste coduri se numesc Coduri Preparata generalizate.
Lema 15.1 Fie [(U ), (V )], [(A), (B)] P (r) si =
Atunci [(U A + ), (V B)] P (r).

u.

uU

Demonstratie: Vom arata ca noul cuvant construit verifica conditiile din Definitia
15.1.

15.1. DEFINIREA CODURILOR PREPARATA EXTINSE

171

1. Deoarece card(U ), card(V ), card(A), card(B) sunt pare, se arata usor ca:
card(V B) = card(V ) + card(B) 2 card(V B),
card(U A + ) = card(U A) = card(U ) + card(A) 2 card(U A).
2. Sa observam ntai ca daca I, J GF (2r ), avem

x=

xIJ

x+

xI

x deoarece

xJ

orice element i I J apare de doua ori n membrul drept si niciodata n


membrul stang, iar i + i = 0. Deci:
X

x =

(y + ) =

yU A

yU A

xU A+

(deoarece card(U A) este par) =

y+

3.

x3 +

xU A+

X
yU

3 card(U ) +

yU A

yA

yA

y +

y +

yV

(y + )3 +

yV

y =

yU

y,

yV

y +
X

yV

y3 +

yV

yB

y3 =

y =

y3 +

y2 + 2

yU

yU

X
yB

y =

y =

yV

y+

yU

y +

y .

yB

y 2 , iar card(U ), card(V ) sunt pare.

yV

Deci expresia de sus se reduce la


X

y.

y + 3 card(A) +

yA

+0

yA

yV B

yB

y2 +

yB

y+

yV
2

Dar =

yV B

(y + )3 +

XyA
3

x =

xU A+

(y + )3 +

y=

y+

yU

X
yB

yV

y + card(U A) =

y3.

yV B

a daca pentru orice c1 , c2 C,


Definitia 15.2 Un cod C este invariant la distant
are loc relatia
i 0 i n,

card({|d(, c1 ) = i}) = card({|d(, c2 ) = i}).

Exemple simple de coduri invariante la distanta sunt codurile liniare.


Ca o consecinta imediata, pentru un cod invariant la distanta care contine
cuvantul nul, distanta minima este ponderea minima a unui cuvant - cod nenul.
Vom arata n continuare ca un cod Preparata are aceasta proprietate.
Lema 15.2 P (r) este invariant la distant
a.
Demonstratie: Fie [(U ), (V )], [(A), (B)] P (r) arbitrare aflate la distanta i
unul de altul. Conform Lemei 15.1, [(U U +), (V V )], [(U A+), (V B)]
sunt de asemenea cuvinte - cod si se verifica usor ca ele se afla la distanta i. Deoarece
U U = rezulta [(U U + ), (V V )] = 0, deci [(U A) + ), (V B)] are
pondere i.
2

172

PRELEGEREA 15. CODURI PREPARATA

Lema 15.3 Fie [(U ), (V )] P (r). Atunci P (r) mai contine urmatoarele cuvinte:
(i).
[(V ), (U )];
(ii). [(U + ), (V + )] pentru orice GF (2r );
(iii). [(U ), (V )] pentru orice GF (2r ), 6= 0.
Demonstratie: Se rezolva similar demonstratiei de la Lema 15.1.

Exemplul 15.4 Conform Exemplului 15.3, [(U ), (V )] P (3), unde


U = {, 2 , 5 , 0}, V = {0 , , 2 , 3 , 6 , 0}.
Conform Lemei 15.3 n care se ia = 3 , vom mai gasi drept cuvinte - cod si pe
[(V ), (U )] = 11110011 01100101,
[(U + ), (V + )] = [({0 , 5 , 2 , 3 }), ({, 0 , 5 , 0, 4 , 3 })] =
= 10110100 11011101,
[(U ), (V )] = [({4 , 5 , , 0}), ({3 , 4 , 5 , 6 , 2 , 0})] =
= 01001101 00111111.
Putem folosi Lema 15.3 pentru a simplifica problema determinarii distantei minime a lui P (r). Pentru aceasta nsa, este nevoie de un rezultat suplimentar (care
justifica conditia ca r sa fie impar).
Lema 15.4 Fie GF (2r ) primitiv. Atunci 3 este primitiv daca r este impar si
nu este primitiv daca r este par.
Demonstratie: Se stie ca i este primitiv daca si numai daca (i, 2r 1) = 1. Avem
2r 1 = (31)r 1 = M3+(1)r 1; deci pentru r impar 2r 1 = M32 = M3+1,
ceea ce nseamna ca 3 este primitiv. Similar, pentru r par, 2r 1 = M3, deci 3
nu este primitiv.
2
Corolarul 15.1 Dac
a r > 2 este un numar impar, atunci pentru orice x GF (2r )\
{0} exista y unic (numit rad
acina cubica a lui x) astfel ca y 3 = x.
Teorema 15.1 P (r) are distanta minima t = 6.
Demonstratie: Deoarece P (r) este invariant la distanta, el va contine un cuvant cod [(U ), (V )] de pondere t. Deci
t = w((U )) + w((V )) = card(U ) + card(V ).
Rezulta ca t este numar par; mai trebuie verificat ca t 6= 2, t 6= 4 si exista un
cuvant - cod de pondere 6.
Sa presupunem t = 2; atunci card(U ) = 2, card(V ) = 0 (Lema 15.3 asigura ca
totul se poate reduce la acest caz). X
Folosind tot Lema 15.3, (ii), putem presupune ca
u = 0 + x = x, ceea ce duce la o contrazicere
U = {0, x} cu x 6= 0. Dar atunci
uU

a definitiei codurilor Preparata, pentru ca V = .


Sa presupunem t = 4. Cu Lema 15.3, (i) aceasta nseamna card(U ) = 4,
card(V ) = 0 sau card(U ) = card(V ) = 2. In primul caz avem U = {0, x, y, z} cu
x, y, z 6= 0 si distincte. Ultima conditie a definitiei codurilor Preparata este:
03 + x3 + y3 + z3 + (0 + x + y + z)3 = 0 sau (x + y)(x + z)(y + z) = 0
ceea ce este imposibil, cele trei numere fiind distincte si nenule.

15.2. CODIFICAREA CODURILOR PREPARATA EXTINSE

173

In a doua varianta, se poate considera U = {0, x}, V = {y, z}, toate cele patru
elemente fiind distincte. Din definitie rezulta
03 + x3 + (0 + x)3 = y3 + z3 sau y3 + z3 = 0.
Folosind acum Corolarul 15.1, din y3 = z3 rezulta y = z, contradictie.
Sa construim acum un cuvant - cod de pondere t = 6. Fie x, y, z GF (2r )
elemente distincte nenule. Exista atunci (Corolarul 15.1) un element v GF (2r )
unic cu v3 = x3 + y3 + z3 . Daca v = x, atunci v3 = x3 deci y3 = z3 , ceea ce duce
la contradictia y = z. Deci v este distinct de x, y, z.
Definim u = v + x + y + z. Se observa ca u 6= 0 (altfel
v3 + (x + y + z)3 = (x + y)(x + z)(y + z) 6= 0
deci - cu Corolarul 15.1 - v 6= x + y + z). Fie acum U = {0, u}, V = {v, x, y, z}.
Din constructie, cum toate elementele sunt distincte, [(U ), (V )] este un cuvant
de pondere 6 si se verifica usor ca este cuvant - cod.
2
Exemplul 15.5 Sa consider
am GF (23 ) construit anterior. Fie elementele
3
5
x = , y = , z = . Definim
v3 = x3 + y3 + z3 = 3 + 9 + 15 = 110 + 001 + 100 = 4 = (6 )3
(deoarece 7 = 1), deci se poate lua v = 6 . Mai departe,
u = v + x + y + z = 6 + + 3 + 5 = 4 . Acum, U = {0, u} = {0, 4 },
V = {v, x, y, z} = {6 , , 3 , 5 } si se obtine [(U ), (V )] = 00001001 01010110
care este un cuvant cod din P (3) de pondere 6.
Teorema 15.2 Codul Preparata nu este cod liniar.
Demonstratie: Dupa cum se stie, [(U ), (V )]+[(A), (B)] = [(U A), (V B)].
Din demonstratia Teoremei 15.1 am vazut cum se pot construi cuvintele - cod
[(U ), (V )], [(A), (B)] P (r) cu U = {0, u1 }, V = {x1 , y1 , z1 , v1 },
A = {0, u2 }, B = {x2 , y2 , z2 , v2 }. Conform Lemei 15.1,
c = [(U A + u1 ), (V B)] P (r). Facem urmatoarele observatii:
card(U A + u1 ) 2;
d(c, [(U A), (V B)]) 2 card(U A + u1 ) 4;
P (r) are distanta minima 6.
Din ele rezulta ca [(U ), (V )] + [(A), (B)] 6 P (r).
Deci P (r) nu este cod liniar.
2
Ca o consecinta a acestei teoreme, nu se poate da nici o dimensiune pentru P (r),
deci se pare ca nu se poate determina numarul de cuvinte - cod. Vom reusi totusi
acest lucru ca o consecinta a schemei de codificare.

15.2

Codificarea codurilor Preparata extinse

Fie GF (2r ) primitiv si sa consideram codul BCH de polinom generator g(X) =


m1 (X)m3 (X) unde mi (X) este polinomul minimal al lui i (i = 1, 3). Dupa cum se
stie, grad(m1 (X)) = grad(m3 (X)) = r, deci grad(g(X)) = 2r. Codul BCH astfel
definit poate corecta maxim 2 erori si are matricea de control (transpusa):

174

H=

0
PRELEGEREA
15. CODURI PREPARATA

1
3

2
6

..

r 2

r 2)

3(2

Deoarece g(X) genereaza un cod ciclic, rezulta ca orice submatrice a lui H formata
din 2r linii consecutive este nesingulara, deci inversabila. Se defineste matricea A
ca submatrice a lui H formata din ultimele 2r linii, si H 0 matricea ramasa prin
stergerea lui A.
extensia GF (23 ) generat
Exemplul 15.6 In
a de rad
acina a polinomului 1 + X +
3
X vom avea

A=

2
3
4
5
6

3
6
2
5

010
001
110
011
111
101

110
101
001
111
010
011

1
A =

cu

001
111
011
110
101
111

011
010
101
100
110
001

Pentru GF (25 ) generat


a de rad
acina a polinomului 1 + X 2 + X 5 avem

21

22

A=
..
.

30

63

66

..
=
.

90

00011
10101
11110
01111
10011
11101
11010
01101
10010
01001

01000
00001
00101
10001
00111
11011
01100
10101
10011
01101

1
A =

cu

00111
00011
10011
11011
01101
10101
00110
11001
11000
10001

00010
10001
00011
01010
10101
11001
11111
01110
00111
10100

Fie a = [aL , aR ] un cuvant binar oarecare de lungime 2r+1 2r 2, unde


|aL | = 2r 1, |aR | = 2r 2r 1. In notatie polinomiala putem scrie
aL H = [aL (), aL (3 )], aR H 0 = [aR (), aR (3 )].
Se mai defineste
vR = [aL () + aR (), aL (3 ) + (aL ())3 + aR (3 )]A1 .

(2)

Teorema 15.3 Fie r un numar impar. Pentru orice cuvant binar a de lungime
2r+1 2r 2, daca (U ) = [aL , pL ], (V ) = [aR , vR , pR ] unde pL , pR sunt bitii de
control pentru aL respectiv [aR , vR ], atunci [(U ), (V )] P (r).
Demonstratie: [aR , vR ]H = aR H 0 + vR A = [aR (), aR (3 )] + [aL () + aR (),
3
3
3
aL (3 ) + (aL ())3 X
+ aR (
X
X) + (aL ()) ].
X)] = [aL (), aL (
3
3
u3 +
u, aL ( ) + (aL ())3 =
v ], aL () =
v,
Dar [aR , vR ] = [

uU

!3

vV

vV

uU

uU

, ceea ce verifica conditiile din Definitia 15.1.

Deci [(U ), (V )] este cuvant - cod n P (r).

15.3. DECODIFICAREA CODURILOR PREPARATA EXTINSE


Corolarul 15.2 P (r) are 22

r+1 2r2

175

cuvinte - cod.

r+1
Demonstratie: In Teorema 15.3 exista 22 2r2 alegeri posibile pentru a, toate
conducand la cuvinte - cod distincte.
2

Putem da acum un algoritm de codificare a meajelor de informatie n codurile


Preparata.
Fie aL , aR cuvinte de lungimi 2r 1 respectiv 2r 2r 1.
Fie vR definit de (2).
Se construiesc pL , pR conform Teoremei 15.3.
Atunci mesajul de informatie a = [aL , aR ] se codifica
n [aL , pL , aR , vR , pR ].
Exemplul 15.7 Sa consider
am r = 3, aL = 0110010, aR = 1. Deci
aL () = + 2 + 5 = 0 , aR () = 0 ,
aL (3 ) = 3 + 6 + 15 = 2 , aR (3 ) = 0 .
Din (2) avem vR = [0 + 0 , 2 + 0 + 0 ]A1 = [000 001]A1 = 111001 unde
A1 este matricea din Exemplul 15.6. Atunci vom codifica a = [0110010 1] n
c = [aL , pL , aR , vR , pR ] = [01100010 1 1 111001 1].
Deci c = [(U ), (V )] unde (U ) = 01100101, (V ) = 11110011, care coincide
cu secventa - cod construit
a n Exemplul 15.3.

15.3

Decodificarea codurilor Preparata extinse

Cum P (r) are distanta minima 6, el poate corecta maxim 2 erori.


Fie b un cuvant receptionat; l scriem b = [bL , pL , bR , pR ] unde bL , bR sunt
ambele de lungime 2r 1 iar pL , pR sunt biti de control a paritatii. Se calculeaza
bL H = [bL (), bL (3 )], bR H = [bR (), bR (3 )].
Apar mai multe cazuri, n functie de pozitiile unde apar erori.
1. Daca erorile apar pe pozitiile de control, atunci
bL () = bR (),

bL (3 ) + (bL ())3 = bR (3 )

(conform Definitiei 15.1), ceea ce se verifica usor.


2. Daca exista o eroare pe pozitia i n bR si cel mult o eroare pe pozitiile de
control atunci
bL () = bR () + i ,

bL (3 ) + (bL ())3 = bR (3 ) + 3i , deci

(bL () + bR ())3 = bL (3 ) + (bL ())3 + bR (3 ).


Daca ultima relatie este verificata, atunci se scrie i = bL () + bR () si se
schimba bitul i din bR (plus cel mult un bit de control).
3. Daca exista o eroare pe pozitia i din bL si cel mult o eroare pe pozitiile de
control, similar cu cazul anterior (lucru posibil pe baza Lemei 15.3) se verifica
relatia
(bR () + bL ())3 = bR (3 ) + (bR ())3 + bL (3 );

176

PRELEGEREA 15. CODURI PREPARATA


n caz afirmativ, se calculeaza i = bR () + bL () si se schimba bitul i din bL
(plus cel mult un bit de control).

4. Daca apar doua erori n bR pe pozitiile i si j, atunci:


bL () = bR () + i + j ,

bL (3 ) + (bL ())3 = bR (3 ) + 3i + 3j ,

deci se determina i + j si 3i + 3j . Valorile i, j sunt determinate cu un


algoritm similar celui de la codurile BCH.
5. Daca apar doua erori n bL , invocand din nou Lema 15.3 putem aplica analiza
de la cazul anterior.
6. Daca apar doua erori: una pe pozitia i n bL si una pe pozitia j n bR , atunci
bL () + i = bR () + j ,

bL (3 ) + 3i + (bL () + i ) = bR (3 ) + 3j .

Acest sistem de necunoscute i si j se rezolva astfel: din prima ecuatie se


scoate j = bL () + i + bR () si se nlocuieste n a doua ecuatie, ceea ce da
bL (3 ) + 3i + (bL () + i )3 = bR (3 ) + (bL () + i )3 + (bL () + i )2 bR () +
(bL () + i )bR ()2 + bR ()3 .
Dupa simplificari se ajunge la
3i + 2i bR () + i (bR ())2 + (bR ())3 = bL (3 ) + bR (3 ) + bL ()2 bR () +
bL ()bR ()2 , sau
(i + bR ())3 = (bL (3 ) + bR (3 )) + (bL () + bR ())3 + bL ()3 + bR ()3 .
Notand membrul drept al acestei expresii cu , obtinem solutia
i = bR () + 1/3 ,

j = bL () + 1/3 .

Deci locatiile erorilor se pot determina n toate situatiile posibile. Bitii de paritate
pentru fiecare jumatate de cuvant dau posibilitatea de a decide ce caz se aplica lui
b. Putem da acum algoritmul de decodificare pentru codurile Preparata P (r).

15.3. DECODIFICAREA CODURILOR PREPARATA EXTINSE

177

Fie b = [bL , pL , bR , pR ] cuvantul receptionat.


0. Se calculeaza L1 = bL (), L3 = bL (3 ), R1 = bR (), R3 = bR (3 );
1. Daca L1 + R1 = 0 si L3 + L31 + R3 = 0, atunci singurele erori posibile au
aparut pe pozitiile de control.
2. Daca (L1 + R1 )3 + L3 + L31 + R3 = 0, calculam i = L1 + R1 . Se corecteaza
pozitia i din bR si cel mult un bit de control al paritatii; se cere retransmisia
daca ambii biti de paritate trebuie modificati.
3. Daca (L1 + R1 )3 + R3 + R13 + L3 = 0, calculam i = L1 + R1 . Se corecteaza
pozitia i din bL si cel mult un bit de control al paritatii; se cere retransmisia
daca ambii biti de paritate trebuie modificati.
4. Daca ambele jumatati ale lui b sunt de pondere para si
L3 + L31 + R3 + (L1 + R1 )3
= (X + i )(X + j ),
X 2 + (L1 + R1 )X +
L1 + R1
se corecteaza pozitiile i si j din bL .
5. Daca ambele jumatati ale lui b sunt de pondere para si
R3 + R13 + R3 + (L1 + R1 )3
X 2 + (L1 + R1 )X +
= (X + i )(X + j ),
L1 + R1
se corecteaza pozitiile i si j din bR .
6. Daca ambele jumatati ale lui b sunt de pondere impara, se calculeaza
i = R1 + (L31 + R13 + (L1 + R1 )3 + L3 + R3 )1/3
j = L1 + (L31 + R13 + (L1 + R1 )3 + L3 + R3 )1/3
Se corecteaza pozitia i din bL si pozitia j din bR .
7. Daca nu a aparut nici una din situatiile anterioare, se cere retransmisia
cuvantului.
Exemplul 15.8 Sa decodific
am urmatoarele cuvinte primite, despre care se presupune ca au fost codificate folosind P (3), unde GF (23 ) s-a generat cu rad
acina
3
a polinomului 1 + X + X :
I: b = 10010011 11100111
(0) [L1 , L3 ] = bL H = 111 110, [R1 , R3 ] = bR H = 101 110
(1) L1 + R1 = 111 + 101 = 6= 0
(2) (L1 + R1 )3 + L3 + L31 + R3 = 3 + 3 + 15 + 3 = 0 6= 0
(3) (L1 + R1 )3 + R3 + R13 + L1 = 3 + 3 + 18 + 3 = 6 6= 0
3 + 15 + 3 + 3
= X 2 + X + 6 = (X + 2 )(X + 4 )
(4) X 2 + X +

Deci b se decodific
a n 10010011 11001111.
II: b = 10100100 10001001
(0) [L1 , L3 ] = bL H = [010, 011], [R1 , R3 ] = bR H = [111, 011]
(1) L1 + R1 = 010 + 111 = 6 6= 0
(2) (L1 + R1 )3 + L3 + L31 + R3 = 18 + 4 + 3 + 4 = 6 6= 0
(3) (L1 + R1 )3 + R3 + R13 + L3 = 18 + 4 + 15 + 4 = 2 6= 0
Ambele jumat
ati ale lui b au pondere impar
a, deci
(6) i = 5 + (3 + 15 + 18 + 4 + 4 )1/3 = 5 + (5 )1/3 = 5 + (12 )1/3 =
5 + 4 = 0 .
S-a obtinut i = 0. Se poate determina apoi imediat
j = + 4 = 2 , deci j = 2.
Cuv
antul b se decodific
a n 00100100 10101001.

178

PRELEGEREA 15. CODURI PREPARATA

III: b = 10001000 11101001


(0) [l1 , L3 ] = bL H = [111, 011], [R1 , R3 ] = bR H = [100, 000]
(1) L1 + R1 = 111 + 100 = 4 6= 0
(2) (L1 + R1 )3 + L3 + L31 + R3 = 12 + 4 + 15 + 0 = 3 6= 0
(3) (L1 + R1 )3 + R3 + R13 + L3 = 12 + 0 + 0 + 4 = 0
Calcul
am i = L1 + R1 = 4 , deci i = 4. Dar modificarea bitului 4 n bL cere ca
ambii biti de control sa fie modificati; deci se cere retransmisia cuvantului.
Pentru codul Preparata obtinut prin relaxarea lui P (r), se poate aplica aceeasi
strategie de decodificare folosita la codul Golay; cum acesta are d = 5, poate corecta
de asemenea cel mult 2 erori independente.

15.4

Coduri nrudite cu codul Preparata

15.4.1

Codul N
ordstrom - Robinson

Sa plecam de la codul Golay binar extins C24 ale carui cuvinte le scriem sub forma
a = [a1 , a2 ] unde |a1 | = 8, |a2 | = 16. Consideram submultimea GN R C24 ale
carei elemente verifica conditiile:
1. Daca a GN R atunci w(a1 ) {0, 2}.
2. Daca a, b GN R atunci d(a1 , b1 ) 2.
Evident, GN R va avea 256 cuvinte. Pe baza lui se construieste codul
N R = {a2 |a = [a1 , a2 ] GN R}.
Acesta este un cod neliniar de lungime n = 16 si distanta minima d = 6. Numit
codul Nostrom - Robinson, el coincide cu codul Preparata P (3).
Un alt cod derivat din acesta este codul Nadler, construit astfel: se pastreaza din
N R doar cuvintele - cod care coincid pe ultimele doua pozitii. Apoi la toate aceste
cuvinte se sterg ultimele trei caractere (o dubla scurtare urmata de o relaxare).
Codul astfel obtinut este unic, are n = 13, d = 5 si 64 cuvinte - cod.

15.4.2

Codurile Kerdock

Definitia 15.3 Fie r 3, r impar si U, V GF (2r ), card(U ), card(V ) pare.


Un cod Kerdock K(r) este format din toate cuvintele de forma [U, V ] care verifica
conditiile:
1. s (1 s 2r 2) (1 w2 (s) < r 2)

us =

2. s ( s 2 2) (w2 (s) = r 2)

X
uU

u =

v s = 0;

vV

uU

v =

vV

unde w2 (s) reprezint


a ponderea reprezent
arii n binar a lui s.
s
Se consider
a prin conventie s, 0 = 0.

uU

X
vV

!s

15.5. EXERCIT
II

179

Codul Kerdok K(r) (definit n 1972) este de fapt un subcod al codului Reed
- Muller RM(2, r + 1); el este format din perechi de translatari de cuvinte din
RM(1, r) selectate n asa fel ca sa maximizeze distanta minima dintre doua translatari.
Este interesant ca dintre toate codurile cu aceeasi distanta minima, codul Kerdok
are numarul maxim de cuvinte - cod.
Nu vom detalia demonstratii referitoare la proprietatile acestor coduri. Pentru
informatii suplimentare se pot folosi [6] si [2], cu mentiunea ca justificarile pleaca de
la o modalitate diferita de definire a codurilor K(r) si P (r). Rezultatele sunt nsa
deosebit de interesante. Astfel:
Teorema 15.4 K(r) este invariant la distant
a.
Lema 15.5 K(3) = P (3).
Teorema 15.5 Codurile P (r) si K(r) sunt duale.
Ca o consecinta imediata, P (3) este un cod auto-dual.

15.5

Exercitii

15.1 Demonstrati relatiile (1).


15.2 Demonstrati Lema 15.3.
15.3 Demonstrati Corolarul 15.1.
15.4 Aplicati Lema 15.3 cuvantului - cod definit n Exemplul 15.4, folosind
= 0 ,
= ,
= 6
15.5 De ce [(U ), (V )] nu este cuvant - cod pentru = 0 ?
15.6 Ar
atati ca cele trei cuvinte obtinute n Exemplul 15.4 satisfac conditiile definitiei codurilor Preparata.
15.7 Fie GF (23 ) generat de rad
acina a polinomului 1 + X + X 3 = 0. Folosind
urm
atoarele cuvinte x, y, z GF (23 ) construiti cuvinte - cod de pondere 6 din P (3):
x = y = 2 , z = 3 ,
x = y = 4 , z = 6 ,
x = 0 y = 3 , z = 6 ,
15.8 Fie GF (23 ) construit cu 1 + X + X 3 , iar A1 din Exemplul 15.6. Codificati
urm
atoarele mesaje folosind P (3):
aL = 1010100, aR = 1;
aL = 1010100, aR = 0;
aL = 1111111, aR = 1;
aL = 1111111, aR = 0;
aL = 0000000, aR = 1;

180

PRELEGEREA 15. CODURI PREPARATA

15.9 Fie GF (25 ) construit cu 1 + X 2 + X 5 , iar A1 din Exemplul 15.6. Codificati


urm
atoarele mesaje folosind P (5):
aL = 10100 . . . 0, aR = 000001000100 . . . 0;
aL = 10100 . . . 0, aR = 00 . . . 0;
aL = 10100 . . . 0, aR = 111100 . . . 0;
aL = 0000 . . . 0, aR = 100 . . . 0;
Care este lungimea lui aL ? dar a lui aR ?
aceleasi conditii
15.10 In
10000001 11101000
01010110 00011110
01000111 11001000
10111011 01101010
01101101 10011000

din Exemplul 15.8, sa se decodifice cuvintele:


00011010 01000010
00100101 10100100
11101000 10001001
10011001 01010101
10101101 11010000
11101110 01010101
01011101 11101101
10011100 10100100
10101010 10111011
10100101 00010001

15.11 Decodificati cuvintele primite, care au fost codificate cu P (5), unde GF (25 )
a fost construit folosind polinomul 1 + X 2 + X 5 .
11000110001000000000000001000010 00011110000000000000000110010000
10100000001000000000000000000000 00000100010000000100010101011100
15.12 Fie b un cuvant receptionat n care w(bL ) este impar iar w(bR ) este par.
Poate fi decodificat b la pasul 2 al algoritmului ntr-un cuvant - cod situat la distant
a
cel mult 2 ?

Bibliografie
[1] J. Adamek - Foundations of Coding, Wiley - Interscience, 1991;
[2] C. Carlet - Codes de Reed - Muller; Codes de Kerdok et de Preparata (teza de
doctorat), PARIS VI, 1990;
[3] G. Cullmann - Coduri detectoare si corectoare de erori, Editura Tehnica, 1972;
[4] S. Guiasu - Teoria Codurilor, Tipografia Universitatii Bucuresti, 1976;
[5] D.G. Hoffman, D.A. Leonard, C.C. Lindner, K.T. Phelps, C.A. Rodger, J.R.
Wall - Coding Theory; The Essentials, Marcel Dekker, Inc, 1991;
[6] A.M.Kerdok - A class of low-rate non linear codes, Information and control, 20
(1972), 182-187;
[7] J.H. van Lindt - Coding Theory, Springer Verlag, 1971;
[8] J.H. van Lindt - Introduction to Coding Theory, Springer Verlag, 1982;

181

Prelegerea 16
Coduri convolutionale
In cazul codurilor prezentate pana acum, la codificarea unui mesaj de informatie se
obtine un cuvant - cod de lungime n, ale carui caractere nu depind decat de cele
k elemente de informatie curente. Avem de-a face cu un proces de codificare fara
memorie, iar aceste coduri sunt numite si coduri - bloc.
P. Elias a introdus n 1965 o clasa de coduri, remarcabile prin siguranta sporita pe
care o asigura n transmiterea informatiei: codurile convolutionale. In cazul lor,
codificarea unui mesaj de lungime k se face tinand cont si de codificarile mesajelor
de informatie anterioare.
De remarcat ca NASA si Agentia Spatiala Europeana folosesc o combinatie ntre
aceste coduri si codurile Reed - Solomon. Fiecare mesaj de informatie este codificat
initial cu un cod RS, apoi cu un cod convolutional.

16.1

Coduri liniare si coduri convolutionale

Dupa cum am vazut, un (n, k) - cod liniar codifica un mesaj de informatie u Zqk
ntr-un cuvant - cod v = uG de lungime n (v Zqn ). Un cod liniar poate fi privit
nsa si ca o aplicatie care transforma mesaje sursa (de orice lungime ik, i = 1, 2, . . .)
n mesaje - cod de lungime i n.
Exemplul 16.1 Codul generat de matricea

1 0 0 1

G=
0 1 0 1
0 0 1 1
defineste o functie astfel:
a0 a1 a2 a3 a4 a5 . . .
7 a0 a1 a2 x0 a3 a4 a5 x1 . . .
unde
x0 = a0 + a1 + a2 , x1 = a3 + a4 + a5 , . . .
O astfel de functie poate fi exprimata foarte simplu prin polinoame. Astfel, fie
a(X) = a0 + a1 X + a2 X 2 + . . . polinomul reprezentand mesajul sursa, si u(X) =
u0 + u1 X + u2 X 2 + . . . mesajul codificat. Atunci un cod liniar este o aplicatie C
definita C(a(X)) = u(X). O astfel de aplicatie are urmatoarele proprietati:
181

182

PRELEGEREA 16. CODURI CONVOLUT


IONALE

C este liniara:
C(a(X) + a0 (X)) = C(a(X)) + C(a0 (X));
C(ta(X)) = tC(a(X)).
C este invarianta n timp: ntarzierea mesajului sursa cu k tacti are ca efect
decalarea raspunsului cu n tacti:
C(X k a(X)) = X n C(a(X)).
C nu are memorie: codificarea unui mesaj sursa de lungime k nu depinde de
mesajele sursa precedente.
Aceste trei proprietati caracterizeaza complet codurile liniare. Daca se renunta la
ultima proprietate, se obtine o noua clasa de coduri, numite coduri convolutionale.
Definitia 16.1 Fie q un numar prim. Prin (n, k) - cod convolutional se ntelege o
aplicatie liniara C : Zq [X] Zq [X] cu proprietatea (de invariant
a de timp)
k
n
C(X a(X)) = X C(a(X)).
Exemplul 16.2 Sa consider
am circuitul liniar:

- +
6
6
t-

?
?
6
?- +
- +

El reprezint
a un (2, 1) - cod convolutional binar. Este liniar (datorita circuitului),
invariant n timp (o nt
arziere de 1 tact la intrare provoac
a o nt
arziere de 2 tacti
la iesire).
De exemplu, pentru intrarea 1 se obtine 11 la primul tact, 11 la al doilea tact si
01 la al treilea (dupa care urmeaz
a 0000 . . .). Deci
C(1) = 111101 = 1 + X + X 2 + X 3 + X 5 .
Datorit
a invariantei n timp, avem
C(X) = C(01) = 00111101,
C(X 2 ) = C(001) = 0000111101, . . .
(s-a tinut cont de dualitatea de notare polinom - cuvant).
Datorit
a liniaritatii, raspunsul C(1) caracterizeaz
a complet codul. De exemplu,
mesajul de intrare 101 se codific
a prin
2
C(101) = C(1 + X ) = C(1) + C(X 2 ) = C(1) + C(001) = 11110100 . . . +
0000111101 . . . = 1111101101 = 1 + X + X 2 + X 3 + X 4 + X 6 + X 7 + X 9 .

16.2

Coduri (n, 1) - convolutionale

In cazul particular k = 1, codul este complet determinat de iesirea pentru mesajul


de intrare 1. Notam
C(1) = g0 (X)
polinomul generator al acestei subclase de coduri. Din invarianta n timp rezulta

16.2. CODURI (N, 1) - CONVOLUT


IONALE

183

C(X i ) = X ni g0 (X), i 1.
Deci, pentru orice polinom a(X) = a0 + a1 X + . . . + ap X p avem
C(a(X)) = a0 C(1)+a1 C(X)+a2 C(X 2 )+. . .+ap C(X p ) = a0 g0 (X)+a1 X n g0 (X)+
a2 X 2n g0 (X) + . . . + ap X np g0 (X) = a(X n )g0 (X).
Aceasta conduce la ideea ca un (n, 1) - cod convolutional este generat de polinomul g0 (X) conform regulii
a(X) 7 a(X n )g0 (X).
Invers, orice polinom g0 (X) Zq [X] defineste un (n, 1) - cod convolutional.
Observatie: Ideea de polinom generator este similara celei de la codurile ciclice,
unde codificarea mesajului de informatie a(X) revenea la nmultirea cu polinomul
generator. La codurile convolutionale nu exista nsa restrictie referitor la gradul lui
a(X) si n plus la nmultire se foloseste a(X n ).
Exista o modalitate simpla de constructie a unui circuit liniar, generator al unui
astfel de cod. Vom descrie aceasta pentru cazul binar.
Polinomul g0 (X) se descompune n sume de n termeni consecutivi, fiecare suma
descriind modul de conectare al elementelor de nmagazinare. Astfel, fie
g0 (X) = (b0 + b1 X + . . . + bn1 X n1 ) + (bn X n + bn+1 X n+1 + . . . + b2n1 X 2n1 ) +
. . . + (bmn X mn + bmn+1 X mn+1 + . . . + bmn+n1 X mn+n1 )
Numarul de m + 1 paranteze indica faptul ca sunt necesare m elemente de
nmagazinare (prima paranteza se refera la intrare). A i - a secventa de termeni
descrie iesirea celui de-al i - lea element de nmagazinare (bp = 1 semnifica o legatura
directa cu al p - lea element al iesirii).
In plus, elementele de nmagazinare sunt legate ntre ele secvential.
Exemplul 16.3 Sa consider
am (2, 1) - codul convolutional de polinom generator
g0 (X) = 1 + X + X 2 + X 5 = (1 + X) + (X 2 + 0) + (0 + X 5 ). Prima parantez
a, 1 + X,
2
arat
a ca ambii biti de iesire sunt legati de intrare, X + 0 indic
a faptul ca primul
element de nmagazinare este legat direct doar de primul bit de iesire, 0 + X 5 arat
a

c
a al doilea element de nmagazinare este legat numai de al doilea bit de iesire. In
acest fel se obtine codificatorul descris de circuitul liniar:

- +
6
6
s?

?
6
- +

Exemplul 16.4 Fie (3, 1) - codul convolutional (deci cu 3 biti de iesire) generat de
polinomul g0 (X) = 1 + X 2 + X 3 + X 5 + X 6 + X 7 + X 12 + X 13 + X 14 . Pentru a
construi circuitul liniar, rescriem acest polinom astfel: g0 (X) = (1 +0 + X 2 )+(X 3 +
0 + X 5 ) + (X 6 + X 7 + 0) + (X 12 + X 13 + X 14 ). Se obtine

184

PRELEGEREA
16. CODURI
CONVOLUT
6 IONALE

- +
- +
- +
6
?

6
6
6
s- + s
66
?

?
?
?- +
- +

Similar codurilor ciclice, plecand de la polinomul generator, se poate construi matricea generatoare a codurilor (n, 1) - convolutionale. Aceasta este

G=

g0 (X)
X n g0 (X)
X 2n g0 (X)
..
.

Numarul liniilor (si deci si al coloanelor) lui G nu este fixat, el depinzand de lungimea
mesajului sursa. Astfel, pentru un mesaj de lungime i, matricea G are i linii si
1 + grad(g0 (X)) + (i 1) n coloane.
Exemplul 16.5 Fie (3, 1) - codul convolutional binar de polinom generator g0 (X) =
1 + X + X 3 + X 4 + X 5 + X 8 . Pentru un mesaj sursa de lungime 3, matricea G va
avea dimensiunea 3 15:

1 1 0 1 1 1 0 0 1

1 1 0 1 1 1 0 0 1
G=

1 1 0 1 1 1 0 0 1
(spatiile libere sunt completate cu 0). Astfel, codificarea mesajului 101 este
101 G = 110001000110001.

16.3

Coduri (n, k) - convolutionale

Sa dezvoltam o descriere a codurilor (n, k) - convolutionale, similara celei date anterior pentru cazul k = 1. Vom ncepe cu un exemplu:
Exemplul 16.6 Fie circuitele liniare a doua (2, 1) - coduri convolutionale, care au
iesirea comun
a:

6
s-

?- +

? s?

?- +

- +

?
?

- +

?
+

+ 6
6
-

16.3. CODURI (N, K) - CONVOLUT


IONALE

185

La fiecare tact intrarea este formata din doi biti care formeaz
a intrarile n cele doua
circuite liniare. O nt
arziere cu doi tacti la intrare genereaz
a o nt
arziere de doi
tacti la iesire; deci, acesta este un (2, 2) - cod convolutional.
Pentru intrarea 10 iesirea este 110101 (functioneaz
a doar circuitul superior), iar
pentru 01 iesirea este 010111 (numai pe baza circuitului inferior). Formal,
C(1) = 1 + X + X 3 + X 5 = g0 (X),
C(X) = X + X 3 + X 4 + X 5 = g1 (X).
Folosind invarianta n timp se pot determina si alte iesiri:
C(X 2i ) = X 2i g0 (X), C(X 2i+1 ) = X 2i g1 (X) i 1.
Definitia 16.2 Pentru un (n, k) - cod convolutional, polinoamele
gi (X) = C(X i ), 0 i k 1
se numesc polinoame generatoare.
Teorema 16.1 Un (n, k) - cod convolutional de polinoame generatoare gi (X), (0
i k 1) este determinat de functia de codificare
a(X) 7

k1
X

a(i) (X n )gi (X)

(1)

i=0

unde pentru secventa a = a0 a1 a2 . . . s-a notat a(i) = ai ai+k ai+2k . . . (0 i k 1).


Reciproc, fiind date polinoamele gi (X) i = 0, 1, . . . , k 1 si un numar n, formula
(1) determina un (n, k) - cod convolutional.
Demonstratie: Vom ncepe prin a arata ultima afirmatie. Aplicatia
a(X) 7 a(i) (X n )gi (X)
este liniara (ca o compunere de transformari liniare) si invarianta n timp (deci
defineste un (n, k) - cod convolutional). Ultima asertiune rezulta din observatia ca
pentru orice secventa a,

(i)

X k a(X)

7 X n a(i) (X).

Deci iesirea la X a(X) prin aceasta aplicatie este X

k1
X

a(i) (X n )gi (X).

i=0

Sa aratam acum ca un (n, k) - cod convolutional definit de aplicatia C este identic


0

cu cel dat de C (a(X)) =

k1
X

a(i) (X n )gi (X) unde gi (X) = C(X i ) sunt polinoamele

i=0

generatoare. Deoarece C si C 0 sunt ambele liniare, este suficient sa aratam ca


C(X r ) = C 0 (X r ) pentru orice r X0; atunci vomX
avea
r
2
ar C 0 (X r ) = C 0 (a0 + a1 X + . . .).
ar C(X ) =
C(a0 + a1 X + a2 X + . . .) =
r0

r0

Deoarece ambele aplicatii sunt (n, k) invariante n timp, ne putem restrange la


0 r k 1. Pentru a = 00 . . . 0100 . . . (cu 1 pe pozitia r), este evident ca
a(r) = 100 . . . si a(i) = 000 . . . pentru i 6= r. Deci C 0 (X r ) = gr (X) = C(X r ).
2
Analog codurilor (n, 1) - convolutionale, si n acest caz se poate defini matricea generatoare, care este o reprezentare matriciala a relatiei (1). Liniile matricii sunt g0 (X), g1 (X), . . . , gk1 (X), X n g0 (X), X n g1 (X), . . ., considerate ca polinoame de grad infinit. Pentru mesajul a = a0 a1 . . . ar codificarea este aG =

186

PRELEGEREA 16. CODURI CONVOLUT


IONALE

a0 g0 (X) + . . . + ak1 gk1 (X) + X n [ak g0 (X) + . . . + a2k1 gk1 (X)] + X 2n [a2k g0 (X) +
. . .+a3k1 gk1 (X)]+. . . = (a0 +ak X n +a2k X 2n +. . .)g0 (X)+. . .+(ak1 +a2k1 X n +
. . .)gk1 (X) =

k1
X

a(i) (X n )gi (X).

i=0

Exemplul 16.7 Matricea generatoare a (2, 2) - codului convolutional descris n Exemplul 16.6 este

1 1 0
0 1 0

0
G=

1
1
1
1

0
1
0
0
1
0

1
1
1
1
1
1
..
.

0
1
0
0

1
1
1 0 1
1 1 1

...

...

(locurile goale sunt completate cu 0).


Pentruintrarea 101 iesirea este
1 1 0 1 0 1 0 0

(1 0 1)
0 1 0 1 1 1 0 0 = (1 1 1 0 0 0 0 1), deci
0 0 1 1 0 1 0 1
C(1 + X 3 ) = 1 + X + X 3 + X 8 .
S-a prezentat anterior modul de constructie al unui circuit liniar pentru (n, 1) coduri convolutionale, plecand de la polinomul generator g(X). In mod similar se
determina circuitul liniar de codificare pentru un (n, k) - cod convolutional:
1. Pentru i = 0, 1, . . . , k 1 se construieste circuitul liniar al (n, 1) - codului dat
de a(X) 7 a(X n )gi (X);
2. Se foloseste un buffer comun de iesire (de n simboluri), n care ajung rezultatele
nsumate ale celor k circuite;
3. Secventa de intrare este segmentata n grupe de cate k simboluri, fiecare din
ele constituind intrarea n cate un circuit liniar.
Exemplul 16.8 Sa construim circuitul liniar pentru (2, 2) - codul definit de polinoamele generatoare
g0 (X) = X + X 3 + X 4 + X 5 , g1 (X) = 1 + X + X 2 + X 4 + X 5 + X 6 + X 7 .
Scriem g0 (X) = (0 + X) + (0 + X 3 ) + (X 4 + X 5 ) deci circuitul sau liniar are 2
elemente de nmagazinare. Pentru g1 (X) = (1+X)+(X 2 +0)+(X 4 +X 5 )+(X 6 +X 7 )
sunt necesare trei elemente de nmagazinare.
Reprezentarea sa grafic
a este:

16.4. CODURI CONVOLUT


IONALE SISTEMATICE
6
6

?
-

- +
- 6
6
s
?
?

- +

6
-

- +

6
-

- + -6

6
-

- +

187
-

- +
?

6 +
6
-

- +

Definitia 16.3 Un (n, k) - cod convolutional are memorie N daca


i (0 i k 1), grad(gi (X)) N n,
iar N este minim cu aceast
a proprietate. Numarul N n se numeste lungimea
restr
ansa a codului.
Dupa cum s-a vazut, un cod convolutional de memorie N poate fi implementat cu
o combinatie de N 1 elemente de nmagazinare. N este numarul de simboluri de
iesire care pot fi modificate la schimbarea unui singur caracter de intrare.

16.4

Coduri convolutionale sistematice

Un (n, k) - cod convolutional sistematic are proprietatea ca la fiecare iesire de n caractere, pe primele k pozitii se gasesc simbolurile de informatie. Vom da o constructie
directa a acestor coduri, plecand tot de la similitudinea cu codurile - bloc.
Fie n, k, N (k < n) numere naturale nenule. Consideram sistemul de k(n k)
secvente cu N componente peste Zq :
g(i, j) = g0 (i, j)g1 (i, j) . . . gN 1 (i, j), 1 i k, 1 j n k.
Aceste secvente se numesc subgeneratori.
Consideram
matricea

g (1)

g (2)

= (Ik P0 Ok P1 Ok P2 Ok . . . PN 2 Ok PN 1 Ok Ok . . .)
Q0 =
..

.
g (k)
unde Ik este matricea unitate, Ok este matricea nula (ambele de ordin k),

gt (1, 1) gt (1, 2) . . . gt (1, n k)

gt (2, 1) gt (2, 2) . . . gt (2, n k)


Pt =
..

0tN 1

gt (k, 1) gt (k, 2) . . . gt (k, n k)


iar
g (i) = 0 . . . 010 . . . g0 (i, 1) . . . g0 (i, n k)0 . . . 0g1 (i, 1) . . . g1 (i, n k)0 . . . 0
0 . . . 0gN 1 (i, 1) . . . gN 1 (i, n k)0 . . .
(1 i k).
Cuvintele obtinute din primele N n componente ale lui g (i) (1 i k):
g(i) = 0 . . . 010 . . . 0g0 (i, 1) . . . g0 (i, n k)0 . . . 0gN 1 (i, 1) . . . gN 1 (i, n k)

188

PRELEGEREA 16. CODURI CONVOLUT


IONALE

se numesc generatori.
Fie un numar natural. Se defineste operatorul
D g (i) = 0| .{z
. . 0} g (i)
n

care translateaza g (i) cu n pozitii spre dreapta.


In sfarsit, fie

g (1)

..

G =

Q0
DQ0
D 2 Q0
..
.

g (k)

Dg (1)

=
=
..

Dg (k)

D 2 g (1)

Ik P0 Ok P1 Ok P2

Ik P0 Ok P1

Ik P0

..
. . . Ok PN 1
...
. . . Ok PN 2 Ok PN 1
...
. . . Ok PN 3 Ok PN 2 Ok PN 1
..
.

matricea generatoare a unui (n, k) - cod convolutional sistematic.


Observatie: Evident, un (n, k) - cod convolutional sistematic este un (n, k) - cod
convolutional. Invers, fiind dat un (n, k) - cod convolutional, el se poate transforma
n unul sistematic prin adunarea la fiecare polinom generator gi (X) =

mn+n1
X

bi,p X i

p=0

a polinomului gi0 (X) =

m k1
X
X

(k bi,np+j )X np+j + bi X i

(0 i k 1).

p=0 j=0

Desi are - teoretic - un numar infinit de linii si coloane, fiind n forma canonica,
pentru aceasta reprezentare se poate construi imediat matricea de control:

P0T
P1T
P2T

H =
T
PN
1

Ink
Onk
Onk

P0T
P1T

Ink
Onk
..
.

P0T

Ink

Onk PNT 2 Onk PNT 3 Onk


PNT 1 Onk PNT 2 Onk
PNT 1 Onk
..
.

...
...
...

...

...

...

a carei transpusa este

T
H

P0 P1 P2

Ink Onk Onk

P0 P1
=

Ink Onk

. . . PN 1
. . . Onk
. . . PN 2 PN 1
. . . Onk
Onk
..
.

...
...
...
...

16.4. CODURI CONVOLUT


IONALE SISTEMATICE

189

T
Se verifica imediat egalitatea G H
= O .

Sa consideram un mesaj de informatie a, sub forma unei succesiuni (teoretic)


infinite. El va fi descompus initial n blocuri de lungime k:
a = a0 (1) . . . a0 (k) a1 (1) . . . a1 (k) . . . ap (1) . . . ap (k) . . .
|

{z

}|

{z

a0

a1

{z

ap

Mesajul codificat se obtine similar codurilor liniare, prin nmultirea lui a cu matricea
generatoare: c = aG ; textul rezultat va fi descompus n blocuri de lungime n:
c = aG = c0 (1) . . . c0 (n) c1 (1) . . . c1 (n) . . . cp (1) . . . cp (n) . . .
|

{z

}|

c0

{z

c1

{z

cp

T
inand cont de forma canonica a matricii G , rezulta urmatoarele relatii:
cp (i) = ap (i), (1 i k)
k N
1
X
X

cp (k + j) =

apt (i)gt (i, j),

(1 j n k).

(2)

i=1 t=0

Aceeasi formula de codificare se poate scrie si n alt mod:


c = aG =

k
X

a0 (i)g (i) +

i=1

k
X

a1 (i)Dg (i) +

i=1

c=

k X

k
X

a2 (i)D2 g (i) + . . ., deci

i=1

at (i)Dt g (i)

(3)

i=1 t=0

Exemplul 16.9 Sa consider


am un (2, 1) - cod convolutional binar cu N = 4 si
subgenerator g(1, 1) = 1101. Generatorul va fi atunci g(1) = 110100001 iar matricea

11 01 00 01
...

11 01 00 01
...

11 01 00 01 . . .

..
.

Dac
a dorim sa se transmit
a secventa de informatie a = 10011 . . ., ea va fi codificat
a
n c = aG = 1101001010 . . .
Exemplul 16.10 Fie (3, 2) - codul convolutional binar cu N = 3 si subgeneratori
g(1, 1) = 101, g(2, 1) = 110. Calculand generatorii, se obtine
g(1) = 101000001, g(2) = 011001000 si deci

101 000 001


011 001 000

101 000

011 001
=

101

011

...
...
001
...
000
...
000 001 . . .
001 000 . . .
..
.

Fie a = 110010 . . . o secvent


a de informatie. Rezultatul codific
arii ei este c = aG
= 110001100 . . .

190

16.5

PRELEGEREA 16. CODURI CONVOLUT


IONALE

Arborescenta codurilor convolutionale

Cuvintele - cod dintr-un cod convolutional sistematic se pot reprezenta folosind


un graf arborescent infinit, cu noduri situate la o distanta de n pozitii si cu q k
descendenti din fiecare nod. Codificarea unui mesaj revine la parcurgerea unui
drum n acest arbore.
Pentru simplificare, sa consideram un (n, 1) - cod convolutional sistematic binar
(generalizarea este imediata) de lungime restransa N . El este complet caracterizat
prin n 1 subgeneratori
g(1, j) = g0 (1, j)g1 (1, j) . . . gN 1 (1, j),

(1 j n 1).

Codul are un singur generator, anume


g(1) = 1g0 (1, 1)g0 (1, 2) . . . g0 (1, n 1)0g1 (1, 1)g1 (1, 2) . . . g1 (1, n 1)0 . . .
. . . 0gN 1 (1, 1) . . . gN 1 (1, n 1)
Vom folosi notatiile
g0 = 1g0 (1, 1) . . . g0 (1, n 1),
gp = 0gp (1, 1) . . . gp (1, n 1),
(1 p N 1).
Atunci g(1) = g0 g1 . . . gN1 , iar gp este a p - a ramificatie a lui g(1). Matricea
generatoare
a codului va
fi
- cu aceste notatii:

g (1)
g0 g1 g2 . . . gN1
0
0
...

0
...
Dg (1)
0 g0 g1 . . . gN2 gN1

G = D2 g (1) = 0 0 g . . . g

g
g
.
.
.

0
N3
N2
N1

..
..
.
.
unde 0 este un bloc de n zerouri.
Fie a = a0 a1 a2 . . . secventa de informatie si c = c0 c1 c2 . . . cuvantul - cod corespunzator, unde cp = cp (1)cp (2) . . . cp (n). Are loc egalitatea
c = c0 c1 c2 . . . = aG = a0 g (1) + a1 Dg (1) + a2 D2 g (1) + . . .
(4)
De aici rezulta ca c0 = 0 daca a0 = 0 si c0 = g0 daca a0 = 1. Cu alte cuvinte, codul poate fi partitionat n doua submultimi de marime egala: o submultime
S0 contine toate secventele care corespund lui a0 = 0 (deci toate cuvintele - cod
din S0 au acelasi prefix 0); cealalta submultime S1 contine toate cuvintele - cod
corespunzatoare lui a0 = 1 (deci toate cuvintele - cod din S1 au prefixul g0 ).
La randul lui, S0 se mparte n doua submultimi egale S00 si S01 . S00 corespunde
secventelor - cod pentru care a0 = a1 = 0 (deci toate cuvintele - cod din S00 ncep
cu 00). S01 contine secventele cu a0 = 0, a1 = 1, deci cu prefixul 0g0 . Similar, S1
se partitioneaza n S10 si S11 , S10 fiind pentru a0 = 1, a1 = 0 (deci cuvintele - cod
din S10 au prefixul g0 g1 ); secventele din S11 ncep cu prefixul g0 (g0 + g1 ).
Acest procedeu continua indefinit.
Deci cuvintele - cod pot fi aranjate ntr-un arbore cu noduri de n caractere si
cate doua ramificatii din fiecare nod. O ramificatie este marcata de un cod bloc
de n caractere, corespunzatoare unui caracter de informatie particular, iar ntreaga
secventa corespunde unui drum prin arbore.

16.5. ARBORESCENT
A CODURILOR CONVOLUT
IONALE

6
6

0 - 0-

-6

0- 0

191

0- 0

? 1 - g0

6
? 1 - g0

0 - g1

? 1 - g0 + g1

6
?

1 - g0

6
0 - g1

0 - g2

? 1 - g0 + g2
-6

? 1 - g0 + g1

0 - g1 + g2

? 1 - g0 + g1 + g2

Operatia de codificare poate fi privita atunci ca un proces n care este trasat un


drum particular n arbore, conform instructiunilor date de mesajul de informatie.
Exemplul 16.11 S
a consider
am (3, 1) - codul convolutional binar cu N = 4, generat de g(1, 1) = 1011, g(1, 2) = 1101. Generatorul codului este
g(1) = 111 001 010 011, iar arborele de codificare
- 000
- 000 -6
?
- 111
- 000 -6
- 001
6
?
- 111 -6
- 110
?
- 000 - 010
6
- 001 -6
?
- 101
6
?
- 111 - 011
?
- 110 -6
?
- 100
- 011
- 010 -6
?
- 100
- 001 -6
- 010
6
?
- 101 6
?
- 101
?
- 111 - 001
- 011 -6
?
- 110
- 110 -6
?
- 000
?
- 100 -6
?
- 111
Daca vom considera de exemplu mesajul de informatie a = 1001 . . ., secventa cod generat
a va fi c = 111 001 010 100 . . ..
Aceasta constructie se poate extinde la un (n, k) - cod convolutional sistematic binar.
Deoarece la momentul 0 exista 2k secvente posibile de lungime k, toate cuvintele
- cod se pot partitiona n 2k submultimi S0 , S1 , . . . , S2k 1 . Toate secventele din Si
ncep cu acelasi bloc, corespunzator aceluiasi mesaj de informatie. Fiecare Si se
mparte la randul lui n 2k submultimi, dupa tipul celui de-al doilea bloc de la tactul
1. Procesul continua n mod similar pana la epuizarea mesajului de informatie.

192

16.6

PRELEGEREA 16. CODURI CONVOLUT


IONALE

Exercitii

16.1 Construiti un codificator pentru (2, 1) - codul convolutional binar de polinom


generator g0 (X) = 1 + X + X 3 + X 4 + X 6 + X 7 + X 9 . Cat este N ? Codificati
mesajele 110, 0110, 1010.
16.2 Construiti o matrice generatoare pentru codul definit anterior.
16.3 Construiti un codificator pentru (2, 1) - codul convolutional ternar de polinom
generator g0 (X) = 1 + 2X + 2X 3 .
S
a se determine o matrice generatoare.
S
a se codifice mesajele 102, 200, 0120.
16.4 Construiti un codificator pentru un (3, 2) - cod convolutional binar cu N = 2.
16.5 Codificatorul din Exemplul 16.8 are 5 elemente de nmagazinare. Construiti
un codificator pentru acelasi cod, care utilizeaz
a doar 4 elemente de nmagazinare.
16.6 Construiti polinoamele generatoare ale codului convolutional dat mai jos:

s-

-+
-+

6
6
-

s-

6
-6
6

?- +

-+
6
6
? s?

?- +

-+

-+

6
?

-+
- +

6 ?
6 ?

-+

6
-

-+

16.7 Construiti o matrice generatoare pentru codul din exercitiul anterior.


Codificati mesajul 11001.
16.8 Construiti un codificator pentru (4, 3) - codul binar, de polinoame generatoare
g0 (X) = 1 + X + X 3 + X 5 + X 6 , g1 (X) = X + X 2 + X 3 + X 4 , g2 (X) = 1 + X 2 +
X 3 + X 5 + X 6.
16.9 Sa se construiasc
a matricea generatoare si de control pentru (3, 2) - codul
convolutional sistematic ternar de subgeneratori g(1, 1) = 1200, g(2, 1) = 2011.
S
a se codifice mesajele 11220, 1012, 2222.
16.10 Aceeasi problem
a pentru (4, 2) - codul binar cu
g(1, 1) = 001, g(1, 2) = 110, g(2, 1) = 101, g(2, 2) = 111.
S
a se codifice mesajele 1100, 011, 001100.
S
a se construiasc
a reprezentarea arborescent
a.
16.11 S
a se demonstreze formulele (2).

Bibliografie
[1] J. Adamek - Foundations of Coding, Wiley - Interscience, 1991;
[2] M. Blaum - A (16, 9, 6, 5, 4) error correcting dc-free block code, IEEE Transactions on Information Theory, vol. 34, 1988, pp. 38-141;
[3] C. Carlet - Codes de Reed - Muller; Codes de Kerdok et de Preparata (teza de
doctorat), PARIS VI, 1990;
[4] G. Cullmann - Coduri detectoare si corectoare de erori, Editura Tehnica, 1972;
[5] S. Guiasu - Teoria Codurilor, Tipografia Universitatii Bucuresti, 1976;
[6] D.G. Hoffman, D.A. Leonard, C.C. Lindner, K.T. Phelps, C.A. Rodger, J.R.
Wall - Coding Theory; The Essentials, Marcel Dekker, Inc, 1991;
[7] B. Honary, G. Markarian - Trellis Decoding of Block Codes, A Parctical Approach, Kluwer Academic Publ., 1997;
[8] A. M. Kerdok - A class of low-rate non linear codes, Information and control,
20 (1972), 182-187;
[9] J.H. van Lindt - Coding Theory, Springer Verlag, 1971;
[10] J.H. van Lindt - Introduction to Coding Theory, Springer Verlag, 1982;
[11] W. E. Ryan - A Turbo Code Tutorial, IEEE Trans. Comm., pp. 1261- 1271,
Oct. 1996.

193

Prelegerea 17
Decodificarea codurilor
convolutionale
17.1

Capacitatea de corectare a erorilor

Algoritmii de decodificare pentru codurile convolutionale folosesc aceeasi idee de la


codurile liniare: cuvantul primit este decodificat n cel mai apropiat cuvant - cod,
n sensul distantei Hamming.
Ideea este de a nu decodifica deodata tot cuvantul primit, ci pas cu pas, la fiecare
tact fiind decodificate n caractere (continutul unui buffer de iesire) n k simboluri
(marimea bufferului de intrare). Distanta Hamming (notata cu dH ) pentru un (n, k)
- cod convolutional se defineste
dH (a(X), b(X)) = d(a0 a1 . . . an1 , b0 b1 . . . bn1 ).
Observatie: In cele ce urmeaza vom continua sa identificam secventele de p + 1
caractere a = a0 a1 . . . ap cu polinoamele de gradul p a(X) = a0 + a1 X + . . . + ap X p .
Se va folosi adesea chiar notatia (neambigua) a(X) = a.
Fie deci a(X) mesajul de informatie; el se codifica n v(X) = C(a(X)). Sa
presupunem ca se receptioneaza u(X). La primul tact se determina cuvantul - cod
w(X) cu dH (u(X), w(X)) minim (cel mai apropiat cuvant - cod), iar u0 u1 . . . un1 se
transforma n w0 w1 . . . wn1 . Daca decodificarea este corecta, atunci s-au determinat
primele n caractere si se pot gasi imediat ca-racterele de informatie a0 a1 . . . ak1
(continutul primei intrari). Se defineste apoi
u(X) := u(X) C(a0 + a1 X + . . . + ak1 X k1 )
(care aduce 0 pe primele n caractere ale cuvantului receptionat), se ignora primele
n caractere si procedeul continua inductiv.
Motivatia consta n faptul ca acum nu se lucreaza cu v(X) = C(a(X)) ci cu
v(X) C(a0 + a1 X + . . . ak1 X k1 ) = C(a(X) a0 a1 X . . . ak1 X k1 ) =
C(ak X k +ak+1 X k+1 +. . .) = C(X k (ak +ak+1 X +ak+2 X 2 +. . .)) = X n C(ak +ak+1 X +
ak+2 X 2 + . . .).
am (2, 1) - codul convolutional binar de polinom geneExemplul 17.1 Sa consider
3
rator g0 (X) = 1 + X + X . Cuvintele lui cod sunt
193

194PRELEGEREA 17. DECODIFICAREA


CODURILOR
IONALE
0
00000000 . . . CONVOLUT
g0 (X)
11010000 . . .
2
X g0 (X)
00110100 . . .
(1 + X 2 )g0 (X)
11100100 . . .
...
...
Dac
a se primeste - de exemplu - u = 11110001, vom determina cel mai apropiat
cuv
ant - cod, care este (1 + X 2 + X 4 )g0 (X), adica 11101001. Primul grup de n = 2
biti este 11, deci primul bit de informatie (k = 1) este 1. Fie acum
u := u C(1) = 11110001 11010000 = 00100001.
Se ignora primele doua simboluri din noul u si se determina cel mai apropiat
cuv
ant - cod de 100001; acesta este 000 . . . 0; deci al doilea grup cadru este 00 - adica
al doilea simbol de informatie este 0.
Refacem u := u X 2 C(0) = 00100001. Se sterg primele patru simboluri din u
si se caut
a cel mai apropiat cuvant - cod de 0001. Acesta este din nou 00 . . .. Deci
u se corecteaz
a n
C(1 + 0X + 0X 2 ) = 11000000.
Definitia 17.1 Pentru un (n, k) - cod convolutional se defineste distanta liber
a prin
dlib = min{dH (C(a(X)), C(a0 (X)))|a0 a1 . . . ak1 6= a00 a01 . . . a0k1 }.
Similar observatiei de la codurile liniare, dlib este cea mai mica pondere a unui cuvant
- cod C(a00 (X)) cu proprietatea a000 a001 . . . a00k1 6= 0. (s-a notat a00 (X) = a(X) a0 (X)
unde a(X), a0 (X) sunt doua mesaje de informatie arbitrare distincte).
and codul construit n Exemplul 17.1, acesta are dlib = 3,
Exemplul 17.2 Relu
deoarece g0 (X) are ponderea 3 si orice cuvant C(a0 + a1 X + . . .) cu a0 =
6 0 are
ponderea minim 3.
Propozitia 17.1 Un cod convolutional corecteaz
a t erori daca si numai daca dlib >
2t.
Demonstratie: Sa presupunem dlib > 2t. La receptia unui cuvant v(X) cu cel mult t
erori, exista un cuvant - cod u(X) = C(a(X)) aflat la o distanta Hamming minima
de acesta: dH (u(X), v(X)) = s. Daca u0 (X) = C(a0 (X)) este cuvantul - cod trimis
prin canal (receptionat drept v(X)), din ipoteza dH (v(X), u0 (X)) t. Deci, cu
inegalitatea triunghiului, d(u(X), u0 (X)) s + t. Cum s este cea mai mica distanta
Hamming, avem s t, deci d(C(a(X)), C(a0 (X))) s + t 2t < dlib . Din definitia
distantei libere rezulta ca primele k simboluri din a(X) au drept cel mai apropiat
grup de k simboluri generat de cod grupul primelor k simboluri din a0 (X), ceea ce
permite decodificarea si corectarea erorilor.
Pentru urmatoarele grupuri, procedeul decurge analog.
Invers, sa presupunem dlib 2t si fie u(X) = C(a(X)), u0 (X) = C(a0 (X)) cu
dH (u(X), u0 (X)) = dlib si u0 . . . uk1 6= u00 . . . u0k1 . Fie i1 , i2 , . . . idlib toti indicii i
urmatorul cuvant v(X):
pentru care ui 6= u0i . Construim
(
ui
daca ui = u0i sau i = i2s+1
vi =
0
daca i = i2s
ui
Avem dH (u(X), v(X)) dH (u0 (X), v(X)) t. Presupunem ca a fost trimis
u0 (X) si receptionat v(X). Atunci eroarea, care a modificat cel mult t simboluri -

17.2. DECODIFOCAREA CODURILOR SISTEMATICE

195

poate conduce la o decodificare incorecta, deoarece u(X) este cuvantul cod cel mai
apropiat.
Deci, n aceasta ipoteza, codul nu va corecta t erori.
2
Din analiza de sus rezulta ca un parametru important pentru un cod convolutional este distanta libera, care specifica numarul maxim de erori care pot fi corectate. Din nefericire ([1]), nu se cunoaste nici o metoda analitica de constructie de
coduri convolutionale bune, n sensul unei maximizari a dlib pentru n si k date.
Folosind calculatorul, au fost gasite nsa o serie de astfel de coduri bune. Listam
cateva din ele pentru cazul binar si k = 1:
n
2
2
2
2
2
2
3
3
3
4
4

17.2

dlib
5
6
7
8
10
10
8
10
12
10
13

g0 (X)
110111 = 1 + X + X 3 + X 4 + X 5
11110111
1101011011
110111011011
11011111001011
111011110111
111011111
111011101111
111011101011111
111101111111
1111011110011111

Decodifocarea codurilor sistematice

Pastrand similitudinea cu codurile liniare, sa folosim la codurile sistematice ideea


de decodificare bazata pe calculul sindromului.
Fie un (n, k) - cod convolutional sistematic definit prin matricea generatoare G
si cea de control H , construite pe baza subgeneratorilor de lungime N g(i, j), 1
T
i k, 1 j n k (a se vedea prelegerea anterioara). Din relatiile G H
= 0 si
T
c = aG se obtine cH = 0.
Sa presupunem ca s-a receptionat secventa (infinita) r = c + e unde e este o
secventa eroare. Ca si la codurile liniare, sindromul va fi
T
T
T
T
s = rH
= cH
+ eH
= eH
.
Secventa receptionata se poate structura n blocuri de n caractere:
r = r0 (1) . . . r0 (n) r1 (1) . . . r1 (n) . . . rp (1) . . . rp (n) . . .
|

{z

}|

{z

r0

r1

{z

rp

Similar se segmenteaza sindromul n blocuri de lungime n k:


s = s0 (1) . . . s0 (n k) s1 (1) . . . s1 (n k) . . . sp (1) . . . sp (n k) . . .
|

{z

}|

s0

Vom avea
sp (j) = rp (k + j)

k
X
i=1

{z
s1

rp (i)g0 (i, j)

k
X
i=1

1 j n k.

{z

sp

rp1 (i)g1 (i, j) . . .

k
X
i=1

rpN +1 (i)gN 1 (i, j),

196PRELEGEREA 17. DECODIFICAREA CODURILOR CONVOLUT


IONALE
Aceasta relatie se poate scrie si sp (j) = rp (k + j) Ap (j), unde
Ap (j) =

N
1 X
k
X

rpt (i)gt (i, j) este rezultatul codificarii secventei rp (1) . . . rp (k) folo-

t=0 i=1

sind matricea G , n functie de rp1 (1), . . . , rp1 (k), . . . , rpN +1 (1) . . . , rpN +1 (k).
Din aceste relatii, se poate deduce o formula pentru calculul elementelor sindromului, n functie de caracterele secventei - eroare:
sp (j) = ep (k + j)

k
X

ep (i)g0 (i, j)

i=1

k
X

ep1 (i)g1 (i, j) . . .

i=1

k
X

epN +1 (i)gN 1 (i, j),

i=1

1 j n k,
unde e = e0 (1) . . . e0 (n) e1 (1) . . . e1 (n) . . . ep (1) . . . ep (n) . . .
|

{z

}|

{z

e0

e1

{z

ep

este secventa de eroare - tip, segmentata n blocuri de lungime n. Deci, pentru orice
j = 1, 2, . . . , n k, putem scrie:
s0 (j) = e0 (k + j)
s1 (j) = e1 (k + j)

k
X
i=1
k
X

e0 (i)g0 (i, j),


e1 (i)g0 (i, j)

i=1

k
X

e0 (i)g1 (i, j),

i=1

..
.

sN 1 (j) = eN 1 (k + j)

N
1 X
k
X

ep (i)gN p1 (i, j),

p=0 i=1

sN (j) = eN (j)

N
1 X
k
X

ep+1 (i)gN p1 (i, j),

p=0 i=1

..
.

sN +m (j) = eN +m (k + j)

N
1 X
k
X

ep+m1 (i)gN p1 (i, j)

p=1 i=1

..
.
De remarcat ca secventa e0 afecteaza numai primele N componente ale sindromului: s0 , s1 , . . . , sN1 , deoarece apare numai n primele N (n k) ecuatii din
sistemul de sus.
Pentru corectarea erorilor, se determina initial secventa e0 ; dupa aceasta, sindromul se recalculeaza scazand din el componentele lui e0 . Aceasta operatie se numeste
rearanjarea sindromului. In paralel, e0 se foloseste la corectarea primelor n caractere
receptionate; operatia se realizeaza identic cu cea de la codurile liniare.
In continuare, se va folosi un nou sindrom, anume:
s00 (j) = 0
s0m (j) = em (k+j)

m1
k
XX

emp (i)gp (i, j),

1 m N 1,

1 j nk

p=0 i=1

s0N +m (j) = sN +m (j),

m 0.

De remarcat ca secventa e1 figureaza numai n expresiile lui s01 , s02 , . . . , s0N unde
s0i = s0i (1) . . . s0i (nk), 1 i N . Deci aceste componente apar n N (nk) ecuatii.

17.3. ALGORITMUL VITERBI

197

Dupa determinarea lui e1 se corecteaza blocul r1 din secventa receptionata, apoi se


recalculeaza sindromul, s.a.m.d.

17.3

Algoritmul Viterbi

Cel mai cunoscut algoritm de decodificare pentru codurile convolutionale apartine


lui Viterbi si a fost folosit pe scara larga n comunicatiile spatiale. Astfel - ca sa
dam numai un exemplu, statia Voyager n misiunea sa din 1974 spre Marte, Saturn
si Jupiter, a folosit pentru transmisii un (2, 1) - cod convolutional binar de polinom
generator g0 (X) = 1 + X + X 2 + X 5 + X 6 + X 7 + X 8 + X 10 + X 11 + X 12 .
In descrierea algoritmului Viterbi vom folosi o reprezentare n retea a codurilor
convolutionale, care reia sub o forma finita reprezentarea arborescenta. Din nou, ne
vom margini la constructii pentru (n, 1) - coduri convolutionale binare, extensia la
cazul general fiind imediata.
O diagram
a retea este un graf orientat infinit, care are ca noduri starile unui
circuit liniar la fiecare moment (tact). Un nod marcat care corespunde unei stari
S la momentul i, este legat direct cu alte doua noduri, corespunzatoare starilor
circuitului la momentul i + 1: S0 (pentru intrarea 0) respectiv starea S1 (pentru
intrarea 1). Grafic, arcul S S0 va fi totdeauna trasat sub arcul S S1 . Fiecare
arc este marcat cu secventa de iesire a circuitului pentru intrarea corespunzatoare.
Exemplul 17.3 (2, 1) - codul convolutional definit de circuitul liniar
6
-

-+
6
-6

s?

are doua stari posibile (dupa continutul elementului de nmagazinare): 0 si 1.


Pentru intrarea i (i = 0, 1) iesirea este secventa
ii
dac
a starea este 0,
i(1 i)
dac
a starea este 1.
Diagrama retea a codului este:
6

10
10
10
s
-s
-s
-s

@01
@01
@01

@
@
@
@
@

@
11
11
@ 11
@ 11
@
@
R
R
@
R
@
s

-s
s
-s
-s

00

00

00

00

...

Exemplul 17.4 (2, 1) - codul convolutional (de memorie N = 2) reprezentat prin


circuitul liniar

198PRELEGEREA 17. DECODIFICAREA


CODURILOR
CONVOLUT
IONALE
-+
+

s-

?
-

-+

are patru stari: 00, 01, 10 si 11 (dup


a continuturile elementelor de nmagazinare).
Din starea S = 00 se ajunge la S0 = 00 dac
a intrarea este 0, sau n S1 = 10
dac
a intrarea este 1. Iesirile corespunz
atoare sunt 00 respectiv 11.
Analog, daca S = 10, atunci S0 = 01 (intrare 0 iesire 10) si S1 = 11 (intrare 1
iesire 01), etc. Se ajunge la diagrama retea urmatoare:
6

11

01

10

00

10
10
-s
-s
-s

@
@

@
@
@

@ 01
@ 01
@ 01

@
@
@

@
@
@

@
@
@
@
@
@
s
Rs
@
@
Rs
@
Rs

A@

A@

A@

A@
A@
A@

A @ 10
A @ 10
A @ 10
10

@
@
@

A
A
A
01
01
01
01
A @

A @
A @

A 00 @
A 00 @
A 00 @
@
@
@
A
s 11A
s
s

Rs
@
@
R
@
R
11
11A
A
A
A

A
A
A

A
A

A
A
A
11
11
11
11
11
A
A
A

A
A
A

AAUs
AAU
AAU
s
s
s
-s
-s

s
@

00

00

10

00

00

00

...

Orice drum prin retea, care pleaca din momentul 0 conduce - prin citirea marcajelor
arcelor - la un cuvant - cod. De exemplu, pentru intrarea 100110, codul generat este
C(100110) = 111000011001 (reamintim, spre dreapta pleac
a totdeauna doua arce,
iar arcul pentru intrarea 0 este situat sub arcul pentru intrarea 1).
Invers, orice cuvant - cod reprezint
a marcajul unui drum n retea.

17.3. ALGORITMUL VITERBI

199

Sa construim acum algoritmul de decodificare Viterbi.


La receptia unui cuvant v = v0 v1 v2 . . . vom cauta constructia unui drum n
retea, cat mai apropiat de v.
Pentru fiecare moment i si stare S vom lista drumurile active prin retea pana la
starea S la momentul i. Un drum este activ daca discrepanta sa este minima (prin
discrepant
a se ntelege distanta Hamming dintre cuvantul generat de drumul prin
arbore si cuvantul de aceeasi lungime primit la intrare). Vom adnota fiecare stare
la momentul i cu discrepanta drumului sau activ. Pentru calculul ei se poate folosi
o formula recursiva definita astfel:
Fie d(S S 0 ) distanta Hamming dintre marcajul arcului S S 0 si secventa de
n caractere primita, iar di(S) discrepanta starii S. Atunci
di(S 0 ) = min0 {di(S) + d(S S 0 )}
SS

(1)

Algoritmul va avea o durata de functionare finita numita fereastr


a de decodificare,
pe care o notam cu b (deci va functiona b tacti).
Algoritmul Viterbi:
Intrare: Secventa v0 v1 . . . ,
Algoritm:

vp = vp,0 vp,1 . . . vp,n1 ;

1. Fie p := 0 si S0 starea initiala a retelei (starea cu toate elementele de


nmagazinare 0);
2. Se marcheaza di(S0 ) = 0;
3. for i := 1 to b do
Pentru toate starile S accesibile la momentul p+i se determina
di(S) folosind formula (1), si se listeaza toate drumurile active care
duc la S.
4. Daca toate drumurile active la momentul p + b ncep cu acelasi arc
S0 S1 , secventa de intrare vp se corecteaza n marcajul up al acestui
prim arc (si se decodifica n primul caracter al lui S1 ). Altfel, eroarea
nu este corectabila, STOP.
5. p := p + 1,

S0 := S1 , salt la pasul 3.

Exemplul 17.5 Sa relu


am codul descris n Exemplul 17.4, mpreun
a cu diagrama
sa de retea. Presupunem ca s-a primit secventa v = 10010100101100000 . . . Deci
v0 = 10, v1 = 01, v2 = 01, v3 = 00, v4 = 10, v5 = 11, v6 = 00 . . ..
Vom lucra cu o fereastr
a de decodificare b = 7. Detaliem grafic numai procedura
de decodificare a primului bloc (cazul p = 0).

200PRELEGEREA 17. DECODIFICAREA CODURILOR CONVOLUT


IONALE
i=0:

s 0

i=1:

* 1

s -s 1

i=2:

*
s s

*
s-s-s

i=3:

sH
s

j
H

s
s

*
*

s-s-s-s

i=4:

s
s -s
H
HH

j
H
js

sH H
@
H
s

js
H

*
*
@

R
s -s -s -s @
-s

i=5:

sH
sH -s -s

js HH
j

H
*

HH sH

H
s

s H

j
H
js

*
*
*

s -s -s -s -s -s

i=6:

i=7:

*
s

1
3
2
2
2
1
3
3
3
3
1
3
3
1
4
4

sH -s
s HH

js

*H

@
H
HH

H
js
js
@
@
Rs

sH

HH
js

s
H

HH
js

4
4
3
3

sH
s
s HH

js s

*H

*
HH
s @HH

s s

j@
j
*
@
@

@
R
Rs
s @

4
4
3
4

Se ajunge la concluzia ca toate arcele active au acelasi nceput: arcul marcat cu


11. Deci primul bloc v0 = 10 se decodific
a n 11, dupa care se ia ca nod initial
S0 = 10 si procesul se repet
a.
De remarcat ca pentru o fereastr
a de decodificare b = 5, eroarea nu s-ar fi putut
corecta (primul arc nu este unic).
In aceasta prezentare a algoritmului Viterbi, apare o problema: cat de mare este
fereastra b ? Cat de departe mergem prin diagrama retea pana sa fim siguri ca totusi
este posibila decodificarea si corectarea erorilor ?
Pentru aceasta sa refacem sub o forma finita reprezentarea diagramelor - retea.
Din definitia data n Prelegerea 16 se observa ca daca g0 (X), g1 (X), . . . ,
gn1 (X) sunt polinoamele generatoare si a(X) un mesaj de informatie, codificarea
poate fi scrisa ca o secventa de n componente (infinite)
c(X) = (a(X)g0 (X), a(X)g1 (X), . . . , a(X)gn1 (X))
ale caror caractere se transmit n paralel, n ordinea crescatoare a puterilor lui
X.

17.3. ALGORITMUL VITERBI

201

Exemplul 17.6 Fie (2, 1)- codul generat de g0 (X) = 1 + X + X 3 si g1 (X) = 1 + X.


Mesajul a(X) = 1 + X 2 este codificat n
c(X) = ((1 + X 2 )(1 + X + X 3 ), (1 + X 2 )(1 + X)) = (1 + X + X 2 + X 5 , 1 + X +
2
X + X 3 ).
Deci cuvantul cod este c = 11 11 11 01 00 10 00 . . ..
Vom construi un translator (diagram
a de translatare) asociat unui (n, 1) - cod
convolutional astfel:
Starile translatorului sunt N - tupluri binare, fiecare stare reprezentand o situatie
posibila a celor N elemente de nmagazinare. O stare s1 . . . sN 1 sN este legata direct
prin arcul marcat x1 . . . xn de starea is1 . . . sN 1 , (i = 0, 1) daca n circuitul liniar
corespunzator codului, intrarea i conduce la modificarea continuturilor elementelor
de nmagazinare, din (s1 , . . . , sN ) n (i, s1 , . . . , sN 1 ) si are ca efect iesirea x1 . . . xn .
Exemplul 17.7 Reteaua codului definit n Exemplul 17.3 poate fi reprezentat
a sub
form
a de diagram
a de translatare astfel:
11 -
00 ? -
0
1 ?10

01
Pentru codul din Exemplul 17.4, reprezentarea finita este:

10 Q

01

- 11
10
?

kQ
6Q
QQ
Q 10
11
00QQ
01
Q
Q
Q
QQ
?


s
QQ
00 ? -
00
01

11

De remarcat ca pe fiecare arc este suficient sa marc


am doar secventa de iesire;
caracterul de intrare este reprezentat de primul caracter al starii n care intra arcul
respectiv.
Definitia 17.2 Se defineste lungimea unui drum ca fiind numarul de arce care
formeaz
a acel drum.
Ponderea unui drum este suma ponderilor arcelor care formeaz
a drumul.
Reamintim, ponderea unui cuvant este numarul de caractere nenule din cuvantul
respectiv.
Conform Definitiei 17.1, distanta libera a unui cod este ponderea nenula minima
a unui cuvant cod - deci a unei secvente care marcheaza un drum prin diagrama de
translatare.
Propozitia 17.2 Distanta liber
a a unui (n, 1) - cod convolutional este egal
a cu ponderea nenula minima a unui ciclu care trece prin starea initial
a 00 . . . 0 a diagramei
de translatare a codului.
Demonstratie: Este imediata.

"

dlib 1
, se deFie S0 = 00 . . . 0 starea initiala. Pentru orice t, 1 t
2
fineste d(t) ca fiind cel mai mic numar ntreg pozitiv p cu proprietatea ca orice

202PRELEGEREA 17. DECODIFICAREA CODURILOR CONVOLUT


IONALE
drum S0 S1 . . . Sp1 , (S0 6 S1 ) are ponderea mai mare de 2t. Pentru determinarea algoritmica a lui d(t) se poate adapta imediat un algoritm similar din
teoria grafurilor.
Deoarece codul este liniar, valoarea lui d(t) se pastreaza pentru orice stare a
diagramei de translatare.
Acum, n conditiile ca pot apare maxim t erori, algoritmul Viterbi va functiona
corect pentru o fereastra b = d(t) (datorita Propozitiei 17.1).
Reluarea algoritmului Viterbi la fiecare pas cu fereastra maxima d(t) este nsa
destul de costisitoare ca timp; de aceea, practic, se foloseste o fereastra mobila
b d(t) si algoritmul trece la faza de decodificare atunci cand toate drumurile
active selectate au acelasi prim arc. Daca s-a ajuns la b = t(b) si nu s-a selectat un
prim arc comun, algoritmul esueaza.

17.4

Coduri convolutionale catastrofice

Daca este definit neglijent, un cod convolutional poate conduce la urmatoarea situatie, complet nefericita: un mesaj n care a fost perturbat un numar mic de caractere
genereaza prin decodificare o infinitate de erori.
Pentru a studia acest caz, consideram din nou numai codurile (n, 1) - convolutionale binare. Pentru a vedea n ce consta problema, sa luam urmatorul exemplu:
Exemplul 17.8 Fie (2, 1) - codul convolutional binar, cu polinoamele generatoare
g0 (X) = 1 + X 3 , g1 (X) = 1 + X + X 2 . Diagrama sa de translatare este

100
110

6B
B
B
B

11
01
00
B11
B

B
B

BN

BN

10 -

010
101 00
111 ?01
00?-000 01
11

BM
BM

B
B
01
10
10B
00B

B
B

B
B ?
11
001
011

10

S
a presupunem ca s-a transmis mesajul de informatie a = 00 . . ., caruia i
corespunde cuvantul - cod nul c = 0000 . . .. La receptie s-a primit un cuvant cu
primele trei simboluri gresite: v = 111000 . . .. Decodificarea sa nu ridica nici o
problem
a, acesta fiind de asemenea cuvant - cod, care marcheaz
a drumul prin starile
000 100 110 011 101 110 . . ..
Deci, n ipoteza general
a din Teoria Codurilor (cea a decodific
arii cele mai proba0
bile), nu au aparut erori, si mesajul decodificat este a = 110110110 . . ., care difera
de a ntr-o infinitate de pozitii.
acest mod, modificarea doar a primelor trei caractere a dus la situatia n care
In
aceste erori se propaga ntr-o secvent
a infinita.

17.5. EXERCIT
II

203

Se observa din acest exemplu ca tot necazul provine din faptul ca diagrama contine
doua cicluri distincte cu iesirea 0: 000 000 si 110 011 101 110.
Definitia 17.3 Un cod convolutional se numeste catastrofic daca diagrama sa de
translatare contine doua cicluri distincte de pondere zero.
Observatie: Orice cod convolutional contine un ciclu de pondere zero, anume bucla
care pleaca si intra n starea initiala. Reamintim, ponderea unui drum este suma
ponderilor arcelor sale.
Teorema 17.1 Un (n, 1) - cod convolutional este catastrofic daca si numai daca
cmmdc(g0 (X), . . . , gn1 (X)) 6= 1.
Demonstratie: Teorema ramane valabila daca o demonstram pentru cazul n = 2. Fie
deci un (2, 1) - cod convolutional, de polinoame generatoare g0 (X), g1 (X). Pentru
a marca un ciclu, un cuvant de intrare trebuie sa fie de forma b(X) + X r a(X) (1 +
X p + X 2p + . . .), cu grad(a(X)) < p. Pentru a elimina din discutie bucla din starea
S0 , vom considera a(X) 6 0. Sa presupunem ca n diagrama de translatare a codului
exista un ciclu de lungime p si pondere 0. Atunci a(X)g0 (X) si a(X)g1 (X) trebuie
sa se divida cu 1 + X p , deci a(X) g 0 (X) (unde g 0 (X) = cmmdc(g0 (X), g1 (X))), se
divide cu 1 + X p .
Daca g 0 (X)) = 1, se ajunge la o contradictie (deoarece a(X) are grad mai mic
decat p si nu este polinomul identic nul). Deci grad(g 0 (X)) 1. In acest caz, toate
mesajele de informatie b(X) + a(X) [g 0 (X)]t (1 + X p + X 2p + . . .), (t 0) se codifica
identic, ceea ce va conduce la imposibilitatea decodificarii.
Reciproca se demonstreaza similar.
2

17.5

Exercitii

17.1 Determinati dlib pentru fiecare din codurile urmatoare:


(a)
g0 (X) = 1 + X 2 , g1 (X) = 1 + X + X 2 ;
(b)
g0 (X) = 1 + X + X 2 + X 3 , g1 (X) = 1 + X 2 + X 3 ;
(c)
g0 (X) = 1 + X 3 + X 4 , g1 (X) = 1 + X + X 2 + X 4 .
17.2 Folosind (2, 2) - codul convolutional definit n Exemplul 17.4, si fereastra de
decodificare b = 7, decodificati (cat este posibil) secventele
v = 01000001000 . . .
v = 11000110010010001110010 . . .
17.3 Trasati diagrama retea a (2, 1) - codului convolutional generat de g0 (X) =
1 = X 2 + X 3 + X 4 . Folositi algoritmul Viterbi pentru decodificarea secventei v =
1000001000001000 . . .
17.4 Fie (2, 1) - codul generat de g0 (X) = 1 + X + X 2 + X 3 , g1 (X) = 1 +
X 2 + X 3 . Decodificati primele 4 caractere de informatie ale cuvantului receptionat
c = 11000000 . . . pentru

204PRELEGEREA 17. DECODIFICAREA CODURILOR CONVOLUT


IONALE
b = 2,

b = 3,

b = 4.

17.5 Generalizati conceptul de diagram


a retea la (n, k) - coduri.
Trasati reteaua (2, 2) - codului definit de circuitul liniar:

- +
6
6
6

?- +

s-

- +

s
?

-+
?

+ 6
6
-

17.6 Generalizati notiunea de diagram


a de translatare pentru (n, k) coduri binare.
Construiti diagrama de translatare a codului definit n exercitiul anterior.
17.7 Demonstrati Propozitia 17.2,
17.8 Pentru codurile definite
# iul 17.1, determinati diagramele de trans" n Exercit
dlib 1
latare si d(t) pentru 1 t
.
2
"

dlib 1
?
17.9 Ce se nt
ampl
a daca se ncearc
a sa se determine d(t) pentru t >
2
17.10 Construiti un algoritm
pentru
# determinarea lui d(t) n cazul unui (n, 1) "
dlib 1
cod convolutional (1 t
dat).
2
17.11 Pentru fiecare din codurile urmatoare, decideti daca sunt catastrofice sau nu.
caz afirmativ, determinati ciclurile de pondere 0.
In
(a)
g0 (X) = 1 + X, g1 (X) = 1 + X + X 2 + X 3 ;
(b)
g0 (X) = 1 + X + X 4 , g1 (X) = 1 + X 2 + X 4 ;
(c)
g0 (X) = 1 + X + X 2 , g1 (X) = 1 + X + X 3 + X 4 .

Bibliografie
[1] J. Adamek - Foundations of Coding, Wiley - Interscience, 1991;
[2] L. Bahl, J. Cocke, F. Jelinek, J. Raviv - Optimal decoding of linear codes for
minimizing symbol error rate, IEEE Inf. Theory, pp. 284-287, Martie 1974;
[3] M. Blaum - A (16, 9, 6, 5, 4) error correcting dc-free block code, IEEE Transactions on Information Theory, vol. 34, 1988, pp. 38-141;
[4] C. Carlet - Codes de Reed - Muller; Codes de Kerdok et de Preparata (teza de
doctorat), PARIS VI, 1990;
[5] G. Cullmann - Coduri detectoare si corectoare de erori, Editura Tehnica, 1972;
[6] S. Guiasu - Teoria Codurilor, Tipografia Universitatii Bucuresti, 1976;
[7] D.G. Hoffman, D.A. Leonard, C.C. Lindner, K.T. Phelps, C.A. Rodger, J.R.
Wall - Coding Theory; The Essentials, Marcel Dekker, Inc, 1991;
[8] B. Honary, G. Markarian - Trellis Decoding of Block Codes, A Practical Approach, Kluwer Academic Publ., 1997;
[9] A. M. Kerdok - A class of low-rate non linear codes, Information and control,
20 (1972), 182-187;
[10] J.H. van Lindt - Coding Theory, Springer Verlag, 1971;
[11] J.H. van Lindt - Introduction to Coding Theory, Springer Verlag, 1982;
[12] W.E.Ryan - A Turbo Code Tutorial, IEEE Trans. comm. pp. 1261-1271, Oct.
1996;

205

Prelegerea 18
Coduri - tablou
18.1

Definirea codurilor tablou

In Prelegerea 3 au fost definite codurile - produs. Desi constructia prezentata era


cunoscuta din anii 0 60, dezvoltarea acestei clase de coduri a fost exploziva abia dupa
trei decenii, odata cu introducerea pe piata a telefoniei mobile. Acum s-a aratat ca
orice cod - bloc poate fi generat finit recursiv, folosind o varianta de coduri produs.
Sa consideram o clasa particulara de coduri - produs binare, n care n1 = k1 +
1, n2 = k2 + 1 (deci singurul simbol de control este bitul de control al paritatii).
Acest cod este generat de produsul Kronecker a doua matrici de forma

Gp,p+1

1 0 0 ... 0 1

0 1 0 ... 0 1

=
..

(1)

0 0 0 ... 1 1
unde p = k1 , k2 .
Un astfel de (n1 n2 , k1 k2 ) - cod are distanta d = d1 d2 = 22 = 4, deci corecteaza
o eroare si detecteaza doua erori. Chiar daca n scrierea liniara a cuvintelor - cod
ultimul simbol de control se poate elimina (el este de fapt suma modulo 2 a bitilor
de control de pe ultima linie si coloana) distanta se reduce la 3, deci capacitatea de
corectare a unei erori ramane.
Exemplul

!18.1 Fie un (3, 2) - cod binar sistematic, generat de matricea G =


1 0 1
. Codul produs (3, 2)(3, 2) = (9, 4) va avea ca matrice generatoare
0 1 1

1 0 1 0 0 0 1 0 1
0 1 1 0 0 0 0 1 1

G0 = G G =

0 0 0 1 0 1 1 0 1
0 0 0 0 1 1 0 1 1
Daca a = 1001 este un mesaj de informatie, el se codific
a n
x = aG0 = 101011110, sau folosind forma matriciala:
1 0 1
x = 0 1 1 = 101011110
1 1 0
caracterele de control fiind subliniate, iar cuvantul - cod este transmis linie cu linie.
193

194

18.2

PRELEGEREA 18. CODURI - TABLOU

Structura de retea a codurilor tablou

In cadrul codurilor convolutionale s-a definit o structura de retea pentru facilitarea


codificarii, decodificarii, detectarii si corectarii de erori (Prelegerea 17). Aceasta
structura se poate extinde cu mici modificari si la codurile liniare.
Fie C un (n, k) - cod liniar care se poate reprezenta printr-un cod - tablou. Lui
i se asociaza un graf orientat cu arce marcate. Varfurile grafului sunt partitionate
n coloane V0 , V1 , . . . , VNc 1 (Nc n + 1). O coloana Vi contine multimea starilor
la care se poate ajunge la momentul i. Fiecare arc U pleaca dintr-o stare qj Vi si
ajunge la o stare qm Vi+1 (i 0); n acest caz, qm este succesorul lui qj , iar qj este
predecesorul lui qm . Arcul este marcat cu o pereche (U )/(U ), unde (U ) Zq este
un mesaj de informatie, iar (U ) Zq este mesajul - cod corespunzator (de obicei
ele se reduc la cate un singur caracter).
Propriet
ati:
(a) V0 = {q0 }, VNc 1 = {qNc 1 }; deci, orice retea pleaca dintr-o stare unica q0
(r
ad
acina) si ajunge de asemenea ntr-o stare unica qNc 1 (tinta);
(b) Orice stare este accesibila din radacina prin cel putin un drum;
(c) Din orice stare se poate ajunge la tinta prin cel putin un drum.
Numim drum prin retea un drum de la radacina la tinta. Printr-o retea se pot
cataloga toate cuvintele unui cod liniar reprezentabil sub forma de cod - tablou.
Orice cuvant - cod corespunde unui drum unic prin retea. Deci o astfel de retea va
contine q k drumuri distincte. Fiecare astfel de drum are doua marcaje:
(i) concatenarea marcajelor de informatie (U ) ale fiecarui arc U al drumului;
aceasta secventa formeaza mesajul de informatie care se codifica.
(ii) concatenarea marcajelor (U ) ale fiecarui arc U al drumului; ele formeaza
cuvantul care codifica secventa de informatie.
In acest fel, operatia de codificare sau decodificare (fara corectare de erori) se
reduce pentru fiecare mesaj de informatie (cod) la determinarea acelui drum prin
retea, marcat de mesajul respectiv.
Sa consideram numai (n1 n2 , k1 k2 ) - coduri - tablou binare (generalizarea la
cazul nebinar se face fara probleme deosebite). Pentru aceste coduri se pot construi
evident mai multe structuri de retea; vom considera aici numai retele cu un numar
minim de stari pe fiecare coloana. Constructia unei astfel de retele va necesita
Ns = 2min{k1 ,k2 }
stari (reamintim, aici ki = ni 1, i = 1, 2). Procedura de generare ([8]) a retelei
este:

18.2. STRUCTURA DE RET


EA A CODURILOR TABLOU

195

1. Fie n1 = min{n1 , n2 } (pentru cazul invers se procedeaza similar);


2. Se determina numarul Ns de stari si numarul Nc de coloane prin relatiile
Ns = 2n1 1 ,

Nc = n2 + 1;

3. Pentru fiecare coloana Vp (0 p Nc 1) se noteaza elementele (starile)


sale prin (A)p = (a1 a2 . . . ak1 )p , unde ai Z2 ;
4. Radacina retelei este (00 . . . 0)0 , iar scopul este (00 . . . 0)Nc 1 ;
5. Pentru orice pereche de stari (A, B) Vp Vp+1 (0 p < Nc 2), se
marcheaza arcul corespunzator cu p (A, B)/p (A, B) definite p (A, B) =
(A)p + (B)p+1 , p (A, B) = p (A, B)c1 , unde c1 este bitul de paritate al
secventei p (A, B) iar suma se realizeaza n Z2 .
6. Arcele care leaga starile A VNc 2 de tinta au Nc 2 (A, B) =
, Nc 2 (A, B) = (A)Nc 2 c1 unde c1 este bitul de paritate al secventei
(A)Nc 2 care defineste starea A.
Exista 2k1 k2 drumuri distincte prin retea, fiecare corespunzand unui cuvant - cod
unic. Procedura poate fi extinsa usor la codurile produs cu mai multe simboluri de
control.
a codului tablou (3, 2)(3, 2) (deci n1 =
Exemplul 18.2 Sa construim reteaua asociat
n2 = 3, k1 = k2 = 2, d = 4). Ea va avea Ns = 2n1 1 = 231 = 4 st
ari distincte si
Nc = n2 + 1 = 3 + 1 = 4 coloane.
Fiecare stare va fi de forma (a1 a2 )p cu p = 0, 1, 2, 3, a1 , a2 {0, 1}.
(00)0 si (00)3 vor fi rad
acina respectiv tinta retelei.
Marcajele arcelor sunt de forma p (A, B)/p (A, B), obtinute prin toate combinatiile posibile ale lui (a1 a2 )p si (a1 a2 )p+1 .
Astfel, pentru p = 0 avem:
0 (00, 00) = (00)0 + (00)1 = 00
0 (00, 01) = (00)0 + (01)1 = 01
0 (00, 01) = (00)0 + (10)1 = 10
0 (00, 11) = (00)0 + (11)1 = 11.
iar fiecare arc va fi marcat cu o pereche de forma
0 /0 = a1 a2 /a1 a2 c1
unde c1 = a1 + a2 .
Pe nivelul p = 1, arcele sunt marcate prin perechi din tabelul urmator:
1 (A, B)
00
01
10
11

00
00/000
01/011
10/101
11/110

01
01/011
00/000
11/110
10/101

10
10/101
11/110
00/000
01/011

11
11/110
10/101
01/011
00/000

La ultimul nivel, pentru p = Nc 2 = 2 vom avea 2 (A, 00) = si


2 (00, 00) = 000, 2 (01, 00) = 011, 2 (10, 00) = 101, 2 (11, 00) = 110 (pe ultimul
arc sunt numai simboluri de control).

196

PRELEGEREA 18. CODURI - TABLOU

Reteaua se poate reprezenta grafic astfel:

/000
H
00
00
6
@HH
J
*

J@ HH

HH
J@

HH
J@

J @
HH

H
@
J
H

H
J @

@
H
J
j
H

01/011
/011
- 01
- 01

@
J
H

@H

J @

@HH

@
J
H

@
H J

@
@ HHJ @
HH

00
@
@

@ JH
HH @
@
HH@

@
R
H
@ J

j
H
10/101
/101
- 10

10
@

HH
J
*

H
@

J
H
@
HH
J

HH @ J
@ J


H
HH
@

HH @J

J
H @

J
^

HH@
R

j
H
/110

? 11/110 - 11
11

00/000

00

6
-

mod similar se construiesc codurile tablou obtinute prin produsul


Exemplul 18.3 In
a doua (3, 2)(n2 , k2 ) - coduri bloc. Toate au acelasi numar de stari Ns = 22 =
4, doar adancimea (numarul de coloane) variind n functie de n2 (Nc = n2 + 1).
Reprezentarea grafic
a a retelei este

00 Z
00 Q

: 00

ASQ
JZ
s
3


A J Z
@
AS
S
w

A J
@
AAU
Z

A
@
J Z

XXX
@
A J Z
Z
~
X
z

>

- 01
A J - 01 @
* 01
:
Z

XXX
J
Z
~

A
@

Z
J

>

XXX@

R
JJ
S Z A J

z
X

^. . .

Z

S
A
00 H
J
Z

1 00

S
J HH

AZ J
HH

J
^

S AZ
J
HH

j
1 XXH
~
Z
X

X
z 10

H
j 10 S A - 10
J
HH

:
j
J


Z S A
>

Z S
J
A

S A
J

QQ
Z

J
AU
Z S
PPQ

Q
s
S
w

P
q
Z

J
~
Z
* XXX
z
J
^ 11

- 11
11

marcajul nodurilor fiind realizat similar cu cel din Exemplul 18.2.

18.3

Decodificarea codurilor tablou

Operatia de codificare se realizeaza foarte simplu: fiecare mesaj de informatie de


k1 k2 caractere, se scrie ca o secventa de k2 + 1 grupuri, primele k2 grupuri avand
cate k1 simboluri, iar ultimul . Aceasta secventa traseaza prin retea un drum unic

18.3. DECODIFICAREA CODURILOR TABLOU

197

(00 . . . 0) A1 . . . ANc 2 (00 . . . 0)


de la radacina la tinta. Ceea ce se obtine prin concatenarea iesirilor
0 (00 . . . 0, A1 )1 (A1 , A2 ) . . . Nc 2 (ANc 2 , 00 . . . 0)
va fi un cuvant - cod al (n1 n2 , k1 k2 ) - codului - tablou reprezentat de retea.
Pentru decodificare se poate folosi o varianta a algoritmului Viterbi, cu mici
modificari, necesare trecerii de la codurile convolutionale la coduri bloc.
1. Cuvantul receptionat este mpartit n n2 subcuvinte, fiecare avand n1
valori digitizate (vezi Exemplul 18.4) ale alfabetului - cod.
2. La fiecare nivel p, pentru fiecare arc (Ap , Bp+1 ) se calculeaza metrica
arcului, care este distanta euclidiana dintre al p + 1-lea subcuvant
receptionat si p (Ap , Bp+1 ). Distanta euclidiana dintre x = x1 x2 . . . xn si
y = y1 y2 . . . yn este
dE (x, y) = (x1 y1 )2 + (x2 y2 )2 + . . . + (xn yn )2 .
3. Pentru fiecare nod B al retelei se determina metrica nodului B, astfel:
(a) Metrica nodului radacina este 0;
(b) Pentru un nod Bp+1 Vp+1 (p 0), metrica lui B este cea mai mica
valoare a sumei dintre metrica unui nod Ap Vp si dE ((A)p , (B)p+1 ),
minimul fiind luat dupa toate nodurile din Vp .
4. Arcul selectat n calculul metricii nodului se introduce ntr-un drum posibil, iar toate celelalte arce de pe nivelul respectiv sunt eliminate.
5. Dupa ce s-a calculat metrica nodului tinta, se considera drumul posibil
corespunzator si decodificarea se face prin concatenarea sub-mesajelor
de informatie care marcheaza arcele acestui drum.
Exemplul 18.4 Sa relu
am codul - tablou definit n Exemplul 18.2. Presupunem ca
s-a transmis cuvantul cod a = 011101110 si s-a receptionat mesajul digitizat
b0 = 0.2 0.4 0.4 0.3 0.1 0.9 1.0 0.9 0.6.
Presupun
and ca orice simbol digitizat din intervalul [0.0, 0.5) reprezint
a caracterul binar 0, iar [0.5, 1.0] reprezint
a 1, putem considera ca s-a primit secventa

b = 000001111 deci au aparut 4 erori. Intr-o


decodificare obisnuit
a a codurilor
liniare, deoarece d = 4, erorile nu pot fi corectate. Folosind structura de retea ns
a,
0
acest lucru este realizabil. Sa detaliem pasii decodific
arii cuvantului b .
Metrica nodului rad
acin
a (00)0 este 0.
Prima subsecvent
a de n1 = 3 caractere primite este 0.2 0.4 0.4.
Se calculeaz
a metricile celor patru arce care pleac
a din rad
acin
a:
dE ((00)0 , (00)1 ) = (0.2 0.0)2 + (0.4 0.0)2 + (0.4 0.0)2 = 0.36;
dE ((00)0 , (01)1 ) = (0.2 0.0)2 + (0.4 1.0)2 + (0.4 1.0)2 = 0.76;
dE ((00)0 , (10)1 ) = (0.2 1.0)2 + (0.4 0.0)2 + (0.4 1.0)2 = 1.16;
dE ((00)0 , (11)1 ) = (0.2 1.0)2 + (0.4 1.0)2 + (0.4 0.0)2 = 1.16.
Metricile celor patru noduri de pe nivelul 1 sunt chiar aceste valori.

198

PRELEGEREA 18. CODURI - TABLOU

Urmatorul submesaj primit este 0.3 0.1 0.9. Pentru nodurile de pe nivelul
2, valorile calculate ale metricilor (metrica nodului predecesor plus metrica arcului)
sunt:
(00)1
(01)1
(10)1
(11)1

(00)2 (01)2 (10)2 (11)2


1.27 1.27 0.87 2.42
1.67 1.67 2.87 1.37
1.67 3.27 2.07 2.07
3.27 1.67 2.07 2.07

Minimul pe fiecare coloan


a ale acestor valori (scris ngrosat) reprezint
a metrica
nodului respectiv. Deci nodurile (00)2 si (01)2 au metrica 1.27, (10)2 are metrica
0.87, iar (11)2 are metrica 1.37.
Ultima subsecvent
a de trei caractere digitizate este 1.0 0.9 0.6. Valorile calculate ale metricilor (metrica nodului predecesor plus metrica arcului) drumurilor care
ajung n nodul tint
a sunt:
(00)2
(01)2
(10)2
(11)2

(00)3
3.44
2.44
1.84
1.74

Deci metrica nodului tint


a este 1.74. Ref
ac
and acum traiectoria n sens invers,
se obtine drumul posibil (00)0 (01)1 (11)2 (00)3 , reprezentat n figura

00

00

01
01 Z
01/011

Z 10/101

00
00
Z
3

Z
/110
10
10
Z

ZZ
~

11
11

Prin concatenarea marcajelor arcelor de pe acest drum, rezult


a cuvantul - cod
011101110 (care coincide cu mesajul transmis a) si decodificarea lui - mesajul de
informatie 0110.

18.4

Coduri tablou generalizate (GAC)

Definitia codurilor - tablou se poate extinde pentru a cuprinde si alte clase de coduri
liniare (Hamming, Reed - Muller) sau ciclice (BCH, Reed - Solomon); ceea ce se
obtine este un cod - tablou generalizat (GAC - Generalized Array Codes).
Un GAC este o suma binara de doua sau trei coduri - tablou, completate eventual
cu linii nule. Procedura de constructie a unui astfel de (n, k) - cod C este:
A. Fie C1 un cod - produs prin nmultirea Kronecker GA1 GA2 , unde:
(i) GA1 este o matrice k1 (k1 + 1) de tipul (1);

18.4. CODURI TABLOU GENERALIZATE (GAC)

199

(ii) GA2 = (Ik2 |Jk2 ,n2 k2 ) unde Ik2 este matricea unitate iar J este o matrice cu
toate elementele 1;
(iii) n = (k1 + 1) n2 , kA = k1 k2 .
B. Fie C2 un cod - produs prin nmultirea Kronecker GB1 GB2 , unde:
(i) GB1 este o matrice 1 nB1 cu toate elementele 1;
(ii) GB2 = (G3 |G4 ) este o matrice kB nB2 unde G3 este o matrice cu coloane 0
sau 1, iar G4 este o matrice de tipul (1) cu kB linii. Coloanele lui GB2 pot fi eventual
permutate.
(iii) n = nB1 nB2 .
C. Fie C3 un cod - produs prin nmultirea Kronecker GC1 GC2 , unde:
(i) GC1 = (00 . . . 01) are dimensiunea 1 nC1 ;
(ii) GC2 = (11 . . . 1) are dimensiunea 1 nC2 ;
(iii) n = nC1 nC2 .
D. Codul C este C1 + C2 sau C1 + C2 + C3 unde suma se efectueaza n Z2 ; el
are lungimea n, k = kA + kB respectiv k = kA + kB + 1 simboluri de informatie si
este generat de matricea

!
GA1 GA2
GA1 GA2

sau
GB1 GB2
GB1 GB2
GC1 GC2
In exemplele urmatoare vom prezenta sub forma de coduri GAC unele din cele
mai cunoscute coduri - bloc (liniare sau ciclice).
Exemplul 18.5 Sa consider
am

1 0 0 1

GA1 =
0 1 0 1 , GA2 = (1 1)
0 0 1 1
GB1 = (1 1 1 1), GB2 = (0 1).
Dimensiunile codului sunt
n = 4 2 = 8, k = 3 +
1 = 4. Matricea generatoare va fi

1 1 0 0 0 0 1 1
0 0 1 1 0 0 1 1

G=

.
0 0 0 0 1 1 1 1
0 1 0 1 0 1 0 1
Aceasta corespunde unui cod Reed - Muller RM(1, 3). Daca se ignora ultima
coloan
a (de control), se obtine un (7, 4) - cod Hamming binar.
Aranjarea sub forma de tablou a cuvintelor - cod din cele doua coduri - produs
componente este urmatoarea:
Fie a = a1 a2 a3 a4 un mesaj de informatie. Atunci cuvantul - cod x este dat prin:
0 a4
a1 p1
0 a4
a2 p2
,
x2 =
x1 =
0 a4
a3 p3
0 a4
p4 p5
a1 p1 + a4
a p + a4
= (a1 , a4 + p1 , a2 , p2 + a4 , a3 , p3 + a4 , p4 , p4 + a4 ),
x = x1 + x2 = 2 2
a3 p3 + a4
p4 p4 + a4
unde pi = ai (1 i 3) si p4 = a1 + a2 + a3 sunt simboluri de control.

200

PRELEGEREA 18. CODURI - TABLOU

Exemplul 18.6 Codul RM(1,


4) poate
fi generat cu un cod GAC astfel:

1 0 0 1

GA1 = 0 1 0 1
GA2 = (1 1 1 1)
0 0 1 1

!
0 1 0 1
GB1 = (1 1 1 1)
GB2 =
.
0 0 1 1
Deci n = 4 4, k = 3 + 2 = 5 si

1 1 1 1 0 0 0 0 0 0 0 0 1 1 1 1

0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1

G=
0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 .

0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1
Elimin
and ultimul simbol de control (ultima coloan
a din matricea G) se ajunge
la un (15, 5) - cod binar cu d = 7, care este un cod BCH.
Fie a = a1 a2 a3 a4 a5 un mesaj de informatie. Reprezentarea tabelar
a a cuvintelor
- cod este:
a1 p1 p1 p1
0 a4 a5 a4 + a5
a p p p
0 a4 a5 a4 + a5
x1 = 2 2 2 2
x2 =
,
a3 p3 p3 p3
0 a4 a5 a4 + a5
p4 p4 p4 p4
0 a4 a5 a4 + a5
a1 p1 + a4 p1 + a5 p1 + a4 + a5
a p + a4 p2 + a5 p2 + a4 + a5
x = x1 + x2 = 2 2
,
a3 p3 + a4 p3 + a5 p3 + a4 + a5
p4 p4 + a4 p4 + a5 p4 + a4 + a5
unde pi = ai (1 i 3), p4 = a1 + a2 + a3 sunt simboluri de control.
Exemplul 18.7 Sa plec
am de la
atoarelematrici de baz
a:
urm
1 0 0 1

GA1 = GA2 = 0 1 0 1
0 0 1 1
GB1 = GC2 = (1 1 1 1), GB2 = GC1 = (0 0 0 1).
Se obtine un cod C = C1 + C2 + C3 cu n = 4 4 = 16, k = 3 3 + 1 + 1 = 11 si
matrice generatoare

1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 1
0 1 0 1 0 0 0 0 0 0 0 0 0 1 0 1

0 0 1 1 0 0 0 0 0 0 0 0 0 0 1 1

0 0 0 0 1 0 0 1 0 0 0 0 1 0 0 1

0 0 0 0 0 1 0 1 0 0 0 0 0 1 0 1

G=
0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1

0 0 0 0 0 0 0 0 1 0 0 1 1 0 0 1

0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 1

0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 1

0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1
0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1
El are d = 4 si este echivalent cu un cod RM(2, 4). Daca se elimina ultimul
simbol de control, se obtine un (15, 11) - cod Hamming binar.

18.5. DECODIFICAREA CODURILOR GAC


Fie a = a1 a2 . . . a11 un mesaj de informatie. Cuvantul - cod x
0
0
0
a1 a2 a3 p1
0 0 0 a10
0 0 0 a10
0
0
0
a a a p
, x3 =
x1 = 4 5 6 2 , x2 =
a7 a8 a9 p3
0 0 0 a10
0
0
0
0 0 0 a10
a11 a11 a11
p4 p5 p6 p7

201
este format din:
0
0
0
a11

a1
a2
a3
p1 + a10
a4
a5
a6
p2 + a10
x = x1 + x2 + x3 =
a7
a8
a9
p3 + a10
p4 + a11 p5 + a11 p6 + a11 p7 + a10 + a11
Exemplul 18.8 Pentru (24, 12) - codul Golay binar extins se poate da urmatoarea
reprezentare GAC:

1 0 0 0 1 1 1 1
!

0 1 0 0 1 1 1 1
1 0 1

GA1 =
GA2 =
0 0 1 0 1 1 1 1
0 1 1
0 0 0 1 1 1 1 1

1 1 1 0 1 1 0 1

GB1 = (1 1 1) GB2 = 1 0 1 1 1 1 0 1
1 0 1 0 1 1 1 1
GC1 = (0 0 1) GC2 = (1 1 1 1 1 1 1 1).
Fie a = a1 a2 . . . a12 un mesaj de informatie.
Pentru obtinerea cuvantului - cod, avem:
a1 a2 a3 a4 p1 p2 p3 p4
x1 = a5 a6 a7 a8 p5 p6 p7 p8
p9 p10 p11 p12 p13 p14 p15 p16
c1
x2 = c1
c1
0
x3 = 0
a12

a9 c2 a10 c3
a9 c2 a10 c3
a9 c2 a10 c3
0
0
0
0
0
0
a12 a12 a12

c4
c4
c4
0
0
a12

a11
a11
a11
0
0
a12

c5
c5
c5
0
0
0
0
a12 a12

deci
x = x1 + x2 + x3 =
a1 + c1
a2 + a9
...
a11 + p3
c5 + p4
a5 + c1
a6 + a9
...
a11 + p7
c5 + p8
a12 + p9 + c1 a12 + p10 + a9 . . . a12 + a11 + p15 a12 + p16 + c5
De remarcat maniera mult mai simpla de codificare, ea reduc
andu-se la adunari
de valori binare (pentru simbolurile de control) si adunari de matrici binare.

18.5

Decodificarea codurilor GAC

Pentru decodificare se poate folosi tot algoritmul lui Viterbi aplicat unei structuri
de retea sub care se pot reprezenta aceste coduri. Structura de retea se construieste
similar cu cea a codurilor - tablou, cu unele mici modificari datorate definitiei cuvintelor - cod, ca sume de doua sau trei alte secvente.

202

PRELEGEREA 18. CODURI - TABLOU

Vom considera reprezentarea cuvintelor unui cod GAC sub forma de tablou cu
n1 linii si n2 coloane. Fie ki numarul de simboluri noi de informatie care pot apare
pe linia i a cuvintelor - cod si t = max {ki }.
1in1

1. Numarul de coloane (adancimea retelei) este Nc = n1 + 1, iar numarul


de stari distincte este Ns = 2t .
2. Fiecare stare de pe coloana p se noteaza (a1 a2 . . . at )p unde ai Z2 (1
i t).
3. Radacina retelei este (00 . . . 0)0 iar tinta (00 . . . 0)n1 .
4. Fiecare arc (Ap , Bp+1 ) de pe nivelul p este marcat cu o pereche
p (A, B)/p (A, B) unde p (A, B) este secventa de simboluri noi de
informatie de pe linia p (eventual ), iar p (A, B) este linia p a cuvantului
- cod.
5. Daca Ap si Bp+1 sunt legate printr-un arc si |p (A, B)| = s, atunci Bp+1 =
Ap + p (A, B)0ts .
6. Daca constructia codului GAC a folosit si codul C3 , atunci fiecare nod
de pe coloana n2 este legat de tinta prin doua arce, marcajul celui de-al
doilea arc fiind complementara marcajului primului arc (pe acest nivel
n2 (A, 00 . . . 0) = ).
In aceasta constructie de retea sunt

n1
Y

2ki drumuri distincte, fiecare din ele

p=1

corespunzand unui cuvant - cod.


Operatiile de codificare/decodificare (inclusiv aplicarea algoritmului Viterbi adaptat) sunt identice cu cele definite la codurile - tablou.
Exemplul 18.9 Relu
am codul definit n Exemplul 18.5. Pentru el se poate construi
o retea n felul urmator:
Sunt necesare Nc = n1 + 1 = 4 + 1 = 5 coloane. Pentru numarul de stari, sa
studiem forma de tablou a cuvintelor cod:
a1 p1 + a4
a p + a4
x= 2 2
a3 p3 + a4
p4 p4 + a4

00 PP
00 X
00 H
:
:

HH

*
XX

P
X

X
PP

HH
X

X
z

q
P

:
- 10 X
Hj

10
10
X

XXX H

X
z 00

00 XX
:

HH XXXX

*
01 X
01

X
z 01 X

:
:

X
X

X
X
HH X

X
X

X
X
z
z
X
XX

H
j
H

11

11

11

18.5. DECODIFICAREA CODURILOR GAC

203

aceast
In
a reprezentare, pe prima linie sunt doua simboluri de informatie (a1 si a4 ),
pe a doua si a treia cate unul (a2 respectiv a3 , a4 nefiind simbol nou), iar pe a patra
linie, nici unul. Deci numarul de stari al retelei este Ns = 22 = 4, fiecare stare fiind
reprezentat
a printr-o secvent
a de t = 2 caractere binare (00, 01, 10, 11).
Functia este definita prin
0 (00, B) = a1 a4 , 1 (A, B) = a2 , 2 (A, B) = a3 , 3 (A, 00) = .
Nodurile si arcele sunt marcate cu valorile date de tabelele urmatoare:
0 (A, B)/0 (A, B)
00
10
01
11
00
00/00 10/11 01/01 11/10
1 (A, B)/1 (A, B) 00
10
01
11
00
0/00 1/11

1/11 0/00

10
01

0/01 1/10
11

1/10 0/01
2 (A, B)/2 (A, B) 00
10
01
11
00
0/00 1/11

10
1/11 0/00

01

0/01 1/10
11

1/10 0/01
3 (A, B)/3 (A, B) 00
00
/00
pentru codul RM(1, 3),
10
/11
01
/01
11
/10
3 (A, B)/3 (A, B) 00
00
/0
pentru (7, 4) - codul Hamming
/1
10
01
/0
11
/1
Exemplul 18.10 Reprezentarea prin retea a codurilor RM(1, 4) si (15, 5) BCH
construite sub forma de GAC n Exemplul 18.6 se realizeaz
a astfel:
Ad
ancimea retelei (numarul de coloane) este Nc = 4 + 1 = 5. Numarul maxim
de simboluri de informatie noi se afla pe prima linie a cuvintelor - cod (a1 , a4 , a5 );
deci reteaua are Ns = 23 = 8 stari distincte.
Functia este definita
0 (000, B) = a1 a4 a5 , 1 (A, B) = a2 , 2 (A, B) = a3 , 3 (A, 000) = .
iar functia :
0 (000, B) = a1 (a1 + a4 )(a1 + a5 )(a1 + a4 + a5 )
1 (A, B) = a2 (a2 + a4 )(a2 + a5 )(a2 + a4 + a5 )
2 (A, B) = a3 (a3 + a4 )(a3 + a5 )(a3 + a4 + a5 )
3 (A, 000) = (a1 +a2 +a3 )(a1 +a2 +a3 +a4 )(a1 +a2 +a3 +a5 )(a1 +a2 +a3 +a4 +a5 )
pentru codul RM(1, 4). Pentru (15, 5) - codul BCH se elimina ultimul bit de control.
Nodurile si arcele sunt etichetate conform tabelelor:
0 /0

000

100

001

101

010

110

011

111

000

000/0000

100/1111

001/0011

101/1100

010/0101

110/1010

011/0110

111/1001

204

PRELEGEREA
18. CODURI - TABLOU
000 P
000 P
000

1
P
P

7
S
P
P

q
q
PP
PP
S
- 100
- 100

100
S


@ S


@ S
- 001
- 001

@
3 001 P

Q
PP
1 @S

1
PP


Q
P
S

q
q
Q @S
PP
PP

Q
: 101

101
101 XX

w
Q@
@
RS

XXX
s
Q

z
X

000 XX

: 000

HHXXX

*
- 010
- 010

X
z
010
@
S
H
>
PP
PP

PP
PP

S@ HH

P
q
H
P
P
q

j
H
@
S

- 110
- 110
110

S@

S @

- 011
- 011
S @
R 011
PP
PP

S
1
1
P
P

S
P
q
q
P
PP
PP
w
S
- 111
111
111

i /i

000

100

000

0/0000

1/1111

100

1/1111

0/0000

001

101

010

110

011

111

0/0011

1/1100

1/1100

0/0011

0/0101

1/1010

1/1010

0/0101

0/0110

1/1001

1/1001

0/0110

111

3 /3

0000

3 /3

0000

000

/0000

000

/000

100

/1111

100

/111

001

/0011

001

/001

101

/110

001
101
010
110
011

respectiv

101

/1100

010

/0101

010

/010

110

/1010

110

/101

011

/0110

011

/011

111

/1001

111

/100

(i=1,2)

De remarcat ca aceasta retea se poate reprezenta folosind numai 4 st


ari n loc de 8:
66
-66
{ - ?
?
?
?

- {

- {
-

- {

- {

- {

- {

- y
-

- y
-

- y
-

- {
-

- {
-

- {
-

--? - ??
? - {
-6 -6
66
-

Cele doua arce care leag


a doua noduri sunt marcate cu etichete complementare.
Exceptie fac arcele de pe primul nivel unde n definitia functiei 0 este complementat numai primul bit (a1 ); ceilalti doi biti de informatie a4 a5 sunt identici pentru
fiecare pereche de arce si formeaz
a marcajele nodurilor succesor de pe nivelul 1:
00, 01, 10, 11.

Bibliografie
[1] J. Adamek - Foundations of Coding, Wiley - Interscience, 1991;
[2] L. Bahl, J. Cocke, F. Jelinek, J. Raviv - Optimal decoding of linear codes for
minimizing symbol error rate, IEEE Inf. Theory, pp. 284-287, Martie 1974;
[3] M. Blaum - A (16, 9, 6, 5, 4) error correcting dc-free block code, IEEE Transactions on Information Theory, vol. 34, 1988, pp. 38-141;
[4] C. Carlet - Codes de Reed - Muller; Codes de Kerdok et de Preparata (teza de
doctorat), PARIS VI, 1990;
[5] G. Cullmann - Coduri detectoare si corectoare de erori, Editura Tehnica, 1972;
[6] S. Guiasu - Teoria Codurilor, Tipografia Universitatii Bucuresti, 1976;
[7] D.G. Hoffman, D.A. Leonard, C.C. Lindner, K.T. Phelps, C.A. Rodger, J.R.
Wall - Coding Theory; The Essentials, Marcel Dekker, Inc, 1991;
[8] B. Honary, G. Markarian - Trellis Decoding of Block Codes, A Practical Approach, Kluwer Academic Publ., 1997;
[9] A. M. Kerdok - A class of low-rate non linear codes, Information and control,
20 (1972), 182-187;
[10] J.H. van Lindt - Coding Theory, Springer Verlag, 1971;
[11] J.H. van Lindt - Introduction to Coding Theory, Springer Verlag, 1982;
[12] W.E.Ryan - A Turbo Code Tutorial, IEEE Trans. comm. pp. 1261-1271, Oct.
1996;

205

Prelegerea 19
Alte reprezent
ari de coduri - bloc
19.1

RLL - coduri

Sistemele de comunicare actuale (telefonice, de nregistrare etc), datorita vitezei


mari de lucru, difera substantial de canalele clasice (binar simetrice). Pentru ele
se folosesc filtre de banda capabile sa elimine fenomenul de interferenta care apare.
Numite canale cu raspuns partial, ele corecteaza aceste interferente folosind algoritmi
de tip Viterbi, incorporati prin constructie. Reusita decodificarii corecte a cuvintelor
receptionate este asigurata de supra-codificari ale mesajului sursa. In prezent sunt
folosite trei supra-coduri care asigura transmiterea fara interferente (n anumite
limite) a mesajului: acestea sunt codurile cu lungime limitata si codurile balansate
pentru codurile-bloc, turbo-codurile pentru ocdurile convolutionale.
Definitia 19.1 Un cod cu lungime limitata (RLL - Run Length Limited Codes), sau
(d0 , k 0 ) - cod, este un cod - bloc cu proprietatea ca orice doua simboluri 1 consecutive
sunt separate prin p zerouri, unde d0 p k 0 .
Parametrul d0 este folosit pentru controlul interferentei dintre simboluri (fenomen care apare la viteze de transmisie mari, apropiate de capacitatea de saturatie a
canalului); k 0 impune numarul maxim de zerouri care pot apare, pentru pastrarea
unei rate de informatie cat mai convenabile.
Fie C un (n, k) - cod bloc care poate fi reprezentat sub forma de cod tablou
(n1 n2 , k1 k2 ), si c1,n un cuvant binar de comutatie. Codul C + c = {a + c|a A}
va fi tot un (n, k) - cod, cu restrictii RLL.
Dificultatea acestei constructii rezida n modul de alegere a vectorului c. De
aceea, vom detalia procedura de codificare pentru obtinerea de coduri RLL cu d0 =
0:
1. Se defineste codul - tablou (n1 n2 , k1 k2 ) care trebuie transformat.
2. Se defineste cuvantul de comutatie c = c1 c2 . . . cn2 , unde ci =
ci1 ci2 . . . cin1 (1 i n2 ) este secventa binara de comutatie pentru linia i.
3. Pentru linia i (care este un cuvant - cod cu un singur simbol de control),
cuvantul de comutatie verifica urmatoarea conditie:
Daca n1 este par, ci are un numar impar de 1,
altfel, ci are un numar par de 1.
217

218

DE CODURI - BLOC
PRELEGEREA 19. ALTE REPREZENTARI

Exemplul 19.1 Fie (16, 9) - codul tablou, avand cuvintele - cod de forma
a1 a2 a3 p1
a a a p
a = 4 5 6 2
a7 a8 a9 p3
p4 p5 p6 p7
(este codul C1 construit n Exemplul 18.7). Deoarece n1 = 4, cuvantul de comutatie
al fiec
arei linii contine un numar impar de 1. Vor exista opt variante posibile pentru
ci :
0001 0010 0100 1000 1110 1101 1011 0111,
deci se pot defini N0 = 84 cuvinte de comutatie distincte c.
Daca se ia de exemplu c = 0100110110001110, codul RLL definit pe baza lui va
avea cuvintele - cod
a1
a4
a=
a7
p4

a2
a5
a8
p5

a3
a6
a9
p6

p1
p2
p3
p7

unde s-a notat x = 1 x.


Tehnica descrisa mai sus se poate extinde la coduri GAC, conducand la coduri cu
proprietati RLL optime ([7]). Generalizarea este urmatoarea:
1. Daca n1 este par, ci (1 i n2 ) contine zero sau un numar impar de 1;
2. Daca n2 este impar, ci (1 i n2 ) contine un numar par de 1;
3. Daca n = n1 n2 este par, cuvantul de comutatie c va contine un numar
par de 1;
4. ci nu este cuvant - cod al codului care formeaza liniile; daca aceasta nu se
poate evita, atunci ci+1 se alege de asemenea dintre cuvintele aceluiasi cod.
Exemplul 19.2 Fie un (8, 4) - cod binar care codific
a fiecare mesaj de informatie
(a1 , a2 , a3 , a4 ) n
a1 a1 + a4
a a + a4
a= 2 2
a3 a3 + a4
p1 p1 + a4
Deoarece n si n1 sunt pare, alegem ci (1 i 4) cu numar impar de 1, astfle
nc
at numarul total de 1 din c sa fie par. Putem lua de exemplu
c1 = 10, c2 = 00, c3 = 01, c4 = 00
Deci secventa general
a de comutatie este c = 10000100 si cuvintele - cod cu
restrictia RLL sunt
a1
a2
a=
a3
p1

a1 + a4
a2 + a4
a3 + a4
p1 + a4

19.1. RLL - CODURI

219

Studiind toate cele 16 cuvinte - cod, se gasesc trei cuvinte cod care ncep cu trei
caractere 1 si trei cuvinte - cod care se termina cu trei caractere 1. Deci k 0 = 6 si
se poate demonstra ca aceasta este valoarea minima care se poate obtine pentru k 0
n cazul (8, 4) - codurilor.
Daca se relaxeaz
a codul prin eliminarea ultimului simbol de control, se ajunge la
un (7, 4) - cod Hamming binar, cu k 0 = 7.
Pentru decodificarea codurilor RLL se poate folosi structura de retea definita n
cazul codurilor GAC, cu o singura modificare: la marcajul arcelor, se nlocuieste
p (A, B) := (A, B) + cp .
Exemplul 19.3 Sa relu
am (8, 4) - codul GAC de mai sus, a carui retea este descris
a n Exemplul 18.5. Folosind secventa de comutatie c = 00010001, se obtine un
cod RLL cu aceeasi structura de retea:

00 PP
00 X
00 H
:
:

HH

*
XX

P
X

XX
PP

X
z

q
P
HH

:
- 10
- 10 XX

10
H
j

XXX

00 XX
: 00

- 01
- 01
H XXXX
*
01
X
z
HH

XX
X

XX
X
H

X
HH
z
X
X
z
XX
XX
j
H

11

11

11

iar marcajele arcelor:


0 /0
00
10
01
11
00 00/00 10/11 01/01 11/10
1 /1 00
10
01
11
00 0/01 1/10

10 1/10 0/01

01

0/01 1/11
11

1/11 0/00
2 /2 00
10
01
11
00 0/00 1/11

10 1/11 0/00

01

0/01 1/10

1/10 0/01
11
3 /3 00
00 /01
10 /10
01 /00
11 /11
(pentru (7, 4) - codul Hamming binar se ignora ultimul bit din 3 ).
De remarcat ca fat
a de Exemplul 18.5 s-a modificat numai marcajul nodurilor de
pe nivelele 1 si 3).

DE CODURI - BLOC
PRELEGEREA 19. ALTE REPREZENTARI

220

19.2

Coduri balansate

Codurile balansate reprezinta o clasa speciala de coduri RLL n care fiecare cuvant
- cod are un numar egal de 0 si 1. Avantajele pe care le ofera aceasta conditie
(siguranta la transmiterea de date la viteze mari, capacitatea de auto-control al
tactilor, posibilitati de detectare si corectare a erorilor comparabile cu codurile bloc) o recomanda ca o masura eficienta de codificare suplimentara.
Algoritm B:
Fie a = a1 a2 . . . ak un mesaj de informatie. Definim urmatorul cuvant - cod
tablou balansat asociat lui a:
1. Se alege n1 astfel ca 2n1 2 k si se noteaza n = 4 n1 .
2. Se construieste un cuvant - cod tablou cu primele 2n1 2 caractere de
informatie:
a1
a1
c=
a2
a2

a3
a3
a4
a4

a5
a5
a6
a6

...
...
...
...

a2n1 3
a2n1 3
a2n1 2
a2n1 2

p1
p1
p2
p2

Cuvintele de aceasta forma, citite pe coloana, formeaza un (n, 2n1 2) - cod


tablou balansat C, avand d = 4. C este folosit pentru definirea caracterelor
de control p1 si p2 .
3. Se definesc functiile f1 , f2 : Z2 Z24 prin
f1 (x, y) = (x, x, y, y)
f2 (x, y) = (x y, x y, x y, x y)
unde este operatorul boolean obisnuit. Evident, coloanele codului C sunt
codificate folosind f1 .
4. Se construieste cuvantul - cod u folosind ultimele k 2n1 + 2 caractere de
informatie x = a2n1 1 a2n1 . . . ak astfel:
1. Daca x = 0 . . . 00, atunci u = f1 (a1 , a2 )f1 (a3 , a4 ) . . . f (p1 , p2 );
2. Daca x = 0 . . . 01, atunci u = f1 (a1 , a2 )f1 (a3 , a4 ) . . . f1 (p1 , p2 );
3. In rest, u = g(a1 , a2 )g(a3 , a4 ) . . . g(p1 , p2 ), unde
(i) g este f2 sau f2 ; fiecare din ele apare de un numar egal de ori (cate
n1 /2 aparitii);
(ii) Daca se noteaza f2 cu 0 si f2 cu 1, lui u i se asociaza o secventa de
n1 caractere binare, cu proprietatea ca pentru primele 2n1 2 caractere
de informatie fixate, aplicatia x 7 este izotona fata de relatia de ordine
lexicografica.
5. Cuvantul - cod final se obtine prin scrierea pe fiecare linie a unei valori
fi (x, y) din u. El apartine astfel unui cod GAC A de dimensiuni n1 4.
Sunt multe modalitati de transformare a unui cod - bloc binar ntr-un cod balansat; de exemplu dublarea fiecarui cuvant - cod a cu o secventa identica (aa) sau

19.2. CODURI BALANSATE

221

cu caractere complementate (aa) conduc la coduri balansate. Constructia unui cod


balansat realizata prin Algoritmul B asigura posibilitatea constructiei unei retele de
decodificare n maniera celei din Prelegerea 18.
In constructia data de Algoritmul B mai trebuie rezolvata problema alegerii lui
n1 . Aceasta se realizeaza folosind urmatoarea teorema:
Teorema 19.1 Fiind dat k, n1 este de forma n1 = 2s unde s este cel mai mic
num
ar pozitiv care verifica inegalitatea
s
2k+24s 2 + C2s
.
(1)
Demonstratie: Conditia ca n1 sa fie par rezulta din cerinta ca n u jumatate din cele
n1 functii g sa fie f2 si jumatate sa fie f2 . Fie deci n1 = 2s.
Din conditia 2n1 2 k rezulta k + 2 4p 0.
Deoarece x este format din k + 2 4s caractere binare, sunt 2k+24s secvente
x posibile. Din acestea, 2k+24s 2 sunt construite folosind numai functia f2 , deci
trebuie sa existe pentru ele cel putin tot atatea secvente . Deoarece numarul
s
secventelor binare este C2s
, rezulta inegalitatea din enunt.
Conditia de minim asigura unicitatea codificarii.
2
De remarcat ca prin aceasta metoda, operatia de balansare nu pastreaza proprietatea de cod liniar sau ciclic.
Exemplul 19.4 Sa construim un cod GAC balansat care sa codifice k = 3 simboluri
de informatie. Folosind inegalitatea (1), se obtine s = 1, deci n1 = 2, n = 8.
Codul cadru, care defineste simbolurile de control, este un (8, 2) cod bloc avand
cuvintele - cod de forma (reamintim, reprezentarea desfasurat
a se face pe coloane):
a1
a
c= 1
a2
a2

p1
p1
= a1 a1 a2 a2 p1 p1 p2 p2
p2
p2

unde p1 = a1 , p2 = a2 . Operatia de codificare este reprezentat


a de tabloul:
000 01010101
010 01100110
100 10011001
110 10101010

001 01011010
011 01101001
101 10010110
111 10100101

Exemplul 19.5 Pentru k = 4 simboluri de informatie se obtine de asemenea s = 1


si acelasi (8, 2) - cod cadru, cu doua simboluri de control. Cele doua caractere de
informatie ramase, a3 a4 asigur
a codificarea n felul urmator:
= 00 = u = f (a1 , a2 )f (p1 , p2 )
= 10 = u = f (a1 , a2 )f (p1 , p2 )
= 01 = u = f2 (a1 , a2 )f2 (p1 , p2 )
= 11 = u = f2 (a1 , a2 )f2 (p1 , p2 )
Se obtine n acest fel un (8, 4) - cod balansat. Din studiul celor 16 cuvinte - cod
rezult
a ca el are d = 2.

222

DE CODURI - BLOC
PRELEGEREA 19. ALTE REPREZENTARI

Exemplul 19.6 Urmatorul cod balansat a fost studiat de Blaum ([2]), odat
a cu
introducerea metodei de balansare prezentat
a mai sus. Din k = 9, singura valoare
posibil
a este s = 2, deci n1 = 4, n = 16. Cuvintele - cod cadru au forma
a1
a
c= 1
a2
a2

a3
a3
a4
a4

a5
a5
a6
a6

p1
p1
p2
p2

unde p1 = a1 + a3 + a5 , p2 = a2 + a4 + a6 .
Procedura de codificare este dat
a de tabelul urmator:
a7 a8 a9
000
001
010
011
100
101
110
111

u1 u2 u3 u4
f1 (a1 , a2 )
f1 (a1 , a2 )
f2 (a1 , a2 )
f2 (a1 , a2 )
f2 (a1 , a2 )
f2 (a1 , a2 )
f2 (a1 , a2 )
f2 (a1 , a2 )

u5 u6 u7 u8 u9 u10 u11 u12 u13 u14 u15 u16


f1 (a3 , a4 ) f1 (a5 , a6 )
f1 (p1 , p2 )
f1 (a3 , a4 ) f1 (a5 , a6 )
f1 (p1 , p2 )
f2 (a3 , a4 ) f2 (a5 , a6 )
f2 (p1 , p2 )
f2 (a3 , a4 ) f2 (a5 , a6 )
f2 (p1 , p2 )
f2 (a3 , a4 ) f2 (a5 , a6 )
f2 (p1 , p2 )
f2 (a3 , a4 ) f2 (a5 , a6 )
f2 (p1 , p2 )
f2 (a3 , a4 ) f2 (a5 , a6 )
f2 (p1 , p2 )
f2 (a3 , a4 ) f2 (a5 , a6 )
f2 (p1 , p2 )

S-a obtinut astfel un (16, 9) - cod balansat cu d = 4.


S
a codific
am mesajul de informatie a = 001101010. Pentru determinarea bitilor
de control se construieste cuvantul
0 1 0 1
1 0 1 0
c=
0 1 1 0
1 0 0 1
Deoarece a7 = 0, a8 = 1, a9 = 0, codul va fi generat folosind a treia linie din
tabelul de sus:
0 1 1 1
0 0 1 0
u=
= 0001 1000 1101 1011.
0 0 0 1
1 0 1 1
Alte exemple de mesaje de informatie si codific
arile lor:
000000000
0101010101010101
111111001
1010101010100101
000000101
1110000100011110
111111011
1000011110000111
Pentru realizarea unei structuri de retea a codurilor balansate, dificultatea consta
n faptul ca aceste coduri nu sunt liniare, deci algoritmii utilizati pana acum nu
functioneaza. Se va utiliza urmatorul algoritm, specific codurilor balansate definite
n aceasta sectiune:

19.2. CODURI BALANSATE

223

1. Pe baza algoritmilor cunoscuti se construieste structura de retea Rb a


codului - bloc cadru Cb ; fie k0 numarul ei de coloane (egal cu numarul
de coloane din reprezentarea n tablou a cuvintelor - codului Cb ).
2. Se copiaza reteaua Rb de 2p 1 ori, unde p = k 2n1 + 2 este dat de
pasul 3 al algoritmului B; fiecare copie corespunde unei generari posibile
a unui cuvant - cod balansat.
Toate subretelele au o singura radacina si o singura tinta.
3. In fiecare din cele 2p subretele:
(a) Arcul ((00 . . . 0)0 , B1 ) de pe nivelul 0 se marcheaza cu 0 /0 unde
0 (00 . . . 0, B) = a2n1 1 . . . ak , iar
0 (00 . . . 0, B) = g1 (a1 , a2 ).
(b) Arcul spre tinta are k0 (A, 00 . . . 0) = si
k0 (A, 00 . . . 0) = g(p1 , p2 ). (notatiile sunt cele din algoritmul B).
4. In fiecare subretea se defineste valoarea j /j (1 j < k0 ) a arcului (Aj , Bj+1 ) astfel: j (A, B) este valoarea nemodificata din Rb , iar
j (A, B) = g(a2j+1 , a2j+2 ).

Exemplul 19.7 Sa relu


am (8, 3) - codul balansat din Exemplul 19.4. Dupa ce se
construieste reteaua (8, 2) - codului cadru, deoarece exista doar un bit de informatie
suplimentar avem p = 1 deci reteaua se mai copiaz
a de 2p 1 = 1 ori.
Sunt doua maniere de abordare:
A. Dac
a transmiterea se face pe linii, apare o constructie conform
a cu cea a
retelelor definite pentru codurile GAC. Reteaua corespunz
atoare codului cadru este
prezentat
a n (a), iar cea pentru codul balansat, n (b):
00/00

- t /11- t 0/00 - t
Q
3

0/00
1/11Q
0/00
- t /11- t 0/00 - t /11 - 6
Q

10/11
6
S
Q
st
Q
- t /00-
t 1/11
7

S
?
1/11 0/00
t t
t
S
S
01/01 - t /10- t 0/01 - t
S
6
Q
3

1/11
/00
1/11
/00
1/10Q
0/01
?
-t
- t
-S
wt
Q

11/10
Q
st
Q
- t /01-
t 1/10?

/11

/00

?
t
/10 6
/01

(a)
(b)
B. Daca transmiterea datelor se face pe coloane (specific codurilor balansate),
reteaua codului cadru este cea prezentat
a n Figura 19.1, pozitia (a); din ea se obtine
reteaua (b) a codului balansat.
Exemplul 19.8 Sa construim reteaua de (de)codificare pentru (16, 9) - codul balansat definit n Exemplul 19.6. Conform procedurii, sunt necesare 8 subretele, cate

DE CODURI - BLOC
PRELEGEREA 19. ALTE REPREZENTARI
Figura 19.1:

224

000/0101

-t

/0101

010/0110

-t

/0110

100/1001

-t

/1001

110/1010

-t

/1010

00/0101

01/0110

-t

-t

/0101

/0110

?
t
6

t
10/1001

11/1010

-t

/1010

-t

/1010

?
t
6

t
001/0101

-t

/1010

011/0110

-t

/1001

101/1001

-t

/0110

111/1010

-t

/0101

(a)
?

(b)

una pentru fiecare linie din tabelul de codificare. Deoarece cuvintele - cod sunt citite
pe coloane, fiecare subretea are cate 5 coloane si 4 stari.
Pentru a7 = a8 = a9 = 0 (prima linie din tabel) subreteaua construit
a plecnd de
la (16, 6) - codul cadru din Exemplul 19.6 are structura:

- 00
- 00
>
Z
@
3

J Z

7 AS Z


A
7
@

A S Z
AJ

Z
@
Z

A S Z
A J Z
@

S
Z


J

@
~ A S ZZ
A J Z
~

- 01
- 01 P

A
A
1 01


Z AJ
> PP
S
A
Q
>

PP@@
S ZA J

7 S QA S
7

P
qR

Q
Z
S A
S AQ
J
S

00
00
Z
P

1
PP
S
J

S A Z
S A Q

PP
Q

w
J
~
Z
S A Z
S A Q
sS
PP
q

^
@
S A -J
S A - 10
10
10

S
@
>

3
Z
Z S A
A

S
Z
Z S

A
SA

@
Z
ZZ
S A
A
Z

@
Z S A
Z S A

@
wAU
S
wAU
ZS
ZZ


R
@
~
Z
~ 11

- 11
11

00 Z

19.2. CODURI BALANSATE

225

unde marcajul arcelor este dat de tabela:


p p /p
0 00
1 00
01
10
11
2 00
01
10
11
3 00
01
10
11

00
00/0101
00/0101
01/0110
10/1001
11/1010
00/0101
01/0110
10/1001
11/1010
/0101
/0110
/1001
/1010

01
01/0110
01/0110
00/0101
11/1010
10/1001
01/0110
00/0101
11/1010
10/1001

10
10/1001
10/1001
11/1010
00/0101
00/0101
10/1001
11/1010
00/0101
01/0110

11
11/1010
11/1010
10/1001
01/0110
00/0101
11/1010
10/1001
01/0110
00/0101

Pentru a7 = a8 = 0, a9 = 1 (a doua linie din tabel) se construieste aceeasi subretea,


n care valorile functiei 3 din marcajul arcelor ultimului nivel se complementeaz
a.
Prin compunerea acestor doua subretele se obtine (16, 7) - codul balansat cu d = 4.
Celelalte 6 subretele se definesc similar. Reteaua finala a (16, 9) - codului balansat
cu d = 4 obtinut
a din compunerea lor va avea 32 stari si 5 nivele.

226

19.3

DE CODURI - BLOC
PRELEGEREA 19. ALTE REPREZENTARI

Exercitii

19.1 Construiti un (3, 2)(3, 2) RLL cod tablou si calculati parametrii sai (d0 , k 0 ).
19.2 Construiti un (12, 8) - cod GAC cu restrictii RLL si calculati pentru el
(d0 , k 0 ).
19.3 Construiti un GAC cod balansat pentru k = 10.
19.4 Aceeasi problem
a pentru k = 13.
19.5 Definiti un vector de modificare care transform
a codul tablou (3, 2)(3, 2) ntrun cod RLL. Construiti reteaua acesui cod.
19.6 Aceeasi problem
a pentru (12, 8) - codul GAC cu d = 3.
19.7 Construiti un (12, 5) cod balansat cu d = 4. Trasati reteaua acestui cod.

Bibliografie
[1] J. Adamek - Foundations of Coding, Wiley - Interscience, 1991;
[2] M. Blaum - A (16, 9, 6, 5, 4) error correcting dc-free block code, IEEE Transactions on Information Theory, vol. 34, 1988, pp. 38-141;
[3] C. Carlet - Codes de Reed - Muller; Codes de Kerdok et de Preparata (teza de
doctorat), PARIS VI, 1990;
[4] G. Cullmann - Coduri detectoare si corectoare de erori, Editura Tehnica, 1972;
[5] S. Guiasu - Teoria Codurilor, Tipografia Universitatii Bucuresti, 1976;
[6] D.G. Hoffman, D.A. Leonard, C.C. Lindner, K.T. Phelps, C.A. Rodger, J.R.
Wall - Coding Theory; The Essentials, Marcel Dekker, Inc, 1991;
[7] B. Honary, G. Markarian - Trellis Decoding of Block Codes, A Parctical Approach, Kluwer Academic Publ., 1997;
[8] A. M. Kerdok - A class of low-rate non linear codes, Information and control,
20 (1972), 182-187;
[9] J.H. van Lindt - Coding Theory, Springer Verlag, 1971;
[10] J.H. van Lindt - Introduction to Coding Theory, Springer Verlag, 1982;

227

Prelegerea 20
Alte rezultate din teoria codurilor
20.1

Coduri aritmetice

Constructiile oferite de teoria codurilor pot fi utilizate si n alte domenii decat n


cele clasice, de transmitere si receptie corecta a mesajelor. O aplicatie legata de
operatiile aritmetice pe calculator este prezentata de van Lindt n [11].
Definitia 20.1 Fie r 2 un numar ntreg fixat. r - ponderea aritmeticaunui numar
ntreg x este definita prin
(
0 dac
ax=0
w(r) (x) =
t altfel

unde t = min

)
p
X

n(i)
p ai r
= x, |ai | < r, n(i) 0 .
i=1

In practica se folosesc des cazurile r = 2, 8, 10, 16.


Exemplul 20.1
w(10) (5) = 1,
w(10) (199) = 2 (deoarece 199 = 200 1 = 2 102 1 100 ),
w(2) (9) = 2,
w(2) (246) = 3 (deoarece 246 = 256 8 2 = 28 23 21 ).
Propozitia 20.1
1. w(r) (x) = w(r) (x);
2. w(r) (x + y) w(r) (x) + w(r) (y).
Demonstratie: Este lasata ca exercitiu.
2
In cele ce urmeaza vom considera r ca o valoare fixata. Se numeste distant
a
aritmetic
a valoarea
d(x, y) = w(r) (x y).
Propozitia 20.2
1. d este o distant
a;
2. d este invarianta la translatare.
3. d(x, y) dH (x, y) unde dH este distanta Hamming a doua secvente numerice
reprezentate n baza r.
227

228

PRELEGEREA 20. ALTE REZULTATE DIN TEORIA CODURILOR

Demonstratie: (1) Faptul ca d este o distanta se verifica imediat din Definitia 20.1
si Propozitia 20.1.
(2) Deoarece d(x + z, y + z) = w(r) (x + z y z) = w(r) (x y) = d(x, y) rezulta
ca distanta aritmetica este invarianta la translatare (proprietate pe care distanta
Hamming nu o are).
(3) Este lasat ca exercitiu. Precizam ca cele doua numere reprezentate n baza
r pot fi aduse la un numar egal de cifre completand eventual numarul mai scurt cu
0-uri (nesemnificative) n fata.
2
Definitia 20.2 Fie a, b numere ntregi pozitive. Se numeste AN - cod multimea
finit
a Ca,b = {a n|0 n < b}.
Ideea folosirii AN - codurilor n aritmetica calculatorului este urmatoa-rea: sa presupunem ca trebuie calculata suma n1 + n2 (n1 , n2 pozitive si mici comparativ cu
b); fie S suma lor. Cele doua numere se codifica n a n1 , a n2 Ca,b . Daca
S 0 (mod a) atunci suma a fost efectuata corect si ea este S div a. Daca
nu, nseamna ca au aparut erori de calcul si se ia ca rezultat acel numar n3 cu
proprietatea ca d(S, an3 ) este minima.
Pentru a corecta orice combinatie de maxim t erori este necesar ca C sa aiba
distanta minima 2t + 1, deci orice numar din C are ponderea minim 2t + 1.
Teorema 20.1 Fie a un numar ntreg fixat si s = min{w(r) (a n)|n 6= 0}. Atunci
s 2.
Demonstratie: Cazurile a = 0 si a = 1 sunt banale. Pentru a < 0 se va lucra cu a.
Deci ramane de studiat numai cazul a > 1. Vom folosi Teorema lui Fermat:
Daca (a, r) = 1 atunci r(a) 1 (mod a).
(reamintim, (a) este simbolul Euler).
Deci a | r(a) 1. Cum w(r) (r(a) 1) = 2, afirmatia este demonstrata pentru
cazul cand a si r sunt prime ntre ele.
Sa presupunem acum ca (a, r) = d > 1. Vom avea a = a1 d, r = r1 d cu (a1 , r1 ) =
1. Atunci (notand n = (a1 )), putem scrie rn 1 = dn r1n 1 = dn (r1n 1) + (dn 1).
Se stie ca a1 | r1n 1. Daca (a1 , d) = 1 atunci a1 | dn 1, deci a1 | rn 1, sau
a | d rn d si cum d < r, teorema este demonstrata.
Daca (a1 , d) > 1, rationamentul se reia si el se va termina dupa un numar finit
de pasi (deoarece a1 < a, d < r).
2

20.1.1

AN - coduri ciclice

Rezultatul mentionat n Teorema 20.1 conduce la o dificultate de alegere. O aritmetica a calculatorului eficienta recomanda alegerea unei valori mari pentru b.
Pe de-alta parte Teorema 20.1 arata ca n acest caz riscul de a avea r - ponderea
aritmetica minima cel mult 2 (deci de a nu putea corecta nici o eroare) este mare.
Problema se elimina daca vom considera codurile AN modulare. Fie a, b numere
prime si m = a b. Definim Ca,b ca subgrup al lui Zm . Aceasta conduce la o
alta definitie pentru distanta dintre doua numere. Pentru determinarea ei, sa luam

20.1. CODURI ARITMETICE

229

elementele lui Zm ca varfuri ntr-un graf m ; a, b Zm sunt legate printr-un arc


daca si numai daca
c, j (0 < c < r, j 0) a b c rj (mod m).
Definitia 20.3 Distanta modular
a dm (x, y) dintre doua numere a, b Zm este
lungimea drumului minim dintre a si b n graful m .
Ponderea modular
a a lui a Zm este wm (a) = dm (a, 0).
Propozitia 20.3 Pentru a Zm
wm (a) = min{w(r) (x)| x Z, y x (mod m)}.
Demonstratie: Rezulta imediat din Definitia 20.3.

Exemplul 20.2 Sa consider


am r = 2, a = 2, b = 3 deci m = 6. Graful 6 va fi
j
0 P
l PPP

PP
l

P
P 4j
j
j
1j
3
2
XXX

XXX Q

Q
XX
j
5

deci tabelul distantelor ntre elementele lui Z6 este:


d
0
1
2
3
4
5

0
0
1
1
2
1
2

1
1
0
2
1
2
1

2
1
2
0
1
2
2

3
2
1
1
0
2
1

4
1
2
2
2
0
1

5
2
1
2
1
1
0

De remarcat ca alegerea lui m trebuie facuta cu grija. De exemplu, daca se ia


r = 3, m = 35 vom avea d35 (0, 12) = 1 deoarece 12 = 311 (mod 35). Practic nsa,
lucrand cu numere din Z35 , nu vom putea corecta erori pe pozitia corespunzatoare
lui 311 .
De aceea, aritmetica pe calculator considera doar situatia m = rn 1 (n 2)
care elimina astfel de situatii. Orice numar ntreg nenul x admite o reprezentare
unica
x

n1
X

ci r i

mod (rn 1),

i=0

cu 0 ci < r nu toti nuli.


Deci Zrn 1 poate fi interpretat ca fiind multimea GF (rn ) \ {0} cuvintelor nenule
de lungime n peste alfabetul {0, 1, . . . , r 1}.
Pentru a b = m = rn 1 distanta modulara devine distanta obisnuita n Zm si
Ca,b are un comportament similar unui cod liniar.
a r este un subgrup multiDefinitia 20.4 Un AN - cod ciclic de lungime n si baz
plicativ C Zrn 1 .

230

PRELEGEREA 20. ALTE REZULTATE DIN TEORIA CODURILOR

Evident, un astfel de subgrup este ideal principal n inelul Zrn 1 , deci exista a, b Z
astfel ncat a b = rn 1 si C = Ca,b , adica:
C = {a k|k Z, 0 k < b}.
Daca x Ca,b , atunci r x (mod rn 1) este tot n Ca,b deoarece acesta este grup
multiplicativ; pe de-alta parte noul numar este o permutare ciclica a lui x (ambele
fiind scrise n baza r). Numarul b poate fi asimilat polinomului de control al unui
cod ciclic.
Exemplul 20.3 Fie r = 2, n = 11. Atunci m = 211 1 = 2047. Sa consider
am
a = 23, b = 89. Se obtine AN - codul ciclic format din 89 multipli ai lui 23 (pan
a la
2047). Exista 22 modalit
ati de a semnala o eroare, fiecare din ele corespunz
and unui
num
ar de forma 2j (0 j 11). Acestea sunt exact toate numerele din Z23 \ {0}.
Deci orice numar ntreg din intervalul [0, 2047] are distanta modular
a 0 sau 1 de
exact un cuvant - cod. Acest AN - cod ciclic este perfect si poate fi considerat o
generalizare a codurilor Hamming.
[11] se face afirmatia ca nu exista AN - coduri perfecte corectoare de o eroare
In
pentru r = 10 sau r = 2k , (k > 1).

20.1.2

AN - coduri corectoare de mai multe erori

Pentru a construi AN - coduri capabile sa corecteze erori multiple, va trebui definita


o modalitate mai simpla de determinare a ponderii aritmetice sau modulare a numerelor ntregi.
Conform Definitiei 20.1, orice numar ntreg x se poate scrie sub forma
w(r)

x=

ai rn(i)

i=1

cu ai , n(i) numere ntregi, |ai | < r, n(i) 0 (0 i w(r) ). Aceasta reprezentare


are defectul ca nu este unica. De exemplu, pentru r = 10, numarul 99 se poate
reprezenta n doua moduri diferite:
99 = 9 10 + 9 100 ,
99 = 1 102 1 100 .
Se poate obtine prin impunerea de restrictii asupra coeficientilor o reprezentare unica a numerelor ntregi.
Definitia 20.5 Fie b, c Z , |b| < r, |c| < r. Perechea (b, c) se numeste admisibila
dac
a este adevarat
a una din relatiile:
(1) b c = 0;
(2) b c > 0 si |b + c| < r;
(3) b c < 0 si |b| > |c|.
De remarcat ca ambele perechi (b, c), (c, b) sunt admisibile numai n cazurile (1) sau
(2). Cazul (3) nu permite comutativitatea relatiei de admisibilitate.
Exemplul 20.4 Pentru r = 2 este posibil numai cazul (1). Deci o reprezentare
x=

X
i=0

ci 2i n care toate perechile (ci+1 , ci ) sunt admisibile, nu are doi coeficienti

consecutivi nenuli.

20.1. CODURI ARITMETICE


Definitia 20.6 O reprezentare x =

231

ci ri cu ci Z, |ci | < r si nx cu ci = 0 i >

i=0

nx se numeste N AF (non-adiacent form) daca pentru orice i 0, perechea (ci+1 , ci )


este admisibila.
Exemplul 20.5 Pentru r = 10 putem scrie:
96 = 4 100 + 0 101 + 1 102 (cazul (1)),
11 = 1 100 + 1 101 (cazul (2)),
38 = 2 100 + 4 101 (cazul (3)).
De remarcat ca reprezentarea lui 96 = 6 100 + 9 101 nu este n forma N AF
deoarece perechea (9, 6) nu este admisibila. La fel pentru reprezent
arile celorlaltor
numere.
Teorema 20.2 Orice num
ar ntreg x are o reprezentare N AF unica n baza r.
Dac
a aceasta este

x=

ci r i ,

i=0

atunci w(r) (x) = card ({i|i 0, ci 6= 0}).


Demonstratie: Fie

bi ri , (|bi | < r) o reprezentare a lui x n baza r, si i cel

i=0

mai mic numar cu proprietatea ca perechea (bi+1 , bi ) nu este admisibila. Putem


presupune ca bi > 0 (altfel se va lucra cu x). Vom nlocui bi cu b0i = bi r si bi+1
cu b0i+1 = bi+1 + 1 (daca bi+1 + 1 = r, atunci b0i+1 = 0 si facem deplasarea obisnuita
de la adunare).
Daca bi+1 > 0, atunci avem sau b0i+1 = 0, sau b0i b0i+1 < 0 si b0i+1 = bi+1 + 1 >
r bi = |b0i | (deoarece perechea (bi+1 , bi ) nu era admisibila).
Daca bi+1 < 0, atunci sau b0i+1 = 0, sau b0i b0i+1 > 0 si |b0i + b0i+ | = r bi bi+1 < r
deoarece bi+1 bi (perechea (bi+1 , bi ) nu era admisibila).
Deci, (b0i+1 , b0i ) este admisibila, si se verifica similar daca (b0i , bi1 ) este admisibila.
Procedeul continua pana se ajunge la i = 0.
Sa aratam acum ca reprezentarea N AF este unica. Presupunem ca exista x Z
cu doua astfel de reprezentari:
x=

ci r i =

i=0

c0i ri .

i=0

Consideram fara a micsora generalitatea ca c0 6= c00 si c0 > 0; deci c00 = c0 r.


Atunci pentru c01 sunt posibile trei valori: c1 + 1, c1 + 1 r. Daca c01 = c1 + 1 r,
atunci c1 0, deci c0 + c1 r 1. Deoarece c00 c01 > 0, avem c00 c01 < r, de unde
r c0 + r c1 1 < r, deci c0 + c1 > r 1, contradictie. Celelalte doua cazuri se
trateaza similar.
2
Reprezentarea N AF a unui numar x se poate afla direct si pe baza teoremei:
Teorema 20.3 Fie x Z, x 0. Consideram reprezent
arile n baza r a numerelor
(r + 1) x =

ai ri ,

i=0

x=

X
i=0

bi ri ,

unde ai , bi {0, 1, . . . , r 1}. Atunci reprezentarea N AF pentru x este


x=

X
i=0

(ai+1 bi+1 ) ri .

232

PRELEGEREA 20. ALTE REZULTATE DIN TEORIA CODURILOR

Demonstratie: Stim ca pentru doua numere naturale nenule a, r, [a/r] reprezinta


catul mpartirii celor doua numere, iar a [a/r] r - restul.
Din reprezentarea din enunt, rezulta ca fiecare coeficient ai se determina prin
adunarea coeficientilor corespunzatori ai numerelor x si r x, scrise n baza r. Sa
definim secventa numerica i , i 0 astfel:
"
#
i1 + bi1 + bi
0 = 0, i =
.
r
Atunci, conform observatiei de la nceputul demonstratiei, ai = i1 + bi1 + bi
i r. Daca notam ci := ai bi , avem ci = i1 + bi1 i r.
Mai ramane de verificat faptul ca (ci+1 , ci ) este o pereche admisibila. Relatia
|ci+1 + ci | < r rezulta imediat din definitia lui i . Sa presupunem ci > 0, ci+1 < 0;
atunci i = 0. Vom avea ci = i1 + bi1 , ci+1 = bi r si conditia |ci+1 | > |ci | este
echivalenta cu i1 + bi1 + bi < r, adica i = 0. Celalalt caz se arata analog.
2
Exemplul 20.6 Pentru a gasi reprezentarea N AF a numarului 98 n baza r = 10,
avem
98 = 8 100 + 9 101 + 0 102 + 0 103 + . . .
980 + 98 = 1078 = 8 100 + 7 101 + 0 102 + 1 103
Deci, 98 = (7 9) 100 + (0 0) 101 + (1 0) 102 = 2 + 1 102 .
Similar situatiei din paragraful anterior, sa consideram acum cazul reprezentarii
modulare. Vom lua deci m = rn 1, (n 2).
Definitia 20.7 O reprezentare
x

n1
X

ci ri (mod m)

i=0

cu ci Z, |ci | < r se numeste CN AF (cyclic N AF ) pentru x dac


a i (0 i
n 1), (ci+1 , ci ) este admisibila (se consider
a cn = c0 ).
Din Teoremele 20.2 si 20.3 rezulta un rezultat similar pentru reprezenta- rile CN AF :
Teorema 20.4 Orice numar ntreg x admite o reprezentare CN AF modulo m.
Aceast
a reprezentare este unica, except
and cazul
(r + 1) x 0 6 x (mod m),
c
and sunt posibile doua reprezent
ari.
Daca x

n1
X

ci ri (mod m), atunci

i=0

wm (x) = card({i|0 i < n, ci 6= 0}).


Demonstratie: Constructia este identica cu cea din demonstratia Teoremei 20.3.
Unicitatea se arata similar cu cea din demonstratia Teoremei 20.2. Singura exceptie
este cazul bi+1 bi (mod m). In acest caz sunt posibile doua reprezentari:
x b0 + b1 r + . . . bn1 rn1 si x b1 b2 r . . . b0 rn1 ,
ambele modulo m.
2

20.2. TURBO - CODURI

20.1.3

233

Coduri Mandelbaum - Barrows

O clasa de AN coduri a fost definita de Mandelbaum si Barrows, generalizata ulterior


de van Lindt ([11]).
Initial este necesar un rezultat referitor la ponderea modulara n AN coduri
ciclice, a carui demonstrare se afla n [11], pag. 127 128:
Teorema 20.5 Fie C Z/(rn 1) un AN cod ciclic cu generator a si b = (rn
1)/a = card(C), cu proprietatea ca x "
C are o#reprezentare
a. Atunci
#! CN AF unic
"
X
rb
b
wm (x) = n

.
r+1
r+1
xC
Teorema 20.6 Fie b un numar prim care nu divide r, cu proprietatea ca grupul
multiplicativ Zb este generat de r si 1. Fie n un numar ntreg pozitiv astfel ca
rn 1 (mod b) si a = (rn 1)/b. Atunci codul C Z/(rn 1) generat de a este
un cod echidistant cu distanta "
# "
#!
n
rb
b

.
b1
r+1
r+1
Demonstratie: Fie x C \ {0}. Atunci x = a n (mod rn 1) cu n 6= 0 (mod b). Din
ipoteza rezulta ca exista j ntreg cu n rj (mod b). Deci wm (x) = wm (rj a) =
wm (a). Aceasta arata ca C este echidistant. Valoarea distantei rezulta din Teorema
20.5.
2

20.2

Turbo - coduri

In ultimii ani, viteza tot mai mare de transmisie a datelor - aproape de capacitatea
maxima a canalelor de comunicatie a condus la modalitati noi de codificare. Turbo
codurile sunt prezentate prima data n 1993 de Berrou, Glavier si Thitimajshima
si combina sub forma de retea (minim) doua coduri convolutionale. Modalitatea
de decodificare este total deosebita de algoritmii cunoscuti pana acum (se folosesc
capacitatile statistice de performanta ale canalelor de transmisie). Ele asigura o
rata de corectare a erorilor mult mai ridicata decat la codurile clasice; de aceea
turbo - codurile asigura transmisiile de pe statiile lansate dupa anul 1993, precum
si canalele de satelit.

20.2.1

Structura unui turbo - cod

Un turbo - cod standard este reprezentat de Figura 20.1:


El foloseste doua (2, 2) - coduri convolutionale (care fara a micsora generalitatea au fost considerate identice), separate printr-un bloc PN de permutare de N
caractere (N fiind o constanta fixata, dependenta de structura canalului de transmisie). Mesajul de informatie este spart n blocuri u Zq de lungime N ; daca
se ignora mecanismul de relaxare R, rata codificatorului este 1/3 (N simboluri de
informatie se transforma n cuvinte - cod de lungime 3N ). Cele 3 iesiri (xs , x1p , x2p )
sunt apoi transmise pe coloana, ca un cod GAC.

234

PRELEGEREA 20. ALTE REZULTATE DIN TEORIA CODURILOR


Tabelul 20.1: Turbo - codificator standard
s

u = xs

- g1 (X)
g0 (X)

x1p -

PN
u0

R
- g1 (X)
g0 (X)

x1p , x2p
-

x2p -

Codificatorul
Pentru codul convolutional, matricea generatoare poate fi considerata (ntr-o varianta simplificata, bazata pe structura de retea a mesajelor) G = (g0 (X) g1 (X)).
Codificatorul unui turbo - cod va folosi ca matrice generatoare o forma echivalenta
recursiva:
!

g1 (X)
T
.
GR = 1
g0 (X)
Din acest motiv, un codificator convolutional pentru turbo - coduri este numit Codificator Sistematic Recursiv (RSE).
Un mesaj de informatie u(X), este codificat de codul convolutional n u(X)G =
(u(X)g0 (X) u(X)g1 ((X)). RSE va realiza aceeasi iesire pentru mesajul u0 (X) =
u(X)g0 (X) (se verifica imediat relatia u(X)g0 (X)GR = u(X)G). Vom numi totusi
cuvant - cod perechea de polinoame u(X)G (desi se mai efectueaza o operatie de
nmultire pentru obtinerea mesajului u0 (X)).
Se observa ca pentru un RSE, cuvantul cod are pondere finita daca si numai
daca mesajul de intrare se divide cu g0 (X).
Corolarul 20.1 Un mesaj sursa u0 cu w(u0 ) = 1 se codific
a ntr-un cuvant - cod
de pondere infinita.
Demonstratie: Evident, deoarece u0 (X) = X p nu se divide cu g0 (X).

Corolarul 20.2 Pentru orice polinom netrivial g0 (X) Zq [X] exist


a o infinitate
de mesaje sursa de pondere 2 care se codific
a n cuvinte - cod de pondere finita.
Demonstratie: Pentru g0 (X) Zq [X], g0 (X) 6= X p , exista un n minim cu proprietatea g0 (X)|X n 1 (n este lungimea secventei pseudo-aleatoare generata de g0 (X)
- a se vedea Relatii de recurenta liniara, Prelegerea 8).
Orice secventa u0 de forma u0 (X) = aX i (X n 1), a Zq \ {0} are pondere 2
si este divizibila cu g0 (X), deci codificarea prin RSE va genera un polinom cu un
numar finit de termeni.
2
Exemplul 20.7 Fie g0 (X) = 1 + X + X 4 , g1 (X) = 1 + X 2 + X 3 + X 4 polinoame
mod uzual se foloseste notatia n octal; deci, cum g0 = 110012 =
din Z2 [X]. In
318 , g1 = 101112 = 278 , vom avea (g0 g1 ) = (31, 27).

20.2. TURBO - CODURI

235

Matricea generatoare este


!
1 + X2 + X3 + X4
GR = 1
,
1 + X + X4
iar un circuit liniar care realizeaz
a acest RSE are forma:
6

??
s
uk s- +j?

- uk
s6
-

s-

s?

- +j

6
-s

?
- pk

(s-a notat cu uk simbolul de informatie curent, iar cu pk simbolul de control corespunz


ator).
Cum g0 (X) este primitiv, lungimea secventelor este 24 1 = 15. De exemplu,
mesajul sursa u(X) = 1 + X 15 se codific
a n (1 + X 15 , 1 + X + X 2 + X 3 + X 5 + X 7 +
8
11
X + X ) = (1000000000000001, 1111010110010000).
u(X) = X 7 (1 + X 15 ) va genera acelasi cuvant - cod, cu o nt
arziere de sapte tacti.
Permutatorul
PN este un bloc de permutare. Cele N caractere care constituie intrarea n primul
codificator RSE sunt rearanjate nainte de a intra n al doilea codificator. Din
considerente practice este preferabil ca permutarea folosita sa nu pastreze nici o
ordine anterioara a simbolurilor (desi acest lucru este uneori dificil, mai ales pentru
cuvinte de pondere mica). De asemenea, N trebuie sa fie suficient de mare (n
practica se foloseste N 1000). Aceste doua cerinte uzuale n criptografie sunt
necesare n obtinerea de performante ridicate la decodificare.
Mecanismul de relaxare
Daca pentru transmiterea de imagini din spatiu sunt folosite coduri cu rate mici
de informatie (fiecarui bit i corespund cel putin 3 caractere cod), n alte situatii
(comunicari prin satelit de exemplu) sunt preferabile rate mari (cel putin 1/2).
Rolul mecanismului de relaxare (vezi Capitolul 2) este de a reduce periodic anumite
caractere pentru a scurta lungimea cuvintelor - cod. De obicei se elimina biti de
control; astfel, pentru a obtine o rata de informatie 1/2 se pot elimina toti bitii de
control pari de la nceputul codului si toti bitii de control impari de la sfarsit.

20.2.2

Decodificarea turbo - codurilor

Din constructie rezulta ca un turbo codificator este liniar, deoarece toate componentele sale sunt liniare. Codificarile RSE sunt implementate prin circuite liniare,
permutatorul este liniar deoarece poate fi modelat printr-o matrice de permutare.
La fel, mecanismul de relaxare nu afecteaza liniaritatea, deoarece din toate cuvintele
- cod se sterg simbolurile de pe aceleasi pozitii. Importanta liniaritatii consta n faptul ca se poate lua ca referinta cuvantul - cod nul. De asemenea, toate constructiile

236

PRELEGEREA 20. ALTE REZULTATE DIN TEORIA CODURILOR

le facem pentru cazul binar, cu simbolurile 1. Decodificatorul va lucra dupa principiul obisnuit al decodificarii cele mai probabile.
Din pacate, utilizarea algoritmului Viterbi nu este posibila din cauza operatiei
de permutare folosita n decodificare. Totusi, pentru subsecven-te stricte, un astfel
de algoritm poate da rezultate.
Primul algoritm de decodificare pentru turbo - coduri a fost propus de Berrou
n 1993 ([12]), bazat pe ideile din [2]. Numit BCJR, el foloseste o decodificare
caracter-cu-caracter (spre deosebire de Viterbi care decodifica pe secvente bloc de
cate n caractere).
Vom folosi urmatoarele notatii:
Ei - notarea codificatorului RSE i (1 i 2);
Di - notarea decodificatorului i (1 i 2);
m - capacitatea de memorie (buffer) a codificatorului;
S - multimea celor 2m stari ale codificatorului;
xs = xs1 xs2 . . . xsN = u1 u2 . . . uN secventa de informatie care se codifica;
xp = xp1 xp2 . . . xpN cuvantul de control generat de codificator;
yk = yks ykp o receptie (posibil perturbata) a lui xsk xpk ;
yab = ya ya+1 . . . yb ;
y1N = y1 y2 . . . yN cuvantul receptionat.
Algoritmul BCJR (initial si modificat)
O prima versiune a algoritmului se bazeaza pe decodificarea cea mai probabila aposteriori (M AP - (
maximul aposteriori). Se realizeaza decodificarea
+1 daca P (uk = +1|y) > P (uk = 1|y)
uk =
1 altfel.
Formal, uk = sign[L(uk )], unde L(uk ) este logaritmul raportului probabilitatilor
de potrivire aposteriori, definit prin relatia

P (uk = +1|y)
L(uk ) = log
.
P (uk = 1|y)
Daca se tine cont de faptul caseXcodifica n retea, aceasta se scrie:

p(sk1 = s0 , sk = s, y)/p(y)

S+

L(uk ) = log
X
0
p(sk1 = s , sk = s, y)/p(y)
S

(1)

unde
sk S este starea codificatorului la momentul k,
S + este multimea perechilor (ordonate) (s0 , s) corespunzatoare tuturor starilor
de tranzitie (sk1 = s0 ) (sk = s) generate de uk = +1,

20.2. TURBO - CODURI

237

S este definita similar pentru uk = 1.


Este posibil sa simplificam cu p(y) n (1); deci este necesara doar o formula
pentru calculul lui p(s0 , s, y). In [2], este construita o varianta sub forma
p(s0 , s, y) = k1 (s0 ) k (s0 , s) k (s)
(2)
unde:
k (s0 , s) = p(sk = s, yk |sk1 = s0 );
k (s) = p(sk = s, y1k ) este calculat recursiv cu formula
k (s) =

k1 (s0 ) k (s0 , s)

s0 S

cu conditiile initiale 0 (0) = 1, 0 (s 6= 0) = 0


(codificatorul pleaca din starea 0).
N
k (s) = p(yk+1
|sk = s) are formula recursiva de calcul

k1 (s0 ) =

k (s) k (s0 , s)

sS

si conditiile N (0) = 1, N (s 6= 0) = 0
(dupa N biti de intrare codificatorul trebuie sa ajunga la starea 0; restrictia
se realizeaza alegand corespunzator ultimii m biti, numiti biti de ncheiere).
Aplicarea acestei variante de decodificare la turbo - coduri (reamintim, algoritmul
BCJR initial a fost definit n 1974) are un neajuns: simplificarea cu p(y) conduce la
algoritmi numerici instabili. De aceea, Berrou ([12]) face o modificare a algoritmului,
n felul urmator:
Se definesc probabilitatile (modificate)
N

k (s) = k (s)/p(y1k ), k (s) = k (s)/p(yk+1


|y1N ).
k1
N
Prin mpartirea relatiei (2) cu p(y)/p(yk ) = p(y1 ) p(yk+1
|y1k ) se ajunge la
p(s0 , s|y) p(y
k1 (s0 ) k (s0 , s) k (s).
k) =
X
k
Pentru ca p(y1 ) =
k (s), valorile
k (s) se pot determina din k (s) pe baza
formulei

sS

k (s)

k (s) = X
,
k (s)
sS

sau folosind definit


ia recursiva a lui k (s): X
X
k1 (s0 ) k (s0 , s)

k1 (s0 ) k (s0 , s)
0
0
s S
s S
X
X

k (s) = X
= X
k1 (s0 ) k (s0 , s)

k1 (s0 ) k (s0 , s)
sS s0 S

sS s0 S

ultimul rezultat fiind obtinut prin mpartirea numaratorului si numitorului cu


p(y1k1 ).
Definirea recursiva a lui k (s) se obtine plecand de la
p(y N |y k ) X X
p(y N |y1k ) X X
k1 (s0 )k (s0 , s) k+1
=

k1 (s0 )
p(ykN |y1k1 ) = p(y1k ) k+1k11 =
k1
)
p(y1
p(y
0
0
1
sS s S
sS s S
N
k (s0 , s) p(yk+1
|y1k )
si folosind definitia recursiva a lui k1 (s), se ajunge la relatia

238

PRELEGEREA 20. ALTE REZULTATE DIN TEORIA CODURILOR


X
k (s) k (s0 , s)
X
k1 (s0 ) = X sS
.

k1 (s0 ) k (s0 , s)
sS s0 S

In final, algoritmul BCJR modificat va folosi valoarea L(uk ) data de relatia

k1 (s0 ) k (s0 , s) k (s)


S+

.
L(uk ) = log
(3)
X
0
0

k1 (s ) k (s , s) k (s)
S

Conditiile la limita pentru


k (s) si k (s) sunt cele de la k (s) respectiv k (s).
O alta versiune a algoritmului
folose
ia apriori.

!ste informat

! Pentru acesta avem


P (y|uk = +1)
P (uk = +1)
L(uk ) = log
+ log
.
P (y|uk = 1)
P (uk = 1)
Deoarece n mod normal P (uk = +1) = P (uk = 1), al doilea termen al sumei
este zero n decodificatoarele uzuale. Pentru un turbo - decodor care lucreaza recursiv, D1 primeste informatie suplimentara de la D2 , care serveste ca informatie
apriori. Similar, D2 primeste de la D1 informatie suplimentara, s.a.m.d. Ideea
consta n faptul ca D2 poate da lui D1 informatii despre uk la care acesta nu are
acces (de exemplu caracterele de control generate de E2 ); acelasi lucru l realizeaza
D1 pentru D2 .
Un circuit de decodificare bazat pe algoritmul BCJR este:

?
y1p
ys -s D1
?

PN1
Le12

PN1

PN1 -

Le216

y2p

- D
2
6
6
-

S-a notat cu PN1 inversa matricii de permutare PN din circuitul de codificare. Le12
este informatia suplimentara transmisa de la D1 la D2 , iar Le21 este cea transmisa de
la D2 la D1 . Deciziile finale de decodificare pot veni atat de la D1 cat si de la D2 .
Mai ramane de vazut cum se poate obtine aceasta informatie suplimentara care
circula ntre cei doi decodificatori recursivi.
Definitia lui k (s0 , s) se poate rescrie
k (s0 , s) = P (s|s0 )p(yk |s0 , s) = P (uk ) p(yk |uk )
0
unde evenimentul uk corespunde
a se noteaza:
tranzitiei s ! s. Dac
P
(u
=
+1)
k
,
Le (uk ) = log
P (uk = 1)
P = P (uk = +1), P = P (uk = 1), avem
q
+
q
P /P+

P+ /P = P+ dac
a uk = +1,
1 + P /P+
q

P /P+

1 + P /P+

P /P+ = P daca uk = 1.

In aceasta situatie se obtine


!

exp[Le (uk )/2]


exp[uk Le (uk )/2] = Ak exp[uk Le (uk )/2], si (reamP (uk ) =
e
1 + exp[L (uk )]

20.2. TURBO - CODURI

239

intim, yk = yks y"kp , xk = xsk xpk = uk xpk )


#
(yks uk )2 (ykp xpk )2
p(yk |uk ) exp

=
2
2
2
2
"
#
"
#
(yks )2 + u2k + (ykp )2 + (xpk )2
uk yks + xpk ykp
= exp
exp
=
2 2
2
#
"
yks uk + ykp xpk
= Bk exp
2
deci
"
p
p#
s
u

y
+
x

y
k
k
k
k
k (s0 , s) Ak Bk exp [uk Le (uk )/2] exp
(4)
2
Deoarece k (s0 , s) apare n (3) la numarator (unde uk = +1) si numitor (unde
uk = 1), factorul Ak Bk se va reduce fiind independent de uk . De asemenea,
particularitatile de canal la transmisia lui 1 dau relatia 2 = N0 /(2Ec ) unde Ec
este energia de canal per bit. Din (4) se obtine
k (s0 , s) exp [uk (Le (uk ) + Lc yks )/2 + Lc ykp xpk /2] =
= exp [uk (Le (uk ) + Lc yks )/2] ke (s0 , s),
4Ec
unde Lc =
si ke (s0 , s) = exp [Lc ykp xpk /2].
N0
Combinand aceasta relatie cu (3) se ajunge la
X

k1 (s0 ) e (s0 , s) k (s) Ck


S+
L(uk ) = log
X
S

k1 (s )

ke (s0 , s)
X

=
k (s) Ck

k1 (s0 ) ke (s0 , s) k (s)

S
X
= Lc yks + Le (uk ) + log

k1 (s0 ) ke (s0 , s) k (s)

(5)

unde s-a notat Ck = exp [uk (Le (uk ) + Lc yks )/2].


A doua egalitate rezulta deoarece Ck (uk = +1) si Ck (uk = 1) pot fi scoase ca
factor. Primul termen al sumei (5) este numit valoare de canal, al doilea reprezinta
informatia apriori despre uk (furnizata de un decodificator anterior), iar al treilea
termen contine informatia suplimentara care se trimite la decodificatorul urmator.
Deci de exemplu la orice iteratie, D1 calculeaza
L1 (uk ) = Lc yks + Le21 (uk ) + Le12 (uk )
este informatia suplimentara venita de la D2 si Le12 (uk ) este al treilea
unde
termen din (5), folosit ca o informatie suplimentara trecuta de la D1 spre D2 .
Le21 (uk )

Algoritmul BCJR se poate formaliza, n unele ipoteze implicite. Astfel:


- se presupune ca cei doi codificatori lucreaza corect, adica ultimii m biti din
mesajul de informatie de lungime N se codifica astfel ca la sfarsit E1 sa ajunga la
starea zero.
- decodificatorii detin toata informatia referitoare la reteaua de codificare; astfel, ei au tabele complete cu simbolurile de informatie si de control pentru toate
tranzitiile de stari s0 s, matricile de permutare si inversele lor.

240

PRELEGEREA 20. ALTE REZULTATE DIN TEORIA CODURILOR


Algoritmul BCJR:
1. (Initializare): (
(
1 pentru s = 0
1 pentru s = 0 (1)
(1)
D1 :
0 (s) :=
N (s) :=
0 pentru s 6= 0
0 pentru s 6= 0
Le21 (uk ) := (
0, k = 1, 2, . . . , N
1 pentru s = 0
(2)
(2)
(2)
D2 :
0 (s) :=
, N (s) :=
N (s), s.
0 pentru s 6= 0
Le12 (uk ) se determina din D1 dupa prima trecere, deci nu se initializeaza.
2. (A n-a iteratie):
D1 : pentru k = 1, 2, . . . , N
- Se determina yk := yks yk1p unde yk1p sunt bitii de control receptionati pentru
E1 (posibil perturbati de canal);
- Se determina k (s0 , s) pentru toate tranzitiile posibile s0 s;
(1)
- Se determina
k (s), s.
(1)
pentru k = N, N 1, . . . , 2 se determina k1 (s), s;
pentru k = 1, 2, . . . , N se determina Le12 (uk ) cu valorile de probabilitati
asociate lui D1 .
D2 : pentru k = 1, 2, . . . , N
- Se determina yk := yPs N [k] yk2p ;
- Se determina k (s0 , s) pentru toate tranzitiile posibile s0 s;
(2)
- Se determina
k (s), s;
(2)
pentru k = N, N 1, . . . , 2 se determina k1 (s), s;
pentru k = 1, 2, . . . N se determina Le21 (uk ) cu valorile de probabilitati
asociate lui D2 ;
3. (Dupa ultima iteratie):
Pentru k = 1, 2, . . . , N
- Se determina L1 (uk ) := Lc yks + Le21 (uP 1 [k] ) + Le12 (uk );
N
- Daca L1 (uk ) > 0 atunci uk := +1 altfel uk := 1;
4. Stop.

20.3

Exercitii

20.1 Demonstrati Propozitia 20.1.


20.2 Demonstrati Propozitia 20.2, (3).
20.3 Calculati w(2) , w(10) si w(16) pentru numerele

100, 32412, 999, 1024.

20.4 Fie x Z. Un cod Booth este o reprezentare x =

ci 3i unde ci {1, 0, 1}.

i=0

1. S
a se reprezinte n codul Booth numerele 23, 455, 81, 6493;
2. S
a se arate ca pentru orice numar ntreg, codul Booth este unic.
20.5 Determinati AN - codurile ciclice din Z23 1 si Z33 1 .
Stabiliti valorile a si b pentru fiecare din ele.

20.3. EXERCIT
II

241

20.6 Generalizati Exemplul 20.3. Gasiti un AN - cod ciclic perfect corector de o


eroare pentru r = 3.
20.7 Scrieti n forma N AF pentru r = 2, r = 10 si r = 7 numerele
15, 32075, 5665, 992.
arii
20.8 Completati demonstratia Teoremei 20.2, verificand unicitatea re-prezent
N AF n cazurile c01 = c1 + 1 si c01 = c1 + 1 + r.
definitia reprezent
20.9 In
arii N AF a numarului ntreg x (cu completarea n0 =
1), sa se arate ca
rk+2
nx k |x| <
.
r+1
20.10 Consider
am reprezentarea ternara modulo 36 1. Sa se determine forma
CN AF pentru numarul 455.
20.11 Determinati cuvintele - cod din codul Mandelbaum - Barrows cu b = 11, r =
3, n = 5.
20.12 Fie g0 (X) = 1 + X + X 3 , g1 (X) = 1 + X 2 + X 4 + X 5 din Z2 [X]. Construiti
circuitul liniar pentru codificatorul RSE.
Codificati mesajele de informatie 1 + X 2 + X 3 , 1 + X 7 , X + X 4 + X 5 .
20.13 Aceeasi problem
a pentru polinoamele g0 (X) = 1 + X 3 + X 4 , g1 (X) = X +
X 3 + X 6.
20.14 S
a se construiasc
a un turbo-codificator folosind
codificatoarele
RSE din Ex

1 0 0

emplul 20.7, N = 3, matricea de comutatie P3 = 0 0 1 si far


a mecanism de
0 1 0
relaxare.
S
a se codifice mesajul de informatie 100 011 101.

242

PRELEGEREA 20. ALTE REZULTATE DIN TEORIA CODURILOR

Bibliografie
[1] J. Adamek - Foundations of Coding, Wiley - Interscience, 1991;
[2] L. Bahl, J. Cocker, F. Jelinek, J. Raviv - Optimal decoding of linear codes for
minimizing symbol error rate, IEEE Trans. Inf. Theory, pp. 284-287, Martie
1974;
[3] M. Blaum - A (16, 9, 6, 5, 4) error correcting dc-free block code, IEEE Transactions on Information Theory, vol. 34, 1988, pp. 38-141;
[4] C. Carlet - Codes de Reed - Muller; Codes de Kerdok et de Preparata (teza de
doctorat), PARIS VI, 1990;
[5] G. Cullmann - Coduri detectoare si corectoare de erori, Editura Tehnica, 1972;
[6] S. Guiasu - Teoria Codurilor, Tipografia Universitatii Bucuresti, 1976;
[7] D.G. Hoffman, D.A. Leonard, C.C. Lindner, K.T. Phelps, C.A. Rodger, J.R.
Wall - Coding Theory; The Essentials, Marcel Dekker, Inc, 1991;
[8] B. Honary, G. Markarian - Trellis Decoding of Block Codes, A Parctical Approach, Kluwer Academic Publ., 1997;
[9] A. M. Kerdok - A class of low-rate non linear codes, Information and control,
20 (1972), 182-187;
[10] J.H. van Lindt - Coding Theory, Springer Verlag, 1971;
[11] J.H. van Lindt - Introduction to Coding Theory, Springer Verlag, 1982;
[12] W.E.Ryan - A Turbo Code Tutorial, IEEE Trans. Comm. pp. 1261-1271, Oct.
1996;

243

Bibliography
[1] J. Adamek - Foundations of Coding, Wiley - Interscience, 1991;
[2] A. Atanasiu - Teoria codurilor corectoare de erori, Editura Universit
atii Bucuresti,
2001;
[3] L. Bahl, J. Cocke, F. Jelinek, J. Raviv - Optimal decoding of linear codes for minimizing symbol error rate, IEEE Inf. Theory, pp. 284-287, Martie 1974;
[4] M. Blaum - A (16, 9, 6, 5, 4) error correcting dc-free block code, IEEE Transactions on
Information Theory, vol. 34, 1988, pp. 38-141;
[5] C. Carlet - Codes de Reed - Muller; Codes de Kerdok et de Preparata (tez
a de doctorat), PARIS VI, 1990;
a, 1972;
[6] G. Cullmann - Coduri detectoare si corectoare de erori, Editura Tehnic
[7] S. Guiasu - Teoria Codurilor, Tipografia Universit
atii Bucuresti, 1976;
[8] D.G. Hoffman, D.A. Leonard, C.C. Lindner, K.T. Phelps, C.A. Rodger, J.R. Wall Coding Theory; The Essentials, Marcel Dekker, Inc, 1991;
[9] B. Honary, G. Markarian - Trellis Decoding of Block Codes, A Practical Approach,
Kluwer Academic Publ., 1997;
[10] A. M. Kerdok - A class of low-rate non linear codes, Information and control, 20
(1972), 182-187;
[11] J.H. van Lindt - Coding Theory, Springer Verlag, 1971;
[12] J.H. van Lindt - Introduction to Coding Theory, Springer Verlag, 1982;
[13] W.E.Ryan - A Turbo Code Tutorial, IEEE Trans. comm. pp. 1261-1271, Oct. 1996;

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

  • COD13
    COD13
    Document15 pagini
    COD13
    pisti1989
    Încă nu există evaluări
  • COD18
    COD18
    Document13 pagini
    COD18
    pisti1989
    Încă nu există evaluări
  • COD14
    COD14
    Document12 pagini
    COD14
    pisti1989
    Încă nu există evaluări
  • 16.1 Coduri Liniare Si Coduri Convolut Ionale
    16.1 Coduri Liniare Si Coduri Convolut Ionale
    Document13 pagini
    16.1 Coduri Liniare Si Coduri Convolut Ionale
    beculetzu
    Încă nu există evaluări
  • COD13
    COD13
    Document15 pagini
    COD13
    pisti1989
    Încă nu există evaluări
  • COD12
    COD12
    Document12 pagini
    COD12
    pisti1989
    Încă nu există evaluări
  • COD11
    COD11
    Document11 pagini
    COD11
    pisti1989
    Încă nu există evaluări
  • COD20
    COD20
    Document17 pagini
    COD20
    pisti1989
    Încă nu există evaluări
  • COD6
    COD6
    Document12 pagini
    COD6
    pisti1989
    Încă nu există evaluări
  • ADP Prezentare
    ADP Prezentare
    Document1 pagină
    ADP Prezentare
    pisti1989
    Încă nu există evaluări
  • COD1
    COD1
    Document12 pagini
    COD1
    pisti1989
    Încă nu există evaluări
  • Curs 2
    Curs 2
    Document14 pagini
    Curs 2
    pisti1989
    Încă nu există evaluări
  • Curs 5
    Curs 5
    Document6 pagini
    Curs 5
    pisti1989
    Încă nu există evaluări
  • Curs 3
    Curs 3
    Document14 pagini
    Curs 3
    pisti1989
    Încă nu există evaluări
  • Arbori Rosu Negru Iz
    Arbori Rosu Negru Iz
    Document55 pagini
    Arbori Rosu Negru Iz
    pisti1989
    Încă nu există evaluări