Reed-Solomoni veaparandus on edasi suunatud veaparanduskood. See põhineb andmetest konstrueeritud polünoomi väärtustel: andmekomplektist moodustatakse polünoom ja hinnatakse seda mitmes punktis — saadud väärtused edastatakse või salvestatakse. Kui polünoomist võetakse proove sagedamini kui vaja, siis on polünoom ülemääratud: vastuvõtja saab algse polünoomi taastada ka siis, kui mõnisada proovi on vigased või kadunud. Polünoomi mõiste ja hindamine seostuvad otse andmete ja polünoomi väärtuste võtmega (polünoomi hindamine), mis võimaldab vigade lokaliseerimist ja parandamist.

Põhimõte lühidalt

Peamine idee on esitada k andmesümbolit kui astme ≤ k−1 polünoomi kordajad ja seejärel arvutada sellest polünoomist n (> k) väärtust eri punktides. Nende n sümboli hulgas on k andmesümbolit ja n−k pariteetsümbolit. Kui mõni vastuvõetud sümbol rikutakse või läheb kaduma, saab vastuvõtja polünoomi ning seeläbi algandmed taastada, kuni rikete arv ei ületa koodiparameetrite võimalust.

Peamised parameetrid ja matemaatiline taust

  • Sümboli suurus: Reed–Solomoni koodid töötavad sümbolitasona, kus üks sümbol on tavaliselt m bitti ja alamruumiks on lõplik keha GF(2^m).
  • Koodipaar (n, k): n on saadetavate sümbolite arv, k on andmesümbolite arv. Pariteetsümbolite arv on n−k.
  • Vigade parandamine: Reed–Solomon võib parandada kuni t = ⌊(n−k)/2⌋ sümbolivead. Kui vigade positsioonid on teada (seitsmiste puhul erasures), saab parandada kuni n−k erasure’t.
  • Primitiivsed koodid: Sageli valitakse n = 2^m − 1 (täispikk RS-kood), kuid koodid võivad olla ka lühemad (shortened).

Kodeerimine

Kodeerimine tehakse tavaliselt kas polünoomi hindamisel või süsteemse teisendusena (kus andmesümbolid jäävad esialgu puutumatuks ja pariteet lisatakse lõppu). Generatorpolünoom g(x) konstrueeritakse nii, et see sisaldab järjestikuseid juure α^b, α^(b+1), … α^(b+n−k−1) (kus α on keha generaator). Pariteetsümbolid leitakse polünoomi jagamisel või otse hindamise teel. Praktikas kasutatakse sageli RS(255,223) tüüpi konfiguratsiooni (m=8), kus n=255 ja k=223 — see on levinud standardites.

Dekodeerimine — kuidas vigasid leitakse ja parandatakse

Peamised sammud dekodeerimisel:

  • Sündroomide arvutamine: arvutatakse vastuvõetud vektorist sündroomid; kui kõik sündroomid on nullid, ei esine vigu.
  • Vigakoordinaatide leidmine: kasutatakse algoritme nagu Berlekamp–Massey või eukleidiline algoritm, et leida vigade lokalisaatori polünoom.
  • Chieni otsing: lokalisaatori polünoomi juurete leidmiseks, mis annavad vigade positsioonid.
  • Forney algoritm: vigade suuruste (magnituudide) arvutamiseks ning vigade parandamiseks.

Need sammud koos annavad stabiilse ja efektiivse veaotsingu ja -paranduse protsessi. Dekodeerimisalgoritmid võivad töötada riistvaras reaalajas või tarkvaras sõltuvalt rakenduse nõudmistest.

Omadused ja piirangud

  • Paremus burst-vigade vastu: kuna RS töötab sümbolitasona (mitu bitti korraga), on see väga hea lühikeste vigade (burst errors) parandamisel.
  • Kompleksus: dekodeerimine on arvutuslikult keerulisem kui lihtsamad pariteedikontrollid; riistvaraline teostus ja optimiseeritud algoritmid on levinud suurel andmevoos.
  • Latiidsus ja viide: reed–solomoni koodid võivad lisada latentsust (eriti keerukate dekooderalgoritmide ja interleavingu tõttu) — seda tuleb arvestada reaalajas süsteemides.

Rakendused

Reed–Solomoni koode kasutatakse laialdaselt erinevates tehnoloogiates tänu nende usaldusväärsusele ja võimele parandada sümbolivigu. Näited:

  • CD-des, DVD-des ja Blu-ray-diskides kasutatakse RS-koode plaadilt lugemisel tekkivate vigade parandamiseks.
  • Andmeedastussüsteemid nagu DSL ja WiMAX kasutavad RS-koode kanalivigade leevendamiseks.
  • Ringhäälingusüsteemid (DVB, ATSC) kasutavad RS-koodi sageli konkateneeritud koodina koos bitivasakutega, et parandada signaali vastuvõttu.
  • Lisaks kasutatakse RS-koode QR-koodides, kõvaketta- ja andmesalvestuses, RAID-6 tüüpi salvestussüsteemides, satelliitkommunikatsioonis ja süvapõrkondades (deep-space) andmete taastamiseks.

Praktilised tähelepanekud

  • Symbol length: valik m (nt m=8) määrab maksimaalse n ja sobib paljudele rakendustele, kus sümboliks on bait.
  • Interleaving: Reed–Solomoni koodid kombineeritakse tihti interleavinguga, mis hajutab pikad veaburstid mitmeks lühemaks vigaks, mida RS suudab parandada.
  • Kombinatsioon teiste koodidega: RS on sageli väliskood (outer code) concatenated-süsteemides koos valikulisemate sisemiste koodidega (näiteks Viterbi), et saada väga tugevat üldist veakaitset.

Kokkuvõte: Reed–Solomoni veaparandus on mitmekülgne ja praktiline meetod andmete taastamiseks vigastatud või osaliselt kadunud kanalitingimustes. Selle sümboliteline lähenemine, suurepärane võime parandada burste ja rikas teoreetiline aparaat (GF(2^m), generatorpolünoomid, dekodeerimisalgoritmid) teevad sellest standardlahenduse paljudes tarbe- ja tööstuslikes rakendustes.