Syklinen koodi on lineaarinen lohkokoodi , jolla on syklisyyden ominaisuus, eli jokainen koodisanan syklinen permutaatio on myös koodisana. Käytetään tietojen muuntamiseen suojaamaan niitä virheiltä (katso Virheiden havaitseminen ja korjaaminen ).
Olkoon sana, jonka pituus on n äärellisen kentän elementtien aakkoston päällä, ja olkoon tätä sanaa vastaava polynomi muodollisessa muuttujassa . Voidaan nähdä, että tämä vastaavuus on lineaaristen avaruuksien isomorfismi . Koska "sanat" koostuvat kentän kirjaimista, ne voidaan lisätä ja kertoa (elementti kerrallaan), jolloin tulos on samassa kentässä. Sanaparin lineaarista yhdistelmää vastaava polynomi on yhtä suuri kuin näiden sanojen polynomien lineaariyhdistelmä .
Tämä mahdollistaa sen, että n pituisten sanojen joukkoa äärellisessä kentässä voidaan pitää polynomien lineaarisena avaruutena , joiden aste on enintään n − 1 kentän yli .
Jos on koodisana, joka saadaan syklisellä siirrolla yhden bitin verran sanasta vasemmalle , niin sitä vastaava polynomi saadaan edellisestä kertomalla x :llä:
, käyttämällä sitä tosiasiaaSiirrä oikealle ja vasemmalle, vastaavasti, biteillä:
If on mielivaltainen polynomi kentän päällä ja on syklisen koodin koodisana, niin se on myös tämän koodin koodisana.
Syklisen koodin generoiva polynomi on sellainen nollasta poikkeava polynomi kohdasta , jonka aste on pienin ja kerroin korkeimmalla asteella .
Lause 1Jos on syklinen koodi ja on sen generoiva polynomi, niin aste on , ja jokainen koodisana voidaan esittää yksilöllisesti
jossa aste on pienempi tai yhtä suuri kuin .
Lause 2— syklisen koodin generoiva polynomi — on binomiaalin jakaja .
SeurauksetSiten mikä tahansa jakajapolynomi voidaan valita generoivaksi polynomiksi . Valitun polynomin aste määrittää tarkistussymbolien määrän, tietosymbolien määrän .
Polynomit ovat lineaarisesti riippumattomia, muuten ei-nollalle , mikä on mahdotonta.
Joten koodisanat voidaan kirjoittaa, kuten lineaarisille koodeille, seuraavasti:
missä on generoiva matriisi , on informaatiopolynomi .
Matriisi voidaan kirjoittaa symboliseen muotoon:
Kullekin syklisen koodin koodisanalle . Siksi tarkistusmatriisi voidaan kirjoittaa muodossa
Sitten
Ei-systeemisessä koodauksessa koodisana saadaan informaatiopolynomin tulona generoimalla:
Se voidaan toteuttaa kertomalla polynomit.
Systemaattisella koodauksella koodisana muodostetaan tiedon alilohkon ja tarkistuksen muodossa:
Olkoon tietosana sitten koodisanan korkeimmat voimat
Se seuraa sitten ehdosta
Tämä yhtälö määrittelee systemaattisen koodaussäännön. Se voidaan toteuttaa käyttämällä monisyklisiä lineaarisia suodattimia (MLF) .
Jakajaksi valitaan kolmannen asteen generoiva polynomi , jolloin tuloksena olevalla koodilla on pituus , tarkistussymbolien määrä (generoivan polynomin aste) , informaatiosymbolien määrä , minimietäisyys .
Koodimatriisin luominen :
jossa ensimmäinen rivi on polynomi , jonka kertoimet ovat nousevassa järjestyksessä.
Loput rivit ovat ensimmäisen rivin syklisiä siirtymiä.
Tarkista matriisi :
jossa i . sarake, alkaen 1.:stä, on polynomin jaon loppuosa kirjoitettuna nousevin astein, alkaen ylhäältä.
Joten esimerkiksi 4. sarake on , tai vektorimuodossa .
Se on helppo varmistaa .
Generoivaksi polynomiksi voit valita kahden jakajan tulon :
Sitten jokainen koodisana voidaan saada käyttämällä informaatiopolynomin tuloa asteella seuraavasti:
Esimerkiksi informaatiosana vastaa polynomia , sitten koodisanaa tai vektorimuodossa .