Sunteți pe pagina 1din 5

Codarea codurilor liniare

Fie C [ n, k , d ] cod liniar peste corpul Fq și {r1 , r2 ,..., rk } o bază a lui C. Atunci ∀v ∈ C , avem
v = u1r1 + u2 r2 + ... + uk rk , unde u1 , u2 , ..., uk ∈ Fq .
Dacă G este matricea generatoare a lui C, atunci putem considera că linia “i” a lui G este formată din
vectorul ri al bazei, ∀ i = 1, k și în acest caz, obținem că
∀u = (u1 , u2 , ..., uk ) ∈ Fqk , u ⋅ G = u1r1 + u2 r2 + ... + uk rk = v ∈ C
Reciproc

∀v ∈ C se scrie unic v = u ⋅ G , pentru u = (u1 , u2 , ..., uk ) ∈ Fqk .


Prin urmare, ∀u ∈ Fqk acesta poate fi codat prin v = u ⋅ G .

Exemplu
1 0 1 1 0
 
Fie C cod liniar de matrice generatoare G =  0 1 0 1 1  . Codați u = 101 cu ajutorul codului C.
0 0 1 0 1
 

1 0 1 1 0
 
v = u ⋅ G = (101)  0 1 0 1 1  = (10111) .
0 0 1 0 1
 
Decodarea codurilor liniare

Fie C [ n, k ] cod liniar peste corpul Fq .

{ }
Dacă u ∈ Fqn , atunci u + C = u + c c ∈ C se numește clasă de resturi a lui C de reprezentat u.

• Dacă v ∈ Fqn și v ∉ u + C , atunci u + C ∩ v + C = Φ , iar dacă v ∈ u + C , atunci u + C = v + C .

Într-adevăr dacă v ∉ u + C și x ∈ u + C ∩ v + C , avem x = u + c = v + c′ , cu c, c′ ∈ C .


Avem c − c′ ∈ C , deci v = u + c − c′ ∈ u + C , contradicție.
Dacă v ∈ u + C , atunci v = u + c, c ∈ C și c + c′ ∈ C , avem v + c′ = u + ( c + c′ ) ∈ u + C , căci
c + c′ ∈ C , de unde v + C ⊆ u + C , analog u + C ⊆ v + C .
• Așadar, pentru două clase de resturi u + C și v + C avem
 u +C = v+C

 sau .
u + C ∩ v + C = Φ

Definiție
Un cuvânt e ∈ u + C astfel încât wt ( C ) este minim se numește lider al claei de resturi u + C .

• Cum e ∈ u + C , avem e + C = u + C .
• Cum C = q k , Fqn = q n și u + C = C = q k , iar clasele de resturi diferite nu se intersectează,
qn
rezultă că avem = q n −k clase de resturi. Acestea pot fi enumerate după regula următoare:
qk

Pas 1
Se ia ca lider pentru C cuvântul e = 0 ∈ C și 0 + C ∈ C
e1 + C = 0 + C = C : 0 = c1 , c2 ,..., cM , M = C = q k .

Pas 2
Se alege e2 ∈ Fqn , e2 ∉ e1 + C de pondere minimă.
Avem e2 + C ∩ e1 + C = Φ și se completează a doua linie a ceea ce va fi tabelul Slepian standard
e2 + C : e2 , e2 + c2 ,..., e2 + cM .

Pas 3
Se alege e3 ∈ Fqn , e3 ∉ e1 + C ∪ e2 + C , e3 de pondere minimă și se completează a treia linie a tabelului
Slepian standard
e3 + C : e3 , e3 + c2 ,..., e3 + cM .
și așa mai departe, până epuizăm pe Fqn .
• Tabloul Slepian standard va avea q n − k linii asociate, respectiv clase de resturi ei + C .

• Din modul de alegere , ei este un cuvânt de pondere minimă în clasa ei + C , deci este lider al
acestei clase.

Exemplu
Fie C [ 4, 2] cod liniar peste corpul F2 , C = {0000,1011, 0101,1110} .
Urmăm ideea de construcție de mai sus a tabelului Slepian standard
ei + C
0 0 0 0 + C = C : 0 0 0 0 1011 0101 1110
0 0 01 + C : 0 0 01 1010 010 0 1111 .
0 010 + C : 0 010 10 01 0111 110 0
10 0 0 + C : 10 0 0 0111 1101 0110

Presupunând că folosim pentru transmiterea mesajelor un cod binar simetric (BSC), dacă
transmitem un cuvânt cod c ∈ C și primim un cuvânt u ∈ F24 , atunci eroarea comisă în transmitere este
e = u − c ∈ u + C . Rezultă că u ∈ e + C .
Pentru că vectorul eroare e = u − c cu ponderea minimă este cel mai probabil, acționând cu regula
MDD decodificând astfelː dacă cuvântul u ∈ F24 este recepționat, alegem clasa de resturi u + C un cuvânt
e de pondrere minimă (de fapt, liderul lui u + C ) și decodificăm cuvântul primit u cu cuvântul cod
c =u−e.
Dacă u = 1101 , atunci u ∈10 0 0 + C și decodifică pe u cu c = u − 10 0 0 = 0101 .
Dacă u = 1111 , atunci u ∈ 0 0 01 + C și decodifică pe u cu c = u − 10 0 0 = 1110 .

Observație
Clasa 0 0 01 + C mai are ca posibil lider e = 010 0 și atunci u = 1111 se decodifică cu
c = u − 010 0 = 1011 .
Acest fenomen neplacut apare când într-o clasă sunt mai multe cuvinte de aceeași pondere minimă.

O altă metodă de decodare a codurilor liniare este tabelul sindrom standard, care elimină
complicațiile ce apar în identificarea clasei de resturi în care se găsește cuvântul recepționat u ∈ Fqn .
Metoda se bazează pe noțiunea de sindrom.

Definiție
Fie C [ n, k ] cod liniar peste corpul finit Fq și H o matrice de control a lui C. Dacă u ∈ Fqn , atunci
uH T ∈ Fqn −k notat S ( u ) , se numește sindromul lui u.
Evident,
S ( u + v ) = S ( u ) + S ( v ) , ∀ u, v ∈ Fqn .
Conform observației că
Dacă H este o matrice de control a lui C, iar x ∈ Fqn atunci
x ∈ C ⇔ xH T ,
avemː
S (c) = 0 ⇔ c ∈ C ,
Așadar, pentru orice x ∈ u + C , x = u + c, c ∈ C ː
S ( x ) = S ( u + c ) = S ( u ) + S ( c ) = S (u ) .
Astfel, toate cuvintele x dintr-o clasă de resturi u + C au același sindrom, același cu sindromul
reprezentantului u.
• Dacă u , v ∈ Fqn sunt astfel încât u + C ≠ v + C , atunci S ( u ) ≠ S (v) .
Căci altfel din S ( u ) = S (v) ⇒ ( u − v ) H T = 0 , deci u − v = c ∈ C ⇒ u + C = v + C , contradicție.
Cum avem q n − k clase de resturi și cum Fqn − k = q n − k rezultă e1 , e2 ,..., em sunt liderii claselor de
resturi, unde m = q n − k , aplicația
S : {e1 , e2 ,..., em } → Fqn − k ,
ei ֏ S ( ei ) = ei H T ∈ Fqn− k
este bijectivă.

Tabelul Sindrom standard arată astfel

liderii sindrom
e1 S (e1 )
e2 S (e2 )
⋮ ⋮
em S (em )
unde m = q n − k .
Decodificarea cu tabelul Sindrom standard se face astfelː
Pas 1
Se calculează sindromul S ( u ) și se determină i astfel încât S ( u ) = S (ei ) (prin inspectarea coloanei a
doua a tabelului sindrom standard)
Pas 2
Se decodifică u cu c = u − ei ∈ C .

Exemplu
Fie C [ 4, 2] cod liniar peste corpul F2 , C = {0000,1011, 0101,1110} , studiat anterior. S-au ales lideriiː
e1 = 0 0 0 0,
e2 = 0 0 01,
e3 = 0010,
e4 = 10 0 0.
Tabelul sindrom standard esteː
liderii sindrom
e1 = 0 0 0 0 00
e2 = 0 0 01 01
e3 = 0010 10
e4 = 10 0 0 11

O matrice de control pentru C este


1010 
H =  , calculăm S (ei ), i = 1, 2,3, 4 ,
 1101 
 11 
 
01
S ( 0 0 0 0 ) = 0 0 00   = 0 0 ,
10 
 
 01
 11 
 
01
S ( 0 0 01) = 0 0 01  = 01 ,
10 
 
 01
 11 
 
01
S ( 0 010 ) = 0 010   = 10 ,
10 
 
 01
 11 
 
01
S (10 0 0 ) = 0 0 00   = 11 .
10 
 
 01
Dacă se recepționează un cuvânt u = 1101 , avem
 11 
 
01
S ( u ) = 1101  = 11 .
10 
 
 01
Așadar,
S ( u ) = S (10 0 0) = S (e4 ) ,
și deci u = 1101 se decodează cu cuvîntul cod c = u − e4 = 1101 − 10 00 = 0101 .

Probleme propuse
1. Fie C [ 4, 2] cod liniar peste corpul F2 , C = {0000,1011, 0101,1110} și se recepționează un
cuvânt u = 1001 , găsiți cuvântul cod corespunzător.
1 0 2 1 0
2. Fie codul liniar peste ℤ 3 , definit de matricea H =   , scrieți lista sindromurilor.
0 1 2 1 2
1 0 2 1 0
3. Fie codul liniar peste ℤ 3 , definit de matricea H =   , presupunând că s-a
0 1 2 1 2
transmis cuvântul cod 21112 și s-a recepționat 11122, determinați sindromul..
1 0 0 2 2
 
4. [1] Fie codul peste ℤ 3 cu matricea generatoare G =  0 1 0 0 1  , construiți o tabelă de
0 0 1 1 0
 
sindromuri de decodificare.
1 1 0 1 0
5. [1] Fie codul cu matricea de control H =   , construiți o tabelă de sindromuri de
0 1 1 1 1
decodificare.

Bibliografie
1. A. Atanasiu, Teoria codurilor detectoare de erori, Ed. Univ., Bucuresti, 2001
2. C. Gheorge, D. Popescu, Criptografie. Coduri. Algoritmi, Ed. Univ., Bucuresti, 2005
3. I.D. Ion, S. Bârză, R. Ioan, Fundamentele algebrei, Editura Fundaţiei România de Mâine, Bucureşti,
2012
4. I. D.Ion, S. Bărză, Aritmetica, teoria numerelor și metode algoritmice în algebră, Editura Fundaţiei
România de Mâine,, 2008
5. J. A. Buchmann, Introduction to Cryptography, Ed.Springer, 2000
6. J. Hoffstein, J. Piphen and Silverman, An Introduction to Mathematical Cryptography,Springer,
2008
7. N. Koblitz, A course in Number Theory and Cryptography, Ed.Springer, 1998
8. S. Ling, C. Xing, Coding Theory, Cambridge Univ. Press,2008
9. J.H. van Lint, Introduction to Coding Theory, Springer, 1999

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