Bowes-Chowdhury-Hockwingham koodi

Kokeneet kirjoittajat eivät ole vielä tarkistaneet sivun nykyistä versiota, ja se voi poiketa merkittävästi 25. helmikuuta 2021 tarkistetusta versiosta . tarkastukset vaativat 3 muokkausta .

Bowes-Chowdhury-Hokvingham-koodit (BCH-koodit)  - koodausteoriassa tämä on laaja luokka syklisiä koodeja , joita käytetään suojaamaan tietoja virheiltä (katso Virheiden havaitseminen ja korjaaminen ). Se eroaa mahdollisuudesta rakentaa koodi, jolla on ennalta määrätyt korjaavat ominaisuudet, nimittäin minimikoodietäisyys. BCH-koodien erikoistapaus on Reed-Solomon-koodi .

Muodollinen kuvaus

BCH - koodi on syklinen koodi , joka voidaan antaa generaattoripolynomilla . Sen löytämiseksi BCH-koodin tapauksessa on tarpeen määrittää etukäteen koodin pituus (se ei voi olla mielivaltainen) ja vaadittava vähimmäisetäisyys . Voit löytää generoivan polynomin seuraavalla tavalla.

Olkoon  kentän primitiivinen elementti ( eli ), olkoon , järjestyskentän elementti , . Tällöin normalisoitu polynomi , jonka vähimmäisaste on kentässä, jonka juuret ovat elementin peräkkäisiä potenssit jollekin kokonaisluvulle (mukaan lukien 0 ja 1), on generoiva BCH-koodin polynomi kentällä , jonka pituus ja minimietäisyys on .

Selvitetään, miksi tuloksena olevalla koodilla on juuri tällaiset ominaisuudet (koodin pituus , minimietäisyys ). Todellakin, kuten Sagalovich [1] osoittaa, BCH-koodin pituus on yhtä suuri kuin elementtijärjestys , jos , ja yhtä suuri kuin elementtijärjestys, jos . Koska emme ole kiinnostuneita tapauksesta (sellainen koodi ei voi korjata virheitä, vain havaita ne), koodin pituus on yhtä suuri kuin elementin järjestys, eli yhtä suuri kuin . Minimietäisyys voi olla suurempi kuin silloin , kun elementtien minimifunktioiden [2] juuret ovat sarjaa laajentavia elementtejä eli alkioita .

Tarkistussymbolien määrä on yhtä suuri kuin aste , informaatiosymbolien lukumäärä , arvoa kutsutaan BCH-koodin rakentavaksi etäisyydeksi . Jos , niin koodia kutsutaan primitiiviksi , muuten - ei- primitiiviksi .

Kuten sykliselle koodille, koodipolynomi voidaan saada korkeintaan asteisen tietopolynomista kertomalla ja :

Rakennus

Generoivan polynomin löytämiseksi on suoritettava useita vaiheita [3] :

Koodiesimerkkejä

Primitiivinen binäärikoodi (15, 7, 5)

Olkoon , vaadittu koodin pituus ja minimietäisyys . Otetaan  — kentän primitiivinen elementti ja  — elementin neljä peräkkäistä potenssia . Ne kuuluvat kahteen syklotomiseen luokkaan sen kentän yläpuolella , jota redusoitumattomat polynomit ja vastaavat . Sitten polynomi

sisältää elementtejä juurina ja se on BCH-koodin generoiva polynomi parametrien kanssa .

Heksadesimaali (15, 11, 5) koodi (Reed-Solomon koodi)

Antaa , ja  olla primitiivinen osa . Sitten

Jokainen kentän elementti voidaan kuvata 4- bittiseksi , joten yksi koodisana vastaa 60 = 15 × 4 bittiä, joten 44 bitin joukko kartoitetaan 60 bitin joukkoon. Voimme sanoa, että tällainen koodi toimii tiedon nappuloiden kanssa.

Koodaus

BCH-koodeilla koodattaessa käytetään samoja menetelmiä kuin koodauksessa syklisillä koodeilla.

Dekoodausmenetelmät

BCH-koodit ovat syklisiä koodeja, joten kaikki syklisten koodien dekoodaukseen käytetyt menetelmät koskevat niitä. On kuitenkin olemassa paljon parempia algoritmeja , jotka on kehitetty erityisesti BCH-koodeille [4] .

Pääideana BCH-koodien dekoodauksessa on käyttää viimeisen kentän elementtejä koodisanan paikkojen numeroimiseen (tai vastaavasti siihen liittyvän polynomin kertoimien järjestyksessä). Alla on tällainen luettelo polynomia vastaavalle vektorille .

arvot
sijainnin paikantimet

Olkoon vastaanotettu sana yhdistetty polynomiin , jossa virhepolynomi määritellään seuraavasti: , jossa  on vastaanotetun sanan virheiden määrä. Joukkoja ja kutsutaan vastaavasti virhearvoiksi ja virheen paikantimiksi , missä , ja .

Oireet määritellään vastaanotetun polynomin arvoina generoivan koodipolynomin nollapisteissä:

missä .

Virheenpaikantimien joukon löytämiseksi otamme käyttöön virheenpaikannuspolynomin

joiden juuret ovat yhtä suuret kuin virheenpaikantimien käänteiset. Tällöin virheenpaikannuspolynomin ja oireyhtymien kertoimien välillä pätee seuraava suhde [5] :

Seuraavat menetelmät tunnetaan tämän yhtälöjärjestelmän ratkaisemiseksi suhteessa virheenpaikannuspolynomin kertoimiin ( avainyhtälöjärjestelmä ).

Berlekamp-Massey-algoritmi

Tämä algoritmi on parasta nähdä iteratiivisena prosessina, jossa muodostetaan minimipalauterekisteri (siirtorekisteri), joka tuottaa tunnetun oireyhtymien sarjan . Sen varsinainen tavoite on rakentaa pienimmän asteisen polynomi, joka täyttää yhtälön

Tämän yhtälön ratkaisu vastaa ehtoa

Iteratiivinen prosessi tällaisen polynomin muodostamiseksi on Berlekamp-Massey-algoritmi .

Euklidinen algoritmi

Tämä menetelmä perustuu tunnettuun Euklidesin algoritmiin kahden luvun suurimman yhteisen jakajan (gcd) löytämiseksi, vain tässä tapauksessa ei etsitä gcd:tä kahdesta luvusta, vaan kahdesta polynomista. Merkitään virhearvojen polynomi muodossa , jossa syndrominen polynomi on yhtä suuri kuin . Yhtälöjärjestelmästä seuraa, että . Ongelma tiivistyy pohjimmiltaan sen määrittämiseen, mikä täyttää viimeisen yhtälön, ja samalla aste ei ole korkeampi . Itse asiassa tällainen ratkaisu antaa laajennetun Euclid-algoritmin, jota sovelletaan polynomeihin ja , missä . Jos th vaiheessa laajennettu euklidinen algoritmi tuottaa ratkaisun siten, että , niin , ja . Tässä tapauksessa löydetty polynomi ei enää osallistu dekoodaukseen (se haetaan vain apu). Tällä tavalla virheenpaikannuspolynomi löydetään .

Suora ratkaisu (Petersson-Gorenstein-Zierler-algoritmi, PGC)

Olkoon BCH-koodi pituuskentän yli ja konstruktiivisella etäisyydellä generoiva polynomi , jonka juurielementtien joukossa  on kokonaisluku (esim. 0 tai 1). Sitten jokaisella koodisanalla on ominaisuus, joka . Vastaanotettu sana voidaan kirjoittaa muodossa , missä  on virhepolynomi. Olkoon virheitä paikoissa (  on korjattavien virheiden enimmäismäärä), joten , ja  ovat virheiden suuruudet.

Voit muodostaa hyväksytyn sanan syndroman :

Tehtävänä on löytää virheiden lukumäärä , niiden sijainti ja merkitys tunnetuille oireyhtymille .

Oletetaan aluksi, että se on täsmälleen yhtä suuri . Kirjoitamme oireyhtymät epälineaaristen yhtälöiden järjestelmän muodossa eksplisiittisessä muodossa:

Merkitään -: nnen virheen paikantimella ja  - virheen suuruudella , . Tässä tapauksessa kaikki ovat erilaisia, koska elementin järjestys on , ja siksi, kun se tunnetaan , se voidaan määritellä muodossa .

Muodostetaan polynomi virheenpaikantimista :

Tämän polynomin juuret ovat elementit, jotka ovat käänteisiä virheen paikantimille. Kerro tämän polynomin molemmat puolet . Tuloksena oleva tasa-arvo on voimassa :

Jos korvaamme tämän, saamme tasa-arvon, joka on voimassa jokaiselle ja kaikille :

Siten jokaiselle voit kirjoittaa oman tasa-arvosi. Jos ne lasketaan yhteen , niin saadaan tasa-arvo, joka on voimassa jokaiselle :

Koska (eli se muuttuu samoissa rajoissa kuin ennen), oireyhtymien yhtälöjärjestelmä muutetaan lineaaristen yhtälöiden järjestelmäksi :

tai matriisimuodossa

missä

Jos virheiden määrä on todellakin yhtä suuri kuin , niin tämä järjestelmä on ratkaistavissa, ja kertoimien arvot voidaan löytää . Jos luku on , niin matriisin determinantti on yhtä suuri kuin . Tämä on merkki siitä, että virheiden määrä on pienempi . Siksi on välttämätöntä muodostaa järjestelmä olettaen, että virheiden lukumäärä on yhtä suuri , laskea uuden matriisin determinantti jne. kunnes saadaan selville virheiden todellinen lukumäärä.

Etsi Chen

Kun avainyhtälöjärjestelmä on ratkaistu, saadaan virheenpaikannuspolynomin kertoimet. Sen juuret (virheen paikantimille käänteiset elementit) voidaan löytää yksinkertaisesti iteroimalla kaikki kentän elementit . Etsi heille elementtejä, jotka ovat käänteisiä kertolaskulle - nämä ovat virheen paikantajia . Tämä prosessi on helppo toteuttaa laitteistossa.

Forneyn algoritmi

Paikantimien avulla löydät oireyhtymien järjestelmästä virhepaikat ( ) ja virhearvot hyväksymällä . Dekoodaus valmis.

Katso myös

Muistiinpanot

  1. Sagalovich, 2007 , s. 175-176.
  2. Sagalovich, 2007 , s. 176.
  3. Sagalovich, 2007 , s. 168.
  4. Virheenkorjauksen taito Arkistoitu 1. huhtikuuta 2013 Wayback Machinessa , s. 91.
  5. Sagalovich, 2007 , s. 200.

Kirjallisuus