Un cod ciclic este un cod bloc liniar care are proprietatea de ciclicitate, adică fiecare permutare ciclică a unui cuvânt de cod este, de asemenea, un cuvânt de cod. Folosit pentru a transforma informațiile pentru a le proteja de erori (consultați Detectarea și corectarea erorilor ).
Fie un cuvânt de lungime n peste un alfabet de elemente dintr- un câmp finit și un polinom corespunzător acestui cuvânt într-o variabilă formală . Se poate observa că această corespondență este un izomorfism al spațiilor liniare. Deoarece „cuvintele” constau din litere din câmp, acestea pot fi adăugate și înmulțite (element cu element), iar rezultatul va fi în același câmp. Polinomul corespunzător combinației liniare a perechii de cuvinte și este egal cu combinația liniară a polinoamelor acestor cuvinte .
Acest lucru ne permite să considerăm mulțimea de cuvinte de lungime n peste un câmp finit ca un spațiu liniar de polinoame cu gradul cel mult n − 1 peste câmpul .
Dacă este un cuvânt cod obținut printr-o deplasare ciclică cu un bit la stânga față de cuvânt , atunci polinomul corespunzător acestuia se obține din cel anterior prin înmulțirea cu x :
, folosind faptul căSchimbați la dreapta și, respectiv, la stânga, pe biți:
Dacă este un polinom arbitrar peste câmpul și este un cuvânt de cod al unui cod ciclic , atunci este și un cuvânt de cod al acestui cod.
Un polinom generator al unui cod ciclic este un astfel de polinom diferit de zero din , al cărui grad este cel mai mic și coeficientul la cel mai înalt grad .
Teorema 1Dacă este un cod ciclic și este polinomul său generator, atunci gradul este , iar fiecare cuvânt de cod poate fi reprezentat în mod unic ca
unde gradul este mai mic sau egal cu .
Teorema 2— polinom generator al codului ciclic — este un divizor al binomului .
ConsecințeAstfel, orice polinom divizor poate fi ales ca polinom generator . Gradul polinomului selectat va determina numărul de simboluri de verificare , numărul de simboluri de informare .
Polinoamele sunt liniar independente, altfel pentru nenule , ceea ce este imposibil.
Deci, cuvintele cod pot fi scrise, ca și pentru codurile liniare, după cum urmează:
unde este matricea generatoare , este polinomul informațional .
Matricea poate fi scrisă sub formă simbolică:
Pentru fiecare cuvânt de cod al unui cod ciclic, . Prin urmare, matricea de verificare poate fi scrisă ca
Apoi
Cu codificarea nesistematică, cuvântul de cod este obținut ca produs al unui polinom informațional de unul generator:
Se poate realiza prin înmulțirea polinoamelor.
Cu codificarea sistematică, cuvântul cod este format sub forma unui subbloc de informații și a unei verificări:
Lăsați cuvântul informațional să formeze cele mai mari puteri ale cuvântului cod, atunci
Apoi rezultă din condiție
Această ecuație definește regula de codificare sistematică. Poate fi implementat folosind filtre liniare multiciclu (MLF) .
Ca divizor , alegem un polinom generator de gradul al treilea , apoi codul rezultat va avea lungimea , numărul de simboluri de verificare (gradul polinomului generator) , numărul de simboluri informaționale , distanța minimă .
Generarea matricei de cod:
unde prima linie este un polinom cu coeficienți în ordine crescătoare.
Liniile rămase sunt deplasări ciclice ale primei linii.
Verificați matricea :
unde coloana i -a, începând de la prima, este restul împărțirii după polinomul , scris în grade crescătoare, începând de sus.
Deci, de exemplu, a patra coloană este , sau în notație vectorială .
Este ușor de verificat că .
Ca polinom generator , puteți alege produsul a doi divizori :
Apoi fiecare cuvânt de cod poate fi obținut folosind produsul polinomului informațional cu gradul în felul următor:
De exemplu, un cuvânt de informare corespunde unui polinom , apoi unui cuvânt cod sau în formă vectorială .