Reed-Müller-Code - Reed–Muller code

Reed-Müller-Code RM(r,m)
Benannt nach Irving S. Reed und David E. Muller
Einstufung
Typ Linearer Blockcode
Blocklänge
Nachrichtenlänge
Rate
Distanz
Alphabetgröße
Notation -Code

Reed-Muller-Codes sind fehlerkorrigierende Codes , die in drahtlosen Kommunikationsanwendungen verwendet werden, insbesondere in der Weltraumkommunikation. Darüber hinaus stützt sich der vorgeschlagene 5G-Standard auf die eng verwandten Polarcodes zur Fehlerkorrektur im Kontrollkanal. Aufgrund ihrer günstigen theoretischen und mathematischen Eigenschaften wurden Reed-Muller-Codes auch in der theoretischen Informatik intensiv untersucht .

Reed-Muller-Codes verallgemeinern die Reed-Solomon-Codes und den Walsh-Hadamard-Code . Reed-Muller-Codes sind lineare Blockcodes , die lokal testbar , lokal decodierbar und listendecodierbar sind . Diese Eigenschaften machen sie besonders nützlich beim Entwurf von probabilistisch überprüfbaren Beweisen .

Herkömmliche Reed-Muller-Codes sind Binärcodes, was bedeutet, dass Nachrichten und Codewörter Binärzeichenfolgen sind. Wenn r und m ganze Zahlen mit 0 ≤ rm sind , wird der Reed-Muller-Code mit den Parametern r und m als RM( rm ) bezeichnet. Wenn er aufgefordert wird, eine aus k Bits bestehende Nachricht zu codieren , wobei gilt, erzeugt der RM( rm )-Code ein Codewort, das aus 2 m Bits besteht.

Reed-Muller-Codes sind nach David E. Muller , der die Codes 1954 entdeckte, und Irving S. Reed , der den ersten effizienten Decodierungsalgorithmus vorschlug, benannt.

Beschreibung mit Polynomen niederen Grades

Reed-Muller-Codes können auf verschiedene (aber letztendlich äquivalente) Arten beschrieben werden. Die auf Polynomen niederen Grades basierende Beschreibung ist recht elegant und besonders geeignet für ihre Anwendung als lokal testbare Codes und lokal decodierbare Codes .

Encoder

Ein Blockcode kann eine oder mehrere Codierungsfunktionen haben , die Nachrichten Codewörtern zuordnen . Der Reed-Muller-Code RM( r , m ) hat Nachrichtenlänge und Blocklänge . Eine Möglichkeit, eine Codierung für diesen Code zu definieren, basiert auf der Auswertung von multilinearen Polynomen mit m Variablen und dem Gesamtgrad r . Jedes multilineare Polynom über dem endlichen Körper mit zwei Elementen kann wie folgt geschrieben werden:

Dies sind die Variablen des Polynoms und die Werte sind die Koeffizienten des Polynoms. Da es genau Koeffizienten gibt, besteht die Nachricht aus Werten, die als diese Koeffizienten verwendet werden können. Auf diese Weise führt jede Nachricht zu einem eindeutigen Polynom in m Variablen. Zur Bildung des Codewortes wertet der Encoder an allen Auswertepunkten aus und interpretiert dort die Summe als Addition modulo zwei, um ein Bit zu erhalten . Das heißt, die Kodierungsfunktion wird definiert über

Die Tatsache, dass das Codewort zur eindeutigen Rekonstruktion ausreicht, folgt aus der

Lagrange-Interpolation , die besagt, dass die Koeffizienten eines Polynoms eindeutig bestimmt sind, wenn genügend viele Bewertungspunkte gegeben sind. Da und gilt für alle Nachrichten , ist die Funktion eine lineare Abbildung . Somit ist der Reed-Muller-Code ein linearer Code .

Beispiel

Für den Code RM( 2 , 4 ) lauten die Parameter wie folgt:

Sei die soeben definierte Codierungsfunktion. Um den String x = 1 1010 010101 der Länge 11 zu codieren, konstruiert der Encoder zunächst das Polynom in 4 Variablen:

Dann wertet es dieses Polynom an allen 16 Bewertungspunkten aus:
Als Ergebnis gilt C(1 1010 010101) = 1111 1010 0101 0000.

Decoder

Wie bereits erwähnt, kann die Lagrange-Interpolation verwendet werden, um die Nachricht effizient aus einem Codewort wiederzugewinnen. Ein Decoder muss jedoch auch dann funktionieren, wenn das Codewort an einigen Stellen beschädigt wurde, das heißt, wenn sich das empfangene Wort von einem beliebigen Codewort unterscheidet. In diesem Fall kann ein lokales Dekodierungsverfahren helfen.

Verallgemeinerung auf größere Alphabete durch Polynome niederen Grades

Unter Verwendung von Polynomen niederen Grades über einem endlichen Körper der Größe ist es möglich, die Definition von Reed-Muller-Codes auf Alphabete der Größe auszudehnen . Seien und positive ganze Zahlen, wobei als größer als gedacht werden sollte . Um eine Nachricht der Breite zu codieren , wird die Nachricht wiederum als ein -variates Polynom höchstens Gesamtgrades und mit dem Koeffizienten von interpretiert . Ein solches Polynom hat tatsächlich Koeffizienten. Die Reed-Muller-Codierung von ist die Liste aller Auswertungen von over all . Somit ist die Blocklänge .

Beschreibung anhand einer Generatormatrix

Eine Generatormatrix für einen Reed-Muller-Code RM( r , m ) der Länge N = 2 m kann wie folgt konstruiert werden. Schreiben wir die Menge aller m -dimensionalen binären Vektoren als:

Wir definieren im N -dimensionalen Raum die

Indikatorvektoren

auf Teilmengen von:

zusammen mit, auch in , der binären Operation

als Keilprodukt bezeichnet (nicht zu verwechseln mit dem in der äußeren Algebra definierten Keilprodukt ). Hier und sind Punkte in ( N- dimensionale binäre Vektoren), und die Operation ist die übliche Multiplikation im Körper .

ist ein m- dimensionaler Vektorraum über dem Körper , also kann man schreiben

Wir definieren im N- dimensionalen Raum die folgenden Vektoren mit Länge und

wobei 1 ≤ i ≤ m , und die H i sind Hyperebene in (mit der Dimension m - 1 ):

Die Generatormatrix

Der Reed-Muller- RM( r , m ) -Code der Ordnung r und der Länge N  = 2 m ist der Code, der von v 0 und den Keilprodukten von bis zu r der v i , 1 ≤ im (wobei gemäß Konvention a Keilprodukt von weniger als einem Vektor ist die Identität für die Operation). Mit anderen Worten, wir können eine Generatormatrix für den RM( r , m ) -Code aufbauen , indem wir Vektoren und ihre Keilprodukt-Permutationen bis zu r gleichzeitig als Zeilen der Generatormatrix verwenden, wobei 1 i km ist .

Beispiel 1

Sei m = 3. Dann ist N = 8, und

und

Der RM(1,3)-Code wird von der Menge erzeugt

oder expliziter durch die Zeilen der Matrix:

Beispiel 2

Der RM(2,3)-Code wird von der Menge generiert:

oder expliziter durch die Zeilen der Matrix:

Eigenschaften

Es gelten folgende Eigenschaften:

  1. Die Menge aller möglichen Keilprodukte bis m der v i bilden eine Basis für .
  2. Der RM ( r , m ) Code hat Rang
  3. RM ( r , m ) = RM ( r , m − 1) | RM ( r − 1, m − 1) wobei '|' bezeichnet das Strichprodukt zweier Codes.
  4. RM ( r , m ) hat ein minimales Hamming-Gewicht 2 mr .

Nachweisen

  1. Es gibt

    solche Vektoren und haben die Dimension N, so dass es ausreichend ist zu überprüfen, ob sich die N Vektoren überspannen; entsprechend genügt es, dies zu überprüfen .

    Let x ein binärer Vektor der Länge m , ein Element von X . Sei ( x ) i das i- te Element von x . Definieren

    wobei 1 ≤ im .

    Dann

    Die Expansion über die Distributivität des Keilprodukts ergibt . Da sich die Vektoren aufspannen , haben wir dann .
  2. Nach 1 müssen alle diese Keilprodukte linear unabhängig sein, also muss der Rang von RM( r, m ) einfach die Anzahl solcher Vektoren sein.
  3. Ausgelassen.
  4. Durch Induktion.
    Der RM(0,  m ) Code ist der Wiederholungscode der Länge N  = 2 m und Gewicht N = 2 m −0 = 2 mr . Nach 1 und hat Gewicht 1 = 2 0 = 2 mr .
    Der Artikel Stangenprodukt (Codierungstheorie) liefert einen Beweis dafür, dass das Gewicht des Stangenprodukts zweier Codes C 1 , C 2 gegeben ist durch
    Wenn 0 < r < m und wenn
    1. RM( r , m  − 1) hat Gewicht 2 m −1− r
    2. RM( r  − 1, m  − 1) hat Gewicht 2 m −1−( r −1) = 2 mr
    dann hat das Riegelprodukt Gewicht

RM-Codes decodieren

RM( r , m )-Codes können unter Verwendung einer Majoritätslogik-Decodierung decodiert werden . Die Grundidee der Majoritätslogik-Decodierung besteht darin, für jedes empfangene Codewortelement mehrere Prüfsummen zu bilden. Da jede der verschiedenen Prüfsummen alle den gleichen Wert haben muss (dh den Wert des Nachrichtenwort-Elementgewichts), können wir eine Mehrheitslogik-Decodierung verwenden, um den Wert des Nachrichtenwort-Elements zu entschlüsseln. Sobald jede Ordnung des Polynoms decodiert ist, wird das empfangene Wort entsprechend modifiziert, indem die entsprechenden Codewörter, gewichtet durch die decodierten Nachrichtenbeiträge, bis zur gegenwärtigen Stufe entfernt werden. Für einen RM-Code r- ter Ordnung müssen wir also iterativ r+1 decodieren, bevor wir das letzte empfangene Codewort erreichen. Außerdem werden die Werte der Nachrichtenbits durch dieses Schema berechnet; schließlich können wir das Codewort berechnen, indem wir das (gerade decodierte) Nachrichtenwort mit der Generatormatrix multiplizieren.

Ein Hinweis darauf, ob die Decodierung erfolgreich war, besteht darin, am Ende der ( r  + 1)-Stufen-Decodierung durch die Majoritätslogik-Decodierung ein vollständig aus Nullen modifiziertes empfangenes Wort zu haben . Diese Technik wurde von Irving S. Reed vorgeschlagen und ist allgemeiner, wenn sie auf andere endliche Geometriecodes angewendet wird.

Beschreibung mit rekursiver Konstruktion

Ein Reed-Muller-Code RM( r,m ) existiert für beliebige ganze Zahlen und . RM( m , m ) ist als Universumscode ( ) definiert . RM(−1,m) ist als trivialer Code ( ) definiert. Die restlichen RM-Codes können aus diesen elementaren Codes unter Verwendung der Längenverdopplungskonstruktion konstruiert werden

Aus dieser Konstruktion ist RM( r,m ) ein binärer linearer Blockcode ( n , k , d ) mit Länge n  = 2 m , Dimension und Mindestabstand für . Der duale Code zu RM( r,m ) ist RM( mr– 1, m ). Dies zeigt, dass Wiederholungs- und SPC-Codes dual sind, biorthogonale und erweiterte Hamming-Codes dual sind und dass Codes mit k  =  n /2 selbstdual sind.

Sonderfälle von Reed-Müller-Codes

Tabelle aller RM(r,m)-Codes für m≤5

Alle RM( rm ) -Codes mit und Alphabetgröße 2 werden hier angezeigt, annotiert mit der standardmäßigen [n,k,d] -Codierungstheorie-Notation für Blockcodes . Der Code RM( rm ) ist ein -Code, das heißt, er ist ein linearer Code über einem binären Alphabet , hat Blocklänge , Nachrichtenlänge (oder Dimension) k und minimalen Abstand .

RM ( m, m )
( 2 m , 2 m , 1)
Universumscodes
RM(5,5)
(32,32,1)
RM(4,4)
(16,16,1)
RM( m  − 1,  m )
(2 m , 2 m − 1, 2)
SPC- Codes
RM(3,3)
(8,8,1)
RM(4,5)
(32,31,2)
RM(2,2)
(4,4,1)
RM(3,4)
(16,15,2)
RM( m  − 2, m )
(2 m , 2 mm −1, 4)
ext. Hamming-Codes
RM(1,1)
(2,2,1)
RM(2,3)
(8,7,2)
RM(3,5)
(32,26,4)
RM(0,0)
(1,1,1)
RM(1,2)
(4,3,2)
RM(2,4)
(16,11,4)
RM(0,1)
(2,1,2)
RM(1,3)
(8,4,4)
RM(2,5)
(32,16,8)
Selbst-Doppelcodes
RM(−1,0)
(1,0, )
RM(0,2)
(4,1,4)
RM(1,4)
(16,5,8)
RM(−1,1)
(2,0, )
RM(0,3)
(8,1,8)
RM(1,5)
(32,6,16)
RM(−1,2)
(4,0, )
RM(0,4)
(16,1,16)
RM(1, m )
(2 m , m +1, 2 m –1 )
Durchstochen Hadamard - Codes
RM(−1,3)
(8,0, )
RM(0,5)
(32,1,32)
RM(−1,4)
(16,0, )
RM(0, m )
(2 m , 1, 2 m )
Wiederholungscodes
RM(−1,5)
(32,0, )
RM(−1, m )
(2 m , 0, ∞)
triviale Codes

Eigenschaften von RM(r,m)-Codes für r≤1 oder r≥m-1

  • RM(0,  m ) -Codes sind Wiederholungscodes der Länge N  = 2 m , Geschwindigkeit und Mindestabstand .
  • RM(1,  m ) -Codes sind Paritätsprüfcodes der Länge N  = 2 m , der Rate und des minimalen Abstands .
  • RM( m  − 1,  m ) Codes sind einzelne Paritätsprüfcodes der Länge N  = 2 m , Rate und Mindestabstand .
  • RM( m  − 2,  m ) Codes sind die Familie der erweiterten Hamming-Codes der Länge N  = 2 m mit minimalem Abstand .

Verweise

Weiterlesen

Externe Links