Codul Bowes-Chowdhury-Hockwingham

Versiunea actuală a paginii nu a fost încă examinată de colaboratori experimentați și poate diferi semnificativ de versiunea revizuită la 25 februarie 2021; verificările necesită 3 modificări .

Codurile Bowes-Chowdhury-Hokvingham (coduri BCH)  - în teoria codificării, aceasta este o clasă largă de coduri ciclice utilizate pentru a proteja informațiile de erori (vezi Detectarea și corectarea erorilor ). Se deosebește prin posibilitatea de a construi un cod cu proprietăți corective predeterminate, și anume distanța minimă a codului. Un caz special al codurilor BCH este codul Reed-Solomon .

Descriere formală

Un cod BCH este un cod ciclic care poate fi dat de un polinom generator . Pentru a-l găsi în cazul unui cod BCH, este necesar să se determine în prealabil lungimea codului (nu poate fi arbitrar) și distanța minimă necesară . Puteți găsi un polinom generator în felul următor.

Fie  un element primitiv al câmpului (adică ), fie , fie un element al câmpului de ordine , . Atunci un polinom normalizat de grad minim peste un câmp ale cărui rădăcini sunt puteri succesive ale unui element pentru un număr întreg (inclusiv 0 și 1) este un polinom generator al unui cod BCH pe un câmp cu lungime și distanță minimă .

Să explicăm de ce codul rezultat va avea exact astfel de caracteristici (lungimea codului , distanța minimă ). Într-adevăr, după cum arată Sagalovici [1] , lungimea codului BCH este egală cu ordinea elementelor dacă , și egală cu ordinea elementelor dacă . Deoarece nu ne interesează cazul (un astfel de cod nu poate corecta erorile, ci doar le detectează), lungimea codului va fi egală cu ordinea elementului , adică egală cu . Distanța minimă poate fi mai mare decât atunci când rădăcinile funcțiilor minime [2] ale elementelor sunt elementele care extind succesiunea, adică elementele .

Numărul simbolurilor cec este egal cu gradul , numărul simbolurilor informaționale , valoarea se numește distanța constructivă a codului BCH. Dacă , atunci codul se numește primitiv , în caz contrar - non- primitiv .

La fel ca și pentru codul ciclic, polinomul de cod poate fi obținut din polinomul informațional de grad cel mult , prin înmulțirea și :

Clădire

Pentru a găsi polinomul generator, este necesar să se efectueze mai mulți pași [3] :

Exemple de cod

Cod binar primitiv (15, 7, 5)

Fie , lungimea codului necesară și distanța minimă . Luați  — un element primitiv al câmpului și  — patru puteri consecutive ale elementului . Ele aparțin a două clase ciclotomice peste câmpul căruia îi corespund polinoamele ireductibile și . Apoi polinomul

are elemente ca rădăcini și este un polinom generator al codului BCH cu parametri .

Cod hexazecimal (15, 11, 5) (codul Reed-Solomon)

Fie , și  un element primitiv al . Apoi

Fiecare element al câmpului poate fi mapat la 4 biți , deci un cuvânt de cod este echivalent cu 60 = 15 × 4 biți, deci un set de 44 de biți este mapat la un set de 60 de biți. Putem spune că un astfel de cod funcționează cu fragmente de informații.

Codificare

Pentru codificarea cu coduri BCH se folosesc aceleași metode ca și pentru codarea cu coduri ciclice.

Metode de decodare

Codurile BCH sunt coduri ciclice, așa că li se aplică toate metodele utilizate pentru a decoda codurile ciclice. Cu toate acestea, există algoritmi mult mai buni dezvoltați special pentru codurile BCH [4] .

Ideea principală în decodificarea codurilor BCH este de a folosi elementele câmpului final pentru a numerota pozițiile cuvântului de cod (sau, echivalent, în ordinea coeficienților polinomului asociat). Mai jos este o astfel de enumerare pentru vectorul corespunzător polinomului .

valorile
localizatori de poziție

Fie asociat cuvântului primit cu polinomul , unde polinomul de eroare este definit ca: , unde  este numărul de erori din cuvântul primit. Seturile și sunt numite valori de eroare și , respectiv, localizatori de erori , unde și .

Sindroamele sunt definite ca valorile polinomului primit la zerourile polinomului cod generator:

unde .

Pentru a găsi setul de localizatori de erori, introducem polinomul localizator de erori

ale căror rădăcini sunt egale cu reciprocele locatorilor de erori. Atunci următoarea relație este valabilă între coeficienții polinomului de localizare a erorilor și sindroame [5] :

Următoarele metode sunt cunoscute pentru rezolvarea acestui sistem de ecuații în raport cu coeficienții polinomului de localizare a erorilor ( sistemul cheie de ecuații ).

Algoritmul Berlekamp-Massey

Acest algoritm este cel mai bine privit ca un proces iterativ de construire a unui registru de feedback minim (deplasare) care generează o secvență cunoscută de sindroame . Scopul său real este de a construi un polinom de cel mai mic grad care satisface ecuația

Rezolvarea acestei ecuații este echivalentă cu condiția

Procesul iterativ de construire a unui astfel de polinom este algoritmul Berlekamp-Massey .

Algoritm euclidian

Această metodă se bazează pe cunoscutul algoritm al lui Euclid pentru găsirea celui mai mare divizor comun a două numere (mcd), doar că în acest caz căutăm mcd nu a două numere, ci a două polinoame. Să notăm polinomul valorilor de eroare ca , unde polinomul sindromic este egal cu . Din sistemul de ecuaţii rezultă că . Problema se rezumă în esență la a determina care satisface ultima ecuație și, în același timp, gradul nu este mai mare . De fapt, o astfel de soluție va da algoritmul Euclid extins aplicat polinoamelor și , unde . Dacă la pasul al treilea algoritmul euclidian extins produce o soluție astfel încât , atunci , și . În acest caz, polinomul găsit nu mai participă la decodare (este căutat doar ca unul auxiliar). În acest fel, se va găsi polinomul de localizare a erorilor .

Soluție directă (algoritm Petersson-Gorenstein-Zierler, PGC)

Fie codul BCH peste câmpul de lungime și cu o distanță constructivă să fie dat de un polinom generator , care are printre rădăcini elemente  - un număr întreg (de exemplu, 0 sau 1). Apoi fiecare cuvânt de cod are proprietatea că . Cuvântul primit poate fi scris ca , unde  este polinomul de eroare. Fie ca erorile să apară la poziții (  este numărul maxim de erori corectabile), deci , și  sunt mărimile erorilor.

Puteți compune al treilea sindrom al cuvântului acceptat :

Sarcina este de a găsi numărul de erori , pozițiile și semnificațiile lor pentru sindroamele cunoscute .

Să presupunem pentru început că este exact egal cu . Scriem sindroamele sub forma unui sistem de ecuații neliniare în formă explicită:

Se notează prin locatorul erorii --a și prin  — mărimea erorii, . În acest caz, toate sunt diferite, deoarece ordinea elementului este și, prin urmare, atunci când este cunoscută , poate fi definită ca .

Să compunem un polinom de localizatori de erori :

Rădăcinile acestui polinom sunt elementele inverse locatorilor de erori. Înmulțiți ambele părți ale acestui polinom cu . Egalitatea rezultată va fi valabilă pentru :

Dacă înlocuim aici , atunci obținem o egalitate care este valabilă pentru fiecare și pentru toți :

Astfel, pentru fiecare , puteți scrie propria egalitate. Dacă sunt însumate , atunci obținem o egalitate care este valabilă pentru fiecare :

Deoarece (adică se schimbă în aceleași limite ca și înainte), sistemul de ecuații pentru sindroame este transformat într- un sistem de ecuații liniare :

sau, sub formă de matrice,

Unde

Dacă numărul de erori este într-adevăr egal cu , atunci acest sistem este rezolvabil și se pot găsi valorile coeficienților . Dacă numărul este , atunci determinantul matricei va fi egal cu . Acesta este un semn că numărul de erori este mai mic . Prin urmare, este necesar să se compună un sistem, presupunând numărul de erori egal cu , să se calculeze determinantul noii matrice , etc. până când stabilim numărul adevărat de erori.

Caută Chen

După rezolvarea sistemului cheie de ecuații, se obțin coeficienții polinomului de localizare a erorilor. Rădăcinile sale (elementele inverse locatorilor de erori) pot fi găsite prin simpla iterare peste toate elementele câmpului . Pentru ei, găsiți elemente care sunt inverse înmulțirii - aceștia sunt localizatori de erori . Acest proces este ușor de implementat în hardware.

Algoritmul lui Forney

Folosind locatoarele, puteți găsi pozițiile de eroare ( ) și valorile de eroare din sistemul pentru sindroame, acceptând . Decodificarea finalizată.

Vezi și

Note

  1. Sagalovici, 2007 , p. 175-176.
  2. Sagalovici, 2007 , p. 176.
  3. Sagalovici, 2007 , p. 168.
  4. Arta codificării corectării erorilor Arhivat la 1 aprilie 2013 la Wayback Machine , p. 91.
  5. Sagalovici, 2007 , p. 200.

Literatură