§3 Der Hamming-Code Hamming

Transcription

§3 Der Hamming-Code Hamming
§3 Der Hamming-Code
1
0
0
1
0
1
1
0
0
1
0
0 1 1
0 1 1
0 1 0
0 0 1
0
0
0
0
0
Hamming-Codes
• Ein binärer Code C heißt ein Hamming-Code Has,
wenn seine Kontrollmatrix H als Spalten alle
Elemente ≠0 in Z2s je einmal hat.
• Die Parameter eines n-k-Hamming-Codes sind:
n = 2s-1 , k = n-s = 2s-s-1 , min.Distanz d=3
• Die Hamming-Codes sind perfekte, 1-Fehler
korrigierende Codes.
• Die Hamming-Codes mit demselben s unterscheiden sich nur durch eine Stellenpermutation.
• Ein Code mit den Parametern n = 2s-1 , k =2s-s-1 ,
min.Distanz d=3 ist ein Hamming-Code.
SS 2002
Heinrich Werner: Codierungstheorie §3
3-2
Beispiele für Has
• Ha1 : n=3, k=1 ist der Repetitionscode R3
• Ha2 : n=7, k=5 ist das geometrische Beispiel aus §0
Generator-Matrix: 1000110
0100011
0010111
0001101
Kontrollmatrix 1011100
1110010
0111001
• Ha3 : n=15, k=12
• Ha4 : n=31, k=27
• Mit steigendem s werden die Informationsraten dieser
Codes zwar deutlich besser (fast 1), aber da sich die Länge
der Worte bei gleichbleibender Korrekturrate jeweils
verdoppelt, sind diese Codes immer schlechter nutzbar.
SS 2002
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≠0 gibt es genau ein Vielfaches
der Form (1...)t oder (0..01...)t ;
Sprechweise: x hat führendem Koeffizient 1.
• Ein Hamming-Code Haq,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 1 je einmal
enthält.
• Die Parameter von Haq,s sind:
n = (qs-1)/(q-1) , k = n-s =(qs-1)/(q-1)-s
SS 2002
Heinrich Werner: Codierungstheorie §3
3-4
Perfektheit von Haq,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 0 nicht als
Spalte vorkommt.
Der Code Haq,s hat qn-s Codeworte
Die Anzahl der Worte in der Kugel vom Radius 1 um ein
Codewort ist stets 1 + (q-1)n = 1+ qs-1 = qs
Die Kugeln vom Radius 1 um die Codeworte sind also
disjunkt und schöpfen den gesamten Coderaum Kn aus,
dies bedeutet, daß der Code perfekt 1-fehler-korrigierend
ist.
SS 2002
Heinrich Werner: Codierungstheorie §3
3-5
Fehlerkorrektur bei Haq,s
• Über K ist die 1-Fehlerkorrektur insofern etwas komplizierter,
als nicht nur die Fehlerstelle i bestimmt werden muß,
sondern an dieser Stelle auch der Betrag α des Fehlers.
• (c+αei)Ht liefert das α-fache der i-ten Spalte von H
• Fehlerkorrektur:
– Berechne das Syndrom des empfangenen Vektors x.
– Ist das Syndrom u=0, so ist x das gesendete Codewort.
– Ist das Syndrom u≠
≠0, so ist der führende Koeffizient α
der Fehlerbetrag und die Stelle i, an der α-1u in H steht,
ist die Fehlerstelle. Das Codewort x-αei ist also das
gesendete Wort.
SS 2002
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 2002
Heinrich Werner: Codierungstheorie §3
3-7
Der binäre Hamming-Code Ha2
• Die Worte des Codes geordnet nach Gewicht:
0000000
0001101
1000110
0100011
1010001
1101000
0110100
0011010
1111111
1110010
0111001
1011100
0101110
0010111
1001011
1100101
• Der Hamming Code Ha2 ist komplementär (d.h. 111..1 ist im
Code und damit auch alle Komplemente 111..1 + c).
• Der Hamming Code Ha2 ist zyklisch (d.h. zyklische
Vertauschung der Stellen führt nicht aus dem Code heraus).
• Der Hamming Code Ha2 ist nicht spiegelsymmetrisch (d.h.
von hinten nach vorne lesen führt aus dem Code.
SS 2002
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=2s, k=2s-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 2002
0
0
0
0
1
1
0
1
1
1
1
0
0
1
0
1
0
0
0
1
1
0
1
0
1
1
0
0
1
0
1
1
0
0
1
1
0
1
0
0
1
0
0
1
0
1
1
1
0
1
1
0
1
0
0
0
0
0
1
0
1
1
1
1
0
1
0
1
0
0
0
1
0
1
0
1
1
1
0
1
0
0
1
0
0
0
1
1
1
0
1
1
1
0
0
1
Heinrich Werner: Codierungstheorie §3
0
1
0
0
0
1
1
0
0
1
1
1
0
0
1
1
0
1
1
1
1
1
1
1
0
0
0
0
0
0
0
1
3-9
Symmetrisierung von Ha+
• Durch die zyklische Vertauschung ξ=(4,2,1,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 ξ-1υξc∈Ha+ ist,
denn υξc = ξd für ein geeignetes d∈Ha+ .
ϕ =ξ-1υξ ist die Transposition (1,7)(2,5)(3,8)(4,6)
der Stellen 1,..,8
• Dies bedeutet, es gibt eine Stellenvertauschung
ϕ , die nicht aus Ha+ hinausführt, aber die vier
hinteren Stellen auf die vorderen Stellen bringt.
SS 2002
0
0
0
1
0
0
1
0
1
0
1
0
1
1
1
1
Heinrich Werner: Codierungstheorie §3
0
1
0
0
0
1
0
0
0
1
1
1
0
1
1
1
0
0
0
0
1
0
0
1
1
1
0
1
1
0
1
1
0
0
1
0
0
1
1
1
0
0
0
1
1
1
0
1
0
1
1
0
1
0
1
0
1
0
1
1
0
0
0
1
0
0
1
1
1
1
0
0
0
1
1
0
1
0
0
1
0
1
1
1
0
0
0
1
1
1
0
0
0
1
0
1
0
1
0
1
1
1
1
1
0
0
0
0
0
0
1
1
3 - 10
Ha2+ und sein Spiegelbild
• Wir betrachten die Spiegelung σ (von hinten nach vorn
lesen) in dem Raum Z27.
• Die beiden Codes Ha2+ und σ(Ha2)+ haben außer
00000000 und 11111111 kein Element gemeinsam.
Denn streicht man die parity check Stelle aus einem
gemeinsamen Wort, so muß ein gemeinsames Wort von
Ha2 und σ(Ha2) herauskommen, da kommt aber nur
0000000 oder 1111111 infrage.
SS 2002
Heinrich Werner: Codierungstheorie §3
3 - 11
Golay-Code G24
• Der (erweiterte) Golay-Code G24 besteht aus allen Worten
der Form (a+x,a+b+x,b+x) mit a,b∈Ha2+ und x∈σ(Ha2)+ .
• Eine Basis erhalten wir aus den Vektoren (a,a,0), (0,b,b),
(x,x,x), wobei a,b eine Basis von Ha2+ und x eine Basis
von σ(Ha2)+ durchlaufen.
• Die Parameter von G24 sind: n=24, k=12.
wir zeigen noch:
• Jedes Wort von G24 hat ein Gewicht, das durch 4 teilbar ist.
• Das minimale Gewicht von G24 ist 8
• Der Code G24 ist 3-Fehler korrigierend
SS 2002
Heinrich Werner: Codierungstheorie §3
3 - 12
Generatormatrix für G24
10001101 10001101 00000000
01000111 01000111 00000000
00101110 00101110 00000000
00011011 00011011 00000000
01100011 01100011 01100011
11000101 11000101 11000101
11101000 11101000 11101000
10110001 10110001 10110001
00000000 10001101 10001101
00000000 01000111 01000111
00000000 00101110 00101110
00000000 00011011 00011011
kann durch Zeilenumformungen
überführt werden in: ----->
SS 2002
• Tabelle:
• 10000001 00001100 01100101
01000001 10001011 01000001
00100001 00001111 11101011
00010001 00001010 01100000
00001001 00000011 01001110
00000101 00000101 10100110
00000011 00000011 00101101
00000000 00000000 11111111
00000000 10001101 10001101
00000000 01000111 01000111
00000000 00101110 00101110
00000000 00011011 00011011
Heinrich Werner: Codierungstheorie §3
3 - 13
Das Gewicht einer Summe
• Für das Folgende benötigen wir die bitweise Multiplikation
auf Z2n ,die ermittelt, wo beide Faktoren eine 1 stehen
haben:
(x1,...,xn)∧(y1,...,yn) := (x1*y1,...,xn*yn)
• zwei Summanden:
(S1)
g(x+y) = g(x) + g(y) - 2g(x∧y)
denn zählt man alle Stellen, an denen x oder y eine 1 haben,
so zählt man jede Stelle, wo beide eine 1 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 1-en haben werden 3x gezählt
und 6x wieder abgezogen, sollten aber 1x gezählt werden.
SS 2002
Heinrich Werner: Codierungstheorie §3
3 - 14
Gewichte in G24
• Jedes Wort in G24 schreibt sich als Summe
(a,a,0) + (0,b,b) + (x,x,x)
• (a,a,0)∧(x,x,x) = (a∧x,a∧x,0) hat gerades Gewicht.
(0,b,b)∧(x,x,x) = (0,b∧x,b∧x) hat gerades Gewicht.
(a,a,0)∧(0,b,b) = (0,a∧b,0) 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 (S1) haben a+x, b+x,
a+b+x alle gerades Gewicht, also müßte eines davon 0 sein,
was wieder x=0 oder x=1 nach sich zieht. Dann haben aber
alle 3 Teile Gewicht 0, 4 oder 8, was 2 der Teile zu 0 macht.
Dies bedeutet a=b=x oder a=a+b=x oder b=a+b=x was den
Teil ≠0 zu x=1 vom Gewicht 8 macht.
SS 2002
Heinrich Werner: Codierungstheorie §3
3 - 15
Fehlerkorrektur in G24
• Fall 1: das ankommende Wort w hat höchstens einen
Fehler in den ersten 12 Stellen:
– Addiere die i-te Zeile ti der Tabelle zu w, wenn wi=1 ist (i=1,..,7,9,..,12)
– Ist w8=0 und hat w oder w+t8 das Gewicht < 4, so ist dies das Fehlerwort
(alle Fehler in der zweiten Hälfte)
– ist w8=1 und hat eines der Worte w+ti oder w+ti+t8 (i=1,..,12) 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 12 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 2002
Heinrich Werner: Codierungstheorie §3
3 - 16
Der Golay Code G23
• Der Code G24 mit seinen geraden Gewichten kann als parity
check Erweiterung eines Codes G23 aufgefaßt werden,
G23 entsteht aus G24 durch Streichen der letzten Spalte.
• Der Golay-Code G23 hat die Parameter
n=23, k=12 und min. Distanz d=7
• Der Golay-Code G23 ist perfekt 3-Fehler korrigierend.
Denn die Kugeln vom Radius 3 um jedes Codewort
haben die Elementezahl:
(23
)+(23
)+(23
)+( 23
) = 1 + 23 + 23*11 + 23*11*7 =
0
1
2
3
1 + 23 + 253 + 1771 = 2048 = 211
• Eine 3-Fehler Korrektur kann durch das Anfügen eines
parity checks und dem Verfahren von G24 realisiert werden.
SS 2002
Heinrich Werner: Codierungstheorie §3
3 - 17

Documents pareils