Reed-Solomon-Code
Reed-Solomon-Codes (kurz RS-Codes) sind eine Klasse von zyklischen Blockcodes und werden im Rahmen der Kanalkodierung zum Erkennen und Korrigieren von Übertragungs- oder Speicherfehlern als Teil einer Vorwärtsfehlerkorrektur eingesetzt. Sie bilden eine spezielle Unterklasse der allgemeinen Klasse der BCH-Codes. RS-Codes sind MDS-Codes, womit sie im Rahmen der Kodierungstheorie als optimale Codes gelten.
Reed-Solomon-Codes wurden um 1960 von Irving S. Reed und Gustave Solomon am MIT Lincoln Laboratory, einer Forschungseinrichtung des Verteidigungsministeriums der Vereinigten Staaten entwickelt.[1] Zu der Zeit war die praktische Verwendbarkeit dieser Codes eingeschränkt, da keine effiziente Methode zur Decodierung bekannt war. Ein effizienter Decodieralgorithmus wurde 1969 von Elwyn Berlekamp und James Massey in Form des auch für BCH-Codes verwendbaren Berlekamp-Massey-Algorithmus vorgestellt.
Erste Anwendungen von RS-Codes war das Voyager-Programm der NASA im Jahr 1977. Erste kommerzielle Anwendung fanden RS-Codes 1982 im Rahmen der Fehlerkorrektur von Compact Disk. Heutige Anwendungen erstrecken sich über einen großen Bereich wie dem DVB-Standard zur Aussendung von digitalen Fernsehsignalen, in verschiedenen Mobilfunkstandards, im Digital Audio Broadcasting (DAB), und in Dateiformaten wie PAR2 zur Datenspeicherung. Weitere Anwendungsbeispiele sind zweidimensionale Barcodes; so setzen z.B. der QR-Code, DataMatrix und der PDF417 Reed-Solomon zur Fehlerkorrektur von Lesefehlern ein. In neueren Anwendungsbereichen werden RS-Codes zunehmend durch leistungsfähigere Codes wie die Low-Density-Parity-Check-Codes (LDPC) oder Turbo-Codes (TPC) abgelöst, wie dies beispielsweise im Fernsehstandard DVB-S2 der Fall ist, welcher LDPC zur Vorwärtsfehlerkorrektur einsetzt.
Inhaltsverzeichnis |
Motivation[Bearbeiten]
Es soll eine Nachricht aus
Zahlen (zum Beispiel ein Textfragment in ASCII-Kodierung) fehlerfrei übertragen werden. Auf dem Übertragungsweg kann es aber zur Auslöschung oder Verfälschung einiger der Zahlen kommen (im ersten Fall weiß man, dass ein Fehler auftrat, im zweiten nicht). Um nun Redundanz zur Nachricht hinzuzufügen, werden die Zahlen der Nachricht als Werte eines Polynoms an
fest vereinbarten Stützstellen interpretiert. Ein Polynom des Grades
oder kleiner kann als Summe von
Monomen dargestellt werden. Die Koeffizienten dieser Monome ergeben sich als Lösung eines linearen Gleichungssystems. Aufgrund der speziellen Form dieses Systems gibt es eine Lösungsformel, die Lagrange-Interpolation. Das so erhaltene Polynom wird nun auf weitere Stützstellen extrapoliert, so dass die kodierte Nachricht insgesamt aus
Zahlen besteht.
Werden bei der Übertragung nun einige wenige Zahlen ausgelöscht, so dass immer noch mehr als
der Zahlen erhalten bleiben, so kann das Polynom wiederum durch Interpolation aus den korrekt übertragenen Zahlen rekonstruiert werden, und damit auch die ursprüngliche Nachricht durch Auswerten in den ersten
Stützstellen. Im Falle einer fehlerbehafteten Übertragung mit Fehlern an nur wenigen Stellen kann mit einem etwas komplizierteren Ansatz immer noch die ursprüngliche Nachricht sicher rekonstruiert werden.
Die in der Interpolation auftretenden Ausdrücke enthalten Divisionen, müssen also über einem Körper durchgeführt werden. Werden die Zahlen – oder Symbole – der Nachricht aus den ganzen Zahlen gewählt, so finden die Rechnungen also in den rationalen Zahlen statt. Außerdem können die extrapolierten Werte sehr groß werden, was eventuell im vorliegenden Übertragungskanal nicht übermittelt werden kann. Um diese Nachteile zu beheben, führt man die Rechnungen in einem endlichen Körper durch. Dieser hat eine endliche Anzahl von Elementen, die durchnummeriert werden können, um sie mit den Symbolen der Nachricht zu verknüpfen. Die Division – außer durch Null – ist uneingeschränkt durchführbar, und somit auch die Interpolation.
Reed-Solomon-Codes sind zur Korrektur von Burstfehlern bei der Datenübertragung geeignet. Bei Burstfehlern erscheinen fehlerhafte („gekippte“) Bits häufig als eine zusammenhängende Kette von Fehlern im Datenstrom. Beispielsweise werden durch einen Kratzer auf einer CD mit jeder Umdrehung viele aufeinanderfolgende Bits nicht richtig gelesen.
Definition[Bearbeiten]
Sei
ein endlicher Körper mit
Elementen (
ist dann notwendigerweise eine Primzahlpotenz,
prim). Es werden nun
paarweise verschiedene Elemente
ausgewählt und fixiert.
Die Menge der Kodewörter eines Reed-Solomon-Kodes
der Länge
für Nachrichten der Länge
über
ergibt sich nun durch die Wertetupel aller Polynome aus
mit Grad kleiner
an den gewählten Stützstellen:
Stützstellenmengen[Bearbeiten]
RS-Codes zu verschiedenen zulässigen Stützstellenmengen sind linear isomorph. Die bijektive lineare Abbildung, die die Isomorphie vermittelt, ergibt sich durch Lagrange-Interpolation bezüglich der ersten Stützstellenmenge und Auswertung in der zweiten Stützstellenmenge. Dabei werden im ersten Schritt Kodewörter in Polynome kleiner
-ten Grades umgewandelt, so dass der zweite Schritt wieder ein Kodewort ergibt.
Ist
ein Element der Ordnung
oder größer, so kann zum Beispiel
gewählt werden. Jeder endliche Körper enthält ein erzeugendes oder primitives Element der multiplikativen Gruppe
, das heißt ein Element der Ordnung
. Daher ist diese spezielle Wahl für
immer möglich.
Sind die Stützstellen genau die Potenzen
eines Elementes
der Ordnung
,
, so ist der RS-Kode ein zyklischer Kode. Denn das Kodewort zum Polynom
ergibt sich durch Rotation des Kodewortes zu
um
Stellen nach links. Wegen der einfacheren Implementierbarkeit zyklischer Kodes wird diese Variante im Allgemeinen bevorzugt.
Kodieren von Nachrichten[Bearbeiten]
Man kann eine Nachricht
direkt in ein Kodewort verwandeln, indem man die Komponenten als Koeffizienten eines Polynoms
einsetzt und dieses an den Stützstellen auswertet. Es ergibt sich damit ein Kodewort
der Länge
.
Man erhält eine systematische Kodierung, in der die Nachricht in den ersten
Komponenten im „Klartext“ enthalten ist, durch eine vorbereitende Transformation der Nachricht. Das zum Kodewort führende Polynom
ergibt sich hier als Interpolationspolynom der Paare
,
nach der Formel der Lagrange-Interpolation also
.
Wegen
für
ergibt sich aus
das Kodewort
.
Beide Varianten benutzen dieselbe Menge von Kodewörtern und haben damit dieselben Fehlerkorrektureigenschaften.
Eigenschaften[Bearbeiten]
Durch die Definition ergeben sich sofort folgende Eigenschaften:
- Codewortlänge:

- Dimension des Codes:

- Coderate:

Die Mindestdistanz beträgt
und erfüllt damit die Singleton-Schranke. Codes mit dieser Eigenschaft werden auch MDS-Codes genannt.
- Erklärung
- Da
maximal
Nullstellen besitzen kann (durch den Grad des Polynoms beschränkt), tauchen im korrespondierenden Codewort maximal
Stellen auf die zu 0 werden. Damit ist das Hamming-Gewicht
und somit wegen der Linearität auch die Minimaldistanz. - Zusammen mit der Singleton-Schranke
ergibt sich die Gleichheit.
Literatur[Bearbeiten]
- Stephen B. Wicker, Vijay K. Bhargava: Reed Solomon Codes Applications. Wiley, 1999, ISBN 978-0-78-035391-6.
Einzelnachweise[Bearbeiten]
- ↑ Irving S. Reed, Gustave Solomon: Polynomial codes over certain finite fields. In: Journal of the Society for Industrial and Applied Mathematics, SIAM J.. 8, 1960, ISSN 0036-1399, S. 300–304.
Weblinks[Bearbeiten]
- Kodier- und Dekodieralgorithmen für Reed-Solomon- und andere Kodes in C (Robert Morelos-Zaragoza) (en)
- Interaktive Darstellung des Grundgedankens (Uni Paderborn)
- Skript der Uni Paderborn mit Schwerpunkt RS-Kodes (PDF-Datei; 739 kB)
- James S. Plank: A Tutorial on Reed-Solomon Coding for Fault-Tolerance in RAID-like Systems, Software – Practice & Experience, 27(9), September, 1997, S. 995-1012
![C=\left\{
a=(a_1,\dots,a_n)\in\mathbb F_p{}^n
\;\Big|\;
a_j=f(u_j),\;j=1,\dots,n;\
\mathsf{wobei}\ f\in\mathbb F_p[x]\ \mathsf{mit}\ \deg(f)<k
\right\}](http://upload.wikimedia.org/math/4/4/5/445b9b465192533cd3ec126b20b48702.png)

![f(x)=a_1 + a_2\,x + a_3\,x^2 + \dots + a_k\,x^{k-1} = \sum_{i=1}^k a_i\,x^{i-1} \in\mathbb F_p[x]](http://upload.wikimedia.org/math/7/c/b/7cbb357b98ae9a4f8ee17cbaf68ca85c.png)

,
.
.

maximal
und somit wegen der Linearität auch die Minimaldistanz.
ergibt sich die Gleichheit.