Reed-Muller-Code

Reed-Muller-Code

Die Reed-Muller Codes sind eine Familie von linearen, fehlerkorrigierenden Codes, die im Bereich der Kanalcodierung zur gesicherten Datenübertragung und Datenspeicherung Verwendung finden. Diese Klasse von Codes wurden von Irving S. Reed und David E. Muller entwickelt.

Inhaltsverzeichnis

Praxis

Der binäre Reed-Muller-Code wurde von der NASA in den Mariner Expeditionen (1969 bis 1976) zum Mars benutzt, um die vom Mars gemachten Fotos an die Erde zu senden. Im Speziellen wurde bei Mariner 9 ein RM-Code (1, 5) ohne Kontrollmatrix als Hadamard-Code (32, 6, 16) verwendet, das bedeutet, dass sechs Informationsbits in 32 Bit langen Wörtern kodiert waren und das Minimalgewicht der Wörter mindestens 16 betrug, was eine Fehlerkorrektur von 7 Bits ermöglichte. Mit den 26 = 64 Codewörtern wurden Grauwerte eines Bildpunktes kodiert. Mehr dazu im nachfolgenden Beispiel 3 zur NASA Raumsonde Mariner 9.

Konstruktion

Im Folgenden wird beschrieben, wie man eine Erzeugermatrix eines Reed-Muller-Codes der Länge n = 2d konstruiert.

 X = \mathbb{F}_2^d = \{ x_1, \ldots, x_{2^d} \}

Wir definieren im n-dimensionalen Raum \mathbb{F}_2^n die Indikatorvektoren :

\mathbb{I}_A \in \mathbb{F}_2^n

auf Untermengen A \subset X durch:

\left( \mathbb{I}_A \right)_i = \begin{cases} 1 & \mbox{ wenn } x_i \in A \\ 0 & \mbox{ sonst} \\ \end{cases}

und - ebenfalls in \mathbb{F}_2^n - die binäre Operation:

 w \wedge z = (w_1 \times z_1, \ldots , w_n \times z_n )

die als Keil-Produkt bezeichnet wird.

\mathbb{F}_2^d ist ein d-dimensionaler Vektorraum über \mathbb{F}_2, deshalb ist es möglich zu schreiben:

(\mathbb{F}_2)^d = \{ (y_1, \ldots , y_d) | y_i \in \mathbb{F}_2 \}

Wir definieren im n-dimensionalen Raum \mathbb{F}_2^n die folgenden Vektoren der Länge n: v0 = (1,1,1,1,1,1,1,1) und

 v_i = \mathbb{I}_{ H_i }

wobei Hi Hyperebenen in (\mathbb{F}_2)^d (mit Dimension 2d-1) sind:

H_i = \{ y \in ( \mathbb{F}_2 ) ^d \mid y_i = 0 \}

Der Reed-Muller RM(d, r)-Code der Ordnung r und der Länge n=2d ist derjenige Code, der durch v0 und dem Keil-Produkt von bis zu r der vi erzeugt wird (wobei nach Vereinbarung ein Keil-Produkt von weniger als einem Vektor gleich der Identität für diesen Operator ist).

Eigenschaften

Es gelten die folgenden Eigenschaften

  1. Die Menge aller möglichen Keil-Produkte von bis zu d der vi bilden eine Basis von \mathbb{F}_2^n.
  2. Der RM(d, r)-Code hat den Rang:  \sum_{s=0}^r {d \choose s}
  3. RM(d, r) = RM(d-1,r) | RM(d-1,r-1) wobei '|' das Bar-Product zweier Codes bezeichnet
  4. RM(d, r) hat die minimale Hamming-Distanz 2d-r.

Beispiel 1

Sei d=3. Dann n=8, und

 X = \mathbb{F}_2^3 = \{ (0,0,0), (0,0,1),  \ldots, (1,1,1) \}.

und


\begin{matrix}
v_0 & = & (1,1,1,1,1,1,1,1) \\
v_1 & = & (1,0,1,0,1,0,1,0) \\
v_2 & = & (1,1,0,0,1,1,0,0) \\
v_3 & = & (1,1,1,1,0,0,0,0) \\
\end{matrix}

Der RM(3,1)-Code wird erzeugt durch die Menge

{v0,v1,v2,v3}

oder genauer durch die Zeilen der Matrix


\begin{pmatrix}
1 & 1 & 1 & 1 & 1 & 1 & 1 & 1 \\
1 & 0 & 1 & 0 & 1 & 0 & 1 & 0 \\
1 & 1 & 0 & 0 & 1 & 1 & 0 & 0 \\
1 & 1 & 1 & 1 & 0 & 0 & 0 & 0 \\
\end{pmatrix}

Beispiel 2

Der RM(3,2)-Code wird erzeugt durch die Menge

 \{ v_0, v_1, v_2, v_3, v_1 \wedge v_2, v_1 \wedge v_3, v_2 \wedge v_3 \}

oder genauer durch die Zeilen der Matrix


\begin{pmatrix}
1 & 1 & 1 & 1 & 1 & 1 & 1 & 1 \\
1 & 0 & 1 & 0 & 1 & 0 & 1 & 0 \\
1 & 1 & 0 & 0 & 1 & 1 & 0 & 0 \\
1 & 1 & 1 & 1 & 0 & 0 & 0 & 0 \\
1 & 0 & 0 & 0 & 1 & 0 & 0 & 0 \\
1 & 0 & 1 & 0 & 0 & 0 & 0 & 0 \\
1 & 1 & 0 & 0 & 0 & 0 & 0 & 0 \\
\end{pmatrix}

Beispiel 3: NASA Raumsonde Mariner 9

Bei der NASA Raumsonde Mariner 9 aus dem Jahre 1971 wurde ein Reed-Muller-Code (1, 5) mit fehlender Kontrollmatrix genutzt, der einen Spezialfall allgemeiner Reed-Muller Codes darstellt. Dieser Code war schlussendlich ein Hadamard-Code mit den Parametern (32, 6, 16). Mit diesem RM-Code (32, 6, 16) wurden 32 Bit lange Codewörter übertragen, die 26 = 64 Werte kodierten, wobei die Codewörter untereinander einen Hamming-Abstand von 16 aufwiesen. Diese Parameter wurden aufgrund der Kanalcharakteristik, der Bildauflösung und der Aufnahme- und Übertragungszeiten gewählt, die eine Wortlänge von reichlich 30 Bit sinnvoll machten.

Aufgrund der großen Entfernung zwischen Mars und Erde, und den damals im Vergleich zu heute unfortschrittlichen Übertragungsgeräten, lag die angenommene Bit-Fehlerwahrscheinlichkeit bei 5 %. Daraus ergibt sich aufgrund der Kodierung von einem Grauwert in 6 Bit ohne zusätzliche Fehlerkorrekturmechanismen eine Grauwert-Fehlerwahrscheinlichkeit von 26 %. Das heißt ca. ein Viertel eines übertragenen Bildes kommen fehlerhaft beim Empfänger an. Durch den Einsatz des RM-Code (32, 6, 16) konnte bei gleicher Bit-Fehlerwahrscheinlichkeit von 5 % die Grauwert-Fehlerwahrscheinlichkeit auf 0.01 % reduziert werden.

Konstruktion

Matrix des Hadamard-Code (32, 6, 16 ) für den Reed-Muller-Code (1,5) der NASA Raumsonde Mariner 9 (1971/1972). Die Farbe Schwarz kodiert die Binärziffer 1, und die Farbe Weiß kodiert die Binärziffer 0.

Der verwendete RM-Code (32, 6, 16) basiert auf einer Hadamard-Matrix H32.

Die Konstruktion von H32 erfolgt rekursiv aus der Hadamard-Matrix

H_1 = \begin{pmatrix} 1 \end{pmatrix}

und der Erzeugungsregel

H_{2n} = \begin{pmatrix} H_n & H_n \\ H_n & -H_n \end{pmatrix}

Diese Konstruktion nach Sylvester erzeugt die sogenannten Walsh Matrizen

H_1 = \begin{pmatrix} 1 \end{pmatrix}, H_2 = \begin{pmatrix} 1 & 1 \\ 1 & -1 \end{pmatrix}, H_4 = \begin{pmatrix} 1 & 1 & 1 & 1 \\ 1 & -1 & 1 & -1 \\ 1 & 1 & -1 & -1 \\ 1 & -1 & -1 & 1 \end{pmatrix}, \ldots

die normalisierte Hadamard-Matrizen vom Grad 2k darstellen.

Wenn man nun die Hadamard-Matrix H32 als Bitmuster interpretiert (bei dem eine 1 für die Binärziffer 1, und eine − 1 für die Binärziffer 0 steht), dann erhält man 32 Codewörter mit 32 Bit Länge. Jedes dieser Codewörter weist zu jedem anderen Codewort einen Hamming-Abstand von 16 oder 32 auf. Durch Kombination der Hadamard-Matrix H32 mit der dazu inversen Hadamard-Matrix H32 erhält man 64 Codewörter mit 32 Bit Länge, bei denen jedes Codewort zu jedem anderen Codewort einen Hamming-Abstand von 16 aufweist. Diese Kombination von H32 und H32 definiert dabei einen Hadamard-Code, mit dem sich 26 = 64 Werte kodieren lassen, indem ein Wert n der n-ten Zeile des Codes entspricht. Die nebenstehende Abbildung zeigt den vollständigen Hadamard-Code für RMC (32, 6, 16), wobei die Farbe Schwarz für die Binärziffer 1 und die Farbe Weiß für die Binärziffer 0 steht.

Alternative Charakterisierung

Die Klasse der Reed-Muller-Codes kann man auch mit einer Menge von Abbildungen identifizieren. Betrachte hierzu die Menge

 V = \{ f \text{ Abbildung} \mid f: \mathbb{F}_2^m \rightarrow \mathbb{F}_2 \} .

Eine Abbildung f \in V wird durch ihre 2^{2^m} Bilder eindeutig bestimmt, sofern deren Reihenfolge bekannt ist. Daher kann man f auch durch den zugehörigen Bildvektor (f(0),f(1),..f(2^m-1)) \in \mathbb{F}_2^{2^m} darstellen, wobei die Argumente 0,1,\dots,2^m-1 die 2-adische Entwicklung der Elemente aus dem Definitionsbereich \mathbb{F}_2^m sind. Auf V kann man eine komponentenweise Addition und Multiplikation gemäß den Rechenoperationen in \mathbb{F}_2 definieren. Genau genommen gibt es einen Ringisomorphismus zwischen der Menge der Abbildungen V und der Menge der Bildvektoren \mathbb{F}_2^{2^m}, weshalb man eine Abbildung auch mit seinem Bildvektor identifizieren kann: f = (f(0),f(1),..f(2m − 1)). In V liegen spezielle Abbildungen, die s.g. Koordinatenfunktionen Z_i, i=1 \dots 2^m. Diese sind wie folgt definiert:

Zi(v): = vi für v=(v_1,\dots,v_m) \in \mathbb{F}_2^m.

In der oben eingeführten Vektordarstellung lassen sich die Koordinatenfunktionen auch schreiben als

Z_i = (\underbrace{0,\dots,0}_{2^{i-1}-mal},\underbrace{1,\dots,1}_{2^{i-1}-mal},\underbrace{0,\dots,0}_{2^{i-1}-mal},...) \in \mathbb{F}_2^{2^m}.

Nun gilt:

  1. Das System der Monome Z_{i_1} \cdot \dots \cdot Z_{i_k} (1 \le i_1 < \dots < i_k \leq m, k=0,\dots,m) ist eine Basis von V.
  2. Die Teilmenge  \{ f: \mathbb{F}_2^m \rightarrow \mathbb{F}_2 \text{ Abbildung} \mid grad(f) \leq r \}  \subseteq V entspricht dem Reed-Muller-Code RM(r, m). Hierbei ist grad(f) der höchste Monomgrad der Koordinatenfunktionen, als deren Summe f gemäß 1. geschrieben werden kann.

Dekodierung

Die Idee ist wie folgt: Jedes Codewort des Reed-Muller-Codes RM(r,m) kann gemäß der obigen alternativen Charakterisierung als Funktion f aus V aufgefasst werden - mit Basisdarstellung in entgegengesetzten Koordinatenfunktionen, d.h. mit eindeutig bestimmten Koeffizienten m_I \text{ mit } I \subseteq M wobei M = \{ 1,\dots,m \} die Menge der Koordinatenfunktionen-Indizes ist. Die Funktion f wird als Bildvektor (f(0),f(1),\dots,f(2^m-1)) durch den gestörten Kanal geschickt. Der Empfänger dekodiert das mit Fehler e behaftete Codewort g = f + e, indem er sukzessive die Koeffizienten mI rekonstruiert. Dabei beginnt er mit den Koeffizienten, die zum Monom höchsten Grades r gehören. Hierzu berechnet er das Skalarprodukt von g mit den s.g. charakteristischen Funktionen des Monoms. Dies sind alle Abbildungen vom Grad mr, wobei die erzeugenden Koordinatenfunktionen auch entgegengesetzt vorkommen können. Der Wert, der mehrheitlich durch die Skalarprodukte berechnet wird, ist der ursprüngliche Monomkoeffizient. Das Verfahren wird mit den Monomen vom Grad r-1,r-2,\dots,0 wiederholt und man erhält hierdurch schließlich f - vorausgesetzt der Fehler e ist nicht zu groß.

Zusammenfassung

Codierungs- und Decodierungsprozess mittels Reed-Muller-Codes im Überblick:

  1. Nachricht n wird in Codewort c übersetzt.
  2. Codewort c kann mit Abbildung f identifiziert werden.
  3. Abbildung f kann auch als Bildvektor (f(0),f(1),\dots,f(2^m-1)) dargestellt werden.
  4. Übermittle anstelle der Monomkoeffizienten von f den zugehörigen Bildvektor. Dies liefert Redundanz, die die gewünschte Fehlerkorrektur ermöglicht.
  5. Sende den Bildvektor durch den gestörten Kanal. Es ergibt sich g = f + e mit Fehlervektor e.
  6. Empfange den Bildvektor g und gewinne durch Skalarmultiplikationen mit den Koordinatenfunktionen Zi die ursprünglichen Monomkoeffizienten.
  7. Durch die Monomkoeffizienten berechnet man die/das ursprüngliche Abbildung/Codewort f = c und damit n.

Weblinks


Wikimedia Foundation.

Игры ⚽ Поможем сделать НИР

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

  • Reed–Muller code — Reed Muller codes are a family of linear error correcting codes used in communications. They are named after their discoverers, Irving S. Reed and D. E. Muller. Muller discovered the codes, and Reed proposed the majority logic decoding for the… …   Wikipedia

  • Code De Reed-Müller — Les codes de Reed Müller sont des codes correcteurs linéaires. Cette famille de codes, initialement binaire, doit son nom aux travaux de D.E. Muller qui proposa le principe du code et à Irving S. Reed qui proposa une technique de décodage,… …   Wikipédia en Français

  • Code de Reed-Muller — Code de Reed Müller Les codes de Reed Müller sont des codes correcteurs linéaires. Cette famille de codes, initialement binaire, doit son nom aux travaux de D.E. Muller qui proposa le principe du code et à Irving S. Reed qui proposa une technique …   Wikipédia en Français

  • Code de reed-müller — Les codes de Reed Müller sont des codes correcteurs linéaires. Cette famille de codes, initialement binaire, doit son nom aux travaux de D.E. Muller qui proposa le principe du code et à Irving S. Reed qui proposa une technique de décodage,… …   Wikipédia en Français

  • Code de Reed-Müller — Les codes de Reed Müller sont des codes correcteurs linéaires. Cette famille de codes, initialement binaire, doit son nom aux travaux de D.E. Muller qui proposa le principe du code et à Irving S. Reed qui proposa une technique de décodage,… …   Wikipédia en Français

  • Muller — may refer to: Contents 1 People 2 Characters 3 Other 4 …   Wikipedia

  • 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 — redirects here. CODE may also refer to Cultural Olympiad Digital Edition. Decoded redirects here. For the television show, see Brad Meltzer s Decoded. For code (computer programming), see source code. For other uses, see Code (disambiguation).… …   Wikipedia

  • Reed — Cette page d’homonymie répertorie les différents sujets et articles partageant un même nom. Reed, qui signifie roseau en anglais, peut désigner : Patronyme Alan Reed (1907 1977), acteur américain. Andre Reed (1964 ), joueur américain de… …   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

Share the article and excerpts

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