Skript zur Vorlesung Signale und Codes

Werbung
Skript zur Vorlesung
Signale und Codes
Oktober 2012
Inhaltsverzeichnis
1 Einleitung
2
2 Informationstheorie
2.1 Entropie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.2 AEP, Datenkompression und Shannons Source-Coding-Theorem
2.3 Kanalkapazität und Shannons Noisy-Channel-Theorem . . . .
2.3.1 Beispiele von Kanälen . . . . . . . . . . . . . . . . . .
2.3.2 Codes . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.3.3 Gemeinsam typische Folgen . . . . . . . . . . . . . . .
2.3.4 Das Coding-Theorem . . . . . . . . . . . . . . . . . .
2
3
4
7
7
8
9
10
3 Codierungstheorie
3.1 Block-Codes . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.2 Lineare Codes . . . . . . . . . . . . . . . . . . . . . . . . . .
3.2.1 Syndromdecodierung . . . . . . . . . . . . . . . . . .
3.2.2 Hamming-Codes . . . . . . . . . . . . . . . . . . . .
3.2.3 Majority-Logic-Decoding . . . . . . . . . . . . . . .
3.2.4 Weight-Enumeratives . . . . . . . . . . . . . . . . .
3.2.5 Golay-Codes . . . . . . . . . . . . . . . . . . . . . .
3.2.6 Reed-Muller-Codes . . . . . . . . . . . . . . . . . . .
3.2.7 Schranken für Codes . . . . . . . . . . . . . . . . . .
3.3 Zyklische Codes . . . . . . . . . . . . . . . . . . . . . . . . .
3.3.1 Bose-Chaudhuri-Hocquenghem-Codes (BCH-Codes)
3.3.2 Reed-Solomon-Codes . . . . . . . . . . . . . . . . . .
12
12
14
15
15
16
17
18
21
22
23
28
29
1
.
.
.
.
.
.
.
.
.
.
.
.
1
Einleitung
Jeder Kommunikationskanal unterliegt unvorhersehbaren Störungen, die man
in der Praxis überwinden möchte. Dazu können einerseits im Einzelfall die
jeweiligen Komponenten des Systems verbessert werden (größere Antenne,
höhere Sendeleistung, höherwertige Komponenten, . . . ) oder andererseits
an einem systematischen Lösungsansatz gearbeitet werden. Hierbei kommen codierungs- und informationstheoretische Techniken zum Einsatz, die
die Qualität eines Kanals verbessern. Man ergänzt einen Kanal um Encoder
und Decoder, um systeminherente Fehler so gut wie möglich zu korrigieren.
Der Encoder fügt einer Nachricht Redundanz hinzu. Der Decoder regeneriert
aus einem gestörten, redundanten Signal wieder das ursprüngliche Signal.
• Informationstheorie befasst sich mit den theoretischen Grenzen und
Möglichkeiten der eben beschriebenen Systeme.
• Codierungstheorie befasst sich mit dem tatsächlichen Entwurf von
Encoder-Decoder-Verfahren für solche Kanäle. Sie findet darüber hinaus in der Komplexitätstheorie (Average-Case Hardness, Beweis für
IP = PSPACE) und der Kryptographie (McEliece Kryptosystem, Sicherstellung von ehrlichen Verhalten bei Mehrparteienberechnungen)
Anwendung.
2
Informationstheorie
Quellen/Signale modellieren wir als diskrete Zufallsvariablen X, Y, . . . über
Alphabeten X , Y, . . . (üblicherweise {0, 1}n ). Dadurch wird modelliert, dass
ein Empfänger eines Signals kein vollständiges Wissen über diese Nachricht
hat. Er ist also überrascht von diesem Signal. Bei deterministischen Prozessen (Empfänger kennt bereits die Nachricht) kann man die Kommunikation
komplett sparen.
2
2.1
Entropie
Definition 1 (Information, Üúberraschung). Sei X eine Zufallsvariable
gegeben durch eine Wahrscheinlichkeits-Masse-Verteilung p(x) = P r[X =
x], x ∈ X . Wir bezeichnen
I(x) = − log(p(x))
als die Information/Üúberraschung eines Zeichens x.
Definition 2 ((Shannon-)Entropie). Die (Shannon-)Entropie einer Zufallsvariable X ist definiert durch
X
H(X) = −
p(x) · log(p(x)) = IE[I(x)].
x∈X
Die Pseudoeinheit für H(X) heißt Bits. Ist Xn ein zeitinvarianter (stationärer) Prozess, bei dem alle Xi unabhängig identisch verteilt sind, dann
bezeichnet H(Xn ) die Rate des Prozesses und wird in Bits pro Zeiteinheit
angegeben.
Definition 3 (Verbundentropie). Die Verbundentropie zweier Zufallsvariablen X und Y ist definiert als die Entropie der Zufallsvariable (X, Y ), also
XX
H(X, Y ) = −
p(x, y) · log(p(x, y)).
x∈X y∈Y
Definition 4 (Bedingte Entropie). Die bedingte Entropie ist definiert durch
X
XX
H(X|Y ) = −
p(y) · H(X|Y = y) = −
p(x, y) · log(p(x|y)).
y∈Y
x∈X y∈Y
Definition 5 (Transinformation, gemeinsame Information). Die Transinformation/gemeinsame Information I(X; Y ) gibt an, um wie viele Bits sich
die Entropie von X verringert, wenn man Y lernt. Sie ist gegeben durch
I(X; Y ) = H(X) − H(X|Y ) =
XX
x∈X y∈Y
p(x, y) · log(
p(x, y)
).
p(x) · p(y)
Eigenschaften der Entropie
1. 0 ≤ H(X) ≤ log(|X|), wobei die erste Gleichheit gilt, wenn für ein xi
p(xi ) = 1 gilt. Die zweite Gleichheit, wenn X auf X gleichverteilt ist.
3
Beweis. Wir benutzen Jensens Ungleichung für konkave Funktionen:
H(X) − log |X | =
X
=
X
p(x) log
1
− log |X |
p(x)
p(x) log
1
p(x)|X |
x
x
1
)
p(x)|X |
1
≤ log IE(
)
p(x)|X |
X
1
= log
p(x)
p(x)|X
|
x
X
1
= log
p(x)
|X
|
x
= IE(log
= log(1)
= 0
2. H(X, Y ) = H(X) + H(Y |X)
3. H(X, Y |Z) = H(X|Z) + H(Y |X, Z)
4. 0 ≤ I(X; Y ) = I(Y ; X)
5. I(X; Y ) = H(X) − H(X|Y ) = H(Y ) − H(Y |X) = H(X) + H(Y ) −
H(X, Y )
2.2
AEP, Datenkompression und Shannons Source-CodingTheorem
Wir interessieren uns dafür, wie sich bei häufiger Wiederholung eines Zufallsexperiments Vorhersagen über die Gesamtmessung machen lassen. Sei
4
X eine Zufallsvariable, X1 , . . . , Xn identisch, unabhängig verteilt mit p(x).
Dann ist die Wahrscheinlichkeit,
dass wir Messfolge (x1 , . . . , xn ) messen
Qn
p(x1 , . . . , xn ) = i=0 p(xi ). Man sieht, dass nicht alle Tupel gleiche Auftrittswahrscheinlichkeit haben. Man kann jedoch die Auftrittswahrscheinlichkeit der Folge, die man messen wird, vorhersagen; d.h. die Zufallsvariable p(X1 , . . . , Xn ) schätzen. Es wird sich zeigen, dass p(X1 , . . . , Xn ) für
wachsendes n nahe an 2−n·H(X) liegt.
Satz 1 (Asymptotische Äquipartitionsprinzip (AEP)). Sind X1 , . . . , Xn identisch, unabhängig verteilt, dann konvergiert − n1 ·log(p(X1 , . . . , Xn )) → H(X)
in der Wahrscheinlichkeit. Genauer:
1
· log(p(X1 , . . . , Xn )) − H(X)| > ] → 0 für n → ∞
n
P
Beweis. Es ist − n1 log(p(X1 , . . . , Xn )) = − n1 ni=1 log(p(Xi )). Das schwache Gesetz der großen Zahlen besagt nun, dass
P r[| −
1
1X
log
− H(X)| > ]
n
p(Xi )
1X
1
1
P r[| −
log
− IE(log
)| > ]
n
p(Xi )
p(x)
1
V ar(log p(x)
)
P r[| −
n2
=
≤
n→∞
−→
0
Wir werden nun sehen, dass das AEP typische Mengen charakterisiert.
(n)
Definition 6 (Typische Menge). Eine typische Menge A bezüglich p(x)
ist die Menge aller endlichen Folgen/Tupel (x1 , . . . , xn ) ∈ X n , sodass
2−n·(H(X)+) ≤ p(x1 , . . . , xn ) ≤ 2−n·(H(X)−)
bzw.
|−
1
1
log
− H(X)| ≤ .
n
p(x1 , . . . , xn )
Eigenschaften typischer Mengen
(n)
1. P r[(x1 , . . . , xn ) ∈ A ] > 1 − für hinreichend großes n
(n)
2. |A | ≤ 2n(H(X)+)
(n)
3. |A | > (1 − ) · 2n(H(X)−)
Beweis.
1. Folgt direkt aus der AEP, da
P r[(x1 , . . . , xn ) ∈ A(n)
]
1
1
log
− H(X)| ≤ ]
n
p(x1 , . . . , xn )
−→ 1 > 1 − =
P r[| −
5
2. Es gilt
1
X
=
p(xn ) ≥
xn ∈X n
p(xn )
(n)
xn ∈A
X
≥
X
−n(H(X)+)
2−n(H(X)+) = |A(n)
|·2
(n)
xn ∈A
n(H(X)+)
⇒ |A(n)
|≤2
3. Wegen 1. gilt für hinreichend großes n
1−
<
X
P r[(x1 , . . . , xn ) ∈ A(n)
]=
p(xn )
(n)
xn ∈A
≤
X
−n(H(X)−)
2−n(H(X)−) = |A(n)
|·2
(n)
xn ∈A
n(H(X)−)
⇒ |A(n)
| > (1 − ) · 2
Anwendung zur Datenkompression Seien X1 , . . . , Xn Zufallsvariablen
mit Massefunktion p(x). Wir suchen kurze Beschreibungen für die Folgen
(x1 , . . . , xn ). Dazu teilen wir X n in zwei Mengen ein: eine typische Menge
(n)
A
(n)
und eine untypische A
(n)
= X n \A . Wir gehen folgendermaßen vor:
(n)
1. Ordne die Elemente in A
(n)
und A
lexikographisch.
2. Induziere jedes Tupel (x1 , . . . , xn ) in beiden Mengen mit seinem lexikographischen Index in der jeweiligen Menge.
(n)
3. Für (x1 , . . . , xn ) ∈ A benötigt man höchstens n · (H(X) + ) +
1 Bits. Verwende ein zusätzliches Führungsbit, um anzuzeigen, dass
(n)
(x1 , . . . , xn ) ∈ A .
(n)
4. Analog für (x1 , . . . , xn ) ∈ A . Verwende n · log |X | + 1 Bits plus
Führungsbit zum Codieren, also maximal n·log |X |+2 für jedes Tupel.
Das Codierungsschema hat folgende Eigenschaften:
• Der Code ist bijektiv und “leicht“ decodierter.
• Typische Folgen haben kurze Beschreibungen der Länge ≈ n · H(X).
(n)
• Falls H(X) < log |X |, dann enthält A zwar die überwältigende Anzahl an Folgen; diese Folgen tauchen jedoch nur mit sehr geringer
Wahrscheinlichkeit auf.
6
(n)
Sei n hinreichend groß, sodass P r[xn ∈ A ] > 1−. Wir können nun die erwartete Codewort-Länge einer Folge (x1 , . . . , xn ) berechnen. l(xn ) bezeichne
die Länge der Codierung von xn .
IE[l(X n )] =
X
p(xn ) · l(xn )
xn ∈X n
=
X
X
p(xn ) · l(xn ) +
(n)
p(xn ) · l(xn )
(n)
xn ∈A
xn ∈A
(n)
n
≤ P r[xn ∈ A(n)
] · (n · (H(X) + ) + 2) + P r[x ∈ A ] · (n log |X | + 2)
≤ n · (H(X) + ) + n log |X | + 2
≤ n · (H(X) + 0 ) wobei 0 = + log |X | +
2
n
Satz 2 (Shannons Source-Coding-Theorem). Sei X n eine identisch, unabhängig mit p(x) verteilte Folge von Zufallsvariablen, sei > 0. Dann
existiert eine Codierung, welche Folgen xn der Länge n auf binäre Strings
abbildet, sodass die Codierung bijektiv ist und für hinreichend große n gilt:
1
IE[ l(X n )] ≤ H(X) + n
2.3
Kanalkapazität und Shannons Noisy-Channel-Theorem
Definition 7 (Kanal). Ein diskreter, verrauschter Kanal K = (X n , p(y|x), Y n )
ist ein System bestehend aus einem Eingabealphabet X , Ausgabealphabet
Y und einer Übertragungsmatrix M = (p(y|x))x∈X ,y∈Y , wobei p(y|x) =
P r[Y = y|X = x] die Übertragungswahrscheinlichkeiten sind. Ein Kanal
heißt gedächtnislos, falls die Verteilung der Ausgabe nur von der aktuellen
Eingabe abhängt und bedingt unabhängig von vorherigen Ein- und Ausgaben ist.
Definition 8 (Kanalkapazität). Die Kanalkapazität zu einem Kanal K =
(X n , p(y|x), Y n ) ist definiert durch
C = max I(X; Y ).
p(x)
2.3.1
Beispiele von Kanälen
1. Rauschfreier Kanal
7
2. Noisy Typewriter
Setze p(0) = p(1) = 12 . Dann ist
I(X; Y ) = H(X) − H(X|Y )
= 1−0
= 1
Damit ist C = 1.
(In der Literatur wird mit Noisy Typewriter ein anderer Ka- Anmerkung
nal bezeichnet.)
3. Binärer symmetrischer Kanal
I(X; Y ) = H(Y ) − H(Y |X)
X
= H(Y ) −
p(x) · H(Y |X = x)
x
= H(Y ) − H(ρ)
≤ 1 − H(ρ)
Es gilt C = 1 − H(ρ), denn für p(x) = ( 12 , 12 ) gilt
auch p(y) = ( 12 , 21 ) und damit H(Y ) = 1.
4. Binärer Erasure-Kanal
2.3.2
Codes
Definition 9 ((M, n)-Code). Ein (M, n)-Code für einen Kanal K = (X n , p(y|x), Y n )
besteht aus
• einem Nachrichtenraum M = {1, . . . , M },
• einer Codierungsabbildung X n (·) : {1, . . . , M } → X n , welche Codeworte X n (1), . . . , X n (M ) liefert, und
• einer Decodierabbildung g : Y n → {1, . . . , M }.
8
Definition 10 (Übertragungsfehlerwahrscheinlichkeiten). Wir definieren
λi = P r[g(Y n ) 6= i|X n = X n (i)]
als Übertragungsfehlerwahrscheinlichkeiten für die Nachricht i zu einem gegeben Kanal K = (X n , p(y|x), Y n ) und Code C = (M, X n , g).
Definition 11 (Mittlere Fehlerwahrscheinlichkeit). Die mittlere Fehlerwahrscheinlichkeit eines (M, n)-Codes C ist definiert durch
Pe(n) =
M
M
X
1 X
λi =
P r[w = i]λi
M
i=1
i=1
wobei w gleichverteilt auf {1, . . . , M }.
Definition 12 (Rate, erreichbare Rate). Die Rate R eines (M, n)-Codes ist
gegeben durch
log |M|
.
R=
n
Eine Rate heißt erreichbar für einen Kanal K, falls es eine Familie von
(2nR , n)-Codes gibt, sodass maxi∈{1,...,M } λi → 0 für n → ∞.
2.3.3
Gemeinsam typische Folgen
(n)
Definition 13 (Gemeinsam typische Folge). Die Menge A der gemeinsam typischen Folgen bezüglich einer Verteilung p(x, y) ist die Menge aller
(xn , y n ) ∈ X n × Y n , sodass
1
log p(xn ) − H(X)| < n
1
| − log p(y n ) − H(Y )| < n
|−
|−
1
log p(xn , y n ) − H(X, Y )| < n
Das heißt xn , y n und (xn , y n ) sind jeweils typisch.
Satz 3 (Gemeinsame AEP). Seien (X n , Y n ) identisch, unabhängig verteilte
Folgen, die aus der Verteilung p(xn , y n ) gezogen werden. Dann gilt:
(n)
1. P r[(xn , y n ) ∈ A ] → 1 für n → ∞
(n)
2. |A | ≤ 2n(H(X,Y )+)
e n , Ye n ) ∼ p(xn )·p(y n ), sind X
e n und Ye n unabhängig aber jeweils
3. Gilt (X
mit den selben Marginalverteilungen wie X n und Y n verteilt, dann gilt
(n)
P r[(e
xn , yen ) ∈ A ] ≤ 2−n·(I(X;Y )−3)
9
Beweis.
1. Folgt direkt aus der einfach AEP für (xn , y n ):
P r[| −
1
log p(xn , y n ) − H(X, Y )| < ] → 1 für n → ∞
n
2. Es gilt
1
X
=
(xn ,y n )∈X n ×Y n
X
≥
X
p(xn , y n ) ≥
p(xn , y n )
(n)
(xn ,y n )∈A
−n(H(X,Y )+)
2−n(H(X,Y )+) = |A(n)
|·2
(n)
(xn ,y n )∈A
n(H(X,Y )+)
⇒ |A(n)
.
|≤2
e n und Ye n unabhängig, aber jeweils für sich wie X n und Y n
3. Sind X
verteilt, dann gilt
n
n
P r[(e
x , ye ) ∈
A(n)
]
X
=
≤2−n(H(X)−)
n
p(x )
·
≤2−n(H(Y )−)
n
p(y )
(n)
(xn ,y n )∈A
≤ |A(n) | · 2−n(H(X)+H(Y )−2)
≤ 2−n(H(X)+H(Y )−H(X,Y )−3)
= 2−n(I(X;Y )−3)
2.3.4
Das Coding-Theorem
Wir werden zeigen, dass für einen Kanal K = (X n , p(y|x), Y n ) jede Rate
R < C erreichbar ist. Wir wenden die gemeinsame AEP an, das heißt wir
verwenden lange Codeworte und verwenden deshalb den Kanal vielfach. Ein
empfangenes Signal y n decodieren wir zu einem xn , welches gemeinsam typisch mit y n ist. Wir werden zeigen, dass wenn R < C dieses xn mit hoher
Wahrscheinlichkeit eindeutig ist.
Satz 4 (Shannons Coding Theorem). Für jede Rate R < C existiert eine
Familie von (2nR , n)-Codes, sodass
max
i∈{1,...,2nR }
λi → 0 für n → ∞.
Beweis. Wähle p(x) (wird später genauer spezifiziert). Wir ziehen nun einen
(2nR , n)-Code C zufällig mit der Verteilung p(x). Das heißt wir ziehen 2nR
unabhängige Codeworte X n (1), . . . , X n (2nR ). Die Wahrscheinlichkeit, dass
ein bestimmter Code C gezogen wird, ist also
nR
P r[C] = Π2w=1 Πni=1 p(X n (w)i )
10
Wir nehmen nun folgendes an:
• Der Code C wird wie oben beschrieben zufällig gezogen und Sender
und Empfänger bekannt gemacht.
• Sowohl Sender als auch Empfänger kennen die Kanalübertragungswahrscheinlichkeiten p(y|x).
• Eine Nachricht w wird gleichverteilt vom Sender gezogen.
P r[W = w] = 2−nR für w = 1, . . . , 2nR
• Das Code-Wort X n (w) wird durch den Kanal geschickt.
• Der Empfänger decodiert y n zu ŵ, falls (X n (ŵ), y n ) gemeinsam typisch
sind. Falls kein solches ŵ existiert oder mehrere existieren, wird ein
Fehler deklariert. Außerdem tritt ein Fehler auf, wenn ŵ 6= w.
Sei E das Ereignis, das w 6= ŵ. Wir berechnen nun die mittlere Fehlerwahrscheinlichkeit, gemittelt über alle Codewörter und alle Codes.
X
P r[E] =
P r[C]Pe(n) (C)
C
nR
=
X
P r[C](
C
2
1 X
2nR
λw (C))
w=1
nR
=
2
1 XX
2nR
P r[C]λw (C)
w=1 C
n
Da alle Codeworte
P X (w) identisch verteilt zufällig gezogen wurden, hängt
der Ausdruck C P r[C]λw (C) nicht von w ab. Wir fixieren o.B.d.A. w = 1.
(n)
Sei Ei das Ereignis, dass (X n (i), y n ) ∈ A . Die tatsächliche Ursache für y n
ist X n (1). Ein Fehler passiert genau dann, wenn E1 , d.h. wenn (X n (1), y n )
nicht gemeinsam typisch sind, oder E2 ∨ . . . ∨ E2nR , d.h. wenn ein falsches
Codewort gemeinsam typisch mit y n ist.
P r[E] = P r[E1 ∨ (E2 ∨ . . . ∨ E2nR )]
nR
≤ P r[E1 ] +
2
X
P r[Ei ]
i=2
Da X n (2), . . . , X n (2nR ) unabhängig von xn = X n (1) gezogen wurden, sind
also X n (2), . . . , X n (2nR ) auch unabhängig von Y n . Damit gilt für i ∈ {2, . . . , 2nR } :
(n)
P r[Ei ] = P r[(X n (i), y n ) ∈ A ] ≤ 2−n(I(X;Y )−3) . Weiter gilt aufgrund der
11
gemeinsamen AEP, dass P r[E1 ] ≤ . Insgesamt:
nR
P r[E] ≤ +
2
X
2−n(I(X;Y )−3)
i=2
nR
= + (2
− 1)2−n(I(X;Y )−3)
≤ + 2−n(I(X;Y )−3−R)
≤ 2
falls n hinreichend groß und R < I(X; Y ) − 3. In diesem Fall ist also die
mittlere Fehlerwahrscheinlichkeit über alle Codewörter und alle Codes ≤ 2.
Einige Konkretisierungen:
• Wir hatten p(x) bisher beliebig aber fest gewählt. Wähle p(x) nun
so, dass I(X; Y ) = C. Damit wird die Erreichbarkeitsbedingung zu
R < C.
• Die Fehlerwahrscheinlichkeit wird bisher im Mittel über eine große
Anzahl von Codes angegeben. Weil P r[E] ≤ 2 gilt, gibt es mindestens
(n)
einen Code C ? , für welchen Pe (C) ≤ 2 gilt. Man kann ein solches C ?
beispielsweise durch vollständige Suche finden.
• Vom besten Code C ? verwerfe die Hälfte aller Codewörter w, nämlich
solche mit großer Fehlerwahrscheinlichkeit λw . Sortiere dazu beispielsweise die Codewörter nach ihrer Fehlerwahrscheinlichkeit und nehme
f? .
die untere Hälfte der Liste. Diesen neuen Code bezeichnen wir mit C
(n)
1 P2nR
• Es gilt Pe (C ? ) = 2nR
i=1 λi ≤ 2. Das bedeutet, dass für mindestens die Hälfte aller Codewörter w (insbesondere für die Codewörter
f? ) die Ungleichung λw ≤ 4 gelten muss, da ansonsten Pe(n) > 2.
in C
f? konstruiert, der 2nR−1 Codeworte hat. Somit
Wir haben einen Code C
f? die Rate R − 1 → R für n → ∞. C
f? hat maximale Fehlerwahrhat C
n
scheinlichkeit maxw=1,...,2nR λw ≤ 4. Das zeigt, dass jede Rate unterhalb
der Kapazität C erreichbar ist.
3
3.1
Codierungstheorie
Block-Codes
Definition 14 (Block-Code, trivialer Code, binärer Code). Mit einem BlockCode werden Blöcke fester Länge über einem Alphabet Q (hier 0 ∈ Q) als
Codeworte verwendet. Codierung und Decodierung beachten keine Nachbarblöcke.
Ein Code C der Länge n über Q ist eine nicht-leere Teilmenge C ⊆ Qn . Ist
|C| = 1 oder C = Qn , so heißt C trivial. Ist Q = F2 , so heißt C binär.
12
Definition 15 (Hammingabstand, Hamminggewicht, Minimalabstand). Seien x, y ∈ Qn , dann heißt d(x, y) := |{i | xi 6= yi }| der Hammingabstand von
x und y. Das Hamminggewicht von x ist w(x) := d(x, 0). Der Minimalabstand von C ist gegeben durch min{d(x, y) | x, y ∈ C, x 6= y} und ist ein
Gütemaß für den Code C.
Definition 16 (Informationsrate). Die Informationsrate R von C ist
mit q = |Q|.
logq |C|
n
Beispiel Q = {0, 1, 2, 3}, |Q| = 4
C = {(x, x, x) | x ∈ Q}, |C| = 4
R = log34 4 = 13
Der Minimalabstand von C ist 3.
Definition 17 (Überdeckungsradius). Der maximale Abstand eines beliebigen Elementes aus Qn zum nächsten Codewort heißt Überdeckungsradius:
max {min{d(x, c) | c ∈ C} | x ∈ Qn }
Ein anderes interessantes Maß ist ρ, der maximale Radius, so dass alle Kugeln Bρ (c) mit Radius ρ um Codeworte c disjunkt sind. Ein perfekter Code
erfüllt, dass der Überdeckungsradius ρ ist.
Definition 18 (Perfekter Code). Ein Code C ⊆ Qn mit Minimalabstand
d = 2 · e + 1 heißt perfekt, wenn für jedes x ∈ Qn genau ein c existiert
mit d(c, x) ≤ e. Ein gerader Minimalabstand ist bei perfekten Codes nicht
möglich.
Folgende Codes sind perfekte Codes:
• Triviale Codes
• Binäre Wiederholungscodes ungerader Länge
• Hamming-Codes
• Der binäre Golay-Code G23 mit den Parametern (23, 12, 7)
• Der ternäre Golay-Code G11 mit den Parametern (11, 6, 5)
Satz 5 (Kugelpackungsbedingung). Für einen perfekten Code C ⊆ Qn mit
Minimalabstand d = 2 · e + 1 gilt:
q n = |C| · |Be (0)|
e X
n
= |C| ·
(q − 1)l
l
l=0
13
3.2
Lineare Codes
Definition 19 (Linearer Code, Generatormatrix, systematische Codierung).
Es sei Q = Fq , das heißt Qn ist ein Vektorraum. Ein linearer Code C ist ein
Untervektorraum von Qn der Dimension k. Wähle eine Basis von C. Die
k × n-Matrix mit den k Basiselementen in den Zeilen heißt Generatormatrix
G von C. Durch a · G kann ein Nachrichtenwort a ∈ Qk codiert werden. Will
man den Klartext im Code “direkt sehen”, so muss G die Form


1 0 ··· ··· 0






.
.
.
..
..
0 . .





 .. . .

.
..
..
..
.
 k
.
.
.
P

G= 
 ..


..
..

.

.
. 0



0 ··· ··· 0 1
{z
} |
{z
}
|
k
n−k
haben. G heißt dann Matrix bei systematischer Codierung.
Die Rate eines linearen Codes der Dimension k ist
logq |C|
n
= nk .
Definition 20 (Äquivalente Codes). Zwei Codes C1 , C2 heißen äquivalent,
wenn sie durch Permutation der Stellen des Codes (Spalten in der Generatormatrix) auseinander hervorgehen. Jeder Code ist äquivalent zu einem
Code mit systematischer Codierung.
Eine systematische Generatormatrix erhält man durch Zeilenumformungen
und Spaltenvertauschungen der ursprünglichen Generatormatrix.
Wie kann der Minimalabstand eineslinearen Codes berechnet werden? Im
Allgemeinen benötigt man dafür |C|
2 Berechnungen. Für lineare Codes gilt
min d(x, y) = min d(x, 0)
x,y∈C
06=x∈C
Ein linearer Code der Länge n und der Dimension k (und mit Minimalabstand d) wird als [n, k]-Code ([n, k, d]-Code) bezeichnet.
Definition 21 (Dualer Code, selbstdual). Es sei C ein [n, k]-Code. Dann
heißt C ⊥ := {y ∈ Qn | hy, xi = 0 für alle x ∈ C} der zu C duale Code. Er ist
ein [n, n − k]-Code. Falls C = C ⊥ heißt C selbstdual.
Beispiel
• Q = F2 , n = 3
C = {(0, 0, 0), (1, 1, 1)} ist ein [3, 1]-Code.
C ⊥ ist also ein [3, 2]-Code und hat 22 Elemente.
C ⊥ = {(0, 0, 0), (0, 1, 1), (1, 0, 1), (1, 1, 0)}
14
• Q = F2 , n = 4
C = {(0, 0, 0, 0), (0, 0, 1, 1), (1, 1, 0, 0), (1, 1, 1, 1)} ist ein [4, 2]-Code.
C⊥ = C
3.2.1
Syndromdecodierung
Sei G = (Ik |P ) Generatormatrix in systematischer Form von C. Für die
Generatormatrix H des Dualcodes muss gelten
∀x ∈ Qk , y ∈ Qn−k : hx · (Ik |P ), y · Hi = 0 ⇔
∀x ∈ Qk , y ∈ Qn−k : x · (Ik |P ) · (y · H)> = 0 ⇔
∀x ∈ Qk , y ∈ Qn−k : x · (Ik |P ) · H > · y > = 0 ⇔
(Ik |P ) · H > = (0) ⇐
H = −P > |In−k
C ⊥ hat also die Generatormatrix H der Dimensionen n − k × n. Da ∀c ∈ C :
c · H > = 0 heißt H auch Prüfmatrix von C, da damit geprüft werden kann,
ob c ∈ C. Für x ∈ Qn heißt x · H > das Syndrom von x.
Zerlege Qn in Nebenklassen x ∼ y :⇔ x − y ∈ C. Es sei nun ein Fehler e
beim Übertragen eines beliebigen Codewortes c aufgetreten.
(c + e) · H > = c · H > + e · H > = e · H > ,
das heißt das Syndrom hängt nur vom Fehler ab. Dies nutzen wir zur Syndromdecodierung. Für jede Nebenklassen ist das Syndrom eindeutig:
x ∼ y ⇔ x − y ∈ C ⇔ (x − y) · H > = 0 ⇔ x · H > = y · H >
Eine Nebenklasse enthält somit alle Vektoren, die zu einem bestimmten
Syndrom führen, sie haben alle denselben Fehler. Der Vektor, der das kleinste
Gewicht hat, ist unter diesen der wahrscheinlichste Fehlervektor und wird
als Nebenklassenanführer ausgewählt.
Zum Decodieren benötigt man also eine Tabelle der Länge q n−k , die jedem
möglichen Syndrom den wahrscheinlichsten Fehlervektor zuordnet.
3.2.2
Hamming-Codes
Sei H eine k × n-Prüfmatrix eines Codes C über Fq , bei welcher je zwei Spalten linear unabhängig sind. Ist c ∈ C ein Codewort und e ein Fehlervektor
mit w(e) = 1, dann ist das Syndrom (c + e) · H > von c + e das Vielfache
einer Spalte von H. Das legt eine Spalte von H und damit die Fehlerposition
eindeutig fest. Wir suchen nun zu einem gegebenen k ein maximales n. Wir
unterscheiden hierbei nicht zwischen äquivalenten Codes.
15
k
−1
Definition 22 (Hamming-Code). Sei n = qq−1
. Ein [n, n − k]-HammingCode über Fq ist ein Code, für welchen die Spalten seiner Prüfmatrix paarweise linear unabhängig sind, die Spalten also eine maximale Menge linear
unabhängiger Vektoren sind. Das heißt, es gibt 3 Spalten der Prüfmatrix,
die linear abhängig sind. Ansonsten könnte man eine weitere Spalte finden,
die zu allen anderen linear unabhängig wäre, das heißt ansonsten wäre n
nicht maximal. Die Minimaldistanz des Hamming-Codes ist somit 3.
Satz 6. Hamming-Codes sind perfekt.
Beweis. Dies kann mithilfe der Kugelpackungsbedingung gezeigt werden. Sei
k −1
C ein [n, n − k]-Hamming-Code über Fq , wobei n = qq−1
. Sei c ∈ C, sei B1 (c)
die 1-Hammingkugel von c, dann gilt |B1 (c)| = 1+n·(q−1) = 1+q k −1 = q k .
Da C die Dimension n−k hat, gilt |C| = q n−k und damit gibt es eben so viele
disjunkte Kugeln mit Radius 1 um die Codeworte. Diese Kugeln enthalten
zusammen q n−k · q k = q n Worte, was bereits allen Worten in Fnq entspricht.
Damit ist C perfekt.
Beispiel
Der binäre [7, 4]-Hamming-Code

1 0 0 0 0
0 1 0 0 1
G=
0 0 1 0 1
0 0 0 1 1
hat die Generatormatrix

1 1
0 1

1 0
1 1
und Prüfmatrix


0 1 1 1 1 0 0
H = 1 0 1 1 0 1 0 .
1 1 0 1 0 0 1
3.2.3
Majority-Logic-Decoding
Definition 23 (Orthogonale Prüfgleichungen). Ein System von r Prüfgleichungen hx, y (ν) i = 0 mit 1 ≤ ν ≤ r heißt orthogonal bezüglich Position
i (für den Code und y (ν) ) ∈ C ⊥ ), falls:
(ν)
• yi
= 1 für 1 ≤ ν ≤ r
(ν)
• Falls j 6= i, dann gibt es höchstens ein ν, sodass yj
6= 0
Sei x ein Wort, welches t Fehler enthalte, t ≤ 2r . Dann gilt:
(
≤ t Werte von ν, falls xi korrekt
hx, y (ν) i =
6 0 für
≥ r − (t − 1) Werte von ν, falls xi inkorrekt
Weil r − (t − 1) > t, können wir anhand der Mehrheit der Werte von hx, y (ν) i
entscheiden, ob xi korrekt ist oder nicht.
16
Beispiel
Gegeben sei die Prüfmatrix eines [15, 7, 5]-Codes:

1
0

0

0
H=
0

0

0
0
0
1
0
0
0
0
0
0
0
0
1
0
0
0
0
0
0
0
0
1
0
0
0
0
0
0
0
0
1
0
0
0
0
0
0
0
0
1
0
0
0
0
0
0
0
0
1
0
0
0
0
0
0
0
0
1
1
0
0
0
1
0
1
1
1
1
0
0
1
1
1
0
0
1
1
0
0
1
1
1
1
0
1
1
1
0
0
0
0
1
0
1
1
1
0
0
0
0
1
0
1
1
1
0

0
0

0

1

0

1

1
1
Geeignete Linearkombinationen der Zeilen von H (bezeichnet mit z1 , ..., z8 )
ergeben die folgenden 4 Prüfgleichungen:
z4 : 0 = x4 + x12 + x13 + x15
z2 + z6 : 0 = x2 + x6 + x14 + x15
z1 + z3 + z7 : 0 = x1 + x3 + x7 + x15
z8 : 0 = x8 + x9 + x11 + x15
Diese sind orthogonal bezüglich Position 15.
Ist nur bei x15 ein Fehler aufgetreten, so liefern alle 4 Geleichungen eine 1;
ist noch ein zweiter Fehler aufgetreten, dann liefern 3 Gleichungen eine 1.
Wurde x15 korrekt übertragen, so liefern 0, 1 oder 2 Gleichungen eine 1, je
nachdem ob 0, 1 oder 2 Fehler aufgetreten sind.
Für bis zu zwei Fehler kann damit x15 per Mehrheitsentscheid mit den 4
Prüfgleichungen korrekt decodiert werden.
Diese Art der Decodierung ist sehr effizient, es ist aber bei den meisten Codes
schwierig oder unmöglich passende Gleichungen zu finden. Z. B. gibt es für
den [7, 4]-Hamming-Code keinen Satz von orthogonalen Prüfgleichungen.
3.2.4
Weight-Enumeratives
Die Minimaldistanz eines Codes legt fest, wie viele Fehler ein empfangenes
Wort enthalten kann und trotzdem noch decodiert werden kann. Oftmals ist
es nötig mehr Distanzinformationen über einen Code zu haben.
Definition 24 (Weight-Enumerator, Gewichtsverteilung). Sei C ein linearer
Code der Länge n und sei A
Pi ndie Zahli der Codeworte von Gewicht i. dann
heißt das Polynom A(z) = i=0 Ai · z der Weight-Enumerator von C. Die
Folge (Ai )ni=0 heißt Gewichtsverteilung von C.
Wir werden nun den Weight-Enumerator des binären Hammingcodes der
Länge n berechnen. Dazu betrachten wir zunächst i − 1 Spalten der Prüfmatrix H. Wir unterscheiden drei Möglichkeiten für die Summe dieser Spalten:
17
• Summe der Spalten ist 0
• Summe der Spalten ergibt eine der i − 1 Spalten
• Summe der Spalten ergibt eine der anderen n − (i − 1) Spalten
n
Es gibt i−1
Möglichkeiten i − 1 Spalten auszuwählen. Dass die Summe der
Spalten den Nullvektor ergibt, entspricht der Tatsache, dass für x ∈ Qn mit
w(x) = i − 1 das Produkt x · H > = 0. Da dies genau für die x ∈ Qn gilt,
die Codewörter des Hammingcodes sind, tritt Möglichkeit 1 genau Ai−1 mal
auf. Daraus lässt sich folgen, dass Möglichkeit 2 (n − (i − 2)) · Ai−2 mal
vorkommt. Es gibt nämlich Ai−2 Möglichkeiten i − 2 Spalten auszuwählen,
deren Summe 0 ist, und in jedem Fall der Ai−2 Fälle kann man eine von
n − (i − 2) weiteren Spalten wählen. Möglichkeit 3 tritt i · Ai mal auf, da
es Ai Möglichkeiten gibt, i Spalten mit Summe 0 auszuwählen und es i
Möglichkeiten gibt, aus i Spalten i − 1 Stück auszuwählen. Deren Summe
entspricht dann der verbleibenden Spalte.
Somit gilt:
n
i · Ai =
− Ai−1 − (n − i + 2) · Ai−2
i−1
Multipliziert man beide Seiten mit z i−1 und summiert über i auf, erhält
man die folgende Differentialgeichung:
A0 (z) = (1 + z)n − A(z) − nzA(z) + z 2 A0 (z)
Mit A0 = 1 lässt sich dies zu
A(z) =
n−1
n+1
1
n
(1 + z)n +
(1 + z) 2 (1 − z) 2
n+1
n+1
lösen.
Eines der grundlegendsten Ergebnisse der Codierungstheorie, benannt nach
Jessi MacWilliams, gibt den Zusammenhang der Weight-Enumeratoren eines
Codes C und seines Dualcodes C ⊥ an. Wir zitieren diesen Satz hier ohne
Beweis:
Satz 7 (MacWilliams-Identität). Sei C ein [n, k]-Code über Fq mit WeightEnumerator A(z) und sei B(z) der Weight-Enumerator von C ⊥ . Dann gilt
B(z) = q −k · (1 + (q − 1) · z)n · A(
3.2.5
1−z
).
1 + (q − 1) · z
Golay-Codes
Es gibt viele Variante die Golay-Codes G24 bzw. den G23 zu konstruieren.
Hier seien zwei verschiedene genannt.
18
1. Variante der Konstruktion des G24
• Wähle ein Wort mit Gewicht 8
• Suche (z.B. durch lexikographisches Aufzählen) ein Wort, das zu den
bisher erzeugten Abstand 8 hat.
• Endet mit 212 Vektoren und liefert einen [24, 12, 8]-Code.
2. Variante der Konstruktion des G24
• Betrachte den Hamming-Code mit der

1 0 0 0
0 1 0 0
G = 
0 0 1 0
0 0 0 1


G0 = 

Matrix
1
0
1
1
1
1
1
0
G

0
1
.
1
1

1
1

0
1
ist [8, 4, 4]-Code und erweitert den Hamming-Code.
• Definiere einen zu G äquivalenten Code

0 1 1 0 0
1 1 0 0 0
G = 
1 1 1 0 1
1 0 1 1 0

G
0

= 

G
0
1
0
0

1
0
.
0
0

1
1

0
1
0
• G 0 und G generieren nur Codewörter mit Gewicht 0, 4 und 8.
Der Hamming-Code hat Minimalgewicht 3, durch Ergänzen auf gerade
Parität ergibt sich ein Code G 0 mit Codeworten von geradem Gewicht,
also dem Minimalgewicht 4. Da 1 := (1, 1, 1, 1, 1, 1, 1, 1) ∈ G 0 kann
kein anderes Codewort mit Gewicht > 4 existieren, es hätte einen
Minimalabstand < 4 von 1.
• Die beiden erweiterten Codes sind selbstdual, es gilt also G 0 = G 0⊥ und
0
0⊥
G =G
Man kann einfach nachrechnen, dass G 0 · G 0> = 0 und k = n/2 was die
0
selbstdualtität von G 0 zeigt. Für G gilt dasselbe Argument.
19
0
• Die Schnittmenge der beiden erweiterten Codes ist trivial, d.h. G 0 ∩G =
{0, 1}.
Darstellen der Codeworte mit je 4 Unbestimmten und anschliessender
Koeffizientenvergleich liefert die Behauptung.
0
• Verwende G 0 und G um einen anderen Code zu definieren
0
G24 := {(a + x, b + x, a + b + x)|a, b ∈ G 0 , x ∈ G }
Für die Generatormatrix bedeutet das:
G24
 0

G 0 G0
:=  0 G 0 G 0 
0
0
0
G G G (12×24)
Eigenschaften des G24
• G24 ist ein selbstdualer (24, 12)-Code.
Die Dimension kann man z. B. über rang(G24 ) = 12 berechnen. Die
> = 0 und k = n/2.
Selbstdualität ergibt sich wie oben durch G24 · G24
• Die Gewichte der Codeworte von G24 sind durch 4 teilbar.
Die Gewichte der 12 Basisvektoren sind durch 4 teilbar, es genügt also
zu zeigen:
w(c) ≡ w(d) ≡ 0 (mod 4) =⇒ w(c + d) ≡ 0 (mod 4) für c, d ∈ G24 .
Definiere
(c ∩ d)i =
1 : ci = di = 1
0 : sonst
Dann gilt hc, di ≡ w(c ∩ d) ≡ 0 (mod 2), da G24 selbstdual ist. Das
Gewicht w(c+d) = w(c)+w(d)−2·w(c∩d) ist daher Summe/Differenz
von durch 4 teilbaren Zahlen also auch durch 4 teilbar.
• G24 hat Minimalgewicht 8.
Offensichtlich enthält G24 Worte vom Gewicht 8, es ist also nur noch
zu zeigen, dass G24 kein Wort vom Gewicht 4 enthält.
Annahme: c = (a + x, b + x, a + b + x) ∈ G24 hat Gewicht 4.
In jeder der drei Komponenten ergänzt das 8-te Bit die anderen 7 auf
gerade Parität, die drei Komponenten haben also gerades Gewicht und
bei Gesamtgewicht 4 muss eine der Komponenten 0 sein.
Ohne Beschränkung der Allgemeinheit sei a + x = 0 und damit a =
0
x ∈ G 0 ∩ G = {0, 1}.
20
Im Fall a = 0 hat c = (0, b, b) ein Gewicht von mindestens 8, im Fall
a = 1 hat c = (0, b + 1, b) ein Gewicht von mindestens 8.
(Für einen ausführlicheren Beweis, vergleiche z.B. http://www2.iwr.
uni-heidelberg.de/groups/compalg/matzat/PDF/Codierungstheorie.
pdf, S.43)
• Es treten nur die Hamming-Gewichte 0, 8, 12, 16 und 24 auf.
• G24 ist [24, 12, 8]-Code.
Konstruktion des G23
• Streichen einer Spalte der Matrix G24 , liefert G23
Eigenschaften des G23
• G23 ist ein [23, 12, 7]-Code.
• Es gilt 223 = 212 · (1 + 23
1 +
3.2.6
23
2
+
23
3
) und somit ist G23 perfekt.
Reed-Muller-Codes
Hinführung: Die Summe von Codes Es seien zwei Codes C1 als [n, k1 , d1 ]Code und C2 als [n, k2 , d2 ]-Code gegeben. Betrachte nun den Code {(a1 , a1 +
a2 )|a1 ∈ C1 , a2 ∈ C2 }. Dies ist ein [2n, k1 + k2 , dmin ]-Code mit Generatormatrix
G1 G1
.
G1 &G2 :=
0 G2
Es gilt dmin = min{2d1 , d2 }. Beweis:
• Offensichtlich ist dmin ≤ min{2d1 , d2 }
• Fall 1: a2 = 0 ⇒ w(a1 , a1 ) ≥ 2d1
• Fall 2: a2 6= 0 ⇒ w(a1 , a1 + a2) = w(a1 ) + w(a1 + a2) = w(−a1 ) +
w(a1 + a2) ≥ w(−a1 + a1 + a2) = w(a2) ≥ d2
Definition 25 (Reed-Muller-Code).P
Sei r, m∈ N, 0 ≤ r ≤ m. RM (r, m) ist
ein [n, k, d]-Code mit n = 2m , k = ri=0 mi , d = 2m−r . Er wird rekursiv
definiert durch:
• RM (0, m) ist ein [2m , 1, 2m ]-Wiederholungscode.
• RM (m, m) ist uncodiert, das heißt, dass das Informationswort direkt
ausgegeben wird.
• RM (r + 1, m + 1) = RM (r + 1, m)&RM (r, m)
21
Beispiel
1 0
RM (1, 1) =
, dmin = 1
0 1


1 0 1 0
RM (1, 2) = RM (1, 1)&RM (0, 1) = 0 1 0 1 , dmin = 2
0 0 1 1


1 0 1 0 1 0 1 0
0 1 0 1 0 1 0 1

RM (1, 3) = RM (1, 2)&RM (0, 2) = 
0 0 1 1 0 0 1 1 , dmin = 4
0 0 0 0 1 1 1 1


1 0 0 0
0 1 0 0

RM (2, 2) = 
0 0 1 0 , dmin = 1
0 0 0 1


1 0 0 0 1 0 0 0
0 1 0 0 0 1 0 0


0 0 1 0 0 0 1 0



RM (2, 3) = RM (2, 2)&RM (1, 2) = 
0 0 0 1 0 0 0 1 , dmin = 2
0 0 0 0 1 0 1 0


0 0 0 0 0 1 0 1
0 0 0 0 0 0 1 1
Das Decodieren kann mittels einer Verallgemeinerung des Majority-LogicDecodings durchgeführt werden.
3.2.7
Schranken für Codes
Wir wenden uns nun dem Problem zu, bei vorgegebener Länge n und Minimaldistanz d Codes zu finden, die möglichst hohe Rate R = nk haben.
Dabei werden wir lediglich die Existenz solcher Codes behandeln. Aspekte
wie Konstruktion, Codierung und Decodierung lassen wir außen vor.
Wir suchen zunächst nach oberen Schranken für Codes. Ist C ein [n, k, d]Code, dann erhalten wir durch Weglassen eines redundanten Zeichens einen
neuen Code C 0 . C 0 hat die Länge n − 1, Dimension k und mindestens Minimaldistanz d − 1. C 0 heißt punktierter Code.
Satz 8 (Singleton-Schranke). Sei C ein [n, k, d]-Code über Fq , dann gilt
k ≤ n − d + 1. Codes, welche die Singleton-Schranke exakt erfüllen, also
[n, k, n − k + 1]-Codes heißen Maximum-Distance-Separable-Codes bzw. optimale Codes.
Beweis. Punktiere den Code C so oft, bis der resultierende Code C 0 Minimaldistanz 1 hat. Dazu müssen wir C mindestens d − 1 mal punktieren. Bei jeder Punktierung nimmt die Länge des Codes um 1 ab. Also gilt
k ≤ n − (d − 1) = n − d + 1
22
Satz 9 (Hamming-Schranke). Sei Bq (n, r) = {x ∈ Fnq |w(x) ≤ r} die Hammingkugel mit Radius r um 0. Vq (n, r) = |Bq (n, r)| sei das Volumen dieser Kugel. Sei C ein [n, k, d]-Code über Fnq , wobei d = 2r + 1. Dann gilt
k ≤ n − logq Vq (n, r) (vergleiche Kugelpackungsbedingung).
Beweis. Wir zählen wie viele Hammingkugeln vom Radius r wir höchstens
in den Raum Fnq packen können. Für je zwei Codeworte c 6= c0 ∈ C gilt
dist(c, c0 ) ≥ d genau dann wenn die Hammingkugeln um c und c0 mit
Radius r disjunkt sind. Eine Schranke für die Anzahl möglicher disjunkter Hammingkugeln mit Radius r liefert also eine Schranke für die Anzahl
möglicher Codeworte in C. Es gilt |Fnq | = q n . Damit können wir höchstens
qn
qn
n
k
Vq (n,r) Kugeln im Fq packen, also gilt q = |C| ≤ Vq (n,r) und somit k ≤
n − logq Vq (n, r).
Satz 10 (Gilbert-Varshamov-Schranke). Seien n und d mögliche Parameter eines Codes über Fq . Dann existiert ein [n, k, d]-Code C, falls k < n −
logq Vq (n, d − 1).
Beweis. Die Beweisidee ist, dass ein zufälliger [n, k]-Code wahrscheinlich
eine Minimaldistanz ≥ d hat. Wähle G (k × n-Generatormatrix) zufällig
gleichverteilt. Für ein Nachrichtenwort x 6= 0 (zufällig gewählt und fest)
gilt:
Vq (n, d − 1)
P r[w(x · G) < d] =
qn
Für alle x ∈ Fkq \{0} bedeutet das:
Vq (n, d − 1)
qn
Vq (n, d − 1)
< qk ·
qn
< 1 nach Voraussetzung
P r[∃x ∈ Fkq \{0} : w(x · G) < d] ≤ (q k − 1) ·
Da die Wahrscheinlichkeit < 1 ist, existiert mit Wahrscheinlichkeit > 0 ein
Code mit Minimalgewicht ≥ d.
3.3
Zyklische Codes
Definition 26 (Zyklischer Code). Ein linearer Code heißt zyklisch, falls
(c0 , . . . , cn−1 ) ∈ C ⇒ (cn−1 , c0 , . . . , cn−2 ) ∈ C
Um Struktur ausnutzen zu können, betrachte den Isomorphismus
Fnq → Fq [x]/(xn − 1)
(c0 , . . . , cn−1 ) 7→
n−1
X
i=0
23
ci xi
Zyklisches Verschieben entspricht der Multiplikation mit x
x·
n−1
X
ci xi ≡ cn−1 + c0 x + . . .
i=0
Satz 11. C ist zyklisch ⇔ C ist Ideal in Fq [x]/(xn − 1)
Beweis.“ ⇐ “ c ∈ C ⇒ x · c = (cn−1 , c0 , . . . , cn−2 ) ∈ C
“ ⇒ “ z.z. ∀g(x) : g(x) · c(x) ∈ C, falls c(x) ∈ C
x · c(x) ∈ C ⇒ ∀i : xi · c(x) ∈ C
C istPlinearer Code, also c1 + c2 ∈ C (c1 , c2 ∈ C)
⇒ ( ai xi ) · c(x) ∈ C
Konvention
Um Sonderfälle zu vermeiden sei ab jetzt ggT(q, n) = 1.
Bemerkung. Fq [x]/(xn − 1) ist Hauptidealring, das heißt jedes Ideal C hat
einen Erzeuger g(x), so dass C = Fq [x] · g(x).
Beweisidee. Wird eine Funktion c ∈ C dargestellt durch zwei Erzeuger
c(x) = a1 (x)·g1 (x)+a2 (x)·g2 (x), dann berechne g(x) := ggT(g1 (x), g2 (x)) =
d · g1 (x) + e · g2 (x) ∈ C. ⇒ c(x) =? · g(x)
Definition 27 (Generatorpolynom). Jeder zyklische Code wird von einem
Polynom erzeugt. Das normierte Polynom vom kleinsten Grad heißt Generatorpolynom.
Bemerkung. Das Generatorpolynom g(x) von C teilt xn − 1.
Beweis. Es gilt g(x) ∈ C und ebenso xn − 1 = 0 ∈ C. Wir setzen g(x) :=
ggT(g(x), xn − 1). Es gilt also grad(g(x)) ≤ grad(g(x)). Außerdem folgt aus
der Definition von g(x), dass es sich als Linearkombination von g(x) und
xn − 1 darstellen lässt und somit ebenfalls in C ist. Da g(x) ein Polynom
in C von kleinstem Grad ist, folgt grad(g(x)) = grad(g(x)). Es muss also
g(x) = g(x) gelten und somit g(x)|xn − 1.
Damit ergibt sich: Es sei (xn − 1) = f1 (x) · . . . · ft (x) Zerlegung in irreduzible
Polynome. Dann existieren 2t verschiedene Teiler von xn − 1 und damit 2t
verschiedene zyklische Codes der Länge n.
Beispiel. Wir betrachten Codes über F2 der Länge n = 7. Es gilt (x7 −1) =
(x−1)·(x3 +x+1)·(x3 +x2 +1). Es gibt also 23 = 8 zyklische Codes. Beachte
im Folgenden, dass sich im F2 die Operationen + und − nicht unterscheiden.
• g(x) = 1 erzeugt C = F2 [x]/(x7 − 1).
• g(x) = x7 − 1 erzeugt C = {0}.
24
• g(x) = x + 1 erzeugt C = {a(x) · (x + 1)|a(x) ∈ F2 [x]/(x7 − 1)}. Die
Multiplikation von a(x) = 0, 1, x, x + 1, . . . , x5 + x4 + x3 + x2 + x + 1
mit g(x) erzeugt 26 verschiedene Polynome, die alle in C liegen. Wir
zeigen, dass dies bereits alle Polynome in C sind. Es gilt
x6 · (x + 1) = x7 + x6 = (x + 1) · (x5 + x4 + x3 + x2 + x + 1).
Sei nun r(x) ein Polynom von Grad ≤ 5 und a(x) = x6 + r(x). Sei
c = a(x) · (x + 1)
= x6 · (x + 1) + r(x) · (x + 1)
= (x5 + x4 + x3 + x2 + x + 1 + r(x)) · (x + 1).
Das Codewort c lässt sich also bereits durch die Multiplikation eines
Polynom von Grad ≤ 5, nämlich x5 + x4 + x3 + x2 + x + 1 + r(x), mit
x + 1 erzeugen. Somit haben wir c bereits oben mitgezählt. Es gilt also
|C| = 26 . Somit ist C ein [7, 6]-Code.
Die Generatormatrix von C ist
x0
1
0

G= 
0
0

0
0

x1
1
1
0
0
0
0
x2
0
1
1
0
0
0
x3
0
0
1
1
0
0
x4
0
0
0
1
1
0
x5
0
0
0
0
1
1
x6

0 x0 + x1
1
2
0
 x2 + x3

0 x + x
3
4
0
x + x
0 x4 + x5
1 x5 + x6
An der Generatormatrix kann man ablesen, dass jedes Wort c ∈ C
gerade Parität hat.
• Welchen Code erzeugt g(x) = (x3 + x + 1) · (x3 + x2 + 1) = x6 +
x5 + x4 + x3 + x2 + x + 1? Es gilt, dass g(x) mit grad(g(X)) = 6 das
Polynom kleinsten Grades in C ist. Es gilt x · g(x) = g(x). Somit ist für
a(x) ∈ F2 [x]/(xn − 1) das Produkt a(x) · g(x) ein Vielfaches von g(x)
und damit 0 oder g(x). Damit gilt C = {0, g(x)} und C ist [7, 1]-Code.
• g(x) = x3 + x2 + 1 und g(x) = x3 + x + 1 erzeugen [7, 4]-Codes.
• g(x) = (x3 + x2 + 1) · (x + 1) erzeugt einen [7, 3]-Code.
• g(x) = (x3 + x + 1) · (x + 1) = x4 + x3 + x2 + 1 erzeugt einen [7, 3]-Code
25
mit den folgenden 23 = 8 Codeworten:
0 = (0, 0, 0, 0, 0, 0, 0)
g1 = (1, 0, 1, 1, 1, 0, 0)
g2 = (0, 1, 0, 1, 1, 1, 0)
g3 = (0, 0, 1, 0, 1, 1, 1)
g1 + g2 = (1, 1, 1, 0, 0, 1, 0)
g1 + g3 = (1, 0, 0, 1, 0, 1, 1)
g2 + g3 = (0, 1, 1, 1, 0, 0, 1)
g1 + g2 + g3 = (1, 1, 0, 0, 1, 0, 1)
Die Untersuchung aller 8 Codeworte liefert d = 4. C ist also ein [7, 3, 4]Code.
Definition 28 (Maximaler zyklischer Code). Ein Code mit Generatorpolynom fi (x) (ein irreduzibler Faktor von xn − 1) heißt maximaler zyklischer
Code. Dies entspricht einem maximalen Ideal.
Warum zyklische Codes? Bei den linearen Codes haben wir bereits die
algebraische Struktur von Untervektorräumen des Fnq ausgenutzt. Bei zyklischen Codes greifen wir auf Ideale im Restklassenring Fq [x]/(xn − 1) des Polynomrings Fq [x] zurück. Bei zyklischen Codes lassen sich Operationen wie
Codieren, Parity-Check, etc. mit effizienten Polynomoperationen darstellen. Eine Polynommultiplikation kann beispielsweise in geeigneten Ringen
in O(n log n) durchgeführt werden, wohingegen das Vektor-Matrix-Produkt
nur in O(n2 ) berechnet werden kann. Darüber hinaus erlaubt die Ringstruktur auch eine einfache Konstruktion von Codes und diese Codes lassen sich
mit gut verstanden Techniken für Ringe/Algebren untersuchen. Da der Fq [x]
euklidisch ist, ist eine Polynomdivision möglich. Diese kann z.B. zur Decodierung eingesetzt werden.
Da Fq [x] euklidisch ist, ist er auch ein Hauptidealring, das heißt für jedes
Ideal I ≤ Fq [x] gilt ∃g(x) ∈ Fq [X] : I = hg(x)i. Da Fq [x] nullteilerfrei ist, ist
er auch ein faktorieller Ring, das heißt jedes f (x) ∈ Fq [x] besitzt eindeutige
Zerlegung in f (x) = f1 (x) · . . . · ft (x) mit irreduziblen Polynomen fi (x).
Falls char(Fq ) 6 |n, dann zerfällt xn − 1 in paarweise verschiedene irreduzible
Faktoren xn − 1 = f1 (x) · . . . · ft (x). xn − 1 ist dann also “quadratfrei”.
Der Chinesische Restsatz sagt uns
Fq [x]/(xn − 1) ∼
= Fq [x]/f1 (x) × . . . × Fq [x]/ft (x)
Der zugehörige Isomorphismus Φ ist die Fouriertransformation.
In Hauptidealringen sind Primideale maximal. Da die fi (x) irreduzibel sind,
sind die Ji = hfi (x)i also maximale Ideale. Damit gilt:
Fq [x]/fi (x) ∼
= Fq grad(fi ) =: Ki
26
Fq [x]/fi (x) ist also Erweiterungskörper vom Grad grad(fi ) von Fq . Da die
Ki Körper sind, haben sie eine triviale Idealstruktur Ki = h1i und {0} = h0i.
Ideale I in K1 × . . . × Kt haben also die Form I = I1 × . . . × It , wobei für
alle j ∈ {1, . . . , t} entweder Ij = h1i oder Ij = h0i gilt.
Wie sieht Φ genau aus? Sind φ1 , . . . , φt Erzeuger von K1 , . . . , Kt , also Ki =
Fq [φi ], lässt sich Φ darstellen als:
Φ : Fq [x]/(xn − 1) → K1 × . . . × Kt
c(x) 7→ (c(φ1 ), . . . , c(φt ))
Maximale zyklische Codes entsprechen genau den Idealen I = I1 × . . . × It
für welche für genau ein j gilt, dass Ij = h0i und für alle anderen i 6= j gilt
Ii = h1i.
Generatormatrix
eines zyklischen Codes Sei C = hg(x)i mit grad(g(x)) =
Pk−1
n−k, sei a(x) = i=0 ai xi . Stelle c(x) = g(x)·a(x) als Matrixmultiplikation
dar. B = {1, x, x2 , . . . , xn−1 } ist Vektorraumbasis von Fq [x]/(xn − 1). Sei G
die Generatormatrix von C


g0 · · · gn−k 0 · · ·
0

.. 
.. ..
 0 ...
.
.
. 


G=. .

..
..
..
 ..
.
.
0 
0 ···
0
g0 · · · gn−k
Prüfpolynom und Prüfmatrix eines zyklischen Codes
Definition 29 (Prüfpolynom). Analog zur Prüfmatrix definieren wir für
zyklische Codes ein Prüfpolynom h(x), sodass
∀c(x) ∈ C : h(x) · c(x) = 0.
Ein solches Polynom existiert, da g(x)|xn −1 und somit g(x) in Fq [x]/(xn −1)
invertierbar ist.
Wir bestimmen nun die Prüfmatrix eines zyklischen Codes C mit Erzeugerpolynom g(x). Es gilt g(x)|xn − 1 und wie eben beschrieben existiert
ein
P
Prüfpolynom h ∈ Fq [x]/(xn − 1) mit gh = xn − 1 ≡ 0. Sei h = ki=0 hi xi ,
dann gilt
∀i ∈ {1, . . . , n − 1} : g0 hi + g1 hi−1 + g2 hi−2 + . . . + gn−k hi−n+k = 0.
Somit hat die Prüfmatrix H die folgende Form:

0 · · · 0 hk · · · · · ·
 ..
 . ... ...
H=

.
 0 ...
..
hk · · · · · · · · · h0
0
27
···
.
..
.
..
···
h0


0

.. 
.
0
Wir werden nun noch eine alternative Darstellung der Prüfmatrix bestimmen: Der Chinesische Restsatz liefert uns, dass C ∼
= I1 × . . . × It , wobei
Ii = h0i oder Ii = h1i. Seien i1 , . . . , il die Indizes mit Iij = h0i. Sei
Φ : Fq [x]/(xn − 1) → K1 × . . . × Kt , f (x) 7→ (f (ξ1 ), . . . , f (ξt )) (Woher Anmerkung
kommen die ξi ?) der zum Chinesischen Restsatz gehörende Isomorphismus. Dann gilt für alle c ∈ C : c(ξi1 ) = . . . = c(ξil ) = 0. Weil Φ ein
Isomorphismus ist, sind diese Bedingungen hinreichend für c ∈ C. Schreiben
e
wir diese Gleichungen in Matrixform, so erhalten wir die Prüfmatrix H.


1 ξi1 ξi21 . . . ξin−1
1
1 ξi ξ 2 . . . ξ n−1 
2
i2
i2 

e
H = . .
..
.. 
 .. ..
.
. 
1 ξil
ξi2l
. . . ξin−1
l
(Damit die Prüfmatrix die richtigen Dimensionen hat, muss jetzt Anmerkung
l = n − k gelten. Wieso gilt das?) Fasst man die Körperelemente ξimj ∈
Kij = Fq [ξij ] (Verstehe ich nicht.) als Spaltenvektoren über Fq auf, so Anmerkung
erhält man eine alternative Prüfmatrix. (Noch eine dritte?)
Anmerkung
3.3.1
Bose-Chaudhuri-Hocquenghem-Codes (BCH-Codes)
Definition 30 (BCH-Codes). Sei β eine primitive n-te Einheitswurzel in
einem Erweiterungskörper von Fq . Seien weiter l, δ ∈ N mit δ ≥ 2. Sei C
der zyklische Code, dessen Erzeugerpolynom g(x) das kleinste gemeinsame
Vielfache der verschiedenen Minimalpolynome von β l , . . . , β l+δ−2 ist. Für
c ∈ C gilt also c(β l ) = . . . = c(β l+δ−2 ) = 0. C heißt BCH-Code mit geplanter
Minimaldistanz δ.
Satz 12. Für die Minimaldistanz d eines BCH-Codes C mit geplanter Minimaldistanz δ gilt d ≥ δ.
Beweis. Es gilt für alle c ∈ C : c(β l ) = . . . = c(β l+δ−2 ) = 0. Die ParityCheck-Matrix lässt sich also darstellen als


1
βl
β 2l
···
β (n−1)l
1 β l+1
β 2(l+1) · · ·
β (n−1)(l+1) 


H = .
,
..
..
..
.
.

.
.
.
l+δ−2
2(l+δ−2)
(n−1)(l+δ−2)
1 β
β
··· β
wobei jeder Eintrag in dieser Matrix als Spaltenvektor der Länge m über Fq
aufgefasst wird. Ein Wort c ∈ Fnq liegt in C genau dann, wenn c · H > = 0.
Gilt für jedes c mit w(c) < δ, dass c · H > = 0, dann ist die Minimaldistanz
von C größer oder gleich δ. Das gilt offensichtlich, wenn je δ − 1 Spalten von
28
H linear unabhängig sind. Jede Spalte von H hat die Form




β il
1
 β i(l+1) 
 βi 




hi = 
 = β il  ..  .
..


 . 
.
β i(δ−2)
β i(l+δ−2)
Sei hi1 , . . . , hiδ−1 die Submatrix von H, die aus den Spalten von H mit Indizes i1 , . . . , iδ−1 besteht, also Hi1 ,...,iδ−1 = (hi1 , . . . , hiδ−1 ). hi1 , . . . , hiδ−1 sind
genau dann linear unabhängig, wenn det(Hi1 ,...,iδ−1 ) 6= 0. Es gilt
1
·
·
·
1
i
i
δ−1
1
d−1
Y
β
···
β
ij l det(Hi1 ,...,iδ−1 ) =
β · ..
..
.
.
j=1
δ−2
δ−2
i
β i1
· · · β d−1 Die Determinante dieser Vandermonde-Matrix lässt sich leicht berechnen
und wir formen die Gleichung um zu:
det(Hi1 ,...,iδ−1 ) =
δ−1
X
β ij l
j=1
Y
(β ir − β is ) 6= 0
r>s
Damit sind hi1 , . . . , hiδ−1 linear unabhängig und deshalb hat C Minimaldistanz ≥ δ.
3.3.2
Reed-Solomon-Codes
Definition 31 (Reed-Solomon-Code). Ein Reed-Solomon-Code ist ein primitiver BCH-Code C der Länge n = q − 1 über Fq . Das Generatorpolynom
Q
eines solchen Codes hat die Form g(x) = δ−1
i=1 (x − αi ), wobei αi Primitivwurzel von Fq ist und δ die geplante Minimaldistanz von C ist. (α ist genau
dann Primitivwurzel von Fq , wenn ∀a ∈ Fq \{0} : ∃i ∈ N : a = αi .) Ein solcher Code hat Dimension k = n − δ + 1. Es gilt d ≥ δ, da C ein BCH-Code
ist. Andererseits sagt die Singleton-Schranke d ≤ n − k + 1. Damit hat C
Minimaldistanz d = δ.
Weitere Materialien
• http://graphics.ethz.ch/teaching/former/showOldCourse.php?
page=infotheory0607&subpage=notes&title=Informationstheorie%
20(WS%2006/07)
• http://www2.iwr.uni-heidelberg.de/groups/compalg/matzat/PDF/
Codierungstheorie.pdf
29
Herunterladen