Reed-Solomon-fejlkorrektion er en fremadrettet fejlkorrektionskode. Den fungerer ved at oversample et polynomium, der er konstrueret ud fra dataene. Polynomiet evalueres på flere punkter, og disse værdier sendes eller registreres. Ved at prøve polynomiet oftere end nødvendigt bliver polynomiet overbestemt. Så længe modtageren modtager "mange" af punkterne korrekt, kan modtageren genfinde det oprindelige polynomium, selv om der er "få" dårlige punkter til stede.

Reed-Solomon-koder anvendes i mange forskellige kommercielle applikationer, f.eks. i cd'er, dvd'er og Blu-ray-diske, i datatransmissionsteknologier som DSL og WiMAX og i radio- og tv-systemer som DVB og ATSC.

Principper — hvordan det virker i praksis

Reed-Solomon (RS) er en blokkode, der arbejder med symbolske enheder (fx bytes) snarere end enkelte bits. Man vælger et felt GF(q) (ofte GF(2^m) for digitale systemer) og tænker på data som koefficienterne i et polynomium P(x) af grad mindre end k, hvor k er antallet af datasymsboler. Koden skabes ved at evaluere P(x) i n forskellige, forudbestemte feltepunkter og sende eller gemme disse n symboler. Resultatet er en (n,k)-kode med n−k kontrolsymboler (paritet).

Fordelen er, at hvis nogle symboler bliver ændret (fejl) eller forsvinder (erasurer), kan modtageren rekonstruere P(x) — og dermed de oprindelige data — så længe antallet af ukendte fejl ikke overstiger kodens kapacitet.

Kodeparametre og kapacitet

  • n: antal symbolske positioner i kodeordet (maksimalt q for et felt med q elementer).
  • k: antal datasymsboler (grad(P) < k).
  • n − k: antal redundante symboler (paritet).
  • t: maksimum antal tilfældige symbolfejl, der kan rettes, hvor t = floor((n − k)/2).
  • Erasures (kendte positioner): hvis positionerne af fejl er kendt, kan op til n − k erasures rettes.

Matematisk baggrund (kort)

RS-koder bygger på polynomier over et endeligt felt GF(q). Givet data c0,...,c_{k−1} definerer man P(x) = c0 + c1 x + ... + c_{k−1} x^{k−1}. Kodeordet er så (P(a1), P(a2), ..., P(an)) for n forskellige, kendte elementer a1,...,an i feltet.

Decodning kræver typisk at finde en fejl-lokatorpolynomium og en fejl-værdi-polynomium fra de modtagne symboler — dette gøres ved hjælp af syndromberegning og algoritmer som Berlekamp–Massey, Euklidisk algoritme og Forneys algoritme. Der findes også alternative metoder som Gao's algoritme.

En lille illustrativ eksempel (forståelsesformål)

Tænk enkelt: vælg et lille felt GF(5) (restklasser modulo 5). Lad k = 3 og vælg data som koefficienter i P(x) = 2 + 3x + 1x^2. Hvis vi evaluerer i n = 5 punkter x = 0,1,2,3,4 får vi kodeordet:

  • P(0) = 2
  • P(1) = 2 + 3 + 1 = 6 ≡ 1 (mod 5)
  • P(2) = 2 + 6 + 4 = 12 ≡ 2 (mod 5)
  • P(3) = 2 + 9 + 9 = 20 ≡ 0 (mod 5)
  • P(4) = 2 + 12 + 16 = 30 ≡ 0 (mod 5)

Hvis ét af disse symboler bliver beskadiget under overførsel, kan modtageren ud fra de resterende korrekte symboler (her: mindst k = 3 korrekte) rekonstruere P(x) ved interpolation (fx Lagrange-interpolation) og hente de oprindelige koefficienter tilbage. Dette illustrerer principperne — i praksis bruges større felter og mere effektive dekoderalgoritmer.

Dekodningsmetoder (oversigt)

  • Berlekamp–Massey: finder fejl-lokatorpolynomiet ud fra syndromsekvensen.
  • Euklidisk algoritme: kan anvendes til at løse nøgleligninger i dekodningen.
  • Forney's algoritme: beregner fejlværdierne, når fejl-lokatorpolynomiet er fundet.
  • Gao-algoritmen: alternativ metode, der kan være enklere at implementere i visse tilfælde.

Anvendelsesdetaljer og praktiske teknikker

  • Interleaving: For at beskytte mod sammenhængende (burst) fejl anvendes ofte interleaving, hvor kodeord blandes så burst-fejl fordeles på flere kodeord og dermed gøres retteselige.
  • Symbolstørrelse: Ofte benyttes GF(2^8) så ét symbol er én byte — det giver typisk n ≤ 255 (ofte RS(255,k)).
  • Hardware vs. software: Finite field-operatorer (multiplikation, inversion) kan implementeres med log/antilog tabeller i software eller som specialiseret hardware for høj gennemstrømning.
  • Erasures vs. errors: Kendskab til fejlpositioner (fx ved checksum eller manglende pakke) øger korrektionskapaciteten væsentligt.

Fordele og begrænsninger

  • Fordele: Fremragende ved at rette symbolfejl og burst-fejl; velafprøvet og bredt understøttet i hardware og protokoller.
  • Begrænsninger: Højere kompleksitet end simple bit-koder; redundans koster kapacitet; dekodning kan være beregningsmæssigt tung ved meget lange blokke eller høje krav til latenstid.

Praktiske eksempler og varianter

Ud over lagringsmedier (CD, DVD, Blu-ray) og broadcast-systemer bruges RS-koder i stregkoder og 2D-koder (fx QR-koder), i satellit- og dybderumskommunikation, i mobiltelefoni- og trådløse standarder samt i RAID-løsninger og andre former for datalagring. Mange systemer kombinerer RS med andre codes (f.eks. convolutional codes eller LDPC) i en kæde for at opnå bedre samlet ydeevne.

Implementeringsråd

  • Brug eksisterende biblioteker til finite field-aritmetik for at undgå fejl i implementeringen.
  • Overvej tabeller (log/antilog) til multiplikation i GF(2^m) for at få hurtig softwarenkoding/dekodning.
  • Optimér for de konkrete fejlmodeller: hvis burst-fejl er dominerende, planlæg interleaving og passende bloklængder.

Reed-Solomon-koder er derfor en fundamental teknologi i moderne digital kommunikation og lagring: de kombinerer et solidt matematisk fundament med praktisk anvendelighed og fleksibilitet til mange forskellige fejl- og kanalmodeller.