Reed–Solomon-felkorrigering är en kraftfull och allmänt använd metod för att upptäcka och rätta fel i digital information. Tekniken bygger på att data representeras som koefficienter i ett polynom över en ändlig kropp, och att polynomet utvärderas i flera punkter för att skapa redundans. När en mottagare får ett tillräckligt antal korrekta utvärderingsvärden kan ursprungsmeddelandet rekonstrueras även om några av värdena är felaktiga eller saknas.
Översikt
Reed–Solomon (RS) är en typ av blockkod som arbetar med symboler (vanligtvis bytes) istället för enskilda bitar. En RS-kod anges ofta som (n,k) där k är antalet informationssymboler och n det totala antalet symboler efter tillsatt redundans. Antalet redundanta symboler n−k bestämmer hur många symbolfel eller bortfall som kan korrigeras.
Princip och egenskaper
- Polynomrepresentation: ursprungsdata tolkas som koefficienter i ett polynom; polynomet utvärderas i många punkter för att skapa kodord. Se exempel på polynom och konstruktion.
- Fel- och utplåningskorrigering: upp till (n−k)/2 slumpmässiga symbolfel eller upp till n−k kända utplåningar kan återställas.
- Arbetsfält: RS-koder definieras över ändliga kroppar GF(2^m), där symboler är element i dessa kroppar; detta gör dem särskilt lämpade för byte-baserad lagring.
- Systematisk form: det är vanligt att koden konstrueras så att originaldata syns oförändrade följt av paritetssymboler.
Historia och utveckling
Reed–Solomon-koder introducerades av Irving S. Reed och Gustave Solomon 1960. Sedan dess har de blivit en grundpelare i kodningsteori och praktiska system tack vare sin flexibilitet och starka egenskaper mot klusterskador (burst errors). Kombinationer med andra tekniker, till exempel konkatenerade koder och interleaving, har förbättrat prestandan i brusiga kanaler.
Tillämpningar och exempel
RS-felkorrigering används brett både i lagring och kommunikation. Vanliga exempel:
- Optisk media: CD (läs mer), DVD (läs mer) och Blu-ray (läs mer) använder RS-baserade scheman för att korrigera repor och defekter.
- Datakommunikation: DSL (mer om DSL) och trådlösa system som WiMAX använder RS eller derivat för robust överföring.
- Broadcast och satellit: standarder som DVB (DVB-info) och ATSC använder RS-koder i sina felkorrigeringslager.
- Andra tillämpningar: arkivlagring, RAID-varianter, QR-koder och satellitkommunikation förlitar sig på RS för att rädda data vid partiella fel.
Viktiga skillnader och tekniska aspekter
Till skillnad från enkla bitpariteter hanterar RS-koder hela symboler, vilket ger bra skydd mot både slumpmässiga och sammanhängande fel. Dekodning kräver algoritmer för att hitta felpositioner och -värden; kända effektiva metoder är Berlekamp–Massey, Euclidisk algoritm och Forneys formel för feletablering. Förfallande eller kända utplåningar (erasures) är enklare att rätta än okända fel, och många praktiska system kombinerar RS med interleaving för att omvandla burstfel till individuella symbolfel som koden kan hantera.
För den som vill fördjupa sig finns introduktioner till kodteori och praktiska implementationer med fler exempel och mattespecifika detaljer på grundläggande resurser, samt exempel på hur data mappas via symbolrepresentation i praktiska system.