Bowes-Chowdhury-Hokvingham-koder (BCH-koder) - i kodningsteori er dette en bred klasse af cykliske koder , der bruges til at beskytte information mod fejl (se Fejldetektering og -korrektion ). Det adskiller sig ved muligheden for at bygge en kode med forudbestemte korrigerende egenskaber, nemlig den mindste kodeafstand. Et særligt tilfælde af BCH-koder er Reed-Solomon-koden .
En BCH-kode er en cyklisk kode , der kan gives af et generatorpolynomium . For at finde den i tilfælde af en BCH-kode er det nødvendigt på forhånd at bestemme længden af koden (den kan ikke være vilkårlig) og den nødvendige minimumsafstand . Du kan finde et genererende polynomium på følgende måde.
Lade være et primitivt element i feltet (dvs. ), lad , være et element i ordensfeltet , . Så er et normaliseret polynomium af minimumsgrad over et felt, hvis rødder er successive potenser af et element for et eller andet heltal (inklusive 0 og 1) et genererende polynomium af en BCH-kode over et felt med længde og minimumsafstand .
Lad os forklare, hvorfor den resulterende kode vil have præcis sådanne egenskaber (kodelængde , minimumafstand ). Faktisk, som vist af Sagalovich [1] , er længden af BCH-koden lig med elementrækkefølgen if , og lig med elementrækkefølgen if . Da vi ikke er interesserede i sagen (en sådan kode kan ikke rette fejl, kun opdage dem), vil længden af koden være lig med rækkefølgen af elementet , det vil sige lig med . Minimumsafstanden kan være større, end når rødderne af elementernes minimale funktioner [2] er de elementer, der udvider rækkefølgen, det vil sige elementerne .
Antallet af kontrolsymboler er lig med graden , antallet af informationssymboler , værdien kaldes den konstruktive afstand af BCH-koden. Hvis , så kaldes koden primitiv , ellers ikke- primitiv .
Ligesom for den cykliske kode kan kodepolynomiet opnås fra informationspolynomiet af grad ved at multiplicere og :
For at finde det genererende polynomium er det nødvendigt at udføre flere trin [3] :
Lad , den nødvendige kodelængde og minimumsafstanden . Tag — et primitivt element i feltet , og — fire på hinanden følgende potenser af elementet . De tilhører to cyclotomic klasser over det felt , som de irreducible polynomier og svarer til . Derefter polynomiet
har elementer som rødder og er et genererende polynomium af BCH-koden med parametre .
Lad , og vær et primitivt element af . Derefter
Hvert element i feltet kan afbildes til 4 bit , så et kodeord svarer til 60 = 15 × 4 bit, så et sæt på 44 bit er afbildet til et sæt på 60 bit. Vi kan sige, at en sådan kode fungerer med småting af information.
Til kodning med BCH-koder anvendes de samme metoder som til kodning med cykliske koder.
BCH-koder er cykliske koder, så alle metoder, der bruges til at afkode cykliske koder, gælder for dem. Der er dog meget bedre algoritmer udviklet specifikt til BCH-koder [4] .
Hovedideen ved afkodning af BCH-koder er at bruge elementerne i det endelige felt til at nummerere kodeordets positioner (eller tilsvarende i rækkefølgen af koefficienterne for det tilknyttede polynomium). Nedenfor er en sådan opregning for vektoren svarende til polynomiet .
værdier | ||||
positionssøgere |
Lad det modtagne ord være forbundet med polynomiet , hvor fejlpolynomiet er defineret som: , hvor er antallet af fejl i det modtagne ord. Sæt og kaldes henholdsvis fejlværdier og fejlfindere , hvor , og .
Syndromer er defineret som værdierne af det modtagne polynomium ved nullerne i det genererende kodepolynomium:
hvor .
For at finde sættet af fejlfindere introducerer vi fejlfinderpolynomiet
hvis rødder er lig med de reciproke fejlfindere. Så er følgende relation gyldig mellem koefficienterne for fejlfindingspolynomiet og syndromer [5] :
Følgende metoder er kendte til at løse dette ligningssystem med hensyn til koefficienterne for fejlfindingspolynomiet ( nøglesystem af ligninger ).
Denne algoritme ses bedst som en iterativ proces til at konstruere et minimum feedback (shift) register, der genererer en kendt sekvens af syndromer . Dets egentlige mål er at konstruere et polynomium af den mindste grad, der opfylder ligningen
Løsningen af denne ligning svarer til betingelsen
Den iterative proces med at konstruere et sådant polynomium er Berlekamp-Massey-algoritmen .
Denne metode er baseret på den velkendte Euklids algoritme til at finde den største fælles divisor af to tal (gcd), kun i dette tilfælde leder vi efter gcd ikke af to tal, men af to polynomier. Lad os betegne polynomiet af fejlværdier som , hvor det syndromiske polynomium er lig med . Det følger af ligningssystemet, at . Problemet går i det væsentlige ned til at bestemme, hvilken der opfylder den sidste ligning, og samtidig er graden ikke højere . Faktisk vil en sådan løsning give den udvidede euklidiske algoritme anvendt på polynomier og , hvor . Hvis den udvidede euklidiske algoritme i det th trin producerer en løsning sådan, at , så , og . I dette tilfælde deltager det fundne polynomium ikke yderligere i afkodningen (det søges kun som et hjælpe). På denne måde vil fejlfindingspolynomiet blive fundet .
Lad BCH-koden over længdefeltet og med en konstruktiv afstand være givet af et genererende polynomium , som blandt sine rødder har elementer - et heltal (f.eks. 0 eller 1). Så har hvert kodeord egenskaben, at . Det modtagne ord kan skrives som , hvor er fejlpolynomiet. Lad fejl opstå ved positioner ( er det maksimale antal korrigerbare fejl), så , og er størrelsen af fejl.
Du kan komponere syndromet af det accepterede ord :
Opgaven er at finde antallet af fejl , deres positioner og deres betydning for kendte syndromer .
Antag til at begynde med, at nøjagtigt svarer til . Vi skriver syndromerne i form af et system af ikke-lineære ligninger i eksplicit form:
Angiv med locatoren af den -th fejl, og med - størrelsen af fejlen, . I dette tilfælde er alle forskellige, da rækkefølgen af elementet er , og derfor, når kendt , kan defineres som .
Lad os sammensætte et polynomium af fejlfindere :
Rødderne af dette polynomium er de elementer, der er omvendt til fejlfinderne. Gang begge sider af dette polynomium med . Den resulterende lighed vil være gyldig for :
Hvis vi erstatter her , så får vi en lighed, der gælder for alle og enhver :
Således kan du for hver , skrive din egen ligestilling. Hvis de summeres , får vi en lighed, der er gyldig for hver :
Da (det vil sige, det ændrer sig inden for de samme grænser som før), transformeres ligningssystemet for syndromer til et system af lineære ligninger :
eller i matrixform,
hvor
Hvis antallet af fejl faktisk er lig med , så er dette system løseligt, og man kan finde værdierne af koefficienterne . Hvis tallet er , så vil determinanten af matricen være lig med . Dette er et tegn på, at antallet af fejl er mindre . Derfor er det nødvendigt at sammensætte et system, der antager antallet af fejl lig med , beregne determinanten for den nye matrix osv. indtil vi fastslår det sande antal fejl.
Efter at nøglesystemet af ligninger er løst, opnås koefficienterne for fejlfindingspolynomiet. Dens rødder (elementerne omvendt til fejlfinderne) kan findes ved blot at gentage alle elementerne i feltet . For dem skal du finde elementer, der er omvendt til multiplikation - disse er fejlfindere . Denne proces er nem at implementere i hardware.
Ved hjælp af lokalisatorerne kan du finde fejlpositionerne ( ) og fejlværdierne fra systemet for syndromer ved at acceptere . Afkodning afsluttet.