Documente Academic
Documente Profesional
Documente Cultură
CODURI CICLICE
𝑣0 𝑣1 𝑣2 ⋯ 𝑣𝑛−1
Este clar că deplasarea ciclică a lui v cu i locuri la dreapta are acelaşi efect cu deplasarea
ciclică a lui v cu 𝑛 − 𝑖 locuri la stânga.
DEFINIŢIA 6.1: Un cod bloc liniar (n, k) notat cu C se numeşte cod ciclic dacă fiecare
deplasare ciclică a oricărui cuvânt de cod din C este tot un cuvânt de cod din C.
Este convenabil să considerăm componentele unui cuvânt de cod 𝐯 = (𝑣0 , 𝑣1 ⋯ , 𝑣𝑛−1 ) drept
coeficienţii unui polinom:
Fiecare cuvânt de cod corespunde, deci, unui polinom de grad (𝑛 − 1) sau mai mic: dacă
𝑣𝑛−1 ≠ 0, gradul lui v(X) este (𝑛 − 1), iar dacă 𝑣𝑛−1 = 0, gradul lui v(X) este mai mic decât
(𝑛 − 1). Acest v(X) se numeşte polinomul de cod al lui v.
𝑋𝑣(𝑋) = 𝑣0 𝑋 + 𝑣1 𝑋 2 + 𝑣2 𝑋 3 + ⋯ + 𝑣𝑛−1 𝑋 𝑛 .
De unde
Dar coeficienţii fac parte din corpul Galois de ordinul 2, CG(2), unde 0 + 0 = 0 şi 1 + 1 = 0.
De aceea, egalitatea de mai sus se scrie
Asemănător cu cazul tratat anterior, vedem că putem obţine 𝑣 (2) (𝑋) ca rest al împărţirii lui
𝑋 2 𝑣(𝑋) la (1 + 𝑋 𝑛 ).
Să trecem acum la cazul general: având un polinom de cod v(X), vrem să obţinem polinomul
de cod rotit ciclic cu i poziţii la dreapta, 𝑣 (𝑖) (𝑋). Acesta se scrie:
unde am notat
Este clar că polinomul de cod 𝑣 (𝑖) (𝑋) este restul împărţirii polinomului 𝑋 𝑖 𝑣(𝑋) la (𝑋 𝑛 + 1).
TEOREMA 6.1: Polinomul de cod diferit de zero de grad minim dintr-un cod ciclic C este
unic.
DEMONSTRAŢIE
DEMONSTRAŢIE
Dacă deplasăm ciclic 𝑔(𝑋) cu un loc la stânga sau cu (𝑛 − 1) locuri la dreapta, obţinem un
polinom de cod diferit de zero, 𝑔1 + 𝑔2 𝑋 + ⋯ + 𝑔𝑟−1 𝑋 𝑟−2 + 𝑋 𝑟−1 , al cărui grad este mai mic
decât r. Aceasta, însă, contrazice afirmaţia din teoremă că 𝑔(𝑋) este polinomul de cod diferit
de zero de grad minim, încât trebuie să conchidem că 𝑔0 ≠ 0.
Din Teoremele 6.1 şi 6.2, rezultă că polinomul de cod diferit de zero de grad minim dintr-un
cod ciclic (n, k) este de forma următoare:
TEOREMA 6.3: Un polinom binar de grad (𝑛 − 1) sau mai mic este polinom de cod dacă şi
numai dacă el este multiplu de 𝑔(𝑋).
DEMONSTRAŢIE
Polinomul 𝑣(𝑋) are (𝑛 − 𝑟) coeficienţi binari, iar numărul seturilor posibile de coeficienţi
este egal cu 2𝑛−𝑟 . Deci, numărul polinoamelor binare de grad (𝑛 − 1) sau mai mic care sunt
multipli de 𝑔(𝑋) este 2𝑛−𝑟 . Dar acestea sunt toate polinoamele de cod, astfel încât 2𝑛−𝑟
trebuie să fie egal cu 2𝑘 . Rezultă că:
𝑟 = 𝑛 − 𝑘.
Prin urmare, polinomul de cod diferit de zero de grad minim dintr-un cod ciclic (n, k) este de
forma urătoare:
Orice polinom de cod 𝑣(𝑋) dintr-un cod ciclic (n, k) se poate exprima în forma următoare:
Această ecuaţie este baza codării. Ea se realizează înmulţind mesajul 𝑢(𝑋) cu 𝑔(𝑋).
Polinomul 𝑔(𝑋) se numeşte polinomul generator al codului. Vedem deci cât de important este
acest polinom particular. Dar cum să-l găsim? Aceasta ne-o spune teorema următoare.
TEOREMA 6.4: Polinomul generator 𝑔(𝑋) al unui cod ciclic (n, k) este un factor al lui
𝑋 𝑛 + 1.
DEMONSTRAŢIE
Polinomul 𝑋𝑣(𝑋) are gradul n. Dacă îl împărţim la 𝑋 𝑛 + 1, câtul este egal cu 1 iar restul este
polinomul 𝑣(𝑋) rotit o dată la dreapta, 𝑣 (1) (𝑋).
Dar atât 𝑣(𝑋) cât şi 𝑣 (1) (𝑋) sunt polinoame de cod, asa încât sunt multipli de polinomul
generator 𝑔(𝑋). Fie
𝑣(𝑋) = 𝑢(𝑋)𝑔(𝑋)
şi
Avem deci
𝑋𝑢(𝑋)𝑔(𝑋) = (𝑋 𝑛 + 1) + 𝑎(𝑋)𝑔(𝑋).
Rearanjând termenii acestei ecuaţii, avem că
𝑋 𝑛 + 1 = [𝑋𝑢(𝑋) + 𝑎(𝑋)]𝑔(𝑋).
EXEMPLUL 6.1
𝑋 7 + 1 = (1 + 𝑋)(1 + 𝑋 + 𝑋 3 )(1 + 𝑋 2 + 𝑋 3 ).
Am văzut că polinomul generator 𝑔(𝑋) este un divizor al polinomului (𝑋 𝑛 + 1). Putem deci
scrie:
𝑋 𝑛 + 1 = 𝑔(𝑋)ℎ(𝑋).
Membrul stâng este un polinom de grad 𝑛 + 𝑘 − 1 în care coeficienţii lui 𝑋 𝑘 , 𝑋 𝑘+1 , ⋯ , 𝑋 𝑛−1
sunt egali cu 0. Aceşti coeficienţi trebuie să fie egali cu 0 şi în membrul drept, ceea ce ne dă
(𝑛 − 𝑘) relaţii de control pe care trebuie să le satisfacă coeficienţii unui polinom 𝑣(𝑋) pentru
a fi polinom de cod.
Restul 𝑠(𝑋) este un polinom de grad (𝑛 − 𝑘 − 1) sau mai mic. Cei (𝑛 − 𝑘) coeficienţi ai lui
𝑠(𝑋) formează sindromul. El este identic cu zero dacă şi numai dacă polinomul recepţionat
este un polinom de cod.
EXEMPLUL 6.2
Fie un cod ciclic (7, 4) generat de polinomul 𝑔(𝑋) = 1 + 𝑋 + 𝑋 3 . Din Exemplul 6.1, ştim că
polinomul de control este ℎ(𝑋) = 1 + 𝑋 + 𝑋 2 + 𝑋 4 .
Fie polinomul de mesaj 𝑢(𝑋) = 𝑢0 + 𝑢1 𝑋 + 𝑢2 𝑋 2 + 𝑢3 𝑋 3 . Polinomul de cod corespunzător
este
𝑣(𝑋) = 𝑣0 + 𝑣1 𝑋 + 𝑣2 𝑋 2 + 𝑣3 𝑋 3 + 𝑣4 𝑋 4 + 𝑣5 𝑋 5 + 𝑣6 𝑋 6 =
(𝑢0 + 𝑢1 𝑋 + 𝑢2 𝑋 2 + 𝑢3 𝑋 3 )(1 + 𝑋 + 𝑋 3 ).
Efectuând înmulţirea din membrul al doilea şi identificând coeficienţii corespunzători din cei
doi membri, obţinem:
𝑣0 = 𝑢0
𝑣1 = 𝑢0 + 𝑢1
𝑣2 = 𝑢1 + 𝑢2
𝑣3 = 𝑢0 + 𝑢2 + 𝑢3
𝑣4 = 𝑢1 + 𝑢3
𝑣5 = 𝑢2
𝑣6 = 𝑢3 .
Probleme propuse
1. Pentru codul din Exemplul 6.2, scrieţi toate cuvintele de cod; a) găsiţi ponderea
Hamming a fiecărui cuvânt de cod b) Care este ponderea minimă a acestui cod? c) Ce
capacitate de corecţie a erorilor are codul? d) Pentru polinoamele de eroare cele mai
probabile (cu un singur coeficient egal cu 1), scrieţi sindromul corespunzător.
2. Fie codul ciclic cu polinom generator 𝑔(𝑋) = 1 + 𝑋 2 + 𝑋 3 . Care este polinomul de
control? Ce legături există între coeficienţii polinomului de cod şi cei ai polinomului
de mesaj? Restul punctelor ca la prima problemă.