Documente Academic
Documente Profesional
Documente Cultură
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 pe de 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
H=
m0
m0 +1
(m0 )2
(m0 +1 )2
..
.
...
...
(m0 )n1
(m0 +1 )n1
(m0 )jd1
(m0 +1 )jd1
..
.
1
j1
= m0 (j1 +j2 +...+jd1 )
(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.
q.e.d.
Exemplul 12.1 Daca se lucreaza n binar, puterile pare ale r
ad
acinilor se pot omite
i
2i
din list
a(daca este radacina, atunci si este r
ad
acin
a conform Teoremei 11.9,
Prelegerea 11). Atunci un cod BCH binar corector de 3 erori este definit de r
ad
acinile
3
5
, , , unde este un element primitiv dintr-o extensie a lui Z2 . De exemplu, daca
= , r
ad
acina a polinomului 1 + X + X 4 , se obtine codul din Exemplul 11.3, Prelegerea
11.
Exemplul 12.2 Fie GF (32 ) generat de r
ad
acina a polinomului ireductibil g(X) =
2 + X + X 2 . Deoarece ord() = 8, orice cod generat va avea lungimea 8. S
a construim
2
3
4
codul BCH de radacini , , .
Polinoamele minimale sunt:
m2 (X) = 1 + X 2 cu r
ad
acini 2 , 6 ;
m3 (X) = 2 + X + X 2 cu r
ad
acini 3 ,
m4 (X) = 1 + X, numai cu r
ad
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 r
ad
acinile sale este si , se poate
considera m0 = 1, d = 5, deci codul poate corecta cel mult dou
a erori independente.
De remarcat ca daca folosim acest cod drept cod liniar, cum ponderea minim
a a cuvintelor sale este 4 (de exemplu 02010201 este cuv
ant - cod), distanta minim
a este 4, deci
general, tratarea codurilor ciclice sub
codul nu poate corecta decat o singur
a eroare. In
form
a de coduri liniare scade de obicei puterea de corectie a erorilor independente.
12.2
Yi = 0
Xi = 0.
t
X
Yi Xij ,
(m0 j m0 + 2t 1)
i=1
Atunci
(Sj )q =
t
X
!q
Yi Xij
i=1
t
X
Yiq Xijq =
i=1
t
X
Yi Xijq = Sjq .
i=1
Yi Xij = Sj ,
m0 j m0 + 2t 1,
(1)
i=1
Yi Xij+t + (1)1
t
X
Yi Xij+t1 + . . . + (1)t1 t1
i=1
t
X
Yi Xij+1 + (1)t t
i=1
j = m0 , m0 + 1, . . . , m0 + t 1
t
X
Yi Xij = 0,
i=1
(2)
k
X
Yi X ji .
i=1
t
X
i=1
. . . Xtm0
. . . Xtm0 +1
. . . Xtm0 +2
..
.
m
m
m
= X1 0 X2 0 . . . Xt 0
1
X1
X12
1
X2
X22
... 1
. . . Xt
. . . Xt2
..
.
(Xi Xj )
1j<it
Acesta este nenul numai daca au intervenit t erori, pentru ca atunci toti Xi sunt distincti
si nenuli.
q.e.d.
Sm0
Sm0 +1
M =
A=
1
X1
X12
1
X2
X22
... 1
. . . Xt
. . . Xt2
..
.
0
...
Y1 X1m
m
0
Y2 X2 . . .
B=
..
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 B este nesingulara daca toate elementele
de pe diagonala sa principala sunt nenule, deci daca toate perechile (Yi , Xi ) (1 i t)
sunt nenule adica au aparut t erori.
q.e.d.
Aplicarea algoritmului Peterson se face n felul urmator:
1. Folosind polinomul receptionat {r(X)}, se determina
Sj = r(j ) (m0 j 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 acestui sistem este nesingulara, nseamna ca au aparut t erori.
Daca M este singulara, atunci se observa ca t = 0 (deoarece t = X1 X2 . . . Xt ) si
dupa ce se nlocuieste t = 0 se obtine un nou sistem liniar format din t 1
ecuatii (neglijand prima sau ultima din ecuatiile de mai sus) 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 (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 radacinilor X1 , X2 , . . . , Xt este neesentiala.
Yi Xij = Sj ,
j = m0 , m0 + 1, . . . , m0 + k 1
i=1
k
X
Yi X ji , unde Xi = ji (1 i k).
i=1
S1 3 + S2 2 + S3 1
S2 3 + S3 2 + S4 1
S2 3 + S4 2 + S5 1
= S4
= S5 adic
a
= S6
12
9
7
3 + 2 + 1
9
3 + 2 + 1
7 3 + 3 2 + 10 1
Inmult
im cele trei ecuatii ale sistemului respectiv cu
7 = 8 , 3 = 12 , 10 = 5
si obtinem:
5
2
11
3 + 2 + 1 =
6 3 + 4 2 + 1 = 7
12
3 + 8 2 + 1 = 4
Adun
am prima ecuatie la ultimele dou
a si atunci
(
9 3 + 10 2 = 8
14 3 + 0 2 = 13
= 3
= 10
= 14
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 , adic
a 1 = 12 .
12
13
Deci, n acest caz k = 2, 1 = , 2 = . Se ajunge la ecuatia X 2 + 1 X + 2 =
X 2 + 12 X + 13 = 0, 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 modifica (din 1 n 0 sau din 0 n 1) bitii de pe pozitiile 4 respectiv 11 din
cuv
antul receptionat.
Exemplul 12.4 Fie codul BCH definit de r
ad
acinile , 2 , 3 , 4 unde GF (24 ) este
4
r
ad
acina polinomului 1 + X + X . Acest cod are n = 15, m0 = 1, m0 + 2t 1 = 4, deci
t = 2; codul poate corecta n mod sigur cel mult dou
a erori independente.
S
a presupunem ca s-a receptionat cuv
antul
r = 100100110000100.
S
a determinam cuvantul - cod transmis.
Polinomul corespunzator este r(X) = 1 + X 3 + X 6 + X 7 + X 12 , iar componentele
sindromului sunt
S1 = r() = 0 ,
S2 = r(2 ) = (S1 )2 = 0 ,
3
4
S3 = r( ) = ,
S4 = r(4 ) = (S2 )2 = 0 .
Trebuie rezolvat sistemul
(
S1 2 + S2 1 = S3
S2 2 + S3 1 = S4
adic
a
0 2 + 0 1 = 4
,
0 2 + 4 1 = 0
de unde se obtine 1 = 0 , 2 = .
Polinomul de localizare a erorilor este X 2 + 1 X + 2 = X 2 + X + , cu r
ad
acinile
7
9
X1 = , X2 = . Au aparut deci dou
a erori, pe pozitiile 8 si 10. Pentru c
a 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
Dupa cum s-a observat, n cazul codurilor BCH binare este suficient sa se localizeze
eroarea; corectarea se face imediat prin complementarea 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
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 pentru codurile BCH binare 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 ts 6= 1.
In caz contrar, rns va fi corectata n rns + 1 (mod 2).
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 ;
(
daca P 6= 1
daca P = 1
0
1
- 1
6
- 2
6
...
?
?
2
...
- t
6
?
r0 , r1 , . . . , rn1
?
t
X
? ?
i=1
si
- +
6
A
-
10
s
?
-+
6
-
s
?
- +
6
?
6
- 6
-
6
?
- +
6
s
x1
x2
xn
- x
paorta N OT .
Atunci, circuitul de implementare a procedeului Chien de localizare a erorii este:
12.4. EXERCIT
II
11
r
r
?
- +
?
?
6
-
6
-
? -+
?
-+
?
-+
-?
-+
?
?
? ??? ?
?
r0 , r1 , . . . , rn1
?
r
-+
?
+
6
?
? ?
6
?
?
?
?
?
?
-+
?
12.4
Exercitii
12.1 S
a se verifice valabilitatea descompunerii M = ABAT din demonstratia Teoremei
12.5
12.2 Fie GF (2m ) (m > 2) primitiv. S
a se arate c
a polinoamele minimale m1 (X)
si m3 (X) au acelasi grad.
12.3 Construiti un cod BCH binar corector de 2 erori de lungime n = 11.
12.4 Construiti un cod BCH ternar de lungime n = 26 si d = 5.
12
12.5 S
a se determine polinomul generator si cel de control pentru codul BCH binar corector de 3 erori de lungime
(a) n = 15
(b) n = 31.
Codificati mesajul de informatie 111 . . . 1.
12.6 Caracterizati codurile BCH care contin toate elementele extensiei Galois GF (q m ).
12.7 Dac
a 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 dac
a urm
atoarele secvente sunt cuvinte - cod:
(a) 011001011000010,
(b) 000111010000110,
(c) 011100000010001,
(d) 111111111111111.
12.8 Aflati radacinile polinoamelor cu coeficienti n GF (24 ) ( este r
ad
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 , radacin
a a polinomului 1 + X + X 4 . Se receptioneaza
cuvintele r si se calculeaza sindromurile rH. S
tiind aceste sindromuri, localizati erorile
(dac
a se poate):
a) 01000101,
b) 11101000,
c) 11001101,
d) 01000000,
e) 00000100,
f ) 10100100,
g) 00111101,
h) 00000000.
12.10 Pentru codul BCH definit n exercitiul anterior, decodificati mesajele:
a) 110000000000000,
b) 000010000100001,
c) 010001010100000,
d) 110011100111000,
e) 110011100100000,
f ) 111000000000001,
g) 101110000000000,
h) 101010010110001,
i) 010000100000000,
j) 010101001011000,
k) 110111011101100,
m) 101110000001000,
n) 111001011000000,
p) 000111010000110.
codul BCH binar de lungime n = 15 corector de 3 erori (vezi Exemplele 11.1
12.11 In
si 11.8), s
a se decodifice mesajele:
(a) 001000100000000,
(b) 101011001000000.
codul BCH peste Z3 de lungime n = 8, corector de 2 erori, s
12.12 In
a se decodifice
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 binar de lungime n = 31 si d = 5.
1. S
a se construiasca polinomul generator al codului: g(X) = m1 (X)m3 (X).
2. S
a se decodifice mesajul 1001011011110000110101010111111.