3 Der Hamming-Code Hamming-Codes Ein binärer Code C heißt ein Hamming-Code Ha s, wenn seine Kontrollmatrix H als Spalten alle Elemente in Z 2 s je einmal hat. Die Parameter eines n-k-hamming-codes sind: n = 2 s -, k = n-s = 2 s -s-, min.distanz d=3 Die Hamming-Codes sind perfekte, -Fehler korrigierende Codes. Die Hamming-Codes mit demselben s unterscheiden sich nur durch eine Stellenpermutation. Ein Code mit den Parametern n = 2 s -, k =2 s -s-, min.distanz d=3 ist ein Hamming-Code. SS 22 Heinrich Werner: Codierungstheorie 3 3-2
Beispiele für Ha s Ha : n=3, k= ist der Repetitionscode R3 Ha 2 : n=7, k=5 ist das geometrische Beispiel aus Generator-Matrix: Kontrollmatrix Ha 3 : n=5, k=2 Ha 4 : n=3, k=27 Mit steigendem s werden die Informationsraten dieser Codes zwar deutlich besser (fast ), aber da sich die Länge der Worte bei gleichbleibender Korrekturrate jeweils verdoppelt, sind diese Codes immer schlechter nutzbar. SS 22 Heinrich Werner: Codierungstheorie 3 3-3 q-äre Hamming Codes Die Konstruktion des binären Hamming Codes läßt sich problemlos auch auf andere endliche Körper übertragen. Zwei Spalten über einem beliebigen Körper K sind linear unabhängig, wenn keine ein Vielfaches der anderen ist. Zu jeder möglichen Spalte x gibt es genau ein Vielfaches der Form (...) t oder (...) t ; Sprechweise: x hat führendem Koeffizient. Ein Hamming-Code Ha q,s über dem q-elementigen Körper K ist definiert durch eine s-zeilige Kontrollmatrix H, die als Spalten alle s-spalten mit führendem Koeffizient je einmal enthält. Die Parameter von Ha q,s sind: n = (q s -)/(q-), k = n-s =(q s -)/(q-)-s SS 22 Heinrich Werner: Codierungstheorie 3 3-4
Perfektheit von Ha q,s Auch die q-ären Hamming-Codes sind perfekt: Nach Konstruktion ist die minimale Distanz mindestens 3, da je zwei Spalten linear unabhängig sind und nicht als Spalte vorkommt. Der Code Ha q,s hat q n-s Codeworte Die Anzahl der Worte in der Kugel vom Radius um ein Codewort ist stets + (q-)n = + q s - = q s Die Kugeln vom Radius um die Codeworte sind also disjunkt und schöpfen den gesamten Coderaum K n aus, dies bedeutet, daß der Code perfekt -fehler-korrigierend ist. SS 22 Heinrich Werner: Codierungstheorie 3 3-5 Fehlerkorrektur bei Ha q,s Über K ist die -Fehlerkorrektur insofern etwas komplizierter, als nicht nur die Fehlerstelle i bestimmt werden muß, sondern an dieser Stelle auch der Betrag α des Fehlers. (c+αe i )H t liefert das α-fache der i-ten Spalte von H Fehlerkorrektur: Berechne das Syndrom des empfangenen Vektors x. Ist das Syndrom u=, so ist x das gesendete Codewort. Ist das Syndrom u, so ist der führende Koeffizient α der Fehlerbetrag und die Stelle i, an der α - u in H steht, ist die Fehlerstelle. Das Codewort x-αe i ist also das gesendete Wort. SS 22 Heinrich Werner: Codierungstheorie 3 3-6
höhere Fehlerzahlen Wie kann man zu einem Code kommen, der bessere Fehlerkorrektureigenschaften hat? Man verlängert den gegebenen Code durch hinzufügen neuer Kontrollstellen z.b. Verdopplung. Man reduziert die Anzahl der Codeworte durch Hinzufügen weiterer Kontrollgleichungen. Es ist offensichtlich, daß eine solche Veränderung systematisch geschehen muß, damit man die erreichten Fehlerkorrektureigenschaften nachweisen kann und ein passendes Fehlerkorrekturverfahren entwickeln kann. Die Kenntnis einer großen minimalen Distanz allein nützt wenig, wenn man kein passendes Korrekturverfahren hat. SS 22 Heinrich Werner: Codierungstheorie 3 3-7 Der binäre Hamming-Code Ha 2 Die Worte des Codes geordnet nach Gewicht: Der Hamming Code Ha 2 ist komplementär (d.h... ist im Code und damit auch alle Komplemente.. + c). Der Hamming Code Ha 2 ist zyklisch (d.h. zyklische Vertauschung der Stellen führt nicht aus dem Code heraus). Der Hamming Code Ha 2 ist nicht spiegelsymmetrisch (d.h. von hinten nach vorne lesen führt aus dem Code. SS 22 Heinrich Werner: Codierungstheorie 3 3-8
erweiterte Hamming Codes Bilden wir die parity-check-erweiterung Ha + eines Hamming-Codes Ha, so erhalten wir einen Code mit geraden Gewichten, also mit minimalem Gewicht 4. Er hat also die Parameter n=2 s, k=2 s -s, d=4. Tabelle Dieser Code hat den Vorteil, daß noch eine 2-Fehler Erkennung möglich ist, ohne daß diese fälschlich als ein anderer Einzelfehler interpretiert wird. SS 22 Heinrich Werner: Codierungstheorie 3 3-9 Symmetrisierung von Ha + Durch die zyklische Vertauschung ξ=(4,2,,3) der ersten vier Stellen von Ha + und der Gruppierung nach Gewicht der ersten 4 Stellen ergibt sich ein symmetrisches Bild: Bei den Elementen mit geradem Gewicht in beiden Hälften sind die Hälften gleich. Bei ungeradem Gewicht in der ersten Hälfte sind beide Hälften zueinander komplementär. Betrachten wir noch die Vertauschung υ der beiden Hälften, so besagt diese Beobachtung, daß für jedes c Ha + auch ξ - υξc Ha + ist, denn υξc = ξd für ein geeignetes d Ha +. ϕ =ξ - υξ ist die Transposition (,7)(2,5)(3,8)(4,6) der Stellen,..,8 Dies bedeutet, es gibt eine Stellenvertauschung ϕ, die nicht aus Ha + hinausführt, aber die vier hinteren Stellen auf die vorderen Stellen bringt. SS 22 Heinrich Werner: Codierungstheorie 3 3 -
Ha 2 + und sein Spiegelbild Wir betrachten die Spiegelung σ (von hinten nach vorn lesen) in dem Raum Z 27. Die beiden Codes Ha 2 + und σ(ha 2 ) + haben außer und kein Element gemeinsam. Denn streicht man die parity check Stelle aus einem gemeinsamen Wort, so muß ein gemeinsames Wort von Ha 2 und σ(ha 2 ) herauskommen, da kommt aber nur oder infrage. SS 22 Heinrich Werner: Codierungstheorie 3 3 - Golay-Code G 24 Der (erweiterte) Golay-Code G 24 besteht aus allen Worten der Form (a+x,a+b+x,b+x) mit a,b Ha + 2 und x σ(ha 2 ) +. Eine Basis erhalten wir aus den Vektoren (a,a,), (,b,b), (x,x,x), wobei a,b eine Basis von Ha + 2 und x eine Basis von σ(ha 2 ) + durchlaufen. Die Parameter von G 24 sind: n=24, k=2. wir zeigen noch: Jedes Wort von G 24 hat ein Gewicht, das durch 4 teilbar ist. Das minimale Gewicht von G 24 ist 8 Der Code G 24 ist 3-Fehler korrigierend SS 22 Heinrich Werner: Codierungstheorie 3 3-2
Generatormatrix für G 24 kann durch Zeilenumformungen überführt werden in: -----> Tabelle: SS 22 Heinrich Werner: Codierungstheorie 3 3-3 Das Gewicht einer Summe Für das Folgende benötigen wir die bitweise Multiplikation auf Z n 2,die ermittelt, wo beide Faktoren eine stehen haben: (x,...,x n ) (y,...,y n ) := (x * y,...,x n* y n ) zwei Summanden: (S) g(x+y) = g(x) + g(y) - 2g(x y) denn zählt man alle Stellen, an denen x oder y eine haben, so zählt man jede Stelle, wo beide eine haben doppelt, obwohl sie garnicht gezählt werden sollten. drei Summanden: (S2) g(x+y+z) = g(x) + g(y) + g(z) - 2g(x y) - 2g(x z) - 2g(y z) + 4g(x y z) denn die Stellen, wo x,y,z -en haben werden 3x gezählt und 6x wieder abgezogen, sollten aber x gezählt werden. SS 22 Heinrich Werner: Codierungstheorie 3 3-4
Gewichte in G 24 Jedes Wort in G 24 schreibt sich als Summe (a,a,) + (,b,b) + (x,x,x) (a,a,) (x,x,x) = (a x,a x,) hat gerades Gewicht. (,b,b) (x,x,x) = (,b x,b x) hat gerades Gewicht. (a,a,) (,b,b) = (,a b,) hat gerades Gewicht, denn 2g(a b) = g(a+b) - g(a) -g(b) (alle durch 4 teilbar). Damit hat die Summe ein durch 4 teilbares Gewicht. Gewicht 4 ist unmöglich, denn nach (S) haben a+x, b+x, a+b+x alle gerades Gewicht, also müßte eines davon sein, was wieder x= oder x= nach sich zieht. Dann haben aber alle 3 Teile Gewicht, 4 oder 8, was 2 der Teile zu macht. Dies bedeutet a=b=x oder a=a+b=x oder b=a+b=x was den Teil zu x= vom Gewicht 8 macht. SS 22 Heinrich Werner: Codierungstheorie 3 3-5 Fehlerkorrektur in G 24 Fall : das ankommende Wort w hat höchstens einen Fehler in den ersten 2 Stellen: Addiere die i-te Zeile t i der Tabelle zu w, wenn w i = ist (i=,..,7,9,..,2) Ist w 8 = und hat w oder w+t 8 das Gewicht < 4, so ist dies das Fehlerwort (alle Fehler in der zweiten Hälfte) ist w 8 = und hat eines der Worte w+t i oder w+t i +t 8 (i=,..,2) das Gewicht < 4, so ist dies das Fehlerwort (ein Fehlere in der ersten Hälfte und die restlichen in der zweiten Hälfte. Fall 2: das ankommende Wort w hat höchstens einen Fehler in den zweiten 2 Stellen: Vertausche die ersten und die letzten 8 Stellen und dann in jedem der 3 8-Tupel die beiden Hälften mit der Transposition ϕ. Das Resultat w kann nun wie oben behandelt werden. Nach der Korrektur muß die Stellenvertauschung rückgängig gemacht werden. SS 22 Heinrich Werner: Codierungstheorie 3 3-6
Der Golay Code G 23 Der Code G 24 mit seinen geraden Gewichten kann als parity check Erweiterung eines Codes G 23 aufgefaßt werden, G 23 entsteht aus G 24 durch Streichen der letzten Spalte. Der Golay-Code G 23 hat die Parameter n=23, k=2 und min. Distanz d=7 Der Golay-Code G 23 ist perfekt 3-Fehler korrigierend. Denn die Kugeln vom Radius 3 um jedes Codewort haben die Elementezahl: 23 23 23 23 ( )+( )+( )+( ) = + 23 + 23* + 23**7 = 2 3 + 23 + 253 + 77 = 248 = 2 Eine 3-Fehler Korrektur kann durch das Anfügen eines parity checks und dem Verfahren von G 24 realisiert werden. SS 22 Heinrich Werner: Codierungstheorie 3 3-7