RS-Code

RS-Code

Reed-Solomon-Codes (kurz RS-Codes) sind leistungsfähige Kodierungsverfahren, die beim Lesen oder Empfangen der mit ihnen codierten digitalen Daten erlauben, Fehler zu erkennen und zu korrigieren (Vorwärtsfehlerkorrektur). Bei nach dem DVB-Standard ausgesendeten Fernsehsignalen wird beispielsweise ein RS-Code verwendet, der es dem Empfänger ermöglicht, die Bitfehlerrate des empfangenen Signals um mehr als 6 Zehnerpotenzen zu verbessern. Reed-Solomon Codes sind besonders geeignet für Burstfehler bei der Datenübertragung. Bei Burst-Fehlern erscheinen fehlerhafte („gekippte“) Bits häufig als eine mehr oder weniger zusammenhängende Kette von Fehlern im Datenstrom. Beispielsweise werden durch einen Kratzer auf einer CD mit jeder Umdrehung viele aufeinanderfolgende Bits nicht richtig gelesen.

Diese RS-Codes arbeiten mit Blöcken von Symbolen, die in der Regel jeweils aus 8 Bit bestehen. Sie gehören daher zur Klasse der symbolorientierten Blockcodes. Es handelt sich um eine 1960 von Irving S. Reed und Gustave Solomon gefundene Klasse von Codes, die gute Fehlerkorrektureigenschaften besitzen und für die ein relativ einfacher Decodieralgorithmus existiert. Aufgrund dessen kamen einige Reed-Solomon-Codes bereits in wichtigen Anwendungen zum Einsatz: Die Fehlerkorrektur gewöhnlicher Audio-CDs basiert auf einem Reed-Solomon-Code, und auch im Mobilfunk, im Digital Video Broadcasting (DVB), im Digital Audio Broadcasting (DAB) sowie zur Kommunikation mit Raumsonden (1985 Voyager 2 nach Umprogrammierung, 1989 Galileo zum Jupiter, 1989 Magellan zur Venus und 1990 Ulysses zur Sonne) wurden Reed-Solomon-Codes benutzt. Auch im Checksummenformat PAR2 wird der Code benutzt.

Inhaltsverzeichnis

Motivation

Es soll eine Nachricht aus k Zahlen (z. B. 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 k fest vereinbarten Stützstellen interpretiert. Ein Polynom des Grades k-1 oder kleiner kann als Summe von k 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 n>k Zahlen besteht.

Werden bei der Übertragung nun einige wenige Zahlen ausgelöscht, so dass immer noch mehr als k 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 k 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 evtl. 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.

Definition

Sei \mathbb F_p ein endlicher Körper mit p Elementen (p = qm ist dann notwendigerweise eine Primzahlpotenz, q prim). Es werden nun n paarweise verschiedene Elemente u_1,\dots,u_n\in\mathbb F_p ausgewählt und fixiert.

Die Menge der Kodewörter eines Reed-Solomon-Kodes RS(p,k,n) der Länge n für Nachrichten der Länge k über \mathbb F_p ergibt sich nun durch die Wertetupel aller Polynome aus \mathbb F_p[x] mit Grad kleiner k an den gewählten Stützstellen:

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\}

Stützstellenmengen

RS-Kodes zu verschiedenen zulässigen Stützstellenmengen sind linear isomorph. Die bijektive lineare Abbildung, die die Isomorphie vermittelt, ergibt sich durch Lagrange-Interpolation bzgl. der ersten Stützstellenmenge und Auswertung in der zweiten Stützstellenmenge. Dabei werden im ersten Schritt Kodewörter in Polynome kleiner k-ten Grades umgewandelt, so dass der zweite Schritt wieder ein Kodewort ergibt.

Ist \alpha\in \mathbb F_p ein Element der Ordnung n oder größer, so kann z. B.

u_1=1,\,u_2=\alpha,\,\dots,u_j=\alpha^{j-1},\dots,u_n=\alpha^{n-1}

gewählt werden. Jeder endliche Körper enthält ein erzeugendes oder primitives Element der multiplikativen Gruppe \mathbb F_p{}^*=\mathbb F_p\setminus\{0\}, d.h. ein Element der Ordnung p-1. Daher ist diese spezielle Wahl für n=p-1 immer möglich.

Sind die Stützstellen genau die Potenzen u_1=1,\;u_j=\alpha^{j-1}\ne 1,\;j=2,\dots,n, eines Elementes \alpha\in\mathbb F_p der Ordnung n, αn = 1, so ist der RS-Kode ein zyklischer Kode. Denn das Kodewort zum Polynom fj(x) = fjx) ergibt sich durch Rotation des Kodewortes zu f(x) um j Stellen nach links. Wegen der einfacheren Implementierbarkeit zyklischer Kodes wird diese Variante i. A. bevorzugt.

Kodieren von Nachrichten

Man kann eine Nachricht (a_1,a_2,\dots,a_k)\in\mathbb F_p{}^k direkt in ein Kodewort verwandeln, indem man die Komponenten als Koeffizienten eines Polynoms

f(x)=a_1+a_2x+\dots+a_kx^{k-1}\in\mathbb F_p[x]

einsetzt und dieses an den Stützstellen auswertet. Es ergibt sich damit ein Kodewort

c=(c_1,c_2,\dots,c_n)=\left(f(u_1),f(u_2),\dots,f(u_n)\right)\in\mathbb F_p{}^n

der Länge n.

Man erhält eine systematische Kodierung, in der die Nachricht in den ersten k Komponenten im „Klartext“enthalten ist, durch eine vorbereitende Transformation der Nachricht. Das zum Kodewort führende Polynom f(x) ergibt sich hier als Interpolationspolynom der Paare

\left((u_1,a_1),\,(u_2,a_2),\,\dots,\,(u_k,a_k)\right),

nach der Formel der Lagrange-Interpolation also

f(x)=\sum_{j=1}^ka_j\prod_{i\ne j}\frac{(x-u_i)}{(u_j-u_i)}.

Wegen f(uj) = aj für j=1,\dots,k ergibt sich aus f(x) das Kodewort

c=(c_1,c_2,\dots,c_n)=\left(a_1,a_2,\dots,a_k,f(u_{k+1}),\dots,f(u_n)\right).

Beide Varianten benutzen dieselbe Menge von Kodewörtern und haben damit dieselben Fehlerkorrektureigenschaften.

Eigenschaften

Durch die Definition ergeben sich sofort folgende Eigenschaften:

  • Codewortlänge: n
  • Dimension des Codes: | C | = | f | = qk
  • Coderate: Rc = k / n

Die Mindestdistanz beträgt dmin = nk + 1 und erfüllt damit die Singleton-Schranke. Codes mit dieser Eigenschaft werden auch MDS-Codes genannt.

Erklärung
Da f maximal k-1 Nullstellen besitzen kann (durch den Grad des Polynoms beschränkt) tauchen im korrespondierenden Codewort maximal k-1 Stellen auf die zu 0 werden. Damit ist das Hamming-Gewicht w(C)>=n-k+1 und somit wegen der Linearität auch die Minimaldistanz.
Zusammen mit der Singleton-Schranke d_min<=n-k+1 ergibt sich die Gleichheit.

Zur Einordnung in der Kodierungstheorie

Reed-Solomon-Codes sind zyklische Codes der Länge q − 1 über einem q-nären Zeichenvorrat, sie bilden also eine Unterklasse der BCH-Codes. Außerdem sind sie MDS-Codes und damit optimale Codes.

Literatur

  • I. Reed, I. und G. Solomon: Polynomial codes over certain finite fields. In: Journal of the Society for Industrial and Applied Mathematics. [SIAM J.], 8 (1960) 300-304. Die Originalarbeit

Weblinks


Wikimedia Foundation.

Игры ⚽ Поможем написать реферат

Schlagen Sie auch in anderen Wörterbüchern nach:

  • Code Cyclique — En mathématiques et en informatique, un code cyclique est un code correcteur linéaire. Ce type de code possède non seulement la capacité de détecter les erreurs, mais aussi de les corriger sous reserve d altérations modérée. Les mathématiques… …   Wikipédia en Français

  • Code De Hamming — Un code de Hamming est un code correcteur linéaire. Il permet la détection et la correction automatique d une erreur si elle ne porte que sur une lettre du message. Un code de Hamming est parfait, ce qui signifie que pour une longueur de code… …   Wikipédia en Français

  • Code de hamming — Un code de Hamming est un code correcteur linéaire. Il permet la détection et la correction automatique d une erreur si elle ne porte que sur une lettre du message. Un code de Hamming est parfait, ce qui signifie que pour une longueur de code… …   Wikipédia en Français

  • code — [ kɔd ] n. m. • 1220; lat. jurid. codex « planchette, recueil » 1 ♦ Recueil de lois. Le code de Justinien, et absolt le Code. Ensemble des lois et dispositions légales relatives à une matière spéciale. Livre, article d un code. Le C ODE CIVIL ou… …   Encyclopédie Universelle

  • Code page — is another term for character encoding. It consists of a table of values that describes the character set for a particular language. The term code page originated from IBM s EBCDIC based mainframe systems,[1] but many vendors use this term… …   Wikipedia

  • Code Geass — Code Geass: Lelouch of the Rebellion First Code Geass DVD volume released in Japan. コードギアス 反逆のルルーシュ (Kōdo Giasu: Hangyaku no Rurūshu) …   Wikipedia

  • Code Civil (France) — Première page de l édition originale (1804) …   Wikipédia en Français

  • Code Correcteur — Un code correcteur est une technique de codage basée sur la redondance. Elle est destinée à corriger les erreurs de transmission d une information (plus souvent appelée message) sur une voie de communication peu fiable. La théorie des codes… …   Wikipédia en Français

  • Code Linéaire — En mathématiques, plus précisément en théorie des codes, un code linéaire est un code correcteur. Il est structuré comme un sous espace vectoriel sur un corps fini. L espace utilisé est souvent F2n le terme usuel est alors celui de code linéaire… …   Wikipédia en Français

  • Code MDS — Code parfait et code MDS Un code parfait (ou code MDS, pour maximum distance séparable) est un concept de la théorie des codes et qui traite plus spécifiquement des codes correcteurs. Un code correcteur est un code permettant au récepteur de… …   Wikipédia en Français

  • Code NAF — Le code NAF est l un des codes INSEE. C est la Nomenclature des Activités Françaises. Elle permet la codification de l APE, c est à dire de l activité principale exercée dans l entreprise ou l association. Cette nomenclature d activités… …   Wikipédia en Français

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”