Für wen soll die Seite passen? Alles hier ist kostenlos.

Kostenlos für Ihren Unterricht: Arbeitsblätter, Aufgaben, Texte und Grafiken ohne Rückfrage kopieren, anpassen und an die Klasse weitergeben (Bedingungen).

Im Unterricht ohne Werbung: Unterrichtsansicht Mehr für Lehrkräfte

Mathematik lernen · Studium

Endliche Körper und Codierungs­theorie: Hamming und Reed-Solomon

Wie findet ein Rechner ein einzelnes gekipptes Bit in einer Nachricht und korrigiert es? Die Antwort liefern endliche Körper. Du lernst sie zu konstruieren, rechnest mit ihnen und baust daraus fehlerkorrigierende Codes wie den Hamming-Code.

Beim Übertragen und Speichern kippen manchmal einzelne Bits: durch Rauschen im Funk, durch einen Kratzer auf einer CD, durch einen Fehler im Arbeitsspeicher. Ein fehlerkorrigierender Code fügt der Nachricht gezielt Redundanz hinzu, sodass der Empfänger Fehler nicht nur bemerkt, sondern behebt. Die Mathematik dahinter sind lineare Algebra und endliche Körper, also Körper mit nur endlich vielen Elementen.

Auf dieser Seite lernst du, wie man mit endlichen Körpern rechnet, wie man sie konstruiert und wie daraus Codes entstehen. Die Grundlagen stehen in Ringe und Körper und in der modularen Arithmetik. Die tiefere Struktur erklärt die Galois-Theorie.

Primkörper

Der Restklassenring ℤn ist ein Körper genau dann, wenn n eine Primzahl ist. Beweis. Ist n=ab mit 1<a,b<n, dann ist a·b=0 in ℤn, und ein Körper hat keine Nullteiler. Ist p prim und a≢0, dann ist ggT(a,p)=1, und der erweiterte euklidische Algorithmus liefert s,t mit sa+tp=1, also s·a≡1(modp): Das Inverse existiert. □ Für 𝔽7 ist zum Beispiel 3−1=5, denn 15=2·7+1.

In einem endlichen Körper K ist 1+1+…+1 irgendwann 0. Die kleinste Anzahl p von Einsen, die 0 ergibt, heißt die Charakteristik, und sie ist eine Primzahl: Ein Produkt p=ab würde Nullteiler erzeugen. Damit enthält K den Körper 𝔽p und ist ein Vektorraum über 𝔽p. Hat dieser Vektorraum die Dimension n, dann hat K genau pn Elemente.

Körper mit pn Elementen

Die Rechenregeln in ℤ4 passen nicht zu einem Körper (2·2=0). Einen Körper mit 4 Elementen erhältst du anders: Nimm 𝔽2={0,1} und das Polynom f(x)=x2+x+1. Es hat keine Nullstelle in 𝔽2 (f(0)=1, f(1)=1) und ist deshalb irreduzibel. Rechne mit Polynomen modulo f: Sei α die „Nullstelle“ von f, also α2=α+1. Der Körper 𝔽4={0,1,α,α+1} hat die Rechenregel 1+1=0 und die folgende Multiplikationstabelle.

Multiplikation in 𝔽4 (mit β=α+1)
·1αβ
11αβ
ααβ1
ββ1α

Es ist α·α=α+1=β und α·β=α2+α=(α+1)+α=1. Jedes Element außer 0 hat ein Inverses, und α erzeugt die multiplikative Gruppe: α,α2=β,α3=1.

Existenz und Eindeutigkeit beweist man mit Zerfällungskörpern: 𝔽q ist der Zerfällungskörper von xq−x über 𝔽p und besteht genau aus den Nullstellen dieses Polynoms. Weil 𝔽q∗ eine endliche Untergruppe der Einheiten eines Körpers ist, ist sie zyklisch. Ein erzeugendes Element heißt primitives Element. In 𝔽7∗ ist 3 primitiv: 31,…,36=3,2,6,4,5,1. Wichtig ist auch die Frobenius-Abbildung x↦xp. Weil p alle Binomialkoeffizienten (pk) mit 0<k<p teilt, gilt (a+b)p=ap+bp in Charakteristik p. Sie ist ein Automorphismus von 𝔽q und erzeugt dessen Galoisgruppe über 𝔽p, die zyklisch von der Ordnung n ist.

Ein Körper mit 8 Elementen entsteht mit f(x)=x3+x+1 über 𝔽2, denn ein Polynom vom Grad 3 ist genau dann irreduzibel, wenn es keine Nullstelle hat, und f(0)=f(1)=1. Die Elemente sind die Polynome a+bx+cx2 mit a,b,c∈{0,1}, und man rechnet mit x3=x+1.

Anzeige

Fehlerkorrigierende Codes

Ein Code ist eine Menge C von Wörtern der Länge n über einem Alphabet, meist 𝔽2 oder 𝔽q. Der Sender verschickt nur Codewörter. Die Hamming-Distanz d(x,y) ist die Zahl der Positionen, an denen sich x und y unterscheiden, und die Mindestdistanz d des Codes ist die kleinste Distanz zweier verschiedener Codewörter.

Beweis. Wird ein Codewort an höchstens d−1 Stellen verändert, entsteht kein anderes Codewort. Der Fehler fällt also auf. Die Kugeln mit Radius t um verschiedene Codewörter sind disjunkt, denn läge ein Wort z in zwei Kugeln um c≠c′, dann wäre d(c,c′)≤d(c,z)+d(z,c′)≤2t<d nach der Dreiecksungleichung der Hamming-Distanz. Ein Wort in einer Kugel hat deshalb ein eindeutiges nächstes Codewort. □

Das einfachste Beispiel ist der Wiederholungscode: Jedes Bit wird dreimal gesendet, 0↦000 und 1↦111. Die Mindestdistanz ist 3, ein Fehler wird per Mehrheit korrigiert. Der Preis: Für ein Datenbit werden drei Bits übertragen, die Rate ist nur 13. Gesucht sind Codes mit großer Distanz und hoher Rate.

Lineare Codes

Ein linearer Code der Länge n und Dimension k ist ein k-dimensionaler Unterraum C von 𝔽qn. Er hat qk Codewörter, man nennt ihn einen [n,k,d]-Code. Man beschreibt ihn durch eine Prüfmatrix H mit n−k Zeilen: c∈C genau dann, wenn Hc⊤=0. Für ein empfangenes Wort y ist s=Hy⊤ das Syndrom. Es ist 0 genau dann, wenn y ein Codewort ist. Die Mindestdistanz eines linearen Codes ist das kleinste Gewicht (Zahl der von 0 verschiedenen Stellen) eines Codeworts ≠0, und sie ist die kleinste Zahl von Spalten von H, die linear abhängig sind.

Der Hamming-Code

Richard Hamming ordnete die Spalten der Prüfmatrix so an, dass die Spalte j die Zahl j im Dualsystem ist, für j=1,…,7:

H=(000111101100111010101).

Die sieben Spalten sind alle von 0 verschiedenen Vektoren aus 𝔽23. Je zwei Spalten sind verschieden, also unabhängig, aber drei sind abhängig, zum Beispiel (0,0,1)+(0,1,0)=(0,1,1). Daher ist d=3, und der Code [7,4,3] hat 24=16 Codewörter. Er korrigiert jeden Einzelfehler: Das Syndrom ist die Binärzahl der Fehlerposition.

Der Hamming-Code ist perfekt: Die Kugeln mit Radius 1 um die 16 Codewörter enthalten je 1+7=8 Wörter, und 16·8=128=27 füllt den ganzen Raum aus. Jedes empfangene Wort ist daher entweder ein Codewort oder hat genau ein Codewort im Abstand 1. Der Hamming-Code nutzt 4 von 7 Bits für Daten, die Rate ist 47, deutlich besser als beim Wiederholungscode. Hängt man ein weiteres Paritätsbit an, erhält man den erweiterten Hamming-Code mit d=4: Er korrigiert einen und erkennt zwei Fehler, wie im Arbeitsspeicher von Servern.

Reed-Solomon-Codes

Die Idee: Ein Polynom vom Grad kleiner als k ist durch k Werte festgelegt. Man fasst k Datensymbole aus 𝔽q als Koeffizienten eines Polynoms p auf und sendet seine Werte p(a1),…,p(an) an n≤q verschiedenen Stellen ai∈𝔽q. Zwei verschiedene Polynome vom Grad kleiner als k haben höchstens k−1 gemeinsame Werte, denn ihre Differenz hat höchstens k−1 Nullstellen. Deshalb unterscheiden sich zwei Codewörter an mindestens n−k+1 Stellen, und die Mindestdistanz ist d=n−k+1. Das ist der größtmögliche Wert (Singleton-Schranke), die Codes sind „optimal“. Sie korrigieren ⌊n−k2⌋ Fehler. Weil sie Symbolfehler korrigieren und nicht einzelne Bits, bewältigen sie auch Bündelfehler wie einen Kratzer auf einer CD.

Irving Reed und Gustave Solomon beschrieben die Codes 1960 in der Arbeit „Polynomial Codes over Certain Finite Fields“. Sie stecken in CDs und DVDs, in DSL, im digitalen Fernsehen und in QR-Codes. Dasselbe Prinzip steht hinter dem Teilen von Geheimnissen: Ein Polynom vom Grad k−1 wird durch k Punkte festgelegt, aber nicht durch weniger.

Anzeige

Endliche Körper in der Kryptographie

Das Potenzieren in 𝔽p∗ ist leicht, das Umkehren (der diskrete Logarithmus) im Allgemeinen schwer. Darauf beruht der Schlüsselaustausch nach Diffie und Hellman: Zwei Parteien einigen sich auf eine Primzahl p und ein primitives Element g, wählen geheime Zahlen a und b und tauschen ga und gb aus. Beide berechnen gab. Weiteres steht auf der Seite Kryptologie.

Übungen

Anzeige

Geschichte: von Galois zur Compact Disc

Évariste Galois verwendete 1830 „imaginäre“ Lösungen von Kongruenzen modulo einer Primzahl und konstruierte damit die endlichen Körper 𝔽pn mit pn Elementen. Eliakim Hastings Moore bewies 1893, dass es zu jeder Primzahlpotenz bis auf Isomorphie genau einen endlichen Körper gibt, und führte den Namen „Galois field“ ein. Die Anwendung auf die Fehlerkorrektur begann nach dem Zweiten Weltkrieg. Claude Shannon zeigte 1948 in „A Mathematical Theory of Communication“, dass sich mit geeigneten Codes jede Übertragungsrate unterhalb der Kanalkapazität mit beliebig kleiner Fehlerwahrscheinlichkeit erreichen lässt. Sein Beweis war nicht konstruktiv, er sagte nicht, wie die Codes aussehen. Richard Hamming entwickelte sein Verfahren bei den Bell Labs, weil der Rechner Bell Model V Fehler beim Lesen von Lochkarten selbst beheben sollte, und veröffentlichte es 1950. Reed und Solomon folgten 1960. Heute stecken beide Ideen in Speicherchips, Satellitenverbindungen, CDs und QR-Codes.

Häufige Fragen

Gibt es einen Körper mit 6 Elementen?

Nein. Die Elementzahl eines endlichen Körpers ist immer eine Primzahlpotenz, und 6=2·3 ist keine.

Wozu braucht man 𝔽256?

Ein Byte hat 8 Bits, also 256 mögliche Werte. In 𝔽256=𝔽2[x]/(f) mit einem irreduziblen Polynom vom Grad 8 lässt sich jedes Byte als Körperelement auffassen, und man kann Bytes addieren, multiplizieren und teilen. Das nutzen Reed-Solomon-Codes und die Verschlüsselung AES.

Warum nimmt man nicht einfach den Wiederholungscode?

Er korrigiert zwar, aber seine Rate ist niedrig: Für ein Datenbit werden drei übertragen. Der Hamming-Code liefert bei gleicher Korrekturleistung eine Rate von 47.

Quellen und weiterführende Literatur

Anzeige

Fehler entdeckt oder einen Wunsch? Schreib uns eine kurze Nachricht, wir kümmern uns darum.

Fehler entdeckt oder einen Wunsch?

Deine Nachricht zur Seite „Endliche Körper und Codierungstheorie: Hamming und Reed-Solomon“. Die Adresse der Seite schicken wir automatisch mit.

Bitte schreib keine weiteren persönlichen Daten hinein. Mehr dazu im Datenschutz.