Documente Academic
Documente Profesional
Documente Cultură
109
110 PRELEGEREA 10. DECODIFICAREA CODURILOR CICLICE
O dificultate ı̂n această metodă de decodificare bazată pe sindrom constă ı̂n necesi-
tatea de a lista toate erorile - tip corespunzătoare sindromurilor şi de a le parcurge la
recepţia fiecărui cuvânt. O simplificare este ı̂nsă propusă de Meggitt (1960), bazată
pe structura ciclică a codurilor. Vom face corecţia numai pentru ultimul caracter
(de grad maxim) al cuvântului a recepţionat. După aceea se efectuează o permutare
ciclică şi se studiază din nou ultimul caracter. În acest fel, după n permutări ciclice,
toate poziţiile au fost corectate.
Metoda prezintă două avantaje majore:
Propoziţia 10.1 Dacă un cuvânt a = (a0 , a1 , . . . , an−1 ) are sindromul s(X), atunci
permutarea sa ciclică are sindromul s0 (X), care este restul ı̂mpărţirii lui Xs(X) la
polinomul generator g(X).
3. Dacă sindromul rezultat este ı̂n listă, se modifică bitul cel mai din dreapta
al cuvântului primit;
4. Simultan se permută ciclic cuvântul primit şi şi se lasă să funcţioneze un
tact circuitul liniar (neglijând ieşirea), după care se reia Pasul (3).
Se repetă acest procedeu de n − 1 ori.
Exemplul 10.2 Reluând codul Hamming din Exemplul 10.1, algoritmul va lucra
astfel:
- Singurul sindrom din listă este 1 + X 2 .
- Dacă se recepţionează de exemplu a = 1011001, el se introduce ı̂n circuitul
liniar
¾
6
? ? -
1011001 - +j
- 1 - +j
- 1 - 0
Exemplul 10.3 Să considerăm codul ciclic binar generat de polinomul g(X) = 1 +
X 4 + X 6 + X 7 + X 8 . El este un (15, 7) - cod de distanţă d = 5 (după cum vom
vedea mai târziu) deci poate corecta 2 erori. Lista completă a sindromurilor (deci a
0 1 2
tuturor erorilor - tip de pondere 0, 1, 2) are C15 +C15 +C15 = 121 elemente. Folosind
algoritmul Meggitt, numărul lor se reduce la 15, anume
112 PRELEGEREA 10. DECODIFICAREA CODURILOR CICLICE
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
X +X X + X4 + X3 + 1
5
X 9 + X 14 X7 + X4 + X3 + X + 1
X 10 + X 14 X3 + X2 + X
11 14
X +X X + X + X + X4 + X2 + X
7 6 5
X 12 + X 14 X7 + X6 + X4 + X
13 14
X +X X7 + X4 + X3 + X2
Deci, la primirea unui cuvânt a de lungime 15, vom calcula sindromul şi - dacă
acesta se află ı̂n tabelul de sus - vom modifica bitul a14 . Apoi se face o permutare
ciclică şi se corectează a13 , ş.a.m.d.
De remarcat că ı̂n Exemplul 10.3 decodificarea nu este completă: algoritmul Meggitt
corectează ı̂n total 121 erori - tip. Privit ı̂nsă 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 ignorând complet posibilitatea altor tipuri de erori.
Vom ı̂ncerca ı̂n continuare să ı̂mbunătăţim această situaţie.
Reamintim că la codurile liniare se construia un tablou standard ı̂n care pe fiecare
linie se aflau toate cuvintele cu acelaşi sindrom. Codul era corector de t erori dacă
toate cuvintele din Zqn de pondere cel mult t erau pe linii diferite; acestea constituiau
reprezentanţii sindromurilor şi apăreau pe prima coloană, fiind considerate erori -
tip pentru fiecare linie.
Astfel de tabele se pot construi şi pentru codurile ciclice; aici se iau ca reprezen-
tanţi ı̂n fiecare linie, pachetele de erori de lungime minimă. În acest fel, un cod
liniar corector de t erori (independente) este corector de pachete de j erori dacă
toate cuvintele de lungime - pachet cel mult j sunt reprezentanţi.
Lema 10.1 Dacă un cod A este corector de t erori independente şi corector de
pachete de j erori, atunci t ≤ j.
Demonstraţie: Exerciţiu. 2
Definiţia 10.3 Un (n, k) - cod ciclic corectează pachetele de j erori dacă orice
pachet - tip de lungime cel mult j este un sindrom.
Exemplul 10.5 Să considerăm toate pachetele - tip nenule de lungime cel mult 3
ı̂n Z215 . Fiecare astfel de cuvânt este de forma
{e(X)} = {X s e0 (X)} cu 0 ≤ s ≤ 14 şi e0 (X) ∈ {1, 1 + X, 1 + X 2 , 1 + X + X 2 }.
În total sunt 15 · 4 = 60 astfel de pachete de erori.
Demonstraţie: Dacă {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.
Ştim că {e(X)} este cuvânt - cod ⇐⇒ g(X)|e(X).
Cum g(X)|X n − 1, el va fi prim cu X s ; deci {e(X)} este ı̂n cod dacă şi numai
dacă g(X)|e0 (X), absurd deoarece grad(e0 (X)) < n − k = grad(g(X)). 2
Teorema 10.2 Proporţia pachetelor - tip de j > n − k erori pe care nu le poate
detecta un (n, k) - cod ciclic este
q −(n−k−1)
dacă j = n − k + 1
q−1
−(n−k)
q dacă j > n − k + 1.
114 PRELEGEREA 10. DECODIFICAREA CODURILOR CICLICE
q−1 q −(n−k−1)
= .
(q − 1)2 q j−2 q−1
2. Dacă grad(h(X)) > 0, adică j > n−k+1, vom avea (q−1)2 q j−n+k−2 polinoame
h(X) posibile (pachete - tip de lungime j) nedetectabile. Rezultă că raportul
de sus este ı̂n acest caz
(q − 1)q j−n+k−2
2 j−2
= q −(n−k) .
(q − 1) q
Exemplul 10.7 Codul ciclic definit ı̂n Exemplul 10.6 detectează 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.4 Transpunere
O metodă eficientă de utilizare a capacităţilor de corectare a pachetelor - tip de erori
de către codurile ciclice este utilizarea de transpuneri (interleaving).
În mod natural, mesajele de informaţie m1 , m2 , . . . sunt codificate ı̂n cuvintele
- cod c1 , c2 , . . . şi transmise prin canal ı̂n ordinea codificării. Transmisia se poate
realiza ı̂nsă şi după o rearanjare a caracterelor de informaţie din mai multe cuvinte
- cod consecutive.
Formal, prin transpunere la adâncimea s se ı̂nţelege scrierea a s cuvinte - cod
c1 , c2 , . . . , cs ca linii ale unei matrici
c11 c12 c13 . . . c1n
c21 c22 c23 . . . c2n
Cs,n =
..
.
cs1 cs2 cs3 . . . csn
c11 c21 . . . cs1 , c12 c22 . . . cs2 , ..., c1n c2n . . . csn
1 0 0 1 1 0
Exemplul 10.9 Să considerăm codul generat de G = 0 1 0 1 0 1
0 0 1 0 1 1
şi şase mesaje codificate c1 , c2 , . . . , c6 , unde
c1 = 100110 c2 = 010101 c3 = 111000
c4 = 010101 c5 = 100110 c6 = 111000
Deci - la nivel de caracter - secvenţa va arăta:
100110 010101 111000 010101 100110 111000.
Printr-o transpunere la adâncimea 3, forma mesajelor este:
101 011 001 110 100 010 011 101 001 110 010 100
iar cu o transpunere la adâncimea 6:
101011 011101 001001 110110 100010 010100.
116 PRELEGEREA 10. DECODIFICAREA CODURILOR CICLICE
1 0 1 0 1 1 ...
∗ ∗ 0 1 1 1 0 1 ...
∗ ∗ ∗ ∗ 0 0 1 0 0 1 ...
∗ ∗ ∗ ∗ ∗ ∗ 1 1 0 1 1 0 ...
∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ 1 0 0 0 1 0 ...
∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ 0 1 0 1 0 0 ...
iar secvenţa de caractere transmise este:
Cât de mare este un pachet de erori pe care ı̂l poate corecta această schemă ?
Să presupunem că C2 a fost transpus la adâncimea s, şi că orice cuvânt - cod (atât
din C1 cât şi din C2 ) a fost afectat de cel mult un pachet de erori. Dacă apare un
pachet de cel mult s(d2 − 1) erori, atunci el va afecta maxim d2 − 1 simboluri din
fiecare cuvânt - cod din C2 . Deci aceste erori vor fi detectate şi se vor marca toate
caracterele cuvintelor - cod implicate. Dacă s ≤ d1 − 1, atunci orice cuvânt - cod
din C1 are cel mult d1 − 1 simboluri marcate. În ipoteza că nu există decât maxim
un pachet de erori care l-a perturbat, caracterele marcate pot fi corectate.
Am arătat astfel:
Exemplul 10.12 Fie C1 şi K2 codurile binare, definite respectiv de matricile gene-
ratoare
1 0 0 0 1 1 1 0
1 0 0 1 1 0
0 1 0 0 1 1 0 1
G1 =
G2 = 0 1 0 1 0 1
.
0 0 1 0 1 0 1 1
0 0 1 0 1 1
0 0 0 1 0 1 1 1
Deci, n1 = 8, k1 = 4, d1 = 4, n2 = 6, k2 = 3, d2 = 3.
Să codificăm mesajele de informaţie m1 = 1000, m2 = 1100, m3 = 1010
folosind o transpunere ı̂ncrucişată a lui C1 cu K2 , C2 fiind transpus la o adâncime
s = 3 = d1 − 1.
Codificarea mesajelor de informţie cu codul C1 dă:
100 110 101 010 001 011 011 000 001 011 010 001 . . .
De exemplu, să presupunem că primii 6 biţi au fost transmişi incorect, deci s-a
primit 011 001 101 010 001 011 . . .. Eliminând efectul transpunerii la adâncimea
s = 3, se ajunge la cuvintele
(care comparate respectiv cu c01 , c02 , c03 au erori fiecare pe primele două poziţii). Deoa-
rece sindromurile sunt nenule, C2 va detecta erori ı̂n toate cele trei cuvinte, deci toţi
cei 18 biţi sunt marcaţi (ı̂i vom ı̂nlocui cu ∗).
Presupunând că nu mai sunt alte erori, după un procedeu similar se obţin cuvin-
tele c04 , . . . , c08 , fără caractere marcate.
Eliminând acum efectul transpunerii la adâncimea k2 = 3, se obţin cuvintele
10.5 Exerciţii
10.1 Demonstraţi Lema 10.1
10.2 Arătaţi că dacă un cod ciclic detectează o eroare - tip e, atunci detectează
toate erorile - tip obţinute prin permutări ciclice ale lui e.
10.3 Verificaţi că pachetele ciclice - tip de erori de lungime 3 din Z215 au sindromuri
diferite pentru codul din Exemplul 10.6.
10.4 Arătaţi că g(X) = 1+X 2 +X 4 +X 5 generează un (15, 10) - cod ciclic corector
de pachete de maxim 2 erori. Este acesta un cod corector de 2 erori independente ?
10.12 Folosind codurile definite ı̂n Exemplul 10.12, să se codifice următoarele me-
saje de informaţie prin transpunerea ı̂ncrucişată 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 obţinute prin transpunere
ı̂ncrucişată a lui C1 cu C2 la adâncimea s = 3, următoarele secvenţe binare:
(a) 000001001110110001000111000111000111000000000000000000 . . .
(b) 100011001111101010011001111010100110100100011101000100 . . .
Aflaţi meajele de informaţie m1 , m2 , m3 .
10.14 Găsiţi un rezultat analog Teoremei 10.5 dacă pentru C2 se foloseşte s - cadrul
de transpunere ı̂ntârziată ı̂n loc de s - transpunere.