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 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.
Wir definieren im n-dimensionalen Raum
die Indikatorvektoren :
auf Untermengen
durch:
und - ebenfalls in
- die binäre Operation:
die als
Keil-Produkt bezeichnet wird.
ist ein d-dimensionaler Vektorraum über , deshalb ist es möglich zu schreiben:
Wir definieren im n-dimensionalen Raum die folgenden Vektoren der Länge n:
und
wobei
Hi Hyperebenen in
(mit Dimension
2d-1) sind:
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
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
- Die Menge aller möglichen Keil-Produkte von bis zu d der bilden eine Basis von .
- Der RM(d, r)-Code hat den Rang:
- RM(d, r) = RM(d-1,r) | RM(d-1,r-1) wobei '|' das Balkenprodukt zweier Codes bezeichnet
- RM(d, r) hat die minimale Hamming-Distanz 2d-r.
Beispiel 1
Sei d=3. Dann n=8, und
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
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
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 fehlernder Kontrollmatrix genutzt, der einen Spezialfall allgemeiner Reed-Muller Codes darstellt. Dieser Code war schlußendlich ein Hadamard-Code mit den Parametern (32, 6, 16). Mit diesem RM-Code (32, 6, 16) wurden 32 Bit lange Codewörter übertragen, die 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.001 % 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 .
Die Konstruktion von erfolgt rekursiv aus der Hadamard-Matrix
-
und der Erzeugungsregel
-
Diese Konstruktion nach
Sylvester erzeugt die sogenannten Walsh Matrizen
-
die normalisierte Hadamard-Matrizen vom Grad
darstellen.
Wenn man nun die Hadamard-Matrix als Bitmuster interpretiert (bei dem eine 1 für die Binärziffer 1, und eine für die Binärziffer 0 steht), dann erhält man 32 Codewörter mit 32 Bit Länge. Jedes dieser Codewörter weisst zu jedem anderen Codewort einen Hamming-Abstand von 16 oder 32 auf. Durch Kombination der Hadamard-Matrix mit der dazu inversen Hadamard-Matrix 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 und definiert dabei einen Hadamard-Code, mit dem sich 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.
Weblinks
Rekursive Codes mit der Plotkin-Konstruktion
Dissertation zur Konstruktion und Decodierung von Reed-Muller Codes und deren Untercodes (Achtung: Angabe über den RM-Code (32, 6, 16) der Mariner 9 Mission sind nicht korrekt, da nur eine Mächtigkeit des Codes von Werten angegeben und erläutert wird.)
Erläuterungen zu Hadamard-Codes und der Mariner 9 Mission 