Documente Academic
Documente Profesional
Documente Cultură
Teorema 4.1 Un cod liniar binar poate corecta o eroare dacă şi numai dacă ma-
tricea sa de control are toate coloanele nenule şi distincte.
Pentru a se putea corecta toate erorile simple, trebuie să existe sindromuri distincte
pentru fiecare eroare - tip; deci, conform marginii Hamming (Prelegerea III, Teorema
3.5),
2n−k ≥ n + 1.
Pe baza acestor considerente se defineşte codul Hamming binar:
Definiţia 4.1 Codul liniar binar ı̂n care coloanele matricii H sunt reprezentarea
binară a numerelor 1, 2, . . . , 2r − 1 este numit cod Hamming binar.
Deci, pentru orice număr natural r (r ≥ 2) se poate construi un (n, k) - cod liniar
ı̂n care n = 2r − 1, k = 2r − r − 1.
De remarcat că definiţia nu determină pentru fiecare r ı̂n mod unic matricea de
control a codului Hamming. De obicei se consideră acea matrice H ı̂n care coloana
i reprezintă scrierea ı̂n binar a numărului i. Deoarece codul este sistematic (există
coloane pentru 20 , 21 , . . . , 2r−1 ), toate celelalte reprezentări au aceleaşi proprietăţi.
37
38 PRELEGEREA 4. CLASE DE CODURI LINIARE
Să determinăm matricea generatoare a acestui cod. Pentru aceasta, construim ı̂ntâi
codul echivalent, permutând coloanele pentru a aduce matricea de control la forma
eşalonată canonic:
0 1 1 1 1 0 0
∗
H3,7 = 1 0 1 1 0 1 0 .
1 1 0 1 0 0 1
1. Se calculează sindromul s = aH T .
Exemplul 4.2 Să considerăm din nou (7, 4) - codul Hamming din Exemplul 4.1
şi să presupunem că s-a recepţionat cuvântul x = 0011101. Calculul sindromului
conduce la valoarea
1
xH T = 0
1
care este scrierea ı̂n binar a numărului 5. Deci a intervenit o eroare simplă pe poziţia
a cincea. Corectăm această poziţie - schimbând 1 cu 0 şi se obţine cuvântul - cod
0011001, care pe poziţiile 3, 5, 6, 7 conţine mesajul de informaţie: 1001.
Codul Hamming poate fi ı̂mbunătăţit prin extensie. Această operaţie conduce la un
(2m , 2m − m − 1) - cod liniar, cu toate cuvintele - cod de pondere pară.
Exemplul 4.3 Prin extensia (7, 4) - codului Hamming se obţine codul cu matricea
de control
0 0 0 1 1 1 1 0
0 1 1 0 0 1 1 0
H∗ =
.
1 0 1 0 1 0 1 0
1 1 1 1 1 1 1 1
40 PRELEGEREA 4. CLASE DE CODURI LINIARE
De remarcat că H ∗ are rangul 4; ı̂n plus, toate liniile ei sunt cuvinte - cod ı̂n
codul Hamming extins. Deci H ∗ poate fi considerată matrice generatoare a acestui
cod. Rezultă că (8, 4) - codul Hamming extins este auto - dual.
Un cod Hamming extins este soluţia unui sistem liniar de n − k + 1 ecuaţii, ecuaţia
n+1
X
suplimentară xi = 0 fiind numită ecuaţia de control a parităţii.
i=1
1. Dacă nu sunt verificate ecuaţia de control a parităţii şi cel puţin una
din primele n − k ecuaţii, ı̂nseamnă că a apărut o eroare simplă, care se
corectează cu Algoritmul A;
2. Dacă ecuaţia de control a parităţii este verificată dar cel puţin una din
primele n−k ecuaţii de control nu se verifică, s-a detectat o eroare dublă;
32 − 1
Exemplul 4.4 Să considerăm q = 3, r = 2. Atunci n = = 4. Un (4, 2) -
3−1
cod Hamming ternar poate fi dat de matricea de control
à !
0 1 1 1
H=
1 0 1 2
Decodificarea se poate face folosind tabela de sindromuri, ı̂n care s-au luat ca repre-
zentanţi toate combinaţiile posibile de o eroare:
imediat.
42 PRELEGEREA 4. CLASE DE CODURI LINIARE
Exemplul 4.5 Să considerăm (13, 10) - codul Hamming ternar. Acest cod are o
aplicaţie interesantă ı̂n problema Pronosportului. După cum se ştie, un buletin
Pronosport conţine rezultatele (notate cu 1, 2, X) a 13 meciuri. Pentru a avea sigur
13 rezultate exacte trebuiesc completate 313 buletine. Câte buletine sunt ı̂nsă necesare
pentru a fi sigur de 12 rezultate ? La prima vedere s-ar părea că 312 . Completând
ı̂nsă buletinele cu elementele codului Hamming ternar (13, 10) (cu 0 ı̂n loc de X) -
care sunt ı̂n număr de 310 , se atinge scopul dorit. Într-adevăr, acesta fiind un cod
perfect corector de o eroare, orice element din Z313 diferă prin cel mult o poziţie de
un cuvânt - cod.
Astfel, numărul buletinelor se reduce de nouă ori.
Figura 4.1:
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
B=
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
• Matricea B este mai uşor de construit decât pare. Astfel, eliminând ultima
linie şi coloană, matricea rămasă - să spunem B1 - este generată ciclic (spre
4.2. CODUL GOLAY 43
à !
B1 1T
stânga) de cuvântul binar 11011100010. Deci B = ,
1 0
unde 1 = 11111111111. Evident, B este simetrică (B T = B).
• C24 are n = 24, k = 12 şi 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 .
Demonstraţie: Liniile din B au pondere impară (7 sau 11); deci produsul (scalar)
al unei linii cu ea ı̂nsăşi este 1. O verificare simplă arată că produsul primei linii cu
oricare altă linie din B este 0. Structura ciclică a lui B1 asigură că atunci produsul
scalar al oricăror două linii este 0.
În concluzie, BB T = I12 . Dar B T = B, aşa că putem scrie:
à !
T I
GH = (I|B) = I 2 + B 2 = I + BB T = I + I = 0.
B
Vom folosi ambele matrici de control pentru decodificarea codului C24 . 2
Corolarul 4.1
A. C24 admite ca matrice generatoare şi pe G = (B|I12 ).
⊥
B. Codul Golay extins este auto - dual (C24 = C24 ).
Demonstraţie: Se verifică imediat. 2
Teorema 4.5 C24 are distanţa minimă d = 8.
Demonstraţie: Vom demonstra afirmaţia ı̂n trei paşi.
1. Ponderea cuvintelor din C24 este multiplu de 4.
Să observăm că liniile lui G au pondere 8 sau 12. Fie v ∈ C24 ca sumă de două
linii din G : v = ri + rj . Cum B are liniile ortogonale, rezultă că şi liniile lui
G sunt ortogonale. Deci ri şi rj au un număr par (să 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 sumă de trei linii din G : v = ri + rj + rs . Notăm
v1 = ri + rj . Deoarece C24 este auto - dual, v1 şi rs au un număr par (să
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 inducţie, cum orice cuvânt - cod este combinaţie
liniară de linii din G, ponderea sa va fi multiplu de 4.
2. Primele 11 linii din G sunt cuvinte - cod de pondere 8, deci distanţa codului
C24 este 4 sau 8.
3. C24 nu are cuvinte de pondere 4.
Să presupunem că există v ∈ C24 cu w(v) = 4. Există atunci u1 , u2 ∈ Z212
cu v = u1 (I|B), v = u2 (B|I). Deoarece există o jumătate din v care are cel
puţin doi de 1, rezultă w(u1 ) ≤ 2 sau w(u2 ) ≤ 2. Pe de-altă parte, suma
a una sau două linii din B nu poate avea o pondere mai mică de 4; deci
w(v) = w(ui ) + w(ui B) > 4, contradicţie. 2
44 PRELEGEREA 4. CLASE DE CODURI LINIARE
Deoarece G = (I12 |B) este ı̂n forma eşalonat canonică, mesajul de informaţie (orice
cuvânt din Z212 ) apare pe primele 12 poziţii ale cuvântului - cod. Astfel, ı̂n exemplul
de sus, mesajul de informaţie a fost 001111101110.
s + b1 = 000110001100
s + b2 = 011111000010
s + b3 = 101101011110
s + b4 = 001001100100
s + b5 = 000000010010
sB + b1 = 001110111000
sB + b2 = 010111110110
sB + b3 = 100101101010
sB + b4 = 000001010000
Demonstraţie: Demonstraţia se poate face fie direct (similar celei de la Teorema 4.5)
fie folosind faptul că C23 este relaxarea codului C24 , care are distanţa 8. 2
În consecinţă, un cod Golay va corecta orice combinaţie de maxim 3 erori.
Lema 4.1 O condiţie necesară pentru existenţa unui (n, k) - cod binar perfect corec-
t
X
tor de t erori este Cni = 2p pentru un anumit p.
i=0
Demonstraţie: Rezultă imediat din relaţia scrisă ı̂n demonstraţia Teoremei 4.3, ı̂n
care se ia q = 2. 2
4.3. UNICITATEA CODURILOR PERFECTE BINARE 47
t
X n+1
Lema 4.2 Cni = Rt (n)
i=0 t!
unde t este număr natural impar, Rt (X) ∈ Z[X], gr(Rt (X)) = t − 1.
Teorema 4.8 Codul binar Golay este singurul cod binar perfect netrivial corector
de 3 erori.
Lemele 4.1 şi 4.2 pot fi folosite şi pentru alte valori impare ale lui t. Cercetările nu
au condus la alte coduri perfecte binare, dar nici nu s-a demonstrat că nu există
nici un cod perfect binar corector de t (t > 3 impar) erori. Afirmaţia este valabilă
deocamdată pentru t < 20.
Un alt caz interesant de studiu este q = 2, t = 2. Aici se poate da teorema:
Teorema 4.9 Nu există nici un cod netrivial binar perfect corector de 2 erori.
Ecuaţia x2 + 7 = 2m a fost studiată ı̂n multe articole (vezi Math. Rev. 26, #74).
Singurele soluţii sunt x = 1, 3, 5, 11, 181 cărora le corespund:
n = 0, 1 − fără coduri.
n=2 − codul trivial cu un singur cuvânt.
n=5 − codul cu repetiţie {00000, 11111}.
n = 90.
48 PRELEGEREA 4. CLASE DE CODURI LINIARE
Acest ultim caz este eliminat de următorul rezultat (Van Lindt - Coding theory,
pp. 95):
n+1
Dacă există un cod binar perfect corector de t erori, atunci este număr
t+1
ı̂ntreg. 2
4.4 Exerciţii
4.1 Fie (8, 4) - codul Hamming binar extins. Decodificaţi cuvintele
10101010 11010110 11111111.
4.2 Să se demonstreze că toate cuvintele - cod ale codului Hamming binar extins
(2r , 2r − r − 1) au pondere pară.
4.3 Construiţi codurile Hamming ternare pentru r = 2, 3 şi determinaţi decodifi-
carea pe baza sindromurilor.
4.4 Construiţi (5, 3) - codul Hamming cu q = 4. Determinaţi toate cuvintele - cod şi
tabela de decodificare cu sindromuri. Decodificaţi cuvintele: 11223, 32101 2222 1100.
4.5 Demonstraţi afirmaţiile din Corolarul 4.1.
4.6 Arătaţi că C24 conţine un cuvânt cu toate componentele egale cu 1 şi nici un
cuvânt de pondere 20.
Demonstraţi că numărătorul de ponderi al lui C24 este:
1 + 759X 8 + 2576X 12 + 759X 16 + X 24 .
4.7 În codul Golay extins C24 să se decodifice - dacă este posibil, cuvintele:
111000000000, 011011011011 111111000000, 100011100111
111111000000, 101011100111 111111000000, 111000111000
111000000000, 110111001101 110111001101, 111000000000
000111000111, 101000101101 110000000000, 101100100000
4.8 Să se determine eroarea tip cea mai probabilă pentru un cuvânt cu sindromurile:
s1 = 010010000000, s2 = 011111010000
s1 = 010010100101, s2 = 001000110000
s1 = 111111000101, s2 = 111100010111
s1 = 111111111011, s2 = 010010001110
s1 = 001101110110, s2 = 111110101101
s1 = 010111111001, s2 = 100010111111
4.9 Folosind C23 , decodificaţi cuvintele:
101011100000, 10101011011 101010000001, 11011100010
100101011000, 11100010000 011001001001, 01101101111
4.10 Detaliaţi demonstraţia Teoremei 4.6.
4.11 Rezolvaţi ecuaţia (1).