Documente Academic
Documente Profesional
Documente Cultură
157
158 PRELEGEREA 14. ALTE CLASE DE CODURI CICLICE
αj (0 < j ≤ 2p − 2).
La fiecare tact circuitul ı̂nmulţeşte conţinutul elementelor de ı̂nmagazinare cu α;
deci, după n − j = 2p − 1 − j momente, ı̂n elementele de ı̂nmagazinare se obţine
p −1−j+j p −1
α2 = α2 = αn = α0 = 1 = (1, 0, . . . , 0).
Circuitul care realizează (ı̂n funcţie de necesităţi) codificarea, calculul sindromului şi
corectarea erorilor simple este:
¾ r Z
}
Z¾
6
? ?
Intrare 2 - +j
- - +j
- - - - +j
?6 -©©
*-
Intrare 1 r -
unde α ∈ GF (2p ) este primitiv. H are p + 1 linii şi n = 2p − 1 coloane (pe prima
coloană, primele p poziţii formează vectorul 1 = α0 , iar pe a p + 1-a poziţie se află
scalarul 1 ∈ Z2 ). Codul obţinut este codul Hamming extins (Definiţia 3.1), capabil
să corecteze o eroare şi să detecteze două erori.
Un asemenea cod se poate defini cerând ca orice cuvânt - cod {f (X)} să aibă
ca rădăcini α şi 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 cuvântului recepţionat
{r(X)} se folosesc ı̂nsă practic două circuite: unul de ı̂mpărţire la m(X) (pentru cal-
culul lui r(α)) şi altul de ı̂mpărţire la 1+X (pentru r(1)). Discuţia este următoarea:
• Dacă r(α) = r(1) = 0, atunci nu a intervenit nici o eroare (sau avem o eroare
nedetectabilă);
Exemplul 14.3 Să extindem codul Hamming din Exemplul 14.2. Vom avea poli-
nomul generator
g(X) = (1 + X)(1 + X + X 4 ) = 1 + X 2 + X 4 + X 5
Circuitul liniar care codifică mesajele de informaţie (de lungime k = 10) este:
¾ r r Q
kQ¾
?
²¯ ?
²¯ 6
²¯
?
- - - + - - -+ - -+
±° ±° ±°
? 6 *-
©
-©
r -
Circuitul liniar construit pentru m(X) face şi corectarea erorilor simple.
160 PRELEGEREA 14. ALTE CLASE DE CODURI CICLICE
Din
p −1
³ ´ qp −1qp − 1
β n = 1 = (α)q = αq−1 q−1
rezultă n =
.
q−1
Se observă imediat că H are un număr maxim de coloane distincte şi nenule.
Demonstraţie: ”⇐”: Să presupunem că există două coloane liniar dependente ı̂n
matricea H. Deci β i = aβ j cu a ∈ Zq , adică β i−j = a.
Elementele nenule din Zq sunt rădăcinile ecuaţiei X q−1 − 1 = 0 (Teorema 11.3).
Mai mult, ele sunt chiar primele q − 1 puteri ale lui αn . Într-adevăr, pentru orice
s = 0, 1, . . . , q − 2 avem ³ m ´s
(αns )q−1 = αq −1 = 1s = 1.
Deci pentru a ∈ Zq avem a = αns . Se poate scrie atunci β i−j = αns , adică
α(i−j)(q−1) = αns ⇒ (i − j)(q − 1) = ns.
Dar s < q − 1 iar (n, q − 1) = 1, deci i = j, de unde rezultă a = 1, β i = β j .
Orice două coloane din H sunt liniar independente, adică (Teorema 2.4) d ≥ 3.
”⇒”: Dacă q − 1 şi n nu sunt prime ı̂ntre ele, atunci ecuaţia anterioară admite
şi soluţia i 6= j; deci există două coloane distincte liniar dependente β i şi β j ı̂n
matricea H, ceea ce contrazice faptul că d ≥ 3. 2
Pentru operaţia de codificare se foloseşte circuitul de ı̂mpărţire cu polimul mini-
mal m(X) al lui β (care aici este chiar polinomul generator al codului Hamming ciclic
A). Acelaşi circuit va calcula sindromul r(β) al polinomului recepţionat {r(X)}.
14.2. CODURI HAMMING CICLICE NEBINARE 161
În cazul ı̂n care a intervenit o eroare, r(β) este de forma bβ j (eroarea b a apărut
pe poziţia β j ). Funcţionarea secvenţială a circuitului liniar (fără intrări) revine la
ı̂nmulţirea succesivă cu β. Deci, după n − j tacţi, ı̂n elementele de ı̂nmagazinare se
obţine vectorul (b 0 . . . 0). Atunci, din componenta n − j a cuvântului recepţionat
se va scădea eroarea b. De observat că - deoarece coloanele lui H sunt nenule
şi distincte - primul tact ı̂n care se obţine un vector cu toate componentele nule
ı̂nafară de prima, este n − j.
(s-a ţinut cont că −1 = 2, −2 = 1). În primii 10 tacţi de funcţionare, biţii de
informaţie sunt trimişi pe canal şi - simultan - intră ı̂n circuitul liniar, a cărui
funcţionare este (pe prima coloană se află informaţia, iar pe celelalte trei - conţinutul
elementelor de ı̂nmagazinare):
0 0 0 0 2 2 1 2
1 1 2 2 0 2 0 2
2 1 0 1 1 0 2 0
0 1 0 2 2 2 1 0
1 0 1 0 0 0 2 1
162 PRELEGEREA 14. ALTE CLASE DE CODURI CICLICE
În elementele de ı̂nmagazinare au rămas caracterele de control 021. Ele sunt trimise
prin canal la tacţii 11 − 13 de la dreapta spre stânga, cu semn schimbat: ı̂n ordine
−1 = 2, −2 = 1, −0 = 0. Deci cuvântul - cod transmis a fost a = 0120120120210.
Se verifică imediat că aH T = 0.
La recepţie, primele 10 caractere sunt cele de informaţie. Pentru a verifica dacă
au apărut sau nu erori, se foloseşte acelaşi circuit, dar cu altă intrare:
¾ r r
? ? 6
2j 2j
? ? ?
0120210210210 - +j
- - +j - - +j - -
0 0 0 0 1 2 0
0 0 0 0 1 1 1 2
1 1 0 0 2 1 2 2
2 2 1 0 0 2 2 0
0 0 2 1 2 2 2 2
1 2 2 1 1 0 0 0
2 0 1 1 0 0 0 0
Sindromul a(α2 ) obţinut este 000, deci nu a apărut nici o eroare. Dacă s-ar fi
recepţionat ı̂nsă cuvântul a0 = 0120120100210, după funcţionarea circuitului timp
de 13 tacţi s-ar fi ajuns ı̂n elementele de ı̂nmagazinare la 220. Cum acesta este
nenul, circuitul se lasă să funcţioneze ı̂n continuare, fără intrare, până se ajunge
la un sindrom de forma b00 cu b 6= 0. Mai exact, funcţionarea circuitului va fi (pe
prima coloană se numără tacţii):
0 2 2 0 5 1 0 1
1 0 2 2 6 1 0 2
2 2 1 0 7 2 2 1
3 0 2 1 8 1 1 1
4 1 2 1 9 1 0 0
Deci, după 9 tacţi s-a ajuns la 100. Corecţia se face astfel: din componenta a 9 - a
a cuvântului recepţionat se scade b = 1, obţinându-se 0 − 1 = 2 (mod 3).
1 g(X) − g(a)
=− g(a)−1
X −a X −a
Propoziţia 14.2 În algebra polinoamelor din Zq [X] modulo g(X), polinomul
1
este inversul lui X − a.
X −a
1
Demonstraţie: Faptul că este polinom se verifică imediat. Pe de-altă 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
Definiţia 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.
n
X vi
Codul conţine toate cuvintele v = v1 v2 . . . vn ∈ Zqn pentru care = 0.
i=1 X − ai
unde t = grad(g(X)).
1
Demonstraţie: Să explicităm polinomul . Dacă 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 t−1 + (agt + gt−1 )X t−2 + (a2 gt + agt−1 + gt−2 )X t−3 + . . . +
X −a
(at−1 gt + at−2 gt−1 + . . . + g1 ).
Xt
1 −1
Deci coeficientul lui X k−1
(1 ≤ k ≤ t) ı̂n polinomul este −g(a) at−j gj .
X −a j=k
Xn
vi
Ecuaţia caracteristică a codurilor Goppa = 0 implică faptul că toţi
i=1 X − ai
coeficienţii lui X k−1 , k = 1, . . . , t sunt nuli. Deci
n
X t
X
vi g(ai )−1 at−j gj = 0, 1 ≤ k ≤ t.
i=1 j=k
164 PRELEGEREA 14. ALTE CLASE DE CODURI CICLICE
n
X
Cazul k = t conduce la gt vi g(ai )−1 = 0 şi - deoarece gt 6= 0 - se obţine
i=1
n
X
vi g(ai )−1 = 0.
i=1
n
X n
X
Din cazul k = t − 1 se obţine gt vi g(ai )−1 ai + gt−1 vi g(ai )−1 = 0. Cum a doua
i=1 i=1
n
X
sumă este zero, iar gt 6= 0, va rezulta vi g(ai )−1 ai = 0, ş.a.m.d.
i=1
Am obţinut echivalenţa
n
X n
X
vi
=0 ⇐⇒ vi g(ai )−1 asi = 0, 0 ≤ s ≤ t − 1
i=1 X − ai i=1
2
Corolarul 14.1 Codul Goppa determinat de un polinom g(X) de gradul t are ma-
tricea de control
1 1 1 1
g(a ) g(a ) g(a )
. . . g(a )
a11 a2
2
a3
3
an
n
g(a1 ) g(a2 ) g(a3 ) . . . g(an )
H= .. .
.
at−1 at−1 at−1 at−1
g(a1 )
2
g(a2 )
3
g(a3 )
... n
g(an )
El are distanţa minimă 5; s-a obţinut deci un (8, 2) - cod binar corector de două
erori. De remarcat că acesta nu este un cod ciclic.
Observaţie: Să considerăm un cod BCH definit prin rădăcinile
αm0 , αm0 +1 , . . . , αm0 +d−2
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 +d−2 şi elementele α0 , α−1 , . . . , α−(n−1) . Vom avea pentru
orice i = 0, 1, . . . , d − 2 şi k = 0, 1, . . . , n − 1:
(α−k )i
= (αk )m0 +d−2−i = (αm0 +d−2−i )k
(α−k )m0 +d−2
Pe baza aceasta, codul Goppa rezultat are matricea de control
1 αm0 +d−2 (αm0 +d−2 )2 . . . (αm0 +d−2 )n−1
m +d−3
1 α 0 (αm0 +d−3 )2 . . . (αm0 +d−3 )n−1
H=
..
.
1 αm0 (αm0 )2 ... (αm0 )n−1
care coincide cu matricea de control a codului BCH considerat, ı̂n care s-a efectuat
o inversare a liniilor.
Se poate arăta (Van Lint) că singurele coduri Goppa ciclice sunt codurile BCH.
Propoziţia 14.3 Codul Goppa binar de lungime n, determinat de un polinom de
grad t peste GF (2m ) are k ≥ n − mt simboluri de informaţie şi distanţa minimă
≥ t + 1.
Demonstraţie: Matricea de control a codului Goppa are t linii ı̂n GF (2m ), deci mt
linii scrise ı̂n binar. Rezultă că numărul n − k de simboluri de control este cel mult
mt : n − k ≤ mt.
Pe de-altă parte, se arată uşor că orice combinaţie liniară de t coloane din H
este liniar independentă. 2
Definiţia 14.3 Fie g(X) un polinom ireductibil peste GF (q m ). Codul Goppa deter-
minat de g(X) şi de toate elementele lui GF (q m ) se numeşte ireductibil.
Codul prezentat ı̂n Exemplul 14.5 este un cod ireductibil. Despre codurile Goppa
ireductibile se poate prezenta următorul rezultat:
Teorema 14.3 Un cod Goppa binar ireductibil, determinat de un polinom de gradul
t poate corecta cel puţin t erori independente.
Pentru demonstraţie va trebui să facem o construcţie suplimentară.
Definiţia 14.4 Derivata formală a polinomului a(X) = a0 + a1 X + . . . + an X n este
definită prin a0 (X) = a1 + 2a2 X + 3a3 X 2 + . . . + nan X n−1 .
Demonstraţie: Exerciţiu.
Lema 14.2 Într-un corp de caracteristică 2 derivata formală a unui polinom este
un pătrat perfect.
166 PRELEGEREA 14. ALTE CLASE DE CODURI CICLICE
Din definiţie rezultă că σ(X) şi ω(X) sunt prime ı̂ntre ele. În plus, grad(σ(X)) =
e, grad(ω(X)) < e. Între ele există relaţia
n−1
X Y
ei
{s(X)}{σ(X)} = (X − ai ) ≡ {ω(X)} (mod g(X)). (1)
i=0 X − ai i∈M
σ(X) şi ω(X) sunt polinoamele normate de grad minim care verifică relaţiile de
sus. Într-adevăr, să presupunem că există σ1 (X) un polinom nenul normat de grad
< e şi ω1 (X) polinomul corespunzător, astfel ca
14.4 Exerciţii
14.1 Să se construiască matricea generatoare a (13, 10) - codului Hamming ternar
din Exemplul 14.4.
168 PRELEGEREA 14. ALTE CLASE DE CODURI CICLICE
14.2 În codul din Exemplul 14.4 să se codifice mesajele de informaţie:
(a) 1122002211 (b) 0000111122 (c) 1020012210
(d) 2200211101 (e) 2222222222 (f ) 0000000000
14.8 Găsiţi 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ă de rădăcina polinomului 1 + X + X 4 . Analizaţi
codul Goppa binar astfel construit.
14.11 Folosind codul construit anterior, să se decodifice (folosind algoritmi de co-
duri liniare) cuvintele:
14.12 Pentru acelaşi cod Goppa binar ireductibil, să se decodifice cuvintele
0101100101111001 1100101100110100 0001100010010110
folosind algoritmul rapid specific.