Blokcode

Binnen de coderingstheorie neemt de blokcode een grote en belangrijke plaats in binnen de foutcorrigerende codes. Er zijn dan ook veel soorten blokcodes. De blokcode heeft als belangrijkste kenmerk dat ze de te versturen data opdeelt in blokken van een vaste lengte, waarna elk blok gecodeerd wordt. Blokcodes hebben een heleboel praktische toepassingen.

De blokcode als abstract concept onderzoeken (in tegenstelling tot elke concrete code afzonderlijk onderzoeken) is nuttig omdat het gelegenheid biedt de eigenschappen van alle blokcodes gezamenlijk te bestuderen. Er zijn grenzen aan de parameters van blokcodes, die gelden voor alle blokcodes. Bij zo'n grens moet men denken aan het maximale aantal fouten dat gedetecteerd of hersteld kan worden.

Enkele voorbeelden van concrete blokcodes zijn Reed-Solomoncodes, Hammingcodes en Reed-Mullercodes. Deze codes zijn bovendien allemaal ook lineair. Ze worden dan ook lineaire blokcodes genoemd.

De term blokcode wordt ook soms gebruikt voor elke foutcorrigerende code, met de eigenschap dat een blok van bits invoerdata bits uitvoerdata genereert. Met deze definitie zijn bijvoorbeeld Turbocodes ook te rekenen tot de blokcodes. Dit artikel behandelt de "algebraïsche blokcodes", dat wil zeggen blokcodes waarbij elk blok data onafhankelijk van elkaar gecodeerd wordt (wat niet het geval is bij Turbocodes).

Werking

Bij gegevenstransmissie over een communicatiekanaal wilt de zender een datastroom zonder fouten versturen naar de ontvanger. Elk communicatiekanaal heeft echter last van onvolmaaktheden (door bijvoorbeeld ruis), waardoor de transmissie niet foutloos verloopt. Bij een blokcode wordt de datastroom opgesplitst in informatieblokken of boodschappen (Eng. message) van lengte . Elke boodschap wordt vervolgens onafhankelijk omgezet (gecodeerd) naar een codewoord, een blok van lengte . Bij deze omzetting wordt extra informatie toegevoegd aan elk informatieblok; door de toegevoegde informatie zo te kiezen kan men fouten detecteren of corrigeren. Een eenvoudig voorbeeld is het toevoegen van pariteitsbits aan elk blok.

Bij de ontvanger gebeurt het omgekeerde: de ontvangen codewoorden (die mogelijk corrupt zijn) worden zo goed mogelijk gedecodeerd, teneinde de originele data terug te vinden.

Formele beschrijving en parameters

Een blokcode is wiskundig gezien een injectie:

Hierbij is een eindige, niet-lege verzameling en zijn en gehele getallen. Hieronder worden de parameters in detail uitgelegd.

Het alfabet Σ

De datastroom die codering moet ondergaan wordt gemodelleerd als een tekenreeks van tekens uit een alfabet . De grootte van het alfabet wordt vaak genoteerd als . Als , dan spreekt men van een binaire blokcode. In veel toepassingen is het wenselijk dat een macht van een priemgetal is, waardoor kan beschouwd worden als het eindige veld / lichaam .

De boodschaplengte k

Elke boodschap is een element van , dat wil zeggen een tekenreeks bestaande uit symbolen uit van lengte . De wordt dan ook de informatielengte, boodschaplengte of dimensie van de blokcode genoemd.

De bloklengte n

De bloklengte is het aantal symbolen in een codewoord. De elementen van zijn dus tekenreeksen van lengte en komen overeen met een blok dat ontvangen kan worden door de ontvanger. Derhalve worden ze ook wel ontvangen woorden genoemd. Het resultaat van de codering van een boodschap is het codewoord van die boodschap. Meer wiskundig: .

Het datadebiet R

Het datadebiet (Eng. rate) van een blokcode wordt gedefinieerd als de verhouding tussen de boodschaplengte en de bloklengte: .

Een hoog debiet betekent dat een groot deel van het codewoord bestaat uit de boodschap. In deze zin meet het debiet de transmissiesnelheid, en geeft de overhead aan die optreedt doordat de resulterende codewoorden langer zijn dan de boodschap. Uit de informatietheorie volgt dat het debiet nooit groter kan zijn dan , aangezien data in het algemene geval niet verliesloos gecomprimeerd kan worden. Dit volgt ook uit het feit dat een injectie is.

De afstand d en het gewicht w

De (minimum)afstand van een blokcode is het minimaal aantal posities die verschillend zijn tussen elke twee codewoorden, en de relatieve afstand is de breuk . Stel de Hammingafstand tussen de twee codewoorden . De minimumafstand van de code wordt dan gegeven door:

Omdat elke code injectief moet zijn, zal elk codewoord minstens in één positie verschillen van alle andere codewoorden, dus . Het gewicht van een codewoord is het aantal posities die geen nul zijn. Het minimumgewicht is het kleinste gewicht van alle codewoorden, of nog het gewicht van het codewoord met het minst aantal nullen. Voor lineaire blokcodes geldt dat de minimumafstand gelijk is aan het minimumgewicht:

Een grotere afstand laat meer foutdetectie en -correctie toe. Beschouw bijvoorbeeld enkel fouten die symbolen van de codewoorden wijzigen, maar er nooit wissen of toevoegen (de codewoorden blijven dus altijd even lang). Dan is het aantal fouten gelijk aan het aantal posities waarin het verzonden en het ontvangen codewoord verschillen. Een code met afstand staat toe om fouten te detecteren, aangezien posities wijzigen nooit leidt tot een ander codewoord. Als er bovendien niet meer dan fouten optreden tijdens transmissie, kan de ontvanger het codewoord uniek decoderen. Dit omdat voor elk ontvangen woord er op afstand hoogstens één codewoord is. Als er meer fouten optreden, kan de ontvanger het ontvangen woord niet uniek decoderen, aangezien er dan meerdere codewoorden kunnen overeenkomen.

Notatie

De notatie beschrijft een blokcode over een alfabet van grootte , met een bloklengte , boodschaplengte en afstand . Als de blokcode lineair is, kunnen blokhaken gebruikt worden om dit aan te geven: . Zowel de als de worden nogal eens weggelaten: de indien het gaat om een binaire code (dus ) en de als de afstand niet belangrijk, niet gekend of moeilijk te bepalen is.

Voorbeelden

De meeste foutcorrigerende codes zijn blokcodes.

  • De eerste foutcorrigerende code was de (7,4)-Hammingcode, ontwikkeld door Richard Hamming in 1950. Deze code transformeert een informatieblok van 4 bits in een codewoord van 7 bits door 3 pariteitsbits toe te voegen. Dit is ook een lineaire code, met afstand 3. In de notatie van hierboven zouden we de (7,4)-Hammingcode dus noteren als een -code.
  • Reed-Solomoncodes zijn een reeks -codes, waarbij en een priemmacht is.
  • Rankcodes zijn een reeks -codes met .
  • Hadamardcodes zijn een reeks -codes, met en .

Foutdetectie en -correctie

Een codewoord kan beschouwd worden als een punt in een -dimensionale ruimte , waarbij de code een deelverzameling van is. Een code met afstand betekent dat geldt dat de Hammingbal gecentreerd op het punt met straal leeg is. De Hammingbal betekent hier de verzameling van -dimensionale woorden wier Hammingafstand tot maximaal is. Gelijkaardig heeft een code met afstand volgende eigenschappen:

  • kan fouten detecteren. Omdat een codewoord het enige codewoord is in de Hammingbal gecentreerd op zichzelf met straal is, kan een foutpatroon met fouten of minder nooit een codewoord omzetten in een ander codewoord. Als de ontvanger een ontvangen woord krijgt dat niet overeenkomt met een codewoord van , worden de fouten gedetecteerd (maar er zijn geen garanties over correctie van fouten, m.a.w. de ontvanger weet dat het ontvangen woord fout is, maar weet niet wat het verstuurde codewoord is).
  • kan fouten corrigeren. Omdat een codewoord het enige codewoord is in de Hammingbal gecentreerd op zichzelf met straal is, kunnen de Hammingballen gecentreerd op twee andere codewoorden met straal nooit overlappen met elkaar. Een fout kan dan gecorrigeerd worden door het dichtstbijzijnde codewoord voor het ontvangen woord te zoeken, zolang het aantal fouten minder dan is: er is dan maar één codewoord in de Hammingbal gecentreerd op met straal .
  • Om te decoderen bij meer dan fouten, kan met gebruik maken van list decoding of maximum likelihood decoding.
  • kan ontbrekende symbolen corrigeren. Hierbij moet opgemerkt worden dat de positie van het verdwenen symbool gekend dient te zijn.

Bibliografie

This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.