Skript zur Vorlesung:
Kodierung und Sicherheit
00001 00000
00011 00010 00101 00111
00100
00110
Wintersemester 2004-2005
Dr. Andreas Jakoby
Institut fu ¨r Theoretische Informatik Universit¨at zu Lu ¨beck
Inhaltsverzeichnis 1 Einf¨ uhrung
1
1.1
Was ist ein Code? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1
1.2
Sofort decodierbare Codes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4
1.3
Informationsquelle und erwartete Codewortl¨ ange . . . . . . . . . . . . . . . . . . . . .
7
1.4
Huffman-Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8
2 Informationstheorie
14
2.1
Information und Entropie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
14
2.2
Eigenschaften der Entropie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
16
2.3
Erweiterung einer Informationsquelle . . . . . . . . . . . . . . . . . . . . . . . . . . . .
18
2.4
Codierungstheorem f¨ ur fehlerfreie Codes . . . . . . . . . . . . . . . . . . . . . . . . . .
19
3 Kan¨ ale und Codes
22
3.1
Eine kurzer Einschub: Wahrscheinlichkeitsr¨ aume . . . . . . . . . . . . . . . . . . . . .
22
3.2
Kommunikationskan¨ ale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
24
4 Decodierung und Entscheidungsregeln
26
4.1
Ideale und Maximum-Likelihood Decodierregel . . . . . . . . . . . . . . . . . . . . . .
26
4.2
Die Hammingdistanz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
28
4.3
Decodierfehlerwahrscheinlichkeit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
33
4.4
Aus Alt mach Neu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
36
4.5
Effizienz von Codes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
38
4.6
Schranken f¨ ur Ar (n, d)
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
39
4.7
Die Singleton- und die Plotkinschranke . . . . . . . . . . . . . . . . . . . . . . . . . . .
41
4.8
Das Codierungstheorem f¨ ur fehlerbehaftete Kan¨ ale . . . . . . . . . . . . . . . . . . . .
42
I
5 Lineare Codes 5.1
45
Eine kurzer Einschub: Etwas Algebra . . . . . . . . . . . . . . . . . . . . . . . . . . . .
45
5.1.1
Begriffe aus der Algebra . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
45
5.1.2
Der Vektorraum Znp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
47
Lineare Codes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
50
5.2.1
Generatormatrizen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
51
5.2.2
Der bin¨ are Reed-Muller Code . . . . . . . . . . . . . . . . . . . . . . . . . . . .
51
5.2.3
Decodierung linearer Codes . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
53
5.2.4
Das Fehlersyndrom . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
54
5.2.5
Decodierung von Reed-Muller Codes erster Ordnung . . . . . . . . . . . . . . .
54
5.3
Zyklische Codes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
55
5.4
Reed-Solomon-Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
58
5.5
Das RAID-System . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
59
5.2
6 Sicherheitsprobleme 6.1
60
Intruders . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
60
6.1.1
Kennw¨ orter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
60
6.1.2
Kennworttests . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
62
6.1.3
Test auf Eindringlinge . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
63
7 L¨ osungen
65
II
1
Einfu ¨ hrung
Was ist Sicherheit in der Informatik? In einem ersten Ansatz k¨ onnen wir diesen Begriff in folgenden Szenarien interpretieren: 1. Sicherheit im Sinne der Kryptographie, 2. Sicherheit eines Rechners gegen Angriffe von außen (Viren, W¨ urmer, etc.) oder 3. Sicherheit gegen Datenverlust. In dieser Vorlesung wollen wir uns in erster Linie mit der Sicherheit gegen Datenverlust auseinander setzen. Der Bereich der Informatik, der sich mit dieser Fragestellung auseinander setzt, ist die Kodierungs- und Informationstheorie. Das Umfeld, in dem wir uns also zun¨ achst bewegen wollen, k¨ onnen wir wie folgt darstellen: 1. Eine Daten- bzw. Nachrichtenquelle liefert uns eine Folge von Datenelementen. Diese Quelle produziert nach gewissen stochastischen Gesetzm¨ aßigkeiten eine Folge x0 x1 x2 . . . von Nachrichten xi u ¨ber einem endlichen Alphabet Q . Wir nennen diese Nachrichten auch Quellnachrichten. 2. Mit Hilfe eines Quellencodierers werden diese Signale in Zeichen u ¨bersetzt, welche wir u ¨ber einen Kanal versenden oder im Rechner abspeichern k¨ onnen, d.h. der Quellencodierer bildet die Quellnachrichten in Quellcodew¨ orter ab. ¨ 3. Da das Ubertragen einer Nachricht diese ver¨ andern kann, u ¨bersetzt der Kanalcodierer diese Folge in eine neue Folge, die auch bei m¨ oglichen St¨ orungen eine Wiederherstellung der urspr¨ unglichen Nachricht erlaubt, d.h. der Kanalcodierer bildet die Quellcodew¨ orter in Kanalcodew¨ orter ab. ¨ 4. Der Kanal dient zur Ubertragung einer Nachricht. Dieser kann von einer Rauschquelle beeinflußt werden, welche die Daten, die sich auf dem Kanal befinden, stochastisch ver¨ andert, d.h. der Kanal bildet die Kanalcodew¨ orter in empfangene Codew¨ orter ab. 5. Der Kanaldecodierer hat die Aufgabe die ver¨ anderte Nachricht der empfangenen Codew¨ orter wieder in eine Zeichenfolge zu u uhren, welche der urspr¨ unglichen Nachricht entspricht, d.h. ¨berf¨ der Kanaldecodierer bildet die empfangene Codew¨ orter in Zielcodew¨ orter ab. 6. Der Quellendecodierer schließlich u agt diese Zielcodew¨ orter in die Zielnachricht, welche den ¨bertr¨ Signalen der Nachrichtenquelle entspricht, und liefert diese an die Nachrichtensenke. Die wesentliche Aufgabe, der wir hier begegnen, ist also die Umwandlung einer Folge von Nachrichten in eine Folge von Codew¨ orten und diese (nach einer m¨ oglichen Verfremdung) wieder in eine Folge von Nachrichten. Im Folgenden wollen wir zun¨ achst auf einige grundlegende Fragestellungen aus dem Bereich der Kodierungstheorie eingehen.
1.1
Was ist ein Code?
Ein Code ist eine (endliche) Menge von Zeichenketten u ¨ber einem gegebenen Alphabet, z.B. C1 = {0, 10, 110, 1110},
C2 = {0, 01, 011, 0111} oder C3 = {00, 01, 10, 11} . 1
Definition 1 Sei Σ = {a0 , . . . , ar−1 } eine endliche Menge, welche wir im Folgenden als Codealphabet bezeichnen. Ein r -n¨ arer Code ¨ uber Σ ist eine Teilmenge C von Σ∗ , wobei Σ∗ die Menge aller Zeichenketten (inklusive der leeren Zeichenkette λ ) ¨ uber Σ bezeichnet. Die Elemente c ∈ C nennen wir Codew¨ orter. Zur Darstellung von Codes benutzen wir meistens die modularen Restklassen Zn := {0, 1, . . . , n − 1} . Ein wesentlicher Vorteil dieser Darstellung ist die Eigenschaft, das Zn f¨ ur eine Primzahl n eine Gruppe darstelle. Von großem Interesse sind sogenannte bin¨ are Codes u are Codes ¨ber Z2 und tern¨ u ¨ber Z3 . Definition 2 Sei Γ = {s0 , . . . , sq−1 } eine endliche Menge, welche wir im Folgenden als Quellenalphabet bezeichnen, und C ein Code. Eine Kodierungsfunktion f : Γ → C ist eine bijektive Abbildung von Γ nach C . Wir bezeichnen das Paar (C, f ) auch als Kodierungsschema. Wie wir schon bei den Beispielen C1 , C2 und C3 oben gesehen haben, k¨ onnen wir zwischen Codes variabler L¨ ange und Codes fester L¨ ange bzw. Blockcodes unterscheiden. Wir nennen einen Code C einen Blockcode (der L¨ ange n ), wenn alle Codew¨ orter in C die gleiche L¨ ange n haben. Eine wesentliche Bedingung, welche von einem Code erf¨ ullt sein muss, ist die Eindeutigkeit einer Kodierung. Definition 3 Eindeutig decodierbare Codes Einen Code C ¨ uber einem Alphabet Σ nennen wir eindeutig decodierbar, wenn es f¨ ur jede Folge x ∈ Σ∗ h¨ochstens eine Folge c1 . . . cm ∈ C m gibt, s.d. c1 . . . cm = x ist. Alternativ k¨ onnen wir diese Eigenschaft auch wie folgt beschreiben: Fakt 1 Ein Code ist genau dann eindeutig decodierbar, wenn f¨ ur alle Paare von Folgen c1 . . . cm ∈ C m m 0 0 und c1 . . . ck ∈ C gilt c1 . . . cm = c01 . . . c0k
⇐⇒
m = k und ∀i ∈ {1, . . . , m} : ci = c0i .
Da unser Interesse eindeutig decodierbaren Codes gilt, ist es erforderlich solche Codes mit Hilfe einfacher Verfahren von nicht eindeutig decodierbaren Codes zu unterscheiden. Die Ungleichung von Kraft gibt uns eine notwendige Bedingung f¨ ur eindeutig decodierbaren Codes: Theorem 1 [Satz von McMillan] Sei C ein eindeutig decodierbarer Code ¨ uber einem r -n¨aren Alphabet Σ , der aus ` Codew¨ortern c1 , . . . , c` der L¨angen n1 ≤ n2 ≤ · · · ≤ n` besteht. Dann gilt: ` X 1 ni r i=1
≤
2
1.
Beweis: Sei αj die Anzahl der Codew¨ orter aus C der L¨ ange j . Betrachten wir nun den Term auf der linken Seite der Ungleichung, so gilt: ` X 1 r ni i=1
F¨ ur u ∈ N gilt nun max k nk X i=1
αi ri
!u
α
1 r1
=
max k nk X
=
i=1
αi . ri
α2 αmaxk nk u + . . . + r2 rmaxk nk X αi 1 αi 2 αi · i2 · . . . · iuu i 1 r r r mit 1≤ij ≤maxk nk X αi · αi · . . . · α i
+
= i1 ,...,iu
u
2
1
=
ri1 +...+iu
i1 ,...,iu mit 1≤ij ≤maxk nk
.
Da 1 ≤ ij ≤ maxk nk , gilt f¨ ur die Summe i1 + . . . + iu u ≤ i1 + . . . + iu ≤ u · max nk . k
Setzen wir Nk =
P
αi1 · αi2 · . . . · αiu , so erhalten wir ! ! u max Xk nk 1 X αi αi · αi 2 · . . . · α i u = ri ri i +...+i =i 1 i=u
i1 +...+iu =k
max k nk X i=1
u
1
=
u max Xk nk i=u
Ni . ri
Wir wollen nun den Wert von Ni analysieren. Da αi die Anzahl der Codew¨ orter in C der L¨ ange i ist, ist αi1 · αi2 · . . . · αiu die Anzahl der Zeichenketten, die sich u ¨ber die Konkatenation eines Codewortes der L¨ ange i1 gefolgt von einem Codewortes der L¨ ange i2 usw. ergeben. Hierbei ist i die L¨ ange der resultierenden Zeichenkette. Da C ein eindeutig decodierbarer Code ist, kann jede Zeichenkette, die sich u asst, nur bei einem Tupel (i1 , . . . , iu ) aufgez¨ ahlt ¨ber eine solche Konkatenation darstellen l¨ werden. Da C ein Code u aren Alphabet ist, folgt somit ¨ber einem r -n¨ Ni und weiter
max k nk X i=1
αi ri
!
≤
≤ ri
u·max Xk nk i=u
ri ri
≤ u · max nk . k
F¨ ur den urspr¨ unglichen Term in der Ungleichung gilt daher ` X 1 r ni i=1
≤
√ u
u · maxk nk .
Da diese Beobachtung f¨ ur alle Werte u ∈ N gilt, folgt ` X √ √ √ 1 ≤ lim u u · maxk nk = lim u u· lim u maxk nk = ni u→∞ u→∞ u→∞ r i=1
lim e
u→∞
ln u u
= elimu→∞
ln u u
Die Ungleichung aus Theorem 1 wird oft auch als die Ungleichung von Kraft bezeichnet. 3
= e0 = 1 .
Aufgabe 1 Beweisen Sie Fakt 1. Aufgabe 2 Zeigen Sie, dass die folgenden Codes nicht eindeutig decodierbarer sind: C4 C5
= {0, 10, 1100, 1101, 1110, 1111, 10001} = {10, 110, 1110, 1011}
Aufgabe 3 Sei C ein Code ¨ uber einem r -n¨aren Alphabet, r ≥ 2 , der aus ` Codew¨ortern c1 , . . . , c` der L¨angen n1 ≤ n2 ≤ · · · ≤ n` besteht. Ferner soll f¨ ur C ` X 1 ni r i=1
=
1
gelten. Zeigen Sie, dass dann n`−1 = n` ist.
1.2
Sofort decodierbare Codes
Vergleichen wir Blockcodes mit Codes variabler L¨ ange, so erkennen wir, dass schon bei einem bin¨ aren Codealphabet {0, 1} und bei einer M¨ achtigkeit von ` = 2m + 1 die meisten Zeichenketten aus {0, 1}k f¨ ur k m nicht als eine Konkatenation von Codew¨ ortern dargestellt werden k¨ onnen. Auf der anderen Seite, sind Blockcodes eindeutig decodierbar, was jedoch nicht auf jeden Code variabler L¨ ange zutrifft (vergleiche Code C4 und C5 ). Ein weiterer Vorteil von Blockcodes ist deren sofortige Decodierbarkeit. Definition 4 Einen Code nennen wir sofort decodierbar, wenn er eindeutig decodierbar ist und bei dem man jede Zeichenfolge, die aus aneinandergereihten Codew¨ortern besteht, von vorne beginnend Wort f¨ ur Wort decodieren kann, ohne die nachfolgenden Zeichen beachten zu m¨ ussen. Code C2 ist ein Beispiel f¨ ur einen Code der nicht sofort decodierbar ist. Eine n¨ ahere Betrachtung von C2 zeigt uns, dass die meisten Codew¨ orter Pr¨ afixe anderer Codew¨ orter sind. Ein Wort w ist Pr¨ afix eines Worts u , wenn wir w durch Konkatenation mit einem Wort v zu u erg¨ anzen k¨ onnen, d.h. wv = u . Diese Beobachtung f¨ uhrt uns zu folgender Definition: Definition 5 Ein Code besitzt die Pr¨ afix-Eigenschaft (oder auch FANO-Bedingung genannt), wenn kein Codewort Pr¨afix eines anderen Codeworts ist. Besitzt ein Code die Pr¨afix-Eigenschaft, so nennen wir ihn auch einen Pr¨ afix-Code. Die Wichtigkeit der Pr¨ afix-Eigenschaft wird aus folgendem Theorem deutlich: Theorem 2 Ein Code ist genau dann sofort decodierbar, wenn er ein Pr¨afix-Code ist. Beweis: 1) Wir betrachten zun¨ achst den Fall, dass C ein Pr¨ afix-Code ist. Sei w eine beliebige Zeichenkette, welche durch das Aneinanderf¨ ugen von Codew¨ ortern entsteht. Der Beweis erfolgt u ¨ber eine vollst¨ andige Induktion u orter deren Konkatenation w ergeben. Ist ¨ber die Anzahl m der Codew¨ m = 1 , so folgt aus der Pr¨ afix-Eigenschaft, dass kein Pr¨ afix von w ein Codewort ist. Die Decodierung ist somit eineindeutig. 4
Wir betrachten nun den Fall, dass die sofortige Decodierbarkeit f¨ ur alle Werte m ≤ m0 erf¨ ullt ist. Sei w eine Zeichenkette, welche durch das Aneinanderf¨ ugen von m0 + 1 Codew¨ ortern entsteht. Aus der Pr¨ afix-Eigenschaft folgt, dass der Pr¨ afix u von w , der ein Codewort aus C darstellt, eindeutig bestimmt ist. Sei also w = uv . Da w aus m0 + 1 Codew¨ ortern besteht und das erste Codewort u eindeutig bestimmt ist, muss v durch die Konkatenation von m0 Codew¨ ortern beschrieben werden k¨ onnen. 2) Sei C ein sofort decodierbarer Code, der nicht die Pr¨ afix-Eigenschaft besitzt. Dann gibt es zwei Codeworte c1 , c2 ∈ C , so dass c1 Pr¨ afix von c2 ist. Beginnt eine Zeichenkette w mit c1 , so k¨ onnen wir nach dem Lesen der ersten |c1 | Symbole von w diese noch nicht decodieren, da sich nach dem |c1 | + 1 -ten Symbol herausstellen k¨ onnte, dass w auch den Pr¨ afix c2 besitzt. w ist somit nicht sofort decodierbar – ein Widerspruch. Die Pr¨ afix-Eigenschaft eines Codes ist durch einen paarweisen Vergleich aller Codew¨ orter zu u ¨berpr¨ ufen. Neben der sofortigen Decodierbarkeit eines solchen Codes erhalten wir zudem die Eigenschaft, dass ein Pr¨ afix-Code immer eindeutig decodierbar ist. F¨ ur einen beliebigen Code stellt uns die Aufgabe die eindeutige Decodierbarkeit nachzuweisen vor ein erhebliches Problem; ein Algorithmus zur L¨ osung geht auf Patterson und Sardinas [SaPa53] zur¨ uck und ist unter anderem in [Gall68, Sayo00] publiziert: Algorithm 1 EindeutigDecodierbar (C) Eingabe: Code C Ausgabe: Antwort, ob C eindeutig decodierbar ist 1: setze C0 = C 2: for i = 1 to ∞ do 3: w¨ ahle c1 , c2 aus Ci−1 , s.d. c1 = c2 u f¨ ur ein u 6∈ Ci−1 \ C0 4: if es existiert kein solches Paar c1 , c2 then 5: C ist eindeutig decodierbar 6: breche die Schleife ab 7: else if u ∈ C0 then 8: C ist nicht eindeutig decodierbar 9: breche die Schleife ab 10: end if 11: setze Ci = Ci−1 ∪ {u} 12: end for Anstelle auf diesen Algorithmus n¨ aher einzugehen, werden wir noch einige weitere Eigenschaften von Pr¨ afix-Codes herleiten. Theorem 3 1. [Satz von Kraft] Es existiert genau dann ein Pr¨afix-Code C ¨ uber einem r -n¨aren Alphabet Σ , der aus ` Codew¨ortern c1 , . . . , c` der L¨angen n1 ≤ n2 ≤ · · · ≤ n` besteht, wenn gilt: ` X 1 ≤ 1. ni r i=1 2. Sei C ein Pr¨afix-Code ¨ uber einem r -n¨aren Alphabet. C ist genau dann ein maximaler Pr¨ afix-Code, d.h. C ist keine echte Teilmenge eines anderen r -n¨aren Pr¨afix-Codes, wenn f¨ ur C die Gleichheit in der Kraftschen Ungleichung gilt. 3. Sei C ein Pr¨afix-Code u ¨ber einem r -n¨aren Alphabet mit maximaler Codewortl¨ange m . Ist C kein maximaler Pr¨afix-Code, dann k¨onnen wir zu C noch Codew¨orter der L¨ange m hinzuf¨ ugen, ohne dass der resultierende Code die Pr¨afix-Eigenschaft verletzt. 5
Beweis: Wie im Beweis vom Satz von McMillan beginnen wir mit einer Umformung der Ungleichung von Kraft. Sei αj die Anzahl der Codew¨ orter aus C der L¨ ange j und m = maxci ∈C |ci | die maximale Codewortl¨ ange, dann gilt ` X 1 ni r i=1
=
m X αi i=1
m 1 X αi · rm−i . · rm i=1
=
ri
Die Ungleichung von Kraft kann demnach auch wie folgt dargestellt werden: m X i=1
αi · rm−i
≤ rm
bzw.
αm +
m−1 X i=1
αi · rm−i
≤ rm .
Wir kommen nun zum eigentlichen Beweis der einzelnen Teile des Theorems. 1. a) Da ein Pr¨ afix-Code eindeutig decodierbar ist, folgt aus dem Satz von McMillan, dass jeder Pr¨ afix-Code die Ungleichung von Kraft erf¨ ullen muss. Da wir jedoch einige Aspekte dieser Ungleichung im Weiteren noch n¨ aher untersuchen wollen, werden wir hier diese Richtung erneut beweisen. Sei c ∈ C ein Codewort der L¨ ange i ≤ m − 1 . Da C ein Pr¨ afix-Code ist, gibt es keine Zeichenkette x der L¨ ange m − i , so dass cx ∈ C ist. Es gibt 2m−i Zeichenketten x der L¨ ange m − i und somit kennen wir 2m−i Zeichenketten cx , die nicht in C vorkommen. Betrachten wir nun ein zweites Codewort c0 ∈ C der L¨ ange j ≤ m − 1 , so gilt zudem, dass die Mengen {cx|x ∈ Σm−i } und {c0 y|y ∈ Σm−j } disjunkt sind. Sind diese Mengen nicht disjunkt, ist entweder c ein Pr¨ afix von c0 oder c0 ein Pr¨ afix von c . Wir folgern, dass wir Pm−1 so m−i α · r Zeichenketten der L¨ a nge m konstruieren k¨ o nnen, die nicht in C sind. Somit i i=1 Pm−1 ist αm ≤ rm − i=1 αi · rm−i . Die Ungleichung von Kraft ist f¨ ur jeden Pr¨ afix-Code erf¨ ullt.
b) Wir m¨ ussen nun noch die Umkehrung des obigen Falls zeigen: Seien n1 ≤ n2 ≤ · · · ≤ n` L¨ angen, welche die Ungleichung von Kraft erf¨ ullen, dann existiert ein Pr¨ afix-Code C u ¨ber einem r -n¨ aren Alphabet, der aus ` Codew¨ ortern c1 , . . . , c` der L¨ angen n1 , n2 , · · · , n` besteht.
Der Beweis erfolgt u andige Induktion u orter in C . Ist ¨ber eine vollst¨ ¨ber die Anzahl ` der Codew¨ ` ≤ r , dann w¨ ahlen wir die Codew¨ orter in C so, dass alle mit einem unterschiedlichen Symbol beginnen. Um die Codew¨ orter auf die gew¨ unschten L¨ angen n1 , n2 , · · · , n` zu bringen, k¨ onnen wir sie beliebig erg¨ anzen. Da jedes Codewort mit einem individuellen Symbol beginnt, ist kein Codewort ein Pr¨ afix eines anderen Codeworts. Die Aussage gilt somit f¨ ur ` ≤ r .
Im Folgenden wollen wir annehmen, dass die Aussage auch f¨ ur alle ` ≤ `0 g¨ ultig ist. Sei n1 ≤ n2 ≤ · · · ≤ n`0 ≤ n`0 +1 eine Folge von L¨ angen, welche die Ungleichung von Kraft erf¨ ullen. Betrachten wir nun die ersten `0 dieser L¨ angen, so gibt es nach Induktionsannahme einen Pr¨ afix-Code C = {c1 , . . . , c`0 } der M¨ achtigkeit `0 mit ci = ni f¨ ur alle i ≤ `0 . Ferner gilt `0 X 1 ni r i=1
= (αm − 1) +
m−1 X i=1
αi · rm−i
< rm .
Betrachten wir also die Codew¨ orter C = {c1 , . . . , c`0 } bzw. die Menge der durch diese Codew¨ orter c generierten verbotenen Mengen {cx|x ∈ Σm−|c| } , so gilt entsprechend unserer unter (a) hergeleiteten Beobachtung: m−1 [ X {cx|x ∈ Σm−|c| } = (αm − 1) + αi · rm−i < rm . i=1
c∈C
Es gibt zumindest eine Zeichenkette
c ∈ Σm \
[
c∈C
{cx|x ∈ Σm−|c| } .
6
Da diese Zeichenkette eine maximale L¨ ange hat, kann sie kein Pr¨ afix eines Codeworts aus C sein. Ferner haben wir bei der Auswahl von c alle Zeichenketten ausgeschlossen, die ein Codewort aus C zum Pr¨ afix haben. Folglich erf¨ ullt C ∪ {c} die Pr¨ afix-Eigenschaft und ist somit ein Pr¨ afix-Code mit `0 + 1 Codew¨ ortern {c1 , . . . , c`0 , c`0 +1 } mit n1 ≤ · · · ≤ n`0 ≤ n`0 +1 . 2. Wir betrachten zun¨ achst den Fall, dass f¨ ur einen gegebenen Pr¨ afix-Code C die Gleichheit in der P 1 Ungleichung von Kraft gilt. Dann gilt aber f¨ ur jeden r -n¨ aren Code C 0 ⊃ C , dass c∈C 0 r |c| > 1 ist. Folglich ist C 0 kein Pr¨ afix-Code. C ist somit maximal.
Die R¨ uckrichtung folgt unmittelbar aus dem dritten Punkt des Theorems. P 1 3. Sei c∈C r |c| < 1 . Dann gibt es zumindest eine Zeichenkette [ {cx|x ∈ Σm−|c| } . c ∈ Σm \ c∈C
Da diese Zeichenkette eine maximale L¨ ange hat, kann sie kein Pr¨ afix eines Codeworts aus C sein. Ferner haben wir bei der Auswahl von c alle Zeichenketten ausgeschlossen, die ein Codewort aus C zum Pr¨ afix haben. Folglich erf¨ ullt C ∪ {c} die Pr¨ afix-Eigenschaft und C ist nicht maximal.
Fassen wir zusammen: Existiert ein eindeutig decodierbarer Code mit den Codewortl¨ angen n1 , . . . , n` , so ist nach dem Satz von McMillan die Ungleichung von Kraft erf¨ ullt. Wenden wir nun den Satz von Kraft an, so sehen wir, dass es auch einen Pr¨ afix-Code mit den Codewortl¨ angen n1 , . . . , n` geben muss. Es gilt also: Korollar 1 Existiert ein eindeutig decodierbarer Code mit den Codewortl¨angen n1 , . . . , n` , dann existiert auch ein Pr¨afix-Code mit diesen Codewortl¨angen.
1.3
Informationsquelle und erwartete Codewortl¨ ange
Bei der Vorstellung des Umfelds der Kodierungstheorie haben wir bereits gesehen, dass ein Code dazu dient, die Ausgabe einer Nachrichten- bzw. Informationsquelle zu codieren. Es ist daher an der Zeit das Modell der Informationsquelle vorzustellen: Definition 6 Eine Informationsquelle (kurz Quelle) ist ein Paar Q = (Γ, P ) bestehend aus dem Quellenalphabet Γ = {s0 , . . . , sq−1 } und einem randomisierten Bildungsgesetz P , welches die Ausgabefolgen der Quelle beschreibt. Die Quelle Q wollen wir uns im Folgenden als eine Black-Box vorstellen, welche in regelm¨aßigen Abst¨anden Symbole ausgibt. F¨ ur ein Quellensymbol si gibt P (si ) = pi die Wahrscheinlichkeit an, dass die Quelle si ausgibt. Ein Maß f¨ ur die Effizienz eines Codierungsschemas ist die erwartete Codewortl¨ ange. Definition 7 Sei Q = (Γ, P ) eine Informationsquelle und (C, f ) ein Codierungsschema f¨ ur Γ , dann definieren wir die erwartete Codewortl¨ ange von (C, f ) als X AveLen(C, f ) := P (si ) · |f (si )| . si ∈Γ
7
Aufgabe 4 Betrachten Sie das Codierungsschema (C, g) f¨ ur die Quelle (Γ, P ) mit C = {00, 10, 11, 10, 0110, 0111} und Quellensymbol si a b c d e f
g(si ) 11 010 00 10 0111 0110
P (si ) 0, 35 0, 10 0, 19 0, 25 0, 06 0, 05
Bestimmen sie die erwartete Codewortl¨ange von (C, g) . Ist C maximal? Aufgabe 5 Sei (Γ, P ) eine Quelle mit P (si ) = |Γ|−1 f¨ ur alle Quellensymbol si . Geben Sie ein Codierungsschema f¨ ur einen r -n¨aren Code an, welcher die erwartete Codewortl¨ange minimiert. Beweisen Sie Ihre Aussage. Aufgabe 6 Sei (Γ, P ) eine Quelle mit P (si ) = |Γ|−1 f¨ ur alle Quellensymbol si . Geben Sie ein Codierungsschema f¨ ur einen r -n¨aren Pr¨afix-Code an, welcher die erwartete Codewortl¨ange minimiert. Beweisen Sie Ihre Aussage.
1.4
Huffman-Code
1952 publizierte D. A. Huffman ein effizientes Codierungsschema, dessen erwartete Codewortl¨ ange wir im Folgenden untersuchen wollen. Sei Q = (Γ, P ) eine Informationsquelle mit Γ = {s0 , . . . , sq−1 } und Σ = {a0 , . . . , ar−1 } ein r n¨ ares Codealphabet. Wir wollen nun das Verfahren von Huffman vorstellen, mit dessen Hilfe wir zun¨ achst einen Huffman-Baum T = (V, E) f¨ ur die Quelle Q generieren k¨ onnen. Hierbei sollte man beachten, dass f¨ ur jede Quelle verschiedene Huffman-Codes existieren, die jedoch alle die gleiche erwartete Codewortl¨ ange besitzen. Phase 0 Zun¨ achst erg¨ anzen wir Γ , so dass der nun folgende Algorithmus aufgeht. W¨ ahle ` ∈ N minimal mit m = r + ` · (r − 1) ≥ q und setze Γ0 = Γ ∪ {sq , . . . , sm−1 } , wobei si mit i ∈ {q, . . . , m − 1} neue Symbole sind. Ferner definiere eine Gewichtsfunktion w durch P (si ) f¨ ur si ∈ Γ w(si ) := 0 sonst f¨ ur alle si ∈ Γ0 . Im weiteren Verlauf dieses Verfahrens werden wir w , V , Γ1 , . . . , Γ`+1 und E sukzessive ver¨ andern bzw. aufbauen. Als Initialwerte w¨ ahlen wir V = Γ0 und E = ∅ . Γ0 stellt die Menge der Knoten dar, die wir noch zu einem Baum zusammenfassen m¨ ussen. Phase i mit 1 ≤ i ≤ ` + 1 Sei sm+i−1 ein neues Symbol (bzw. ein neuer Knoten). In dieser Phase fassen wir m Knoten aus Γi−1 zusammen, wobei sm+i−1 im Weiteren als Repr¨ asentant dieser Knoten dienen soll:
8
Sei gi = σ1 , . . . , σ|Γi−1 | eine sortierte Folge der Knoten aus Γi−1 , wobei w(σ1 ) ≤ w(σ2 ) ≤ . . . ≤ w(σ|Γi−1 | ) ist. Nun definieren wir w(sm+i−1 ) =
r X
w(σj )
j=1
und setzen = {sm+i−1 } ∪ Γi−1 \ {σ1 , . . . , σr } = V ∪ {sm+i−1 }
Γi V
= E ∪ {(sm+i−1 , σ1 ), . . . , (sm+i−1 , σr )} .
E
Phase ` + 1 L¨ osche nun die Knoten der m − q Symbole sq , . . . , sm−1 aus V , die wir in der Phase 0 eingef¨ ugt haben: = V \ {sq , . . . , sm−1 }
V
= E \ {(sm , sq ), . . . , (sm , sm−1 )} .
E Gebe T = (V, E) aus.
Um einen Huffman-Code aus dem Huffman-Baum T = (V, E) zu generieren, markieren wir f¨ ur jeden Knoten si ∈ V dessen ausgehenden Kanten (si , sj ) mit einem Symbol aus Σ , wobei wir darauf achten, dass kein Knoten si zwei ausgehende Kanten besitzt, die mit dem gleichen Symbol markiert sind. Da die urspr¨ unglichen Symbole aus Γ sich alle in den Bl¨ attern des Baumes befinden, existiert f¨ ur jedes Symbol si ∈ Γ ein eindeutiger Pfad πi von der Wurzel sm+` von T zu dem jeweiligen Blatt si . Die Codierung f (si ) ergibt sich aus der Folge der Kantenmarkierungen auf πi von sm+` nach si . Beispiel 1 Konstruiere einen bin¨aren Huffman-Code f¨ ur folgende Quelle Symbol a b c d e f
Wahrscheinlichkeit 0,35 0,10 0,19 0,25 0,06 0,05
Phase 1 0,05
f
0,06
b
0,11
e
0,10
b
0,19
c
0,25
d
0,19
c
0,25
d
0,35
a
0,25
d
0,35
a
0,06
e
Phase 2 0,10
0,05
f
0,06
e
Phase 3 0,19
c 0,10
0,21 b 0,05
0,11 f
9
0,35
a
Phase 4 0,25
d
0,35
a 0,19
0,40 c 0,10
0,21 b
0,11
0,05
f
0,06
e
Phase 5 0,40 0,19
c 0,10
0,60 0,21 b
0,25
d
0,06
e
0,35
a
0,11
0,05
f
Huffman-Code
0 c
0
1
1
0
0 b
1 0
d
1 a
1
f
e
Abbildung 1: Die sortierten Folgen σ vor den einzelnen Phasen bei der Erzeugung eines HuffmanBaums.
Die Bedeutung des Huffman-Codes ergibt sich aus folgendem Theorem: Theorem 4 Sei Q = (Γ, P ) eine Informationsquelle, dann sind alle Huffman-Codes (H, f ) f¨ ur Q Pr¨afix-Codes. Zudem ist die erwartete Codewortl¨ange aller Huffman-Codes f¨ ur Q minimal f¨ ur alle Pr¨afix-Codes f¨ ur Q . Beweis: Wir wollen dieses Theorem nur f¨ ur bin¨ are Huffman-Codes beweisen. Der Beweis, dass ein Huffman-Code ein Pr¨ afix-Code ist, erfolgt u ¨ber eine Widerspruchsannahme. Sei also H ein Huffman-Code, der die Pr¨ afix-Eigenschaft nicht hat, d.h. es existieren zwei Codew¨ orter c1 , c2 ∈ H wobei c1 ein Pr¨ afix von c2 ist. Nach Konstruktion sind die Codew¨ orter eines HuffmanCodes eineindeutig den Bl¨ attern eines Huffman-Baums zugeordnet, wobei die Kantenbeschriftungen der Wurzel-Blatt-Pfade den Codew¨ ortern entsprechen. Ist also c1 ein Pr¨ afix von c2 , so sind die beiden Wurzel-Blatt-Pfade auf dem ersten |c1 | Kanten identisch, d.h. das Blatt f¨ ur c1 ist ein interner Knoten auf dem Wurzel-Blatt-Pfad von c2 – ein Widerspruch.
10
Wir wollen nun den zweiten Teil von Theorem 4 beweisen, d.h. wir wollen zeigen, dass f¨ ur jeden Huffman-Code (H, f ) und f¨ ur jeden Pr¨ afix-Code (C, g) gilt: AveLen(H, f ) ≤ AveLen(C, g) . Zur Vereinfachung machen wir zun¨ achst ein paar Beobachtungen, welche es uns erlauben die Form von C zu vereinfachen. Zun¨ achst k¨ onnen wir o.B.d.A. annehmen, dass die Quellensymbole bez¨ uglich ihrer Wahrscheinlichkeit sortiert sind, d.h. Γ = {s0 , . . . , sq−1 } , wobei p0 ≥ p1 ≥ . . . ≥ pq−1 ist. Beobachtung 1 F¨ ur jede Quelle Q = (Γ, P ) , Γ = {s0 , . . . , sq−1 } und jedes Codierungsschema (C, f ) eines Pr¨afix-Codes C f¨ ur Q existiert ein Codierungsschema (C, g) , s.d. |g(s0 )| ≤ |g(s1 )| ≤ . . . ≤ |g(sq−1 )| und AveLen(C, g) ≤ AveLen(C, f ) ist. Beweisidee: Zun¨ achst zeigen wir, dass sich die erwartete Codewortl¨ ange von einem Codierungsschema (C, f ) verkleinert, wenn wir die Codew¨ orter von zwei Symbolen si , sj mit pi > pj und |f (si )| > |f (sj )| vertauschen, d.h. g(si ) := f (sj ) , g(sj ) := f (si ) und g(sk ) := f (sk ) f¨ ur alle k 6∈ {i, j} . Die Beobachtung folgt nun u andige Induktion u ¨ber eine vollst¨ ¨ber die Anzahl der Vertauschungsoperationen, die n¨ otig sind, um aus der unsortierten Folge |f (s0 )|, . . . , |f (sq−1 )| eine sortierte Folge herzuleiten. Beobachtung 2 F¨ ur jede Quelle Q = (Γ, P ) , Γ = {s0 , . . . , sq−1 } und jedes Codierungsschema (C, f ) eines Pr¨afix-Codes C f¨ ur Q existiert ein Codierungsschema (C 0 , g) , s.d. |g(sq−2 )| = |g(sq−1 )| , die beiden Codew¨orter g(sq−2 ) und g(sq−1 ) unterscheiden sich nur in der letzten Position und AveLen(C, g) ≤ AveLen(C, f ) . Beweisidee: O.B.d.A. nehmen wir an, dass |f (s0 )| ≤ |f (s1 )| ≤ . . . ≤ |f (sq−1 )| ist (siehe Beobachtung 1). Gilt nun |g(sq−2 )| < |g(sq−1 )| , so erhalten wir ein Codierungsschema f¨ ur einen Pr¨ afix-Code C 0 mit AveLen(C 0 , g) < AveLen(C, f ) indem wir beim Codewort f (sq−1 ) das letzte Symbol streichen und die anderen Codew¨ orter unver¨ andert lassen. Da f (sq−1 ) das l¨ angste Codewort in C ist und kein anderes Codewort aus C ein Pr¨ afix von f (sq−1 ) ist, ist der resultierende Code C 00 = (C \ {f (sq−1 )}) ∪ { v ∈ Γ|f (sq−1 )|−1 | | vx = f (sq−1 ) } wieder ein Pr¨ afix-Code. Sei (C 00 , f 0 ) das resultierende Codierungsschema. Sei w eine Zeichenkette, die wir erhalten, indem wir in f 0 (sq−1 ) das letzte Symbol ¨ andern. Ist w noch kein Codewort, so erhalten wir einen Pr¨ afix-Code, indem wir das Codewort f 0 (sq−1 ) gegen w austauschen. Ist w bereits ein Codewort, d.h. w = f 0 (si ) , so erhalten wir den gew¨ unschten Pr¨ afix-Code, indem wir die Codew¨ orter f¨ ur si und sq−2 vertauschen. Durch Vertauschung von Codew¨ ortern kann man zudem zeigen: Beobachtung 3 Die erwartete Codewortl¨ange eines Huffman-Codes ist unabh¨angig von der Reihenfolge der gleichwahrscheinlichen Quellensymbole in der sortierten Folge g 1 der Phase 1. Somit k¨onnen wir o.B.d.A. annehmen, dass die Quellensymbole sq−2 und sq−1 in dieser Folge die ersten beiden echten Quellensymbole sind, und die beiden korrespondierenden Codew¨orter die gleiche L¨ange haben und sich nur in der letzten Codewortposition unterscheiden.
11
Im Folgenden wollen wir davon ausgehen, dass die betrachteten Codes (C, g) und (H, f ) den Bedingungen der obigen Beobachtungen gen¨ ugt. Wir wollen uns nun dem Beweis des Theorems zuwenden. Dieser erfolgt u andige Induktion u oße q des Quellenalphabets. F¨ ur q = 2 ist ¨ber eine vollst¨ ¨ber die Gr¨ die erwartete Codewortl¨ ange eines Huffman-Codes 1, somit gilt AveLen(H, f ) ≤ AveLen(C, g) . Wir betrachten nun den Fall, dass die Behauptung des Theorems f¨ ur alle Quellenalphabete der Gr¨ oße q − 1 erf¨ ullt ist. Sei (H, f ) ein Huffman-Code f¨ ur eine Quelle Q = (Γ, P ) mit q = |Γ| . Im Induktionsschritt werden wir aus dieser Quelle eine neue generieren, indem wir die Quellensymbole sq−2 und sq−1 zu einem Symbol s zusammenfassen. Die resultierende Quelle Q0 = (Γ0 , P 0 ) erhalten wir, indem wir Γ0 = {s} ∪ Γ \ {sq−2 , sq−1 } und P 0 (s) = P (sq−2 ) + P (sq−1 ) und P 0 (si ) = P (si ) f¨ ur si ∈ Γ \ {sq−2 , sq−1 } setzen. Nach Beobachtung 2 und 3 k¨ onnen wir davon ausgehen, dass sich die Codew¨ orter f (sq−2 ) und f (sq−1 ) nur im letzten Symbol unterscheiden. Entfernen wir aus dem Huffman-Baum die beiden Bl¨ atter sq−2 und sq−1 , so erhalten wir den Huffman-Baum T 0 , der sich durch die Phasen 2 bis ` + 1 f¨ ur die Quelle Q0 ergibt. Sei (H 0 , f 0 ) das Codierungsschema, welches wir f¨ ur T 0 erhalten. F¨ ur (H 0 , f 0 ) gilt: AveLen(H 0 , f 0 ) = AveLen(H, f ) − |f (sq−2 )| · P (sq−2 ) − |f (sq−1 )| · P (sq−1 )) + (|f (sq−1 )| − 1) · (P (sq−2 ) + P (sq−1 )) = AveLen(H, f ) − (P (sq−2 ) + P (sq−1 )) .
Hierbei ist zu beachten, dass im bin¨ aren Fall der Huffman-Baum ein bin¨ arer Baum ist. Da sq−2 und sq−1 die beiden Symbole sind, die in der ersten Phase unseres Verfahrens zusammengefasst werden, haben die beiden Codew¨ orter die gleiche L¨ ange. Betrachten wir nun das Codierungsschema (C, g) . Nach Beobachtung 1 und 2 k¨ onnen wir davon ausgehen, dass sich die Codew¨ orter g(sq−2 ) und g(sq−1 ) nur in der letzten Position unterscheiden. O.B.d.A. sei g(sq−2 ) = w0 und g(sq−1 ) = w1 . Da C ein Pr¨ afix-Code ist, gilt w 6∈ C , wir erhalten somit aus (C, g) einen neuen Pr¨ afix-Code (C 0 , g 0 ) f¨ ur Q0 , indem wir dem neuen Symbol s das Codewort w zuweisen. Wie schon f¨ ur den Huffman-Code gilt: AveLen(C 0 , g 0 ) = AveLen(C, g) − (P (sq−2 ) + P (sq−1 )) . Entsprechend der Induktionshypothese gilt: AveLen(H 0 , f 0 ) ≤ AveLen(C 0 , g 0 ) und folglich ist AveLen(H, f ) ≤ AveLen(C, g) . Soweit haben wir gezeigt, dass f¨ ur jeden Pr¨ afix-Code (C, g) und jeden Huffman-Code (H, f ) eine Zuordnung f 0 gem¨ aß Beobachtung 3 existiert, so dass gilt: AveLen(H, f ) = AveLen(H, f 0 ) ≤ AveLen(C, g) .
Die obigen Ausf¨ uhrungen zu Codes sind leicht u uchern [HeQu95] und [Roma96] ¨berarbeitet aus den Lehrb¨ entnommen.
12
Aufgabe 7 Bestimmen Sie einen bin¨aren Huffman-Code f¨ ur die Quelle Q = (Γ, P ) mit Γ = {s0 , . . . , s10 } und ( 9 f¨ ur i ≤ 9 10i+1 P (si ) = 1 f¨ ur i = 10 . 1010 Aufgabe 8 Zeigen Sie, dass f¨ ur jede Quelle Q = (Γ, P ) mit P (si ) = |Γ|−1 und f¨ ur alle si ∈ Γ jeder Huffman-Code nur Codew¨orter von maximal zwei unterschiedlichen L¨angen besitzt. Bestimmen Sie diese L¨angen in Abh¨angigkeit von der Gr¨oße des Codealphabets. Aufgabe 9 Sei Γ = {s0 , . . . , sq−1 } mit P (s0 ) ≤ P (s1 ) ≤ . . . ≤ P (sq−1 ) und q − r ein Vielfaches von r − 1 . Bestimmen Sie die maximale L¨ange eines Codeworts eines Huffman-Codes ¨ uber einem r -n¨aren Alphabet. Geben sie eine scharfe obere Schranke f¨ ur P (s0 ) an.
13
2
Informationstheorie
Im Folgenden wollen wir den Informationsgehalt einer Nachricht untersuchen. Das Maß, mit dem wir diese Information messen wollen, ist die Entropie, d.h. die Unsicherheit der Quelle. Zun¨ achst wollen wir jedoch die Information untersuchen, die in einem einzelnen Quellensymbol steckt. Betrachten wir 1 und die Wahrscheinden Fall einer bin¨ aren Quelle ({0, 1}, P ) , wobei die Wahrscheinlichkeit f¨ ur 0 10 9 lichkeit f¨ ur 1 10 ist. Es stellt sich nun die Frage, ob beide Symbole die gleiche Information beinhalten. Um diese Frage besser zu verstehen, betrachten wir zwei Personen, die eine Wette auf das n¨ achste Symbol der Quelle abschließen. Die Person, die auf die 1 setzt, ist von seinem Gewinn, sollte die 1 als n¨ achstes kommen, nur wenig u ¨berrascht. Es liegt also die Vermutung nahe, dass die 1 weniger Information beinhaltet als die 0 . Die Information ist somit eine Funktion in der Wahrscheinlichkeit eines Symbols und nicht eine Funktion in dem Symbol selbst. F¨ ur ein Quellensymbol si ∈ Γ und eine Wahrscheinlichkeit P (si ) = p sei I(p) die Information von si .
2.1
Information und Entropie
Die Funktion der Information k¨ onnen wir f¨ ur die Wahrscheinlichkeiten 0 < p ≤ 1 durch folgende Bedingungen einschr¨ anken: Bedingung 1 I(p) ≥ 0 . Bedingung 2 I(p) ist kontinuierlich in p . Bedingung 3 F¨ ur die Konkatenation zweier Symbole si sj mit den Wahrscheinlichkeiten pi und pj gilt: P (si sj ) = pi pj und I(pi pj ) = I(pi ) + I(pj ) . Das Bemerkenswerte an diesen Beobachtungen ist, dass es genau einen Typ von Funktionen gibt, die diesen Beobachtungen gen¨ ugt: Theorem 5 Eine Funktion I(p) , definiert f¨ ur alle 0 < p ≤ 1 , erf¨ ullt die Bedingungen 1 bis 3 genau dann, wenn f¨ ur eine positive Konstante C gilt: I(p) = −C · log2 p . Beweis: Das f¨ ur jedes C die Funktion −C · log2 p im Bereich 0 < p ≥ 1 die Bedingungen 1 bis 3 erf¨ ullt, folgt unmittelbar aus den Eigenschaften der Logarithmusfunktion. Wir wollen uns daher hier auf die folgende Behauptung untersuchen: Sei I(p) eine Funktion, die die Bedingungen 1 bis 3 erf¨ ullt, dann gibt es eine positive Konstante C , so dass I(p) = −C · log2 p .
14
Aus Bedingung 3 k¨ onnen wir per vollst¨ andiger Induktion folgern, dass f¨ ur alle k ∈ N mit k > 0 und alle p gilt: I(pk ) = k · I(p) . Aus dieser Beobachtung folgt k · I(p) = I(p) = I(pk/k ) = k · I(p1/k ) k und somit
1 · I(p) . k Fassen wir die beiden obigen Beobachtungen zusammen, so gilt f¨ ur alle rationalen Zahlen q : I(p1/k ) =
I(pq ) = q · I(p) . F¨ ur jede reelle Zahl 0 < r < 1 existiert eine Sequenz von positiven rationalen Zahlen q n mit 0 < qn < 1 , so dass limn→∞ qn = r und plimn→∞ qn = pr ist. Aus der Kontinuit¨ at von I(p) folgt I(pr ) = I( lim pqn ) = n→∞
lim I(pqn ) = I(p) · lim qn n→∞
n→∞
= r · I(p) .
F¨ ur ein festes p , 0 < p < p , k¨ onnen wir jeden Wert q mit 0 < q < 1 mit Hilfe von plogp q darstellen. Somit erhalten wir I(q) = I(plogp q ) = I(p) · logp q = −I(p) log2 Da p < 1 ist, gilt C = I(p) log2
1 p
1 · log2 q = −C · log2 q . p
> 0.
Da C von der konkreten Wahl von p im obigen Beweis abh¨ angt, setzen wir C = 1 . Wir erhalten f¨ ur die Information I(p) die folgende Definition: Definition 8 Die Information I eines Quellensymbols si mit der Wahrscheinlichkeit pi > 0 ist definiert als I(pi ) := − log2 pi . Zur Analyse der durchschnittlichen Information definieren wir die Entropie einer Quelle. Definition 9 Sei Q = (Γ, P ) eine Quelle mit einer Wahrscheinlichkeitsverteilung P = {p i |si ∈ Γ} . Dann ist die durchschnittliche Information, welche wir aus einem einzelnen Quellensymbol erhalten, X X H(Q) = pi · I(pi ) = − pi · log2 pi . si ∈Γ
si ∈Γ
F¨ ur pi = 0 setzen wir pi log pi = 0 . H(Q) wird auch Entropie genannt. Da die Entropie nur von der Wahrscheinlichkeitsverteilung P = {pi |si ∈ Γ} abh¨angt, schreiben wir auch H(P ) .
15
2.2
Eigenschaften der Entropie
Zwei Eigenschaften der Entropie k¨ onnen wir durch einfaches Auswerten der Formel u ufen: ¨berpr¨ Beobachtung 4 Sei Q = (Γ, P ) mit P (si ) =
1 |Γ|
f¨ ur alle si ∈ Γ , dann ist H(Q) = log2 |Γ| .
Beobachtung 5 Sei Q = (Γ, P ) mit P (si ) = 1 f¨ ur ein ausgezeichnetes Symbol si ∈ Γ und P (sj ) = 0 f¨ ur alle sj 6= si , dann ist H(Q) = 0 . Im Folgenden soll nun gezeigen werden, dass diese beiden F¨ alle die Extremwerte der Entropie darstellen. Doch bevor wir diese Schranken zeigen k¨ onnen, ben¨ otigen wir noch eine Eigenschaft der Logarithmusfunktion. Lemma 1 F¨ ur den nat¨ urlichen Logarithmus ln und f¨ ur alle x > 0 gilt: ln x ≤ x − 1 . F¨ ur den Logarithmus zur Basis 2 und f¨ ur alle x > 0 gilt: log2
≤
x−1 . ln 2
In beiden F¨allen gilt die Gleichheit genau dann, wenn x = 1 ist. Wir wollen uns nun einer oberen Schranke f¨ ur die Entropie zuwenden: Lemma 2 Sei P = {p1 , . . . , pn } eine Wahrscheinlichkeitsverteilung und R = {r1 , . . . , rn } ⊂ Rn eine Menge mit der Eigenschaft X ri ≤ 1 , ri ∈R
dann gilt H(P ) = −
n X
pi log2 pi
i=1
≤ −
n X
pi log2 ri ,
i=1
wobei die Gleichheit nur dann gilt, wenn ri = pi f¨ ur alle i ∈ {1, . . . , n} gilt. Beweis: Aus Lemma 1 folgt: n X i=1
pi log2
ri pi
n
≤ =
Da log2 prii = log2 p1i − log2 Ungleichung herleiten.
1 X pi ln 2 i=1 n X 1 ln 2 1 ri
i=1
ri −1 pi ! n X ri − pi i=1
n
= =
1 X (ri − pi ) ln 2 i=1 ! n X 1 ri − 1 ≤ 0. ln 2 i=1
ist, k¨ onnen wir aus der obigen Ungleichung unmittelbar die gesuchte
16
Um die Gleichheit zu errechen, m¨ ussen wir in der Ungleichung n X
ri pi log2 pi i=1
n
≤
1 X pi ln 2 i=1
ri −1 pi
die Gleichheit in jedem Summenterm erreichen. Nach Lemma 1 ist dieses jedoch nur dann m¨ oglich, wenn f¨ ur alle i prii = 1 ist, d.h. ri = pi f¨ ur alle i ∈ {1, . . . , n} . Dieses Lemma werden wir nun benutzen, um eine obere Schranke f¨ ur die Entropie zu zeigen. Theorem 6 Sei Q = (Γ, P ) eine Quelle mit q Quellensymbolen, dann gilt 0 ≤ H(Q) ≤ log2 q . Ferner gilt ⇐⇒
H(Q) = 0
∃si ∈ Γ ∀sj ∈ Γ \ {si } : P (si ) = 1 und P (sj ) = 0
und H(Q) = − log2 q
⇐⇒
∀si ∈ Γ : P (si ) =
1 . q
Beweis: Die untere Schranke f¨ ur die Entropie folgt unmittelbar aus der Eigenschaft, dass − log2 p f¨ ur p ≤ 1 immer positiv ist. Die obere Schranke folgt Lemma 2: H(Q) =
X
si ∈Γ
pi log2
1 pi
X
≤
pi log2
si ∈Γ
1 1/q
=
X
si ∈Γ
pi log2 q = log2 q ·
X
pi = log2 q .
si ∈Γ
Aus Lemma 2 folgt zudem, dass nur dann X
pi log2
si ∈Γ
ist, wenn f¨ ur alle si ∈ Γ pi =
1 q
1 pi
=
X
si ∈Γ
pi log2
1 1/q
ist.
Abschließend soll noch untersucht werden, f¨ ur welche Wahrscheinlichkeitsverteilungen H(Q) = 0 ist. Besitzt die Quelle nur ein Symbol si , so gilt f¨ ur alle Terme der Summe pi log2 p1i = 0 . Folglich ist auch die Summe 0. Ist die Summe 0, so muss jeder Term der Summe 0 sein. Dieses folgt aus der Beobachtung, dass f¨ ur alle pi ≤ 1 jeder Term pi log2 p1i ≥ 0 ist. Wir unterscheiden zwei F¨ alle: 1. pi = 0 : In diesem Fall gilt pi log2
1 pi
= 0.
2. pi > 0 : In diesem Fall ist genau dann pi log2 pi = 1 .
1 pi
= 0 , wenn log2
Fassen wir diese F¨ alle zusammen, so folgt aus der Voraussetzung, dass
1 pi
= 0 bzw.
P
si ∈Γ
∃si ∈ Γ ∀sj ∈ Γ \ {si } : P (si ) = 1 und P (sj ) = 0 .
17
1 pi
= 1 ist, d.h.
pi = 1 ist,
Wie wir in Theorem 5 gesehen haben, k¨ onnen wir die Information I(p) bez¨ uglich jeder beliebigen Basis definieren. Sei r ∈ N mit r ≥ 2 , dann nennen wir Hr (Q) = −
X
pi logr pi =
si ∈Γ
H(Q) log2 r
die r -n¨ are Entropie. Aufgabe 10 Bestimmen Sie die Entropie der Verteilung { a1 , a1 , . . . , a2 , a2 } f¨ ur a ≥ 5 in Abh¨angigkeit der Anzahl der Werte a2 . Aufgabe 11 Zeigen Sie, dass H(p) = −p · log p − (1 − p) · log(1 − p) symmetrisch bez¨ uglich der Linie p = 12 ist. Aufgabe 12 Sei P = {p1 , p2 , . . . , pn } eine Wahrscheinlichkeitsverteilung mit p1 ≤ p2 ≤ . . . ≤ pn und ε ∈ R+ eine positive Zahl mit ε 6= 0 und 0 ≤ p1 − ε < p2 + ε ≤ 1 . Zeigen Sie, dass H(p1 , p2 , . . . , pn ) > H(p1 − ε, p2 + ε, . . . , pn ) ist.
2.3
Erweiterung einer Informationsquelle
In Theorem 4 haben wir gesehen, dass ein Huffman-Code f¨ ur eine Quelle optimal bez¨ uglich der erwarteten Codewortl¨ ange ist – zumindestens, wenn wir uns auf Pr¨ afix-Codes beschr¨ anken. Bevor wir die Zusammenh¨ ange zwischen Entropie und erwarteter Codewortl¨ ange n¨ aher analysieren, wollen wir die Frage betrachten, ob die erwartete Codewortl¨ ange von Huffman-Codes noch verbessert werden kann. Sei Q = (Γ, P ) mit Γ = {s1 , s2 } und P (s1 ) = 14 und P (s2 ) = 34 . Ein Huffman-Codierungsschema (H, f ) hat f¨ ur diese Quelle folgende Gestalt: f (s1 ) = 0 und f (s2 ) = 1 . Die erwartete Codewortl¨ ange von (H, f ) ist 1 und die erwartete L¨ ange der Codierung einer Sequenz der L¨ ange 2 ist ebenfalls 2. F¨ ur die Wahrscheinlichkeiten, dass eine bestimmte Sequenz der L¨ ange 2 tats¨ achlich die Ausgabe der Quelle ist, erhalten wir die folgenden Werte: P (s1 s1 ) = p1 · p1
=
P (s1 s2 ) = p1 · p2
=
P (s2 s1 ) = p2 · p1
=
P (s2 s2 ) = p2 · p2
=
1 4 1 4 3 4 3 4
1 4 3 · 4 1 · 4 3 · 4 ·
= 0, 0625 = 0, 1875 = 0, 1875 = 0, 5625
Erweitern wir die Quelle auf Sequenzen der L¨ ange 2, so erhalten wir einen Huffman-Code (H 0 , f 0 ) der folgenden Form: f 0 (s1 s1 ) = 010,
f 0 (s1 s2 ) = 011,
f 0 (s2 s1 ) = 00 und f 0 (s2 s2 ) = 1 .
Die erwartete Codewortl¨ ange dieses Codes ist 1, 6875 und die durchschnittliche Codewortl¨ ange pro Quellensymbol ist 0, 84375 . Im Vergleich hierzu ist die Entropie dieser Quelle 0, 81128 . 18
Definition 10 F¨ ur eine Quelle Q = (Γ, P ) definieren wir die n ’te Erweiterung Qn = (Γn , P n ) , wobei f¨ ur alle si1 . . . sin ∈ Γn gilt P n (si1 . . . sin ) = P (si1 ) · . . . · P (sin ) .
Betrachten wir die Unsicherheit, die wir u onnen wir erwarten, dass ¨ber ein Symbol aus Γn haben, so k¨ sich die Unsicherheiten f¨ ur die einzelnen Symbole aus Γ aufaddiert. Theorem 7 Sei Q = (Γ, P ) eine Quelle, dann gilt H(Qn ) := n · H(Q) . Beweis: Der Beweis erfolgt durch eine direckte Analyse der Entropie von Qn : X H(Qn ) = − P (si1 ) · . . . · P (sin ) · log2 (P (si1 ) · . . . · P (sin )) 0≤i1 ,...,in ≤q−1
= − = − = −
X
0≤i1 ,...,in ≤q−1 n X X
P (si1 ) · . . . · P (sin ) ·
j=1 0≤i1 ,...,in ≤q−1 n X X j=1 0≤i1 ,...,in ≤q−1
n X
log2 P (sij )
j=1
P (si1 ) · . . . · P (sin ) · log2 P (sij ) P (si1 ) · . . . · P (sin ) · log2 P (sij )
und somit H(Qn ) = −
q−1 n X X
j=1 ij =0
P (sij ) log2 P (sij ) ·
q−1 X
i1 =0
P (si1 ) · . . . · ·
q−1 X
ij+1 =0
q−1 X
P (sij−1 )
ij−1 =0
P (sij+1 ) · . . . ·
q−1 X
P (sin ) .
in =0
Pq−1 Da P eine Wahrscheinlichkeitsverteilung darstellt und − ij =0 P (sij ) log2 P (sij ) der Entropie der Quelle Q entspricht, k¨ onnen wir die letzte Gleichung erheblich vereinfachen: n
H(Q ) = −
n X j=1
(−H(Q) ·
= n · H(Q) .
2.4
Y
1
j6=i
Codierungstheorem fu ¨r fehlerfreie Codes
Wie unser Beispiel f¨ ur eine erweitere Quelle zeigt, ist der einfache Huffman-Code nicht optimal bez¨ uglich seiner erwarteten Codewortl¨ ange, wenn wir uns auf Codes beziehen, welche eine Sequenz von mehreren Quellensymbole gleichzeitig codieren k¨ onnen. Eine untere Schranke f¨ ur die minimale erwartete Codewortl¨ ange einer Quelle k¨ onnen wir jedoch mit Hilfe der Entropie herleiten. F¨ ur eine Quelle Q sei MinAveLenr (Q) =
min
(C,f ) ist ein eindeutig decodierbarer r−n¨ arer Code f u ¨r Q
AveLen(C, f ) .
Der folgende Satz geht auf das ber¨ uhmten Codierungstheorem f¨ ur fehlerfreie Codes von Shannon (1948) zur¨ uck. 19
Theorem 8 [Codierungstheorem f¨ ur fehlerfreie Codes, Variante 1] F¨ ur jede Quelle Q gilt Hr (Q) ≤ MinAveLenr (Q) . Beweis: Sei (C, f ) ein eindeutig decodierbarer Code f¨ ur Q mit Codew¨ ortern c0 , . . . , cq−1 der L¨ ange `0 , . . . , `q−1 . Sei ri = r−`i , dann folgt aus dem Satz von McMillan: q−1 X
ri
=
i=0
q−1 X 1 `i r i=0
≤ 1.
Aus Lemma 2 k¨ onnen wir folgern: H(Q) = − =
q−1 X i=0
q−1 X i=0
P (si ) · log2 P (si ) ≤ −
q−1 X
P (si ) · log2 ri
i=0 q−1 X
`i P (si ) · log2 r = log2 r ·
i=0
=
q−1 X i=0
P (si ) · log2 r`i
`i P (si ) = log2 r · AveLen(C, f ) .
Somit gilt Hr (Q) = H(Q)/ log2 r ≤ AveLen(C, f ) . Wir werden nun analysieren, wie scharf diese Schranke ist. Aus dem Satz von Kraft folgt, dass f¨ ur alle Folgen `0 , . . . , `q−1 , welche die Kraft’sche Ungleichung f¨ ur ein r -n¨ ares Codealphabet erf¨ ullen, ein Pr¨ afix-Code existiert, welcher aus Codew¨ ortern dieser L¨ angen existiert. F¨ ur eine Quelle Q = (Γ, P ) mit |Γ| = q w¨ ahlen wir f¨ ur alle si ∈ Γ die Werte `i minimal, so dass r−`i ≤ P (si ) ist, d.h. 1 r `i
≤ P (si ) <
1 r`i −1
.
Durch einige Umformungen erhalten wir − logr P (si ) ≤ `i
< − logr P (si ) + 1 .
Wir nennen ein Codierungsschema, das diese Ungleichung erf¨ ullt, auch Shannon-Fano-Codierungsschema. F¨ ur ein solches Schema (C, f ) u aren Codealphabet gilt: ¨ber einem r -n¨ X X AveLen(C, f ) = P (si ) · `i < P (si ) · (− logr P (si ) + 1) ci ∈C
= Hr (Q) +
ci ∈C
X
P (si ) = Hr (Q) + 1 .
ci ∈C
Der Beweis, dass ein solches Codierungsschema tats¨ achlich existiert, folgt unmittelbar aus dem Satz von Kraft. Da − logr P (si ) ≤ `i ist, gilt auch r−`i ≤ P (si ) . Summieren wir jetzt u ¨ber alle diese Terme, so folgt: X X P (si ) = 1 . r−`i ≤ ci ∈C
si ∈Γ
Folglich ist die Kraft’sche Ungleichung f¨ ur Shannon-Fano-Codierungsschemata erf¨ ullt, und es gibt somit einen Pr¨ afix-Code, der diese Bedingungen erf¨ ullt. Theorem 9 [Codierungstheorem f¨ ur fehlerfreie Codes, Variante 2] F¨ ur jede Quelle Q gilt Hr (Q) ≤ MinAveLenr (Q) ≤ Hr (Q) + 1 .
20
Abschließend wollen wir noch untersuchen, wie sich diese Schranken f¨ ur erweitere Quellen verhalten. Wenden wir die zweite Variante des Codierungstheorems f¨ ur fehlerfreie Codes direkt auf eine Quelle Qn an, so erhalten wir n · Hr (Q) = Hr (Qn ) ≤ MinAveLenr (Q) ≤ Hr (Qn ) + 1 = n · Hr (Q) + 1 . Theorem 10 [Codierungstheorem f¨ ur fehlerfreie Codes, Variante 3] F¨ ur jede Quelle Q gilt Hr (Q) ≤
MinAveLenr (Qn ) 1 ≤ Hr (Q) + . n n
Lassen wir n gegen unendlich laufen, so fallen obere und untere Schranke zusammen, d.h. der durchschnittlich ben¨ otigte Aufwand, um ein Symbol der Quelle zu codieren, ist gleich der Entropie der Quelle. Dieses m¨ ussen wir jedoch damit bezahlen, dass wir zum Dekodieren eines Symbols der Quelle bis zu n − 1 weitere Symbole warten m¨ ussen.
21
3
Kan¨ ale und Codes
Bisher galt unser Augenmerk der Frage, wie wir eine Quelle mit Hilfe eines gegebenen Alphabets darstellen k¨ onnen. In diesem Abschnitt wollen wir uns der Frage zuwenden, was erforderlich ist, wenn diese Codierung u ¨ber einen fehlerbehafteten Kanal u ¨bertragen werden soll. Wir werden uns im Folgenden auf Blockcodes konzentrieren. Sei Σ = {a0 , . . . , ar−1 } ein r -n¨ ares Codealphabet, dann nennen wir eine Teilmenge von C ⊆ Σn einen r -n¨ aren Blockcode der L¨ ange n bzw. f¨ ur m = |C| einen r -n¨ aren (n, m) -Code.
3.1
Eine kurzer Einschub: Wahrscheinlichkeitsr¨ aume
Bevor wir uns eingehender mit fehlerbehafteten Kan¨ alen befassen, m¨ ussen wir noch einige Begriffe, Notationen und Eigenschaften aus der Statistik einf¨ uhren. Da wir in dieser Vorlesung verschiedene Ergebnisse aus diesem Bereich nur streifen k¨ onnen, m¨ ochte ich hier noch auf das Buch von Ross [Ross94] und das Skriptum zu den Vorlesungen Stochastik von L. D¨ umbgen [D¨ umb02] verweisen. Definition 11 Diskreter Wahrscheinlichkeitsraum Ein diskreter Wahrscheinlichkeitsraum ist ein Paar (U, Prob) . Hierbei ist U eine nichtleere abz¨ahlbare Menge, deren Elemente wir Elementarereignisse nennen, und Prob : U → R ≥0 ein Wahrscheinlichkeitsmaß, d.h. Prob ist eine Funktion mit der Eigenschaft X Prob[u] = 1 . u∈U
Eine Teilmenge von Elementarereignissen E ⊆ U nennen wir ein Ereignis, und definieren X Prob[E] = Prob[u] . u∈E
Ein Wahrscheinlichkeitsmaß Prob auf einer endlichen Menge U ist eine Gleichverteilung auf U , wenn f¨ ur alle Elementarereignisse u ∈ U Prob[u] = |U1 | gilt. Mit U+ bezeichnen wir die Menge aller Elementarereignisse mit strikt positiver Wahrscheinlichkeit, d.h. U + := { u ∈ U | Prob[u] > 0 } . Eine Menge von Ereignissen {E1 , . . . , Ek } nennen wir Zerlegung von U , wenn die Ereignisse paarSk weise disjunkt sind und i=1 Ei = U ist.
Sei E1 ein Ereignis in einem Wahrscheinlichkeitsraum (U1 , Prob) und E2 ein Ereignis in einem Wahrscheinlichkeitsraum (U2 , Prob) dann ist Prob[E1 E2 ] die Wahrscheinlichkeit, dass E1 und E2 simultan zutrifft. F¨ ur ein Ereignis E2 ∈ U2+ definieren wir die bedingte Wahrscheinlichkeit Prob[E1 |E2 ] durch: Prob[E1 E2 ] . Prob[E1 |E2 ] = Prob[E2 ] Aus der Definition des diskreten Wahrscheinlichkeitsraums k¨ onnen wir unmittelbar folgende Eigenschaften herleiten: Eigenschaft 1 Sei (U, Prob) ein diskreter Wahrscheinlichkeitsraum, dann gilt: 22
1. F¨ ur jedes Ereignis E ⊆ U gilt 0 ≤ Prob[E] ≤ 1 . 2. F¨ ur kS∈ [|U |] sei { E Pi | i ∈ [1, k]} eine Menge von paarweise disjunkten Ereignissen, dann gilt Prob[ i∈[1,k] Ei ] = i∈[1,k] Prob[Ei ] .
Bez¨ uglich der bedingten Wahrscheinlichkeiten gelten folgende Eigenschaften:
Eigenschaft 2 Sei {E1 , . . . , Ek } eine paarweise disjunkte Menge von Ereignissen u ¨ber dem Wahrscheinlichkeitsraum (U, Prob) , dann gilt: 1. (Formel von der totalen Wahrscheinlichkeit) Ist {E1 , . . . , Ek } eine Zerlegung von U , dann gilt f¨ ur alle Ereignisse E 0 : Prob[E 0 ] =
k X i=1
0
Prob[Ei ] · Prob[E 0 |Ei ]
(ist Prob[Ei ] = 0 und somit Prob[E |Ei ] nicht definiert, so setzen wir Prob[Ei ] · Prob[E 0 |Ei ] = 0 ). 2. (Formel von Bayer) Ist Prob[E 0 ] > 0 und {E1 , . . . , Ek } eine Zerlegung von U , dann gilt f¨ ur alle i ∈ [1, k] Prob[Ei ] · Prob[E 0 |Ei ] Prob[Ei |E 0 ] = Pk . 0 i=1 Prob[Ei ] · Prob[E |Ei ] Sk 3. Sei E = i=1 Ei , Prob[Ei ] > 0 f¨ ur alle i ∈ [1, k] und Prob[E 0 |Ei ] = Prob[E 0 |Ej ] f¨ ur alle 0 i, j ∈ [1, k] , dann gilt Prob[E |E] = Prob[E 0 |E1 ] . Als n¨ achstes wollen wir noch auf die Begriffe Zufallsvariable und Erwartungswert eingehen. Definition 12 Reellwertige Zufallsvariable Eine (reellwertige) Zufallsvariable X ¨ uber einem diskreten Wahrscheinlichkeitsraum (U, Prob) ist eine Funktion X : U → R . F¨ ur ein x ∈ R bezeichnet Prob[X = x] die Wahrscheinlichkeit des Ereignisses E = { u ∈ U | X(u) = x} . Untersuchen wir Ereignisse, die sich aus zwei oder mehreren Zufallsvariablen zusammensetzen, so spielt der Begriff der Unabh¨ angigkeiten bzw. Abh¨ angigkeiten zwischen den Ereignissen eine große Rolle. Wir definieren daher: Definition 13 Unabh¨ angigkeit Zwei Zufallsvariablen X1 , X2 nennen wir unabh¨ angig, wenn Prob[X1 X2 ] = Prob[X1 ] · Prob[X2 ] ist. Sind X1 , X2 nicht unabh¨angig, so nennen wir sie abh¨ angig. Definition 14 Erwartungswert einer Zufallsvariable Sei X eine Zufallsvariable u ¨ber einem diskreten Wahrscheinlichkeitsraum (U, Prob) , dann ist X x · Prob[X = x] E[X] = x∈X(U + )
der Erwartungswert von X , sofern die obige Reihe absolut konvergiert. Die Varianz von X definieren wir wie folgt: Var[X] = E[(X − E[X])2 ] . 23
Eigenschaft 3 Seien X1 , X2 zwei Zufallsvariablen deren Erwartungswerte existieren, dann gilt: 1. F¨ ur alle c ∈ R existiert der Erwartungswert von c · X1 , und es gilt E[c · X1 ] = c · E[X1 ] . 2. Der Erwartungswert von X1 + X2 existiert, und es gilt E[X1 + X2 ] = E[X1 ] + E[X2 ] . 3. Sind X1 , X2 unabh¨angig, so existiert der Erwartungswert E[X1 · X2 ] , und es gilt E[X1 · X2 ] = E[X1 ] · E[X2 ] . Eine Eigenschaft des Erwartungswerts, welche im Folgenden von großer Bedeutung sein wird, ist: Eigenschaft 4 Linearit¨ at des Erwartungswerts Seien X1 , . . . , Xk Zufallsvariablen und h : Rk → R eine lineare Funktion, dann gilt E[h(X1 , . . . , Xk )] = h(E[X1 ], . . . , E[Xk ]).
3.2
Kommunikationskan¨ ale
Soll ein Quellensymbol u ¨ber einen Kanal mit Hilfe eines Codes u ¨bertragen werden, so ist ein Code, dessen Codealphabet mehr Zeichen besitzt als wir u ber den Kanal u onnen nur von ¨ ¨bertragen k¨ geringem Nutzen. Wir werden daher im Folgenden annehmen, dass das Codealphabet mit dem Kana¨ lalphabet u eines Kanals zu bestimmen, bedienen wir uns ¨bereinstimmt. Um den Ubertragungsfehler der Bedingtenwahrscheinlichkeit P [aj empfangen | ai gesendet] f¨ ur ai , aj ∈ Σ . Definition 15 Ein (Kommunikations-)Kanal besteht aus einem endlichen Kanalalphabet Σ = ¨ {a0 , . . . , ar−1 } und einer Menge P von Ubertragungswahrscheinlichkeiten, P [aj empfangen | ai gesendet] , wobei f¨ ur alle ai ∈ Σ gilt r−1 X j=0
P [aj empfangen | ai gesendet] = 1
Aus der obigen Definition k¨ onnen wir zwei grunds¨ atzliche Eigenschaften der hier betrachteten Kan¨ ale ableiten: 1. Kan¨ ale a ¨ndern sich nicht mit der Zeit. 2. Ein Kanal kann keine Symbole verlieren. ¨ Neben der oben angegebenen vorw¨ arts gerichteten Ubertragungswahrscheinlichkeit k¨ onnen wir ¨ noch die r¨ uckw¨ arts gerichtete Ubertragungswahrscheinlichkeit betrachten: P [ai gesendet | aj empfangen] . Neben den oben beschriebenen Eigenschaften wollen wir zudem annehmen, dass die betrachteten Kan¨ ale ged¨ achtnislos sind, d.h.: 24
Definition 16 Ein Kanal heißt ged¨ achtnislos, wenn f¨ ur alle Zeichenketten c, x ∈ Σn mit c = c1 . . . cn und x = x1 . . . xn gilt: P [x empfangen | c gesendet] =
n Y
i=1
P [xi empfangen | ci gesendet] ,
wobei P [x empfangen | c gesendet] die Wahrscheinlichkeit ist, dass wir x (Zeichen f¨ ur Zeichen) empfangen, wenn c gesendet wurde. ¨ Die Ubertragungswahrscheinlichkeit ist folglich unabh¨ angig von zuvor gesendeten Symbolen. Wir nennen P [x empfangen | c gesendet] auch vorw¨ artsgerichtete Kanalwahrscheinlichkeit. Aufgabe 13 Geben Sie ein Shannon-Fano Codierungsschema (Σ, f ) mit Σ = {0, 1, 2} f¨ ur eine Quelle Q = ({si |1 ≤ i ≤ 8}, P ) mit P (si ) = max{2−i , 2−7 } an. Aufgabe 14 Gegeben sei eine Quelle Q = (Γ, P ) mit Γ = {s0 , s1 , s2 } und P (s0 ) = 21 , P (s1 ) = 14 sowie P (s2 ) = 41 . Bestimmen Sie H(Q) . Gibt es ein Codierungsschema (C, f ) f¨ ur Q mit H(Q) = AveLen(C, f ) ? Aufgabe 15 Betrachten Sie den Kanal (Σ, P ) mit P [ai empfangen | aj gesendet] = P [ai empfangen | ak gesendet] ¨ f¨ ur alle ai , aj , ak ∈ Σ . Zeigen Sie, dass dieser Kanal keine sinnvolle Decodierung nach der Ubertragung erlaubt. Definition 17 Einen Kanal nennen wir symmetrisch mit Fehlerwahrscheinlichkeit p , wenn f¨ ur alle ai , aj ∈ Σ gilt: 1 − p f¨ ur ai = aj P [ai empfangen | aj gesendet] = p f¨ ur ai 6= aj . r−1 p nennen wir aus Crossover-Wahrscheinlichkeit. Neben den Kan¨ alen, welche ein Codesymbol nur in ein anderes Codesymbol u ¨bertragen, und die es daher dem Code u ¨berlassen zwischen fehlerhaften und korrekten Symbolen zu unterscheiden, spielen auch sogenannte Erasure-Kan¨ ale eine gewisse Rolle. Ein Kanal ist ein Erasure-Kanal, wenn das Kanalalphabet ein Sondersymbol beinhaltet, welches einen Fehler signalisiert. Ein bin¨ arer ErasureKanal ist u aren Alphabet {0, 1, ?} definiert, wobei ¨ber einem tern¨ 1 f¨ ur ai = aj =? q f¨ ur ai = aj 6=? P [ai empfangen | aj gesendet] = p f¨ u r ai =? 6= aj 1 − q − p f¨ ur ? 6= ai 6= aj 6=? .
25
4
Decodierung und Entscheidungsregeln
Wir wollen nun Regeln f¨ ur die Decodierung bei fehlerbehafteten Kan¨ alen analysieren.
4.1
Ideale und Maximum-Likelihood Decodierregel
Definition 18 Sei C ein (n, m) -Code ¨ uber einem Alphabet Σ mit ? 6∈ Σ . Eine Entscheidungsregel f¨ ur C ist eine Funktion f : Σn → C ∪ {?} . Der Prozess, in dem wir f auf eine Eingabe x ∈ Σn anwenden, nennen wir Decodierung. Sei x ∈ Σn eine (empfangene) Zeichenkette, dann decodiert f die Zeichenkette x in ein Codewort f (x) , wenn f (x) ∈ C liegt. Ist f (x) =? , so erhalten wir einen Decodierungsfehler. Unser Ziel ist es eine Entscheidungsregel zu finden, welche die Wahrscheinlichkeit, dass f (x) das korrekte Codewort ist, maximiert. Die Wahrscheinlichkeit, dass f (x) das korrekte Codewort ist, d.h. Prob[korrekte Decodierung] , kann wie folgt bestimmt werden: X Prob[korrekte Decodierung] = Prob[c decodiert | c gesendet] · Prob[c gesendet] c∈C
X
Prob[korrekte Decodierung] =
x∈Σn
Prob[korrekt decodiert | x empfangen] · Prob[x empfangen] .
Beide Formeln f¨ ur die Wahrscheinlichkeit der korrekten Decodierung sind direkt oder indirekt von Eingabewahrscheinlichkeitsverteilung, bzw. der Wahrscheinlichkeitsverteilung der Quelle Q = (Γ, P ) abh¨ angig: P = { Prob[c gesendet] | c ∈ C } .
Wollen wir den Kanal unabh¨ angig von der Quelle untersuchen, so k¨ onnen wir auf diese Formeln nicht ohne weiteres zur¨ uckgreifen. Sei f die Entscheidungsregel, nach der ein empfangenes Wort decodiert wird. Um den Fall eines Decodierungsfehlers bei f (x) =? einfacher behandeln zu k¨ onnen setzen wir in diesen F¨ allen f (x) = c f¨ ur ein beliebiges (festes) c ∈ C . Abh¨ angig vom gesendeten Codewort gilt: X Prob[korrekte Decodierung | c gesendet] = Prob[x empfangen | c gesendet] x mit f (x)=c
und somit Prob[korrekte Decodierung] =
X
c∈C
X
Prob[x empfangen | c gesendet] · Prob[c gesendet] .
x mit f (x)=c
Analog erhalten wir Prob[korrekte Decodierung | x empfangen] = Prob[f (x) gesendet | x empfangen] und somit Prob[korrekte Decodierung] =
X
x∈Σn
Prob[f (x) gesendet | x empfangen] · Prob[x empfangen] .
Diese Summe k¨ onnen wir maximieren, indem wir die Funktion f so w¨ ahlen, dass die Wahrscheinlichkeiten Prob[f (x) gesendet | x empfangen] 26
maximal sind. Diese Wahrscheinlichkeiten k¨ onnen wir ohne Kenntnis der Eingabewahrscheinlichkeits¨ verteilung – und somit unabh¨ angig von der Quelle – maximieren, wenn die r¨ uckw¨ arts gerichtete Ubertragungswahrscheinlichkeitsverteilung bekannt ist. Wir definieren daher: Definition 19 Sei C ein (n, m) -Code ¨ uber einem Alphabet Σ . Eine Entscheidungsregel f heißt ideale Decodierregel, wenn f¨ ur alle x ∈ Σn gilt: Prob[f (x) gesendet | x empfangen] = max Prob[c gesendet | x empfangen] . c∈C
Ein Decodierer, der mit Hilfe einer idealen Decodierregel einen Text decodiert, nennen wir MinimumError Probability Decodierer, oder kurz ME-Decodierer. Aus der obigen Beobachtung folgt unmittelbar: Fakt 2 Eine ideale Decodierregel maximiert die Wahrscheinlichkeit einer korrekten Decodierung der empfangenen Zeichenketten. ¨ Ist die r¨ uckw¨ arts gerichtete Ubertragungswahrscheinlichkeitsverteilung nicht bekannt, so k¨ onnen wir die Werte Prob[c gesendet | x empfangen] mit Hilfe der Formel von Bayes bestimmen: Prob[c gesendet | x empfangen] = =
Prob[x empfangen | c gesendet] · Prob[c gesendet] Prob[x empfangen] Prob[x empfangen | c gesendet] · Prob[c gesendet] P . 0 0 c0 ∈C Prob[x empfangen | c gesendet] · Prob[c gesendet]
Folglich m¨ ussen wir f¨ ur diese Berechnung wiederum Wissen u ¨ber die Eingabewahrscheinlichkeitsverteilung besitzen. Die obige Formel kann jedoch erheblich vereinfacht werden, wenn wir davon ausgehen, 1 dass die Codew¨ orter gleichverteilt sind, d.h. Prob[c gesendet] = |C| . Unter dieser Annahme erhalten wir: Prob[c gesendet | x empfangen] =
P
Prob[x empfangen | c gesendet] . 0 c0 ∈C Prob[x empfangen | c gesendet]
P 0 Da f¨ ur ein gegebenes x der Wert der Summe c0 ∈C Prob[x empfangen | c gesendet] fest, und somit unabh¨ angig von der Decodierung ist, k¨ onnen wir Prob[c gesendet | x empfangen] maximieren, indem wir f¨ ur jedes x das Codewort c ausw¨ ahlen, f¨ ur welches Prob[x empfangen | c gesendet] maximal ist. Wir erhalten somit die folgende Form einer Entscheidungsregel: Definition 20 Sei C ein (n, m) -Code ¨ uber einem Alphabet Σ . Eine Entscheidungsregel f heißt Maximum-Likelihood Decodierregel, wenn f¨ ur alle x ∈ Σn gilt: Prob[x empfangen | f (x) gesendet] = max Prob[x empfangen | c gesendet] . c∈C
Ein Decodierer, der mit Hilfe einer idealen Decodierregel einen Text decodiert, nennen wir MaximumLikelihood Decodierer, oder kurz ML-Decodierer. Aus der oben gemachten Beobachtung, dass f¨ ur eine uniforme Verteilung der Codew¨ orter und bei gegebenen x Prob[c gesendet | x empfangen] genau dann f¨ ur eine Codewort c maximal ist, wenn f¨ ur dieses Codewort auch Prob[x empfangen | c gesendet] maximal ist, erhalten wir: 27
Fakt 3 Bei uniformer Verteilung der Codew¨orter sind Maximum-Likelihood Decodierregel und ideale Decodierregel ¨aquivalent. Aufgabe 16 Ein r -n¨ arer k -facher Wiederholungscode, ist ein Code repk (r) ⊆ Σk mit |Σ| = r und repk (r) = { aki | ai ∈ Σ } . Geben Sie f¨ ur rep4 (3) und einer Crossover-Wahrscheinlichkeit von p = und r¨ uckw¨arts gerichteten Kanalwahrscheinlichkeiten an, wobei
2 10
die vorw¨artsgerichtete
Prob[a30 gesendet] = 0, 6 Prob[a31 gesendet] = 0, 3 Prob[a32 gesendet] = 0, 1 ist. Geben Sie die dazugeh¨origen Decodierungsregeln eines ME- und eines ML-Decodierers an. Welche Regeln erhalten Sie f¨ ur Prob[a30 gesendet] = Prob[a31 gesendet] = Prob[a32 gesendet] =
1 . 3
Aufgabe 17 Betrachten Sie einen bin¨arer Erasure-Kanal mit q = 0, 99 und p = 0, 008 und einen Code C = {000, 001, 111} . Decodieren Sie die Zeichenfolgen 010, 10? und ??0 mit Hilfe eines MLDecodierers. Aufgabe 18 Gegeben seien drei bin¨are Erasure-Kan¨ale mit jeweils q = 0, 99 und p = 0, 008 . Be¨ stimmen Sie die Ubertragungswahrscheinlichkeiten des Kanals, den wir erhalten, wenn diese Kan¨ale sequentiell durchlaufen werden und zwischen den jeweiligen Kan¨alen keine Fehlerkorrektur erfolgt. ¨ Welche Wahrscheinlichkeiten erhalten Sie, wenn die drei Kan¨ale parallel zur Ubertragung genutzt werden und bei der Zusammenfassung das Symbol als Ausgabe genommen wird, welches am h¨aufigsten vorkommt – werden alle drei Symbole angenommen, so ist das Ergebnis ”?”.
4.2
Die Hammingdistanz
Bin¨ are Kan¨ ale sind wohl die am besten untersuchten und auch die wichtigsten Kan¨ ale in der Informatik. Daher werden wir uns im Folgenden eingehender mit der Maximum-Likelihood Decodierregel f¨ ur diese Form von Kan¨ alen befassen. Es zeigt sich zudem, dass viele Ergebnisse f¨ ur diese Kan¨ ale unmittelbar auch auf andere Formen von Kan¨ alen u bertragen werden k¨ o nnen. ¨ Wie wir schon weiter oben untersucht haben, ist es f¨ ur einen symmetrischen bin¨ aren Kanal sinnvoll ur p = 12 empfangen wir an jeder anzunehmen, dass die Crossover-Wahrscheinlichkeit p 6= 12 ist. F¨ Position jedes Symbol mit der gleichen Wahrscheinlichkeit und wir k¨ onnen daher keine sinnvoll Decodierregel angeben, welche diesen Fehler auch nur ann¨ ahernd korrigiert. O.B.d.A. nehmen daher im Folgenden an, dass p < 12 ist. Empfangen wir ein Wort w der L¨ ange n , so gilt Prob[w ist Fehlerfrei] = (1 − p)n und Prob[w hat k Fehler an k festgelegten Positionen] = pk (1 − p)n−k . 28
Sei w ∈ {0, 1}n eine Zeichenkette, welche sich von einem Codewort c ∈ C ⊆ {0, 1}n an genau k Positionen unterscheidet, dann gilt P [w empfangen | c gesendet] = pk (1 − p)n−k . F¨ ur p < 12 und daher f¨ ur 1 − p > 21 f¨ allt diese Wahrscheinlichkeit streng monoton in k . Wenden wir auf einen solchen Kanal die Maximum-Likelihood Decodierregel an, so w¨ ahlen wir zur Decodierung einer empfangenen Zeichenkette das Codewort aus, welches sich am wenigsten von w unterscheidet. Wir erhalten: Fakt 4 F¨ ur einen bin¨aren symmetrischen Kanal w¨ahlt die ML-Decodierregel das Codewort aus, welches sich an den wenigsten Positionen von der empfangenen Zeichenkette unterscheidet. Die Anzahl der Positionen, an denen sich zwei Zeichenketten unterscheiden, nennen wir auch Hammingdistanz: Definition 21 Seien x, y zwei Zeichenketten der L¨ange n ¨ uber einem Alphabet Σ . Die Hammingdistanz von x und y , d(x, y) , ist die Anzahl der Positionen, an denen sich x und y unterscheiden, d.h. d(x, y) := |{ i ≤ n | x[i] 6= y[i] }| , wobei x[i] die i -te Position in x bezeichnet. F¨ ur die Hammingdistanz k¨ onnen wir folgende Eigenschaft zeigen: Theorem 11 Die Hammingdistanz ist einen Metrik auf der Menge Σn , d.h. sie erf¨ ullt die folgenden Eigenschaften: 1. F¨ ur alle x, y ∈ Σn gilt d(x, y) ≥ 0
d(x, y) = 0 ⇐⇒ x = y .
und
2. Symmetrie: F¨ ur alle x, y ∈ Σn gilt d(x, y) = d(y, x) . 3. Dreiecksungleichung: F¨ ur alle x, y, z ∈ Σn gilt d(x, y) + d(y, z) ≥ d(x, z) . Da die Hammingdistanz eine Metrik ist, nennen wir das Paar (Σn , d) auch einen metrischen Raum. Definition 22 F¨ ur einen Code C ⊆ Σn und eine Zeichenkette w ∈ Σn bezeichnen wir die Codew¨orter c , welche die geringste Hammingdistanz zu w haben, als die dichtesten Codew¨ orter. Eine Entscheidungsregel f heißt dichteste Codewortdecodierregel, wenn f¨ ur alle x ∈ Σn gilt: d(x, f (x))
= min d(x, c) . c∈C
29
Wie wir weiter oben gesehen haben, f¨ allt die Wahrscheinlichkeit P [x empfangen | c gesendet] f¨ ur einen bin¨ aren symmetrischen Kanal streng monoton mit wachsender Hammingdistanz d(x, c) . Wir folgern daher: Fakt 5 F¨ ur einen bin¨aren symmetrischen Kanal entspricht die ML-Decodierregel der dichtesten Codewortdecodierregel. Abh¨ angig von der Anzahl der fehlerhaften Positionen, welche wir mit Hilfe eines Codes erkennen oder sogar korrigieren k¨ onnen, unterscheiden wir zwischen: Definition 23 Sei ` ∈ N und C ⊆ Σn ein Code. Wir nennen C ` -fehlererkennend, wenn f¨ ur alle c ∈ C und w ∈⊆ Σn gilt: Ist 1 ≤ d(c, w) ≤ ` , dann ist w 6∈ C . C ist exakt ` -fehlererkennend, wenn C ` -fehlererkennend aber nicht ` + 1 -fehlererkennend ist. Wir nennen C ` -fehlerkorrigierend, wenn mit Hilfe der dichtesten Codewortdecodierregel alle empfangen Zeichenketten x , die durch bis zu ` fehlerhaften Positionen aus einem Codewort c hervorgegangen sind, dem Codewort c zugeordnet werden. Wir nennen C exakt ` -fehlerkorrigierend, wenn C ` -fehlerkorrigierend aber nicht ` + 1 -fehlerkorrigierend ist. Besonders einfache fehlerkorrigierende Codes sind die sogenannten k -fachen Wiederholungscodes (siehe Aufgabe 16). F¨ ur diese Codes gilt: Fakt 6 Ein r -n¨arer k -facher Wiederholungscode ist exakt k − 1 -fehlererkennend und exakt b k−1 2 cfehlerkorrigierend. Die oben definierten Eigenschaften k¨ onnen wir auch mit Hilfe der Hammingdistanz ausdr¨ ucken. Wir definieren daher: Definition 24 Sei C ein Blockcode mit |C| ≥ 2 . Dann ist die minimale Hammingdistanz d(C) von C definiert als d(C) = min d(c, c0 ) . 0 0 c,c ∈C mit c6=c
Da d eine Metrik ist, gilt f¨ ur alle unterschiedlichen Codew¨ orter c, c0 d(c, c0 ) ≥ 1 . Somit ist auch die minimale Hammingdistanz d(C) ≥ 1 . Der Zusammenhang zwischen minimaler Hammingdistanz und den Eigenschaften fehlererkennend und fehlerkorrigierend erhalten wir aus folgendem Theorem: Theorem 12 F¨ ur einen Code C gilt: 1. C ist genau dann ` -fehlererkennend, wenn d(C) ≥ ` + 1 ist. 2. C ist genau dann ` -fehlerkorrigierend, wenn d(C) ≥ 2` + 1 ist.
30
Beweis: In diesem Beweis werden wir uns auf den zweiten Teil der Aussage beschr¨ anken. ¨ Wir betrachten zun¨ achst den Fall, dass d(C) ≥ 2` + 1 . Unter der Annahme, dass bei der Ubertragung eines Codewort c zwischen einem und ` Symbole ver¨ andert werden, gilt f¨ ur das empfangene Wort x d(x, c) ≤ ` . Sei c0 ∈ C ein weiteres Codewort c0 6= c , f¨ ur welches d(x, c0 ) ≤ ` gilt, dann folgt aus der Dreiecksungleichung d(c, c0 ) ≤ d(c, x) + d(x, c0 ) ≤ 2` . Dieses steht jedoch im Widerspruch zur Annahme, dass d(C) ≥ 2` + 1 . Wir k¨ onnen hieraus schließen, dass x n¨ aher an c ist, als an jedem anderen Codewort c0 6= c . Die dichteste Codewortdecodierregel ordnet somit jeder empfangen Zeichenketten x , die durch bis zu ` fehlerhaften Positionen aus einem Codewort c hervorgegangen ist, dem Codewort c zu. Sei nun C ein ` -fehlerkorrigierend Code, wobei d(c, c0 ) ≤ 2` f¨ ur ein Codewortpaar c 6= c0 gelten soll. Unser Ziel ist es zu zeigen, dass unter dieser Voraussetzung der Decodierer entweder eine empfangene Zeichenkette nicht decodiert, oder eine fehlerhafte Decodierung durchf¨ uhrt. Wir betrachten die folgenden F¨ alle: 1. d(c, c0 ) ≤ ` : In diesem Fall k¨ onnen wir durch das Ab¨ andern von maximal ` Positionen in c das Codewort c0 generieren. Die dichteste Codewortdecodierregel w¨ urde somit das fehlerhafte c als c0 decodieren und einen Fehler generieren. 2. ` < k = d(c, c0 ) ≤ 2` : Sei n die L¨ ange der Codew¨ orter in C , dann gibt es in c und c0 genau n − k Positionen, die u ¨bereinstimmen. Sei I die Menge der Positionen, an denen sich c und c0 unterscheiden und I1 , I2 eine Partition dieser Menge mit |I1 | = k − ` und |I2 | = ` . Sei x eine Zeichenkette, welche durch das Ab¨ andern der Positionen in I2 hervorgeht, indem wir die Positionen aus I2 in c durch die entsprechenden Symbole aus c0 ersetzen. Nach Konstruktion entspricht x daher dem Codewort c mit ` fehlerhaften Positionen. Zudem gilt d(x, c) = `
d(x, c0 ) = k − ` ≤ ` .
und
Ist k−` < ` und somit d(c, c0 ) < 2` , so w¨ urde die dichteste Codewortdecodierregel x fehlerhaft als c0 decodieren. Ist d(c, c0 ) = 2` , so kommen zur Decodierung sowohl c als auch c0 in Frage. ¨ Da x durch das Andern von ` Positionen sowohl aus c als auch aus c0 hervorgegangen sein k¨ onnte und sich die Decodierregel f¨ ur eines der beiden Codew¨ orter entscheiden muss, erhalten wir in einem dieser beiden F¨ alle eine fehlerhafte Decodierung.
Da die minimale Distanz zwischen zwei Codew¨ ortern ein wesentlicher Parameter bei der Fehlerkorrektur darstellt, definieren wir: Definition 25 C ist ein (n, m, d) -Code, wenn C ⊆ Σn , |C| = m und d(C) = d ist. Die Werte n, m, d nennen wir die Parameter von C . Aus Theorem 12 folgt: Korollar 2 1. Ein (n, m, d) -Code C ist genau dann ` -fehlerkorrigierend, wenn d = 2` + 1 oder d = 2` + 2 ist. 31
2. Die minimale Distanz d(C) eines (n, m) -Codes ist genau dann gleich d , wenn C exakt b d−1 2 cfehlerkorrigierend ist. Aufgabe 19 Gegeben ist C = {11100, 01001, 10010, 00111} . Bestimmen Sie die minimale Distanz d(C) . Decodieren Sie die Zeichenketten 10000 , 01100 und 00100 unter Benutzung der dichtesten Codewortdecodierregel. Aufgabe 20 Sei C die Teilmenge aus Zk2 , deren Codew¨orter eine gerade Anzahl von 1-Symbolen haben. Bestimmen Sie die Parameter n, m, d von C , so dass C ein (n, m, d) -Code ist. Sei C die Teilmenge aus Zk2 bestimmen Sie die Parameter n, m, d von C , so dass C ein (n, m, d) Code ist. Aufgabe 21 Beweisen Sie folgende Aussagen: 1. Es gibt einen bin¨aren (8, 4, 5) -Code. 2. Es gibt keinen bin¨aren (7, 3, 5) -Code. Eine m¨ ogliche Anforderung an einen Decodierer ist es, dass er simultan eine Fehlerkorrektur und eine Fehlererkennung erlauben soll. Wir betrachten daher die folgende Decodierungsstrategie f¨ ur ein gegebenes ` ∈ N : Sei x eine empfangene Zeichenkette. Existiert ein eindeutiges Codewort c welches eine minimale Distanz d(c, x) zu x hat und gilt zudem d(c, x) ≤ ` , dann decodiere x als c . Existieren mehrere Codew¨ orter mit einer Distanz minc∈C d(c, x) zu x oder ist minc∈C d(c, x) > ` , dann melde einen Decodierungsfehler. Definition 26 Einen Code C nennen wir simultan ` -fehlerkorrigierend und u -fehlererkennend, wenn das oben angegebene Verfahren 1. f¨ ur alle Codew¨orter c ∈ C und f¨ ur alle Zeichenketten x mit d(x, c) ≤ ` x als c decodiert und 2. f¨ ur alle Codew¨orter c ∈ C und f¨ ur alle Zeichenketten x mit ` < d(x, c) ≤ ` + u auf Eingabe von x einen Decodierungsfehler meldet. Theorem 13 Ein Code C ist genau dann simultan ` -fehlerkorrigierend und u -fehlererkennend, wenn d(C) ≥ 2` + u + 1 . Beweis: Wir wollen uns in diesem Beweis auf die folgende Richtung beschr¨ anken: Ist C ` -fehlerkorrigierend und u -fehlererkennend, dann ist d(C) ≥ 2` + u + 1 .
32
Sei C ein ` -fehlerkorrigierender und u -fehlererkennender Code mit d(C) ≤ 2` + u . Aus Theorem 12 folgt, dass d(C) ≥ 2` + 1 ist. Da d(C) ≤ 2` + u ist, gibt es zwei Codew¨ orter c, c0 mit k = d(c.c0 ) ≤ 2` + u . Sei n die L¨ ange der Codew¨ orter in C , dann gibt es in c und c0 genau n − k Positionen, die u ¨bereinstimmen. Sei I die Menge der Positionen, an denen sich c und c0 unterscheiden und I1 , I2 eine Partition dieser Menge mit |I1 | = k − ` und |I2 | = ` . Sei x eine Zeichenkette, welche durch das Ab¨ andern der Positionen in I2 hervorgeht, indem wir die Positionen aus I2 in c durch die entsprechenden Symbole aus c0 ersetzen. Nach Konstruktion entspricht x daher dem Codewort c mit ` fehlerhaften Positionen. Zudem gilt d(x, c) = ` und ` < d(x, c0 ) = k − ` ≤ ` + u . Ist k − ` < ` + u und somit d(c, c0 ) < 2` + u , so w¨ urde unsere Decodierstrategie x als c decodieren. Nach der Definition muss unsere Decodierstrategie jedoch einen Fehler bez¨ uglich c0 melden.
4.3
Decodierfehlerwahrscheinlichkeit
Betrachten wir einen Code C = {0000, 0011, 1111} , so erkennen wir, dass d(C) = 2 ist, wir jedoch C einfach um das Codewort 1100 erweitern k¨ onnen, ohne die maximale Distanz von C zu vergr¨ oßern. Wir definieren daher: Definition 27 Einen (n, m, d) -Code nennen wir maximal, wenn keine Teilmenge eines (n, m + 1, d) -Codes ist. Aus einem gegebenen nicht maximalen (n, m, d) -Code C k¨ onnen wir einen (n, m + 1, d) -Code generieren, indem wir ihn um eine Zeichenkette x 6∈ C mit minc∈C d(c, x) ≥ d erg¨ anzen. Mit Hilfe dieser Idee k¨ onnen wir zeigen: Theorem 14 Ein (n, m, d) -Code C ist genau dann maximal, wenn f¨ ur alle Zeichenkette x ein Code c existiert, so dass d(c, x) < d ist. Betrachten wir einen bin¨ Kanal mit Wahrscheinlichkeitsparameter p und ein aren symmetrischen Codewort c , so gibt es nk W¨ orter in {0, 1}n , welche sich an exakt k Positionen von c unterscheiden. Kombinieren wir diese Beobachtung mit der Wahrscheinlichkeit, dass sich ein empfangenes Wort an k festen Stellen von c unterscheidet, so ist die Wahrscheinlichkeit, dass sich ein empfangenes Wort an k beliebigen Stellen von c unterscheidet, n k p (1 − p)n−k . k Wenden wir die dichteste Codewortdecodierregel bei einem maximalen (n, m, d) -Code C an, so decodieren wir alle Zeichenketten falsch, welche diese b d−1 2 c + 2 oder mehr Fehler aufweisen. Man beachte, dass f¨ ur gerade d die Zeichenketten x , welche einen Abstand von b d−1 2 c + 1 zu einem Codewort besitzen, diesen Abstand auch zu anderen Codew¨ ortern haben, und daher nicht eindeutig einem Codewort zugeordnet werden. Die Wahrscheinlichkeit f¨ ur einen Fehler in der Decodierung ist somit n X n i Prob[Decodierungsfehler] ≥ p (1 − p)n−i . i d−1 i=b
33
2
c+2
ur Da ein (n, m, d) -Code immer b d−1 2 c -fehlerkorrigierend ist (Korollar 2), ist die Wahrscheinlichkeit f¨ eine korrekte Decodierung beschr¨ ankt durch: Prob[korrekte Decodierung] ≥
b d−1 2 c X i=0
n i p (1 − p)n−i . i
Da Prob[Decodierungsfehler] = 1 − Prob[korrekte Decodierung] ist, erhalten wir: Theorem 15 F¨ ur einen bin¨aren symmetrischen Kanal mit Wahrscheinlichkeitsparameter p und einen (n, m, d) -Code gilt: 1. F¨ ur einen maximalen (n, m, d) -Code: Prob[Decodierungsfehler] ≥
n X
i=b d−1 2 c+2
n i p (1 − p)n−i . i
2. F¨ ur einen beliebigen (n, m, d) -Code: Prob[Decodierungsfehler] ≤ 1 −
b d−1 2 c X i=0
n i p (1 − p)n−i . i
Die Menge der Zeichenketten, welche sich innerhalb einer gegebenen Distanz um ein Codewort c befinden, definiert eine Sph¨ are um c . Definition 28 Sei x ∈ Znr und ρ ≥ 0 . Die Sph¨ are Srn (x, ρ) in Zn r mit Zentrum x ist die n Menge aller Zeichenketten w ∈ Zr , deren Distanz zu x kleiner oder gleich ρ ist, d.h. Srn (x, ρ) := { w ∈ Znr | d(w, x) ≤ ρ } . Den Parameter ρ nennen wir auch den Radius der Sph¨are Srn (x, ρ) . n Wir haben oben bereits gesehen, dass die Anzahl der Zeichenketten in Z2 , welche sich an genau k n n Positionen von einem gegebenen x ∈ Z2 unterscheiden, gleich k ist. Betrachten wir ein Universum Znr mit r ≥ 2 , so ist nk die Anzahl der M¨ oglichkeiten k Positionen aus den n Positionen einer Zeichenkette w ∈ Znr auszuw¨ ahlen. Halten wir eine solche Auswahl von k Positionen fest, so gibt es (r − 1)k M¨ oglichkeiten diese so abzu¨ andern, dass sich die resultierende Zeichenkette an genau diesen Positionen von w unterscheidet. Zusammenfassend k¨ onnen wir sagen, dass es genau nk (r − 1)k Zeichenketten in Znr gibt, welche sich an genau k Positionen von w unterscheiden.
Theorem 16 |Srn (x, ρ)| =
Pρ
k=0
n k
(r − 1)k
Das Volumen einer Sph¨ are ist folglich unabh¨ angig von deren Zentrum. Wir definieren daher: ρ X n Vrn (ρ) := |Srn (x, ρ)| = (r − 1)k . k k=0 P ρ n F¨ ur bin¨ are Alphabete gilt V2n (ρ) = k=0 k .
Um eine Decodierregel f¨ ur einen gegebenen Code C mit Hilfe der Sph¨ aren zu finden, k¨ onnen wir wie folgt verfahren: 34
Bestimme den maximalen Radius ρ , so dass alle Sph¨ aren Srn (c, ρ) mit c ∈ C disjunkt sind. F¨ ur alle c ∈ C decodiere jede Zeichenkette w ∈ Srn (c, ρ) durch c . Den so bestimmten Radius nennen wir Packungsradius von C : Definition 29 Sei C ein r -n¨arer (n, m, d) -Code. Dann ist der Packungsradius pr(C) definiert als pr(C) := max { ρ | ∀c, c0 ∈ C : c 6= c0 ⇒ Srn (c, ρ) ∩ Srn (c0 , ρ) = ∅ } . k∈N
Die Sph¨aren
Srn (c, pr(C))
f¨ ur c ∈ C nennen wir auch Packungssph¨ aren von C .
F¨ ur einen (n, m, d) -Code C kann der Packungsradius pr(C) einfach bestimmt werden. Durch schritt¨ weise Vergr¨ oßerung der Radien bis es zur ersten Uberlappung der Sph¨ aren kommt, kann man zeigen: Fakt 7 Sei C ein (n, m, d) -Code, dann ist pr(C) = b d−1 2 c. Fakt 8 C ist genau dann exakt ` -fehlerkorrigierend, wenn pr(C) = ` ist. Die Packungssph¨ aren f¨ uhren uns unmittelbar zu einem wichtigen Begriff der Codierungstheorie: Definition 30 Ein r -n¨arer (n, m, d) -Code C ¨ uber einem Alphabet Σ ist perfekt, wenn die Vereinigungen der Packungssph¨aren gleich der Menge aller Zeichenketten in Σn ist. Aufgabe 22 Beweisen Sie, dass f¨ ur alle perfekte Codes C die Distanz d(C) ungerade ist. Aufgabe 23 Beweisen Sie, dass die folgenden Aussagen f¨ ur r -n¨aren (n, m, d) -Codes C ¨ uber einem Alphabet Σ ¨aquivalent sind: 1. Vereinigungen der Packungssph¨aren sind gleich der Menge aller Zeichenketten in Σn : [ Σn = Srn (c, pr(C)) . c∈C
2. Vereinigung der Packungssph¨aren u ¨berdeckt die Menge aller Zeichenketten in Σn : [ Srn (c, pr(C)) . Σn ⊆ c∈C
3. Die Summe der Volumen der Packungssph¨aren ist gleich der Anzahl aller Zeichenketten in Σn : r
n
= m·
Vrn (pr(C))
35
= m·
b d−1 2 c X k=0
n (r − 1)k . k
Um zu zeigen, dass ein (n, m, d) -Code perfekt ist, gen¨ ugt es also eine dieser Bedingungen nachzuweisen. Mit Hilfe der dritten Bedingung ist es recht einfach m¨ oglich, f¨ ur einen gegebenen (n, m, d) -Code nachzuweisen, ob dieser ein perfekter Code ist. Vielmehr k¨ onnen wir f¨ ur gegebene Parameter n, m, d mit dieser Bedingung auch einfach ausschließen, dass es einen (perfekten) (n, m, d) -Code gibt. Es gilt: Fakt 9 Sei C ein r -n¨arer (n, m, d) -Code, dann ist r n ≥ m ·
Pb d−1 2 c k=0
n k
(r − 1)k .
Die Umkehrung dieser Bedingung gilt jedoch nicht. So gibt es f¨ ur die Parameter n = 90, m = 278 , d = 5 keinen bin¨ aren (n, m, d) -Code, obwohl: 2
78
4.4
·
b 5−1 2 c
X
k=0
1 X 90 90 90! 78 78 = 278 · 91 < 278 · 27 < 290 = 2 · = 2 · 1+ 1! · 89! k k k=0
Aus Alt mach Neu
Es gibt verschiedene Methoden, mit deren Hilfe wir aus bestehenden Codes neue Codes generieren k¨ onnen. In diesem Abschnitt wollen wir einige dieser Methoden vorstellen.
Erweiterung von Codes Addieren wir eine oder mehrere Positionen zu den einzelnen Codew¨ ortern, so nennen wir dieses eine Erweiterung des Codes. Eine gebr¨ auchliche Erweiterung eines Codes ist das Hinzuf¨ ugen einer Testsumme. Ein bekanntes Verfahren, welches auf diese Form der Erweiterung beruht, ist das Hinzuf¨ ugen des even parity check-Bits. Hierbei generieren wir zu jedem Codewort c = c 1 . . . cn ∈ {0, 1}n eines Codes C ein neues Codewort c˜ = c˜1 . . . c˜n c˜n+1 ∈ {0, 1}n+1 mit cP f¨ ur i ≤ n i c˜i = n ( j=1 cj ) mod 2 f¨ ur i = n + 1 . Sei C˜ der resultierende Code.
Die minimale Distanz eines solchen Codes ver¨ andert sich nur marginal. F¨ ur zwei Codew¨ orter c, c0 ∈ C und deren Repr¨ asentanten gilt P P d(c, c0 ) f¨ ur ( nj=1 cj ) mod 2 = ( nj=1 c0j ) mod 2 P P d(˜ c, c˜0 ) = n d(c, c0 ) + 1 f¨ ur ( j=1 cj ) mod 2 6= ( nj=1 c0j ) mod 2
˜ ≤ d(C) + 1 . Betrachten wir die Anzahl der 1-Symbole in einem Codewort c˜ ∈ C˜ , so und somit d(C) sehen wir, dass diese immer gerade ist. Folglich ist auch d(˜ c, c˜0 ) gerade. Zusammenfassend gilt d(C) f¨ ur geradesd(C) ˜ d(C) = d(C) + 1 f¨ ur ungeradesd(C) und somit $
˜ −1 d(C) 2
%
k j d(C)−1 f¨ ur geradesd(C) 2 d(C) − 1 j k = = . d(C)+1−1 2 f¨ ur ungeradesd(C) 2 36
C˜ ist somit genau dann ` -fehlerkorrigierend, wenn auch C ` -fehlerkorrigierend ist. Ferner gilt ˜ . pr(C) = pr(C) Eine Verallgemeinerung des even parity check-Bits erhalten wir durch folgende Codeerweiterung: Sei C ⊆ Znp , dann erhalten wir C˜ ⊆ Zn+1 durch p ci f¨ ur i ≤ n P c˜i = p − 1 − ( nj=1 cj ) mod p f¨ ur i = n + 1 f¨ ur alle c = c1 . . . cn ∈ C .
Die Cross-Section eines Codes Sei C ein (n, m, d) -Code u ¨ber einem Alphabet Σ , i ≤ n und a ∈ Σ . Dann ist die Cross-Section C 0 mit xi = a definiert als C0
= { c1 . . . ci−1 ci+1 . . . cn | c1 . . . cn ∈ C und ci = a } .
Die Cross-Section C 0 mit xi = a erhalten wir somit aus C , indem wir alle Codew¨ orter aus C ausw¨ ahlen, die an der i -ten Position ein a stehen haben und indem wir diese Position entfernen. Die Cross-Section eines (n, m, d) -Code ist ein (n − 1, m0 , d0 ) -Code mit m0 ≤ m und d ≤ d0 . Die u(u + v) -Konstruktion Die u(u + v) -Konstruktion kombiniert zwei Codes. Sei C1 ein bin¨ arer (n, m1 , d1 ) -Code und C2 ein bin¨ arer (n, m2 , d2 ) -Code, dann erhalten wir den bin¨ arer (2n, m1 · m2 , min{2d1 , d2 }) -Code C3
= C1 ⊗ C2
= { c ◦ (c ⊕ c0 ) | c ∈ C1 , c0 ∈ C2 } ,
wobei ◦ die Konkatenation zweier Zeichenketten und ⊕ das bitweise XOR zweier Zeichenketten ist. Beispiel 2 Sei C1 = {00, 10} und C2 = {00, 11} , dann gilt C1 ⊗ C 2
= {0000, 0011, 1010, 1001} .
Permutationen von Codes Sei C ein r -n¨ arer (n, m) -Code, dann k¨ onnen wir einen neuen r -n¨ aren (n, m) -Code generieren, indem wir 1. die Positionen permutieren: Sei σ : {1, . . . , n} → {1, . . . , n} eine Permutation, dann ist C 0 = { cσ(1) . . . cσ(n) | c1 . . . cn ∈ C } ein r -n¨ arer (n, m) -Code. 2. die einzelnen Symbole an deren Positionen permutieren: Seien π1 , . . . , πn : Σ → Σ0 n Permutationen mit |Σ| = |Σ0 | , dann ist C 0 = { π1 (c1 ) . . . πn (cn ) | c1 . . . cn ∈ C } ein r -n¨ arer (n, m) -Code. ¨ Mit Hilfe dieser Operationen k¨ onnen wir die Aquivalenz von Codes definieren. 37
Definition 31 Zwei r -n¨are (n, m) -Codes C1 , C2 ¨ uber einem Alphabet Σ nennen wir ¨ aquivalent, wenn eine Permutation σ : {1, . . . , n} → {1, . . . , n} und n Permutationen π1 , . . . , πn : Σ → Σ existieren, so dass C2 = { π1 (cσ(1) ) . . . πn (cσ(n) ) | c1 . . . cn ∈ C1 } ist. Ist C1 ein r1 -n¨arer (n1 , m1 ) -Code und C2 ein r2 -n¨arer (n2 , m2 ) -Code mit r1 6= r2 , n1 6= n2 oder m1 6= m2 , dann sind C1 und C2 nicht ¨aquivalent. Es gilt: Fakt 10 Seien C1 , C2 zwei ¨aquivalente Codes, dann haben beide Codes die gleichen Parameter n, m, d . Fakt 11 Jeder r -n¨are (n, m) -Code C ist ¨aquivalent zu einem (n, m) -Code C 0 ⊆ Znr mit 0n ∈ C 0 .
4.5
Effizienz von Codes
¨ Das wesentliche Maß zur Bestimmung der Effizienz eines r -n¨ aren (n, m) -Codes C ist dessen Ubertragungsrate. Hierbei vergleichen wir die minimale L¨ange eines r -n¨ aren Codes, die wir ben¨ otigen, um m Quellensymbole zu codieren, mit der L¨ ange der Codew¨ orter in C . ¨ Definition 32 Sei C ein r -n¨arer (n, m) -Code, dann ist die Ubertragungsrate von C definiert durch logr m R(C) := . n ¨ Zur Maximierung der Ubertragungsrate bei gegebenen r, n, d suchen wir den Code, der eine maximale Anzahl von Codew¨ ortern besitzt, wir definieren daher Ar (n, d)
:= max{ m | es existiert ein r -n¨ arer (n, m, d) -Code } .
Definition 33 Einen r -n¨aren (n, m, d) -Code nennen wir optimal, wenn m = Ar (n, d) ist. Ein weiteres Effizienzmaß f¨ ur Codes ist die Anzahl der Fehler, welche wir korrigieren k¨ onnen. Hierbei ist es jedoch sinnvoll diese Zahl mit der L¨ ange der Codew¨ orter in Beziehung zu setzen. Definition 34 Sei C ein r -n¨arer (n, m, d) -Code, dann ist die Fehlerkorrekturrate von C definiert durch b d−1 2 c . δ(C) := n Aufgabe 24 Sei C1 ein bin¨arer (n, m1 , d1 ) -Code und C2 ein bin¨arer (n, m2 , d2 ) -Code. Beweisen Sie, dass C3 = C1 ⊗ C2 ein bin¨arer (2n, m1 · m2 , min{2d1 , d2 }) -Code ist. Aufgabe 25 Beweisen Sie folgende Aussagen: A2 (4, 3) = A2 (4, 4) = 2
und 38
A2 (5, 3) = 4 .
Aufgabe 26 Beweisen oder wiederlegen Sie folgende Aussagen: 1. Ar (n, n) = 1 2. Ar (n, d) ≤ r · Ar (n − 1, d) f¨ ur alle n ≥ 2 3. Ar (n, d) ≤ rn f¨ ur alle 1 ≤ d ≤ n 4. Ar (n, 1) = rn
4.6
Schranken fu ¨r Ar (n, d)
¨ Die folgende Tabelle gibt einen Uberblick u ¨ber bekannte Werte, bzw. Schranken von A2 (n, d) . n d=3 d=5 d=7 5 4 2 6 8 2 7 16 2 2 8 20 4 2 9 40 6 2 10 72-79 12 2 11 144-158 24 4 12 256 32 4 13 512 64 8 14 1024 128 16 15 2048 256 32 16 2560-3276 256-340 36-37 Um eine wertere Beobachtung bez¨ uglich des Werts Ar (n, d) herzuleiten, ben¨ otigen wir zun¨ achst noch einige zus¨ atzliche Definitionen: Definition 35 Das Gewicht w(x) einer Zeichenkette x ∈ Znr ist die Anzahl der Positionen in x , an denen eine Zahl ungleich 0 steht. Der Schnitt x ∩ y zweier Zeichenketten x, y ∈ Z n2 ist ein bin¨are Zeichenkette z der L¨ange n , wobei f¨ ur alle i ≤ n gilt z[i] = 1
⇐⇒
x[i] = y[i] = 1 .
Zwischen der Hammingdistanz und dem Gewicht gibt es den folgenden Zusammenhang: Lemma 3 F¨ ur alle x, y ∈ {0, 1}n gilt d(x, y) = w(x) + w(y) − 2 · w(x ∩ y) . Beweis: Sei aij mit i, j ∈ {0, 1} die Anzahl der Positionen, an denen wir in x ein i und in y ein j finden, dann gilt: d(x, y) = a10 + a01 = (a11 + a10 ) + (a11 + a01 ) − 2a11 = w(x) + w(y) − 2 · w(x ∩ y) . Mit Hilfe dieses Lemmas k¨ onnen wir nun einen Zusammenhang zwischen geraden und ungeraden Codel¨ angen herleiten: 39
Theorem 17 F¨ ur ungerade d ∈ N gilt: Es existiert genau dann ein bin¨arer (n, m, d) -Code, wenn ein bin¨arer (n + 1, m, d + 1) -Code existiert. Beweis: Sei C ein bin¨ arer (n+1, m, d+1) -Code, c1 , c2 ∈ C mit d(c1 , c2 ) = d+1 , und i eine Position, an denen sich c1 und c2 unterscheiden. L¨ oschen wir die i -te Position aus allen Codew¨ ortern, so gilt f¨ ur den resultierenden Code C 0 d(C 0 ) ≥ d und f¨ ur die zu c1 , c2 korrespondierenden Codew¨ orter c01 , c02 d(c01 , c02 ) = d . Somit gilt d(C 0 ) = d . Sei C ein bin¨ arer (n, m, d) -Code mit ungeradem d und C 0 der Code, den wir erhalten, wenn wir zu jedem Codewort ein even parity check-Bit hinzuf¨ ugen. Wie wir oben gesehen haben ist d(C 0 ) = d(C)+1 0 und C somit ein (n + 1, m, d + 1) -Code. Aus diesem Theorem folgt unmittelbar: Korollar 3 F¨ ur gerade Distanzen d > 0 gilt: A2 (n, d) = A2 (n − 1, d − 1) . Wir wollen nun versuchen, obere und untere Schranken f¨ ur Ar (n, d) mit Hilfe von Sph¨ arenvolumina herzuleiten. Sei C ein optimaler r -n¨ arer (n, m, d) -Code, d.h. m = Ar (n, d) . Da die Gr¨ oße von C maximal ist, gibt es in Znr \ C keine Zeichenkette, die von allen Codew¨ ortern einen Abstand gr¨ oßer oder gleich d hat. Es gilt somit: [ Znr = Srn (c, d − 1) c∈C
und daher
r
n
[ X n ≤ Sr (c, d − 1) ≤ |Srn (c, d − 1)| = m · Vrn (d − 1) . c∈C
c∈C
Theorem 18 Sph¨ aren¨ uberdeckungsschranke rn Vrn (d − 1)
≤ Ar (n, d)
Um eine untere Schranke herzuleiten, bedienen wir uns der Beobachtung, dass f¨ ur einen optimalen r -n¨ aren (n, m, d) -Code C , die Sph¨ aren Sr (c, b d−1 c) disjunkt sind. Es gilt somit 2 [ Znr ⊇ Srn (c, b d−1 2 c) c∈C
und daher r
n
[ X n d−1 Srn (c, b d−1 c) = m · Vrn (b d−1 c) . ≥ Sr (c, b 2 c) = 2 2 c∈C
c∈C
Theorem 19 Sph¨ arenpackungsschranke rn
Vrn (b d−1 2 c)
≥ Ar (n, d) 40
4.7
Die Singleton- und die Plotkinschranke
In diesem Kapitel wollen wir zwei weitere Schranken f¨ ur Ar (n, d) herleiten. Theorem 20 Singletonschranke Ar (n, d) ≤ rn−d+1 Beweis: Da die minimale Distanz eines (n, Ar (n, d), d) -Codes d ist, m¨ ussen sich alle Codew¨ orter in den ersten n−d+1 Positionen unterscheiden. Da es jedoch nur r n−d+1 unterschiedliche Zeichenketten der L¨ ange n − d + 1 gibt, folgt die Schranke unmittelbar. Um die n¨ achste Schranke f¨ ur Ar (n, d) herzuleiten, ben¨ otigen wir folgendes Fakt: Fakt 12 Sei m ∈ N und f (k) = k · (m − k) . Dann ist f (k) f¨ ur k ∈ N mit 0 ≤ k ≤ m maximal, wenn gilt ( 2 m f¨ ur gerades m 4 k = m2 −1 f¨ ur ungerades m . 4 Sei C = {c1 , . . . , cm } ein bin¨ arer (n, m, d) -Code und X S =
d(ci , cj ) .
i,j∈N mit i<j≤m
Man beachte, dass diese Summe alle Codewortpaare ci , cj betrachtet, f¨ ur die i < j gilt. Da es solche Paare gibt, folgt m S ≥ d· . 2
m 2
Wir wollen nun eine obere Schranke f¨ ur S untersuchen und betrachten eine beliebige Position i in allen Codew¨ ortern, d.h. wir analysieren den Anteil an S , den wir u ¨ber c1 [i], . . . , cm [i] erhalten. Sei ki die Anzahl der Codew¨ orter, die an der i -ten Position eine 1 haben, dann ist der Anteil den wir u ¨ber die i -te Position an S erhalten ki · (m − ki ) . Wie wir im obigen Fakt gesehen haben, ist dieser Anteil maximal, wenn ( 2 m f¨ ur gerades m 4 ki = m2 −1 f¨ ur ungerades m 4 gilt. Summieren wir u ¨ber alle Positionen, so erhalten wir ( 2 f¨ ur gerades m n · m4 S ≤ 2 ur ungerades m . n · m 4−1 f¨ F¨ ur gerade Werte von m folgt unmittelbar m le
2d . 2d − n
41
F¨ ur ungerades m ist die Herleitung einer solchen Schranke etwas aufw¨ andiger. Durch Substitution von m = 2k + 1 erhalten wir: m2 − 1 4 4k 2 + 4k + 1 − 1 4k 2 + 4k n· = n· 4 4 4k + 4 ⇐⇒ n· 4 2m + 2 ⇐⇒ n· 4 ⇐⇒ n · (m + 1) n·
⇐⇒
F¨ ur 2d > n gilt somit
Zusammenfassend gilt:
2d 2d − n
≥
m2 − m 2 4k 2 + 4k + 1 − 2k − 1 d· 2 4k + 2 d· 2 2m d· 2 2·d·m .
≥ d· ≥ ≥ ≥ ≥
n 2d − n
Theorem 21 F¨ ur n < 2d gilt A2 (n, d) ≤
= d·
4k 2 + 2k 2
≥ m.
2d 2d − n
.
Eine n¨ ahere Betrachtung zeigt zudem: Theorem 22 Plotkinschranke 1. F¨ ur gerades d und n < 2d gilt
d A2 (n, d) ≤ 2 · 2d − n
und f¨ ur n = 2d A2 (2d, d) = 4 · d . 2. F¨ ur ungerades d und n < 2d gilt
d+1 A2 (n, d) ≤ 2 · 2d + 1 − n
und f¨ ur n = 2d + 1 A2 (2d + 1, d) ≤ 4 · (d + 1) .
4.8
Das Codierungstheorem fu ale ¨r fehlerbehaftete Kan¨
Abschließend wollen wir in diesem Kapitel noch einmal kurz auf das zweite Codierungstheorem von Shannon eingehen, welches auch als Kanalcodierungssatz bekannt ist. Zun¨ achst m¨ ussen wir noch einige Werte definieren. Abweichend von unserer obigen Definition eines Kanals betrachten wir in diesem Abschnitt einen Kanal als ein Tripel (Γ, Σ, P [Σ empfangen | Γ gesendet]) , hierbei stellt Γ das Quellen- bzw. Eingangsalphabet, Σ das Ausgabealphabet und P [Σ empfangen | Γ gesendet] 42
¨ die Ubertragungswahrscheinlichkeiten dar. Man beachte, dass wir bisher bei der Betrachtung der ¨ Ubertragungswahrscheinlichkeiten immer von den Symbolen eines Codealphabets gesprochen haben. In dem hier definierten Fall betrachten wir direkt die Auswirkungen eines fehlerbehafteten Kanals auf die eingehenden Nachrichten der Quelle. Sei P die Menge aller Wahrscheinlichkeiten u ¨ber Γ , d.h. (Γ, Pˆ ) ist eine Quelle. Zun¨ achst m¨ ussen wir nun noch einige Funktionen aus der Informationstheorie einf¨ uhren bzw. wiederholen: 1. Sei (U, Prob) ein Wahrscheinlichkeitsraum, dann definieren wir die q -n¨ are Entropie von (U, Prob) als X Prob[s] · logq Prob[s] . Hq ((U, Prob)) := − s∈U
2. Seien (U1 , Prob1 ) und (U2 , Prob2 ) zwei Wahrscheinlichkeitsr¨ aume, dann ist die q -n¨ are bedingte Entropie (auch Irrelevanz oder Streuentropie genannt) definiert als X X Hq ((U1 , Prob1 )|(U2 , Prob2 )) := − Prob2 [s2 ] · Prob[s1 |s2 ] · logq Prob[s1 |s2 ] . s1 ∈U1 s2 ∈U2
3. Die q -n¨ are gegenseitige Information (auch als mutual information bekannt) ist definiert als Iq ((U1 , Prob1 ); (U2 , Prob2 ))
:= Hq ((U1 , Prob1 )) − Hq ((U1 , Prob1 )|(U2 , Prob2 )) .
F¨ ur die gegenseitige Information gilt: Iq ((U1 , Prob1 ); (U2 , Prob2 )) = Iq ((U2 , Prob2 ); (U1 , Prob1 )) . Da die untersuchten Wahrscheinlichkeitsverteilungen im Folgenden aus dem Kontext der untersuchten Quellen und Kan¨ alen bekannt sind, werden wir diese vereinfachend weglassen. Wir definieren nun die Kapazit¨ at K eines Kanals (Γ, Σ, P [Σ empfangen | Γ gesendet]) mit q -n¨ arem Eingabe- und r -n¨ arem Ausgabealphabet als dessen maximaler Transinformationsgehalts K := max Iq (Γ; Σ) . Pˆ ∈P
Mit den oben angegebenen Definitionen gilt: K
= max Iq (Γ; Σ) Pˆ ∈P
= max(Hq (Γ) − Hq (Γ|Σ)) Pˆ ∈P
= − max Pˆ ∈P
− wobei
X s∈Γ
XX
s∈Γ a∈Σ
Pˆ (s) · logq Pˆ (s) Prob[a empfangen und s gesendet] logq P [s gesendet | a empfangen]
!
,
Prob[a empfangen und s gesendet] = P [a empfangen | s gesendet] · Pˆ (s) X Prob[a empfangen und s gesendet] Prob[a empfangen] = s∈Γ
P [s gesendet | a empfangen] =
P [a empfangen | s gesendet] · Pˆ (s) Prob[a empfangen]
ist. Jetzt sind wir soweit, dass wir das Codierungstheorem f¨ ur fehlerbehaftete Kan¨ ale angeben k¨ onnen. 43
Theorem 23 Codierungstheorem f¨ ur fehlerbehaftete Kan¨ ale Es sei (Γ, Σ, P [Σ empfangen | Γ gesendet]) ein Kanal mit dem q -n¨aren Eingabealphabet Γ , dem r -n¨aren Ausgabealphabet Σ und der Kapazit¨at K > 0 . Weiterhin sei R < K eine vorgegebene positive reelle Zahl. Dann gibt es zu jeder reellen Zahl ε > 0 eine nat¨ urliche Zahl nε , so dass f¨ ur jede ¨ nat¨ urliche Zahl n > nε ein Blockcode C ⊆ Γn mit einer Ubertragungsrate R(C) ≥ R existiert, f¨ ur den bei Ensatz eines ML-Decodierers die Decodierfehlerwahrscheinlichkeit f¨ ur jedes Codewort c ∈ C kleiner als ε ist. Leider ist der Beweis dieses Theorems nicht konstruktiv. Wir verweisen daher hier nur auf den Beweis, der in [HeQu95] auf den Seiten 164 bis 171 zu finden ist. Eine starke Vereinfachung dieses Theorems erhalten wir, wenn wir uns auf bin¨ are symmetrische Kan¨ ale mit einer Crossover-Wahrscheinlichkeit p und uniform verteilter Quelle beschr¨ anken, hier gilt K
= 1 + p log2 p + (1 − p) log2 (1 − p) .
Korollar 4 Sei (Γ, Σ, P [Σ empfangen | Γ gesendet]) ein bin¨arer symmetrischer Kanal mit CrossoverWahrscheinlichkeit p und Γ = Σ eine uniform verteilte Quelle. Sei R < 1+p log 2 p+(1−p) log2 (1−p) eine vorgegebene Schranke, dann existiert f¨ ur jedes ε > 0 und jedes hinreichend große n ∈ N ein (n, m) -Code mit logr m n
≥ R
und
Prob[Decodierungsfehler] ≤ ε .
Aufgabe 27 Zeigen Sie, dass f¨ ur alle e ≤ d gilt Ar (n, e) ≥ Ar (n, d) . Aufgabe 28 Bestimmen Sie die oben diskutierten Schranken f¨ ur A2 (8, 5) und A2 (9, 5) . Aufgabe 29 Beweisen Sie, dass f¨ ur bin¨are symmetrische Kan¨ale mit Crossover-Wahrscheinlichkeit p , Γ = Σ = {0, 1} und bei einer Eingabewahrscheinlichkeit P (0) = P (1) = 12 gilt I2 (Γ; Σ) = 1 + p log2 p + (1 − p) log2 (1 − p) .
44
5
Lineare Codes
Im Folgenden wollen wir uns einer weit verbreiteten Klasse von Codes, den linearen Codes, zuwenden. Doch zun¨ achst sollen noch einige Begriffe aus der Algebra wiederholt werden. Aufgrund der k¨ urze der verbleibenden Zeit m¨ ussen wir im Folgenden auf den gr¨ oßten Teil der Beweise verzichten.
5.1
Eine kurzer Einschub: Etwas Algebra
In diesem Kapitel sollen einige Notationen aus der Algebra vorgestellt werden.
5.1.1
Begriffe aus der Algebra
Gegeben sei eine Menge U und ein bin¨ arer Operator + : U × U → U . Dann nennen wir (U, +) 1. eine Semigruppe, wenn der Operator assoziativ ist, d.h. ∀a, b, c ∈ U :
a + (b + c) = (a + b) + c .
2. einen Monoid, wenn (U, +) eine Semigruppe mit (zweiseitigem) neutralem Element ist, d.h. ∃e ∈ U ∀a ∈ U : a+e = e+a = a . 3. eine Gruppe, wenn (U, +) ein Monoid ist und f¨ ur jedes Element aus U ein (zweiseitiges) inverses Element existiert, d.h. ∀a ∈ U ∃a−1 ∈ U :
a + a−1 = a−1 + a = e .
4. eine abelian bzw. kommutative Gruppe, wenn (U, +) eine Gruppe und der Operator kommutativ ist, d.h. ∀a, b ∈ U : a+b = b+a . Eine Menge U mit zwei bin¨ aren Operatoren +, · : U × U → U ( + nennen wir oft Addition und · Multiplikation) nennen wir einen Ring, wenn 1. (U, +) eine abelian Gruppe ist, 2. die Multiplikation assoziativ ist, d.h. ∀a, b, c :
a · (b · c) = (a · b) · c
3. und das linksseitige und rechtsseitige Distributivgesetz bez¨ uglich · gilt, d.h. ∀a, b, c :
a · (b + c) = a · b + a · c und
45
(b + c) · a = b · a + c · a .
Gilt zudem f¨ ur alle a, b ∈ U das Kommutativgesetz bez¨ uglich · , so nennen wir (U, +, ·) einen kommutativen Ring, d.h. ∀a, b : a·b = b·a .
Existiert in U ein neutrales Element bez¨ uglich der Multiplikation, so nennen wir (U, +, ·) einen Ring mit neutralem Element. Das additive neutrale Element eines Rings nennen wir auch Nullelement O . Das multiplikative neutrale Element eines Rings bezeichnen wir mit Identit¨ atselement I . Ein Element a ∈ U \{O} nennen wir links bzw. rechts Nulldivisor, wenn ein b ∈ U \{O} existiert, s.d. a · b = O bzw. b · a = O . Ein Nulldivisor ist ein Element a ∈ U \ {O} , welches sowohl links als auch rechts Nulldivisor ist. Ein Element a ∈ U in einem Ring mit neutralem Element nennen wir links bzw. rechts invertierbar, wenn ein b ∈ U existiert, s.d. a · b = I bzw. b · a = I . Dieses Element nennen wir links bzw. rechts Inverse von a . Ein Element a ∈ U , welches sowohl links als auch rechts invertierbar ist, nennen wir invertierbar. Ein Ring mit neutralem Element und O 6= I , in dem jedes Element a ∈ U \ {O} invertierbar ist, nennen wir Divisionsring. Einen kommutativen Divisionsring nennen wir auch einen algebraischen K¨ orper (siehe [Hung03]). Zusammenfassend k¨ onnen wir sagen, dass ein K¨ orper aus einer Menge U und zwei Operatoren + (Addition) und · (Multiplikation) besteht, wobei f¨ ur alle a, b, c ∈ U gilt: 1. Assoziativit¨ atsgesetz: a + (b + c) = (a + b) + c und a · (b · c) = (a · b) · c 2. Kommutativit¨ atsgesetz: a + b = b + a und a · b = b · a 3. Distributivgesetz: a · (b + c) = a · b + a · c 4. Existenz von neutralen Elementen O, I ∈ U : O + a = a + O = a und I · a = a · I = a . 5. Invertierbarkeit: F¨ ur jedes Element a ∈ U gibt es ein inverses Element bez¨ uglich der Addition, dieses wird auch als dessen Negation −a bezeichnet. F¨ ur jedes Element a ∈ U \ {O} gibt es ein inverses Element bez¨ uglich der Multiplikation, dieses wird auch mit a−1 bezeichnet. Es gilt: Fakt 13 Die Menge Zn und die Operatoren + und · (Modulo n ) bilden genau dann einen K¨orper, wenn n eine Primzahl ist. Diese Beobachtung folgt aus: Fakt 14 n ist genau dann eine Primzahl, wenn a · b mod n = 0
=⇒
a = 0 oder b = 0 .
Fakt 13 k¨ onnen wir noch verallgemeinern: Fakt 15 Ist q = pn f¨ ur eine Primzahl p , dann existiert ein K¨orper der M¨achtigkeit q . Ein K¨ orper von besonderer Bedeutung ist das Galois-Feld. Dieser K¨ orper zeichnet sich durch die Existenz eines primitiven Elementes x ∈ U , welches U \ {O} erzeugt, d.h. U \ {O} = { xi | i ∈ N } . 46
5.1.2
Der Vektorraum Zn p
Wir haben weiter oben schon Codes u ¨ber einem Alphabet Zp kennen gelernt. Das Alphabet Zp erlaubt es uns Codew¨ orter mit Hilfe einfacher Operationen zu verkn¨ upfen bzw. zu ver¨ andern. Dieses f¨ uhrt uns zur Definition eines Vektorraumes. Definition 36 Ein Vektorraum ¨ uber einem K¨orper F ist eine nicht leere Menge V auf dem die Operationen Addition ( + ) und Multiplikation ( · ) mit einem Skalar definiert sind. Diese Opperationen m¨ ussen die folgenden Bedingungen erf¨ ullen: 1. Assoziativit¨atsgesetz: F¨ ur alle a, b, c ∈ V gilt a + (b + c) = (a + b) + c . 2. Kommutativit¨atsgesetz: F¨ ur alle a, b ∈ V gilt a + b = b + a . 3. Existenz eines Nullvektors ~ 0 ∈ V : F¨ ur alle a ∈ V gilt ~0 + a = a + ~0 = a . 4. Invertierbarkeit: F¨ ur jedes Element a ∈ V gibt es ein inverses Element, dieses wird auch als dessen Negation −a bezeichnet. Es gilt a + (−a) = ~0 . 5. Eigenschaften der Multiplikation mit einem Skalar: Die Multiplikation mit einem Skalar ist eine bin¨are Operation, wobei ein Parameter aus dem K¨orper F und ein Parameter aus V gew¨ahlt werden. F¨ ur a, b ∈ V und α, β ∈ F gilt α · (a + b) = α · a + α · b
(α + β) · a = α · a + β · a (α · β) · a = α · (β · b) I·a = a
F¨ ur die Operationen gilt + : V × V → V und · : F × V → V . Wir nennen die Elemente von V auch Vektoren und die Elemente aus F auch Skalare. Der K¨orper F wird auch als Basisk¨ orper von V bezeichnet. Sei p eine Primzahl, dann bildet Znp einen Vektorraum u ¨ber Zp , wobei • f¨ ur alle a = a1 . . . an ∈ Znp und b = b1 . . . bn ∈ Znp gilt a + b = (a1 + b1 )(a2 + b2 ) . . . (an + bn ) • und f¨ ur alle a = a1 . . . an ∈ Znp und αZp gilt α · a = (α · a1 )(α · a2 ) . . . (α · an ) . F¨ ur Z2 und Zn2 ist der negierte Wert eines Skalars bzw. eines Vektors gleich dem urspr¨ unglichen Skalar bzw. Vektor, d.h. f¨ ur alle a, b ∈ Zn2 gilt a−b = a+b . Definition 37 Ein Unterraum von Znp ist eine nicht leere Teilmenge S von Znp zusammen mit den Operatoren + und · , wobei S, +, · einen Vektorraum ¨ uber Zp bilden. 47
Um zu zeigen, ob ein Teilmenge S von Znp ein Unterraum ist, gen¨ ugt es die folgenden Eigenschaften nachzuweisen: 1. S ist abgeschlossen gegen¨ uber der Addition: ∀a, b ∈ S :
a+b∈S .
2. S ist abgeschlossen gegen¨ uber der Multiplikation mit einem Skalar: ∀α ∈ Zp ∀a ∈ S :
α·a∈S .
Insbesondere folgt aus der letzten Bedingung, dass insbesondere der Nullvektor ~0 in S ist. Definition 38 F¨ ur Vektoren a1 , . . . , ak ∈ Znp und α1 , . . . , αk ∈ Zp bezeichnen wir α1 ·a1 +. . .+αk ·ak als die linear Kombination der Vektoren mit Koeffizienten α1 , . . . , αk . Haben alle Koeffizienten den Wert 0, so nennen wir die linear Kombination auch trivial. Sei S ein Unterraum von Znp und G ⊆ S . Wir nennen G eine generierende Menge von S , wenn jeder Vektor aus S als lineare Kombination von Vektoren aus G dargestellt werden kann. Wir schreiben dann auch S = hGi . S nennen wir auch den durch G aufgespannten Unterraum. Eine generierende Menge B von S nennen wir Basis, wenn keine echte Teilmenge von B den Unterraum S aufspannt. Sei ei ∈ Znp der Vektor aus Znp , der an der i -ten Position eine 1 und an den verbleibenden Positionen nur 0-en hat. Die Menge {e1 , . . . , en } ⊂ Znp nennen wir dann auch Standardbasis von Znp . Um einen Unterraum zu beschreiben, ist es somit ausreichend, eine Basis f¨ ur diesen Unterraum anzugeben. Um zu zeigen, ob eine Menge von Vektoren eine Basis ist, m¨ ussen wir zun¨ acht feststellen, ob diese Menge minimal ist. Um dieses zu u ufen, benutzen wir die Notation der linearen Unabh¨ angigkeit. ¨berpr¨ angig u Definition 39 Eine Menge von Vektoren aus Znp nennen wir linear unabh¨ ¨ber Zp , wenn keine nicht triviale Kombination dieser Vektoren in Zp den Nullvektor ergibt. Existiert eine nicht triviale Kombination dieser Vektoren, so dass das Resultat der Nullvektor ist, so nennen wir diese Menge linear abh¨ angig. Zur Analyse der Abh¨ angigkeit ist es von Bedeutung den K¨ orper anzugeben, den wir den Vektoren zugrunde legen, so gilt {(1, 2), (2, 1)} ist linear abh¨ angig in Z3 , da 2 · (1, 2) = (2, 1) . Betrachten wir jedoch den Z5 , so gilt 2 · (1, 2) = (2, 4),
3 · (1, 2) = (3, 1) und 4 · (1, 2) = (4, 3) .
Folglich sind die Vektoren (1, 2) und (2, 1) linear unabh¨ angig in Z5 . Fakt 16 Sei S ein Unterraum von Znp und B = {a1 , . . . , ak } eine Teilmenge von S , dann ist B genau dann eine Basis, wenn eine der folgenden ¨aquivalenten Bedingungen erf¨ ullt ist: 1. B ist eine minimale Menge, die S aufspannt. 2. B ist linear unabh¨angig und spannt S auf. 48
3. B ist eine maximale linear unabh¨angige Menge in S , d.h. B ist linear unabh¨angig und f¨ ur alle Mengen G mit B ⊂ G ⊆ S gilt, G ist linear abh¨angig. 4. F¨ ur alle x ∈ S gibt es eine eineindeutige Sequenz von Skalaren α1 , . . . , αk ∈ Zp mit x = α 1 · a1 + . . . + α k · ak . Fakt 17 Sei S ein Unterraum von Znp , dann gilt: 1. Jede Menge G , die S aufspannt, beinhaltet eine Basis von S . 2. Jede linear unabh¨angige Teilmenge G ⊆ S kann zu einer Basis von S erg¨anzt werden. Alle Basen eines Unterraums haben die gleiche Gr¨ oße. Diese Gr¨ oße nennen wir auch Dimension. Fakt 18 Sei S ein Unterraum von Znp der Dimension k . Eine Teilmenge B von S ist genau dann eine Basis von S , wenn eine der folgenden ¨ aquivalenten Bedingungen erf¨ ullt ist: 1. B besteht aus k Vektoren, die linear unabh¨angig sind. 2. B besteht aus k Vektoren und spannt S auf. Neben der Addition und der Multiplikation mit einem Skalar ist das innere Produkt eine wesentliche Operation auf den Elementen eines Vektorraumes: Sei a = a1 . . . an ∈ Znp und b = b1 . . . bn ∈ Znp , dann ist das innere Produkt a · b definiert als a · b = a 1 · b1 + a 2 · b2 + . . . + a n · bn , wobei die Produkte und die Summe im K¨ orper Zp gebildet werden. F¨ ur das innere Produkt gilt: Fakt 19 F¨ ur alle a, b, c ∈ Znp und α ∈ Zp gilt 1. a · b = b · a 2. (a + b) · c = a · c + b · c 3. (α · a) · b = a · (α · b) = α · (a · b) Definition 40 Zwei Vektoren a, b ∈ Zpn sind orthogonal zueinander, wenn a · b = 0 ist. Gegeben sei eine Menge A von Vektoren aus Znp , dann nennen wir A⊥
:= { b | ∀a ∈ A : a · b = 0 }
das orthogonale Komplement von A .
49
5.2
Lineare Codes
Mit Hilfe der oben definierten Vektorr¨ aume und Unterr¨ aume k¨ onnen wir nun eine sehr popul¨ are Form von Codes vorstellen. Definition 41 Ein Code C ∈ Znp ist genau dann ein linearer Code, wenn C ein Unterraum in Znp ist. Hat C die Dimension k und gilt d(C) = d , dann ist C ein [n, k, d] -Code. n, k, d nennen wir die Parameter von C . Ist f¨ ur uns die minimale Distanz von C von keinem Interesse, so benutzen wir die Notation [n, k] -Code. Sei B = {a1 , . . . , ak } eine Basis eines linearen [n, k, d] -Codes, dann ist jedes Wort w mit w = Pk eine Basis ist, so gibt es f¨ ur jedes i=1 αi · ai und α1 , . . . , αk ∈ Zp ein Codewort in C . Da B P k Codewort w ∈ C genau eine Sequenz α1 , . . . , αk ∈ Zp mit w = i=1 αi · ai . Somit gilt: Theorem 24 Ein p -n¨arer linearer [n, k, d] -Code ist ein (n, pk , d) -Code. In Abschnitt 4.6 haben wir das Gewicht w(x) einer Zeichenkette x ∈ Znp als die Anzahl der Positionen in x , an denen eine Zahl ungleich 0 steht, definiert. Wir definieren nun: Definition 42 Das Gewicht eines Codes C als das minimale Gewicht eines Codeworts ist ungleich 0n . Man beachte, dass jeder lineare [n, k, d] -Code das Codewort 0n beinhaltet. Lemma 4 Sei C ein linearer Code, dann gilt f¨ ur alle a, b ∈ C d(a, b) = w(a − b) . Beweis: Jedes Wort a − b hat genau an den Positionen ein Symbol ungleich 0, wenn sich a und b an diesen Positionen unterscheiden. Theorem 25 Sei C ein linearer Code, dann gilt d(C)
= w(C) .
Beweis: F¨ ur ein a, b ∈ C gilt: d(C) = d(a, b) = w(a − b) ≥ w(C) . Dar¨ uber hinaus gibt es ein Codewort a ∈ C mit w(C) = w(a) = w(a − 0n ) = d(a, 0n ) ≥ d(C) .
50
5.2.1
Generatormatrizen
Um einen linearen Code zu beschreiben, gen¨ ugt es, die Basis des entsprechenden Unterraums anzugeben. Definition 43 Sei C ein linearer Code mit Basis B = {b1 , . . . , bk } und
dann nennen wir die k × n -Matrix M
Generatormatrix von C .
b1
= b1,1 b1,2 . . . b1,n
b2
= b2,1 b2,2 . . . b2,n ...
bk
= bk,1 bk,2 . . . bk,n ,
b1,1 b2,1 = bk,1
b1,2 b2,2 bk,2
. . . b1,n . . . b2,n ... . . . bk,n
Aus der Definition einer Generatormatrix und den Eigenschaften von Unterr¨ aumen folgt: Theorem 26 Sei M eine k × n -Matrix mit Eintr¨agen aus Zp f¨ ur eine Primzahl p . M ist genau dann eine Generatormatrix eines linearen Codes, wenn deren Zeilen linear unabh¨angig in Zp sind. Die Menge der Codew¨ orter eines Codes C u ¨ber Zp mit einer k × n -Generatormatrix M erhalten wir u ¨ber C
= { α · M | Zeilenvektor α ∈ Zkp }
= { α1 · b1 + . . . + αk · bk | Zeilenvektor α = (α1 , . . . , αk ) ∈ Zkp } .
5.2.2
Der bin¨ are Reed-Muller Code
Im Kapitel 4.4 haben wir die u(u + v) -Konstruktion zum Kombinieren zweier Codes kennen gelernt. Diese Konstruktionsmethode k¨ onnen wir auch auf Codes u orper Fq erwei¨ber einem beliebigen K¨ tern. Fassen wir Codew¨ orter c = a0 a1 . . . an−1 als Vektoren (a0 , a1 , . . . , an−1 ) , die Addition zweier Codew¨ orter c + c0 als die Addition der entsprechenden Vektoren (a0 , a1 , . . . , an−1 ) + (a00 , a01 , . . . , a0n−1 ) = (a0 + a00 , a1 + a01 , . . . , an−1 + a0n−1 ) in Zq , und die Konkatenation c ◦ c0 =: (c, c0 ) als (a0 , a1 , . . . , an−1 ) ◦ (a00 , a01 , . . . , a0n−1 ) = (a0 , a1 , . . . , an−1 , a00 , a01 , . . . , a0n−1 ) auf, so erhalten wir die sogenannte Plotkin-Konstruktion f¨ ur zwei Codes C1 , C2 der gleichen L¨ ange mit C1 ∝ C2 := { c1 ◦ (c1 + c2 ) | c1 ∈ C1 , c2 ∈ C2 } . F¨ ur einen solchen Code k¨ onnen wir analog zu Aufgabe 24 zeigen: 51
Fakt 20 Sei C1 ein [n, k1 , d1 ] -Code und C2 ein [n, k2 , d2 ] -Code ¨ uber einem K¨orper Fq , dann ist C1 ∝ C2 ein [2n, k1 + k2 , min{2d1 , d2 }] -Code ¨ uber Fq . Ein sehr bekannter Code, den wir u onnen, ist die rekursive ¨ber dieses Konstruktionsprinzip erhalten k¨ Definition des Reed-Muller Codes k -ter Ordnung R(k, m) f¨ ur 0 ≤ k ≤ m : m , 1m } f¨ ur k = 0 {0m 2 R(k, m) = F2 f¨ ur k = m R(k, m − 1) ∝ R(k − 1, m − 1) f¨ ur 0 < k < m
¨ Uber eine vollst¨ andige Induktion und mit Hilfe von Fakt 20 k¨ onnen wir zeigen: Theorem 27 Der Reed-Muller Code k -ter Ordnung R(k, m) ist ein [2m ,
Pk
i=0
m i
, 2m−k ] -Code.
Von besonderer Bedeutung sind die Reed-Muller Codes erster Ordnung R(m) := R(1, m) . So wurde 1972 der R(5) -Code benutzt, um Bilder der Marsoberfl¨ asche von Mariner 9 auf die Erde zu u ¨bertragen. Aus der Definition des Reed-Muller Codes folgt unmittelbar: Fakt 21 F¨ ur c ∈ Fn2 sei c die bitweise Negation von c , dann gilt f¨ ur alle m ≥ 1 {00, 01, 10, 11} f¨ ur m = 1 R(m) = { c ◦ c, c ◦ c | c ∈ R(m − 1) } f¨ ur m > 1 Fakt 22 F¨ ur m ≥ 1 ist der Reed-Muller Codes R(m) ein linearer (2m , 2m+1 , 2m−1 ) -Code wobei m m f¨ ur alle Codew¨orter c ∈ R(m) \ {02 , 12 } gilt: w(c) = 2m−1 . Eine elegante Darstellung des Reed-Muller Codes R(m) erhalten wir u ¨ber deren Generatormatrizen: Theorem 28
1. Eine Generatormatrix von R(1) ist 0 1 R1 = 1 1
2. Sei Rm eine Generatormatrix von R(m) , dann erhalten wir eine Generatormatrix R m+1 von R(m + 1) durch 0...0 1...1 Rm+1 = Rm Rm Der Beweis dieser Aussage erfolgt u andige Induktion u ¨ber eine vollst¨ ¨ber m und der Analyse einer geeigneten Basis von R(m) . Die Struktur dieser Generatormatrizen weist die folgende Eigenschaft auf: 1. Die i -te Zeile mit i < m besteht aus 2i−1 Bl¨ ocken der Form 02 2m die Form 1 .
m−i
12
m−i
. Die m -te Zeile hat
2. Vernachl¨ assigen wir die m + 1 -te Zeile, so haben die Spalten die Form der Bin¨ arzahlen von 0 bis 2m − 1 der L¨ ange m . 52
5.2.3
Decodierung linearer Codes
Zur Decodierung eines p -n¨ aren linearen [n, k, d] -Codes C = {c1 , c2 , . . . , cm } mit m = pk und n c1 = 0 k¨ onnen wir das sogenannte standard Array benutzen. Dieses ist wie folgt generiert: w1 = c 1 = 0 n wm+1 = c1 + f1 = f1 w2m+1 = c1 + f2 = f2 .. . wqm+1 = c1 + fq = fq
w2 = c 2 wm+2 = c2 + f1 w2m+2 = c2 + f2 .. . wqm+2 = c2 + fq
w3 = c 3 wm+3 = c3 + f1 w2m+3 = c3 + f2 .. . wqm+3 = c3 + fq
... ... ... ...
wm = c m wm+m = cm + f1 w2m+m = cm + f2 .. . wqm+m = cm + fq
Hierbei ist q = pn−k − 1 und die W¨ orter fi werden so gew¨ ahlt, dass fi 6∈ {w1 , . . . , wi·m } das geringste Gewicht unter allen Zeichenketten aus Znp \ {w1 , . . . , wi·m } hat. Jede Zeile des standard Arrays nennen wir Korsett { f i , c2 + f i , c3 + f i , . . . , cm + f i } und das erste Element fi Korsettf¨ uhrer. Aus der Eigenschaft, dass jeder lineare Code einen Unterraum bildet, folgt: Theorem 29 Sei C ein linearer [n, k] -Code mit einem standard Array A , dann 1. liegen zwei Zeichenketten x, y genau dann im gleichen Korsett, wenn x − y ein Codewort ist. 2. kommt jede Zeichenkette w ∈ Znp genau einmal in A vor. 3. gilt f¨ ur jedes Element wjm+i von A
d(wjm+i , ci ) = minc∈C d(wjm+i , c) .
Aus dem oben angegebenen Theorem folgt, dass bei der dichtesten Codewortdecodierregel zu jedem empfangegen Wort wjm+i das Codewort ci gew¨ ahlt werden kann. Man beachte, dass die dichteste Codewortdecodierregel nur dann eine korrekte Decodierung erm¨ oglicht, wenn der Fehler durch einen Korsettf¨ uhrer charakterisiert werden kann. F¨ ur einen bin¨ aren Kanal entsprechen die Positionen des Korsettf¨ uhrers fi , an denen sich eine 1 befindet, genau den fehlerhaften Positionen. Die Anzahl der Fehler ergibt sich dann durch n − w(fi ) . Daher nennen wir die Korsettf¨ uhrer auch Fehlerw¨ orter. Betrachten wir nun einen bin¨ aren symmetrischen Kanal mit Fehlerwahrscheinlichkeit p , so ist die Wahrscheinlichkeit, dass ein gegebener Korsettf¨ uhrer fi den Fehler in einem empfangenen Wort beschreibt Prob[fi beschreibt den Fehler] = pw(fi ) · (1 − p)n−w(fi ) . Mit Hilfe dieser Beobachtung k¨ onnen wir die Wahrscheinlichkeit f¨ ur eine korrekte Decodierung von bin¨ aren [n, k] -Codes mit Korsettf¨ uhrern f1 , f2 , . . . , fq f¨ ur bin¨ are symmetrische Kan¨ ale unmittelbar angeben: q X Prob[korrekte Decodierung] = pw(fi ) · (1 − p)n−w(fi ) . i=1
F¨ ur perfekte bin¨ are [n, k, d] -Codes k¨ onnen wir diese Wahrscheinlichkeit unabh¨ angig von den einzelnen Korsettf¨ uhrern ausdr¨ ucken: b(d−1)/2c X n · pi · (1 − p)n−i . Prob[korrekte Decodierung] = i i=0 53
5.2.4
Das Fehlersyndrom
Definition 44 Sei C ein p -n¨arer [n, k] -Code. Eine Matrix P nennen wir genau dann Kontrollmatrix, wenn C = {x ∈ Znp |x · P T = 0} ist. Da jeder lineare [n, k] -Code C einen Unterraum darstellt, gibt es ein orthogonales Komplement C ⊥ zu C . Dieses Komplement ist ein linearer [n, n − k] -Code, den wir auch dualer Code nennen. Theorem 30 Sei G eine Generatormatrix f¨ ur einen Code C in Fnq , dann ist G eine Kontrollmatrix f¨ ur C ⊥ . Beweis: Die Eigenschaft, dass C ⊥ ⊆ {x ∈ Znp |x · GT = 0} ist, folgt unmittelbar aus der Definition des orthogonalen Komplements. Um zu zeigen, dass C ⊥ 6⊂ {x ∈ Znp |x · GT = 0} ist, nehmen wir an, dass ein Wort w ∈ {x ∈ Znp |x · GT = 0} \ C ⊥ existiert. Da jedoch w · GT = 0 ist, ist w · c = 0 f¨ ur ⊥ alle c ∈ C und folglich gilt w ∈ C – ein Widerspruch. Zwischen den Kontrollmatrizen und den standard Arrays dieses Codes gibt es folgenden Zusammenhang: Theorem 31 Sei C ein linearer [n, k] -Code, P eine Kontrollmatrix f¨ ur C und A ein standard Array von C , dann ist f¨ ur u, v ∈ Znp genau dann u · P T = v · P T , wenn u und v im gleichen Korsett von A liegen. Beweis: In Theorem 29 haben wir gesehen, dass zwei Zeichenketten u, v ∈ Znp genau dann im gleichen Korsett liegen, wenn u − v = c ein Codewort ist. Folglich gilt (u − v) · P T = u · P T − v · P T = 0 ⇐⇒ u − v = c ∈ C
⇐⇒ u, v liegen im gleichen Korsett.
Die Behauptung des Theorems folgt unmittelbar. Da das Produkt u·P T das Korsett charakterisiert, nennen wir dieses Produkt auch Fehlersyndrom. Um einen Fehler zu korrigieren ist es daher ausreichend, anstelle des vollst¨ andigen standard Arrays nur die sogenannte Fehlersyndromtabelle zu untersuchen. Diese Tabelle gibt zu jedem Fehlersyndrom den Korsettf¨ uhrer an. Aufgabe 30 Beweisen Sie Theorem 29. Aufgabe 31 Bestimmen Sie R(3) und geben Sie f¨ ur R(2) eine Generatormatrix G , ein standard Array A , eine Kontrollmatrix P und die zu A und P geh¨origen Fehlersyndrome an.
5.2.5
Decodierung von Reed-Muller Codes erster Ordnung
Da R(m) ein (2m , 2m+1 , 2m−1 ) -Code ist, ist die Decodierung von Reed-Muller Codes mit Hilfe m des standard Arrays sehr problematisch, da dieses 22 −m−1 Zeilen hat. Daher wollen wir hier ein weiteres Decodierungsverfahren vorstellen, welches sich speziell f¨ ur Reed-Muller Codes eignet: die Majorit¨ atsdecodierung bzw. die Reed-Decodierung. 54
Bei unserer Diskussion u ¨ber die Generatormatrizen haben wir gesehen, dass jeder lineare Code C u ¨ber Zp mit Basis B = {b1 , . . . , bk } gegeben ist durch C
= { α1 · b1 + . . . + αk · bk | Zeilenvektor α = (α1 , . . . , αk ) ∈ Zkp } .
F¨ ur den Reed-Muller Code R(m) seien r1 , . . . , rm+1 die Zeilenvektoren der Generatormatrizen, dann gilt R(m) = { α1 · r1 + . . . + αm+1 · rm+1 | α1 , . . . , αm+1 ∈ Zp } .
Seien ρ1 , . . . , ρ2m die Spalten der Generatormatrix und c = α1 · r1 + . . . + αm+1 · rm+1 ein konkretes Codewort. Dann k¨ onnen wir die i -te Position von c = c[1] . . . c[2m ] mit Hilfe des inneren Produkts c[i] = (α1 , . . . , αm+1 ) · ρi beschreiben. Betrachten wir nun zwei Spalten ρa und ρb der Generatormatrix von R(m) , die sich nur an der i -ten Position unterscheiden, so erhalten wir ρa − ρb = (0, . . . , 0, 1, 0, . . . , 0)T | {z } | {z } i−1
und somit c[a] − c[b] = (α1 , . . . , αm+1 ) · (ρa − ρb ) = αi .
2m −i
Ein solches Paar von Positionen kann uns dabei helfen, den urspr¨ unglichen Wert von αi zu berechnen. Ein solches Paar nennen wir daher Decodierungspaar f¨ ur αi . Aus der Eigenschaft, dass bei Vernachl¨ assigung der letzten Zeile die Spalten die Form der Bin¨ arzahlen von 0 bis 2m − 1 der L¨ ange m haben, folgt, dass es f¨ ur jedes i genau 2m−1 Decodierungspaare f¨ ur αi gibt. Beispiel 3 F¨ ur R(3) gilt: R3
0 0 = 0 1
0 0 1 1
0 1 0 1
0 1 1 1
1 0 0 1
1 0 1 1
1 1 0 1
1 1 1 1
Decodierungspaare f¨ ur α1 sind (ρ1 , ρ5 ), (ρ2 , ρ6 ), (ρ3 , ρ7 ) und (ρ4 , ρ8 ) . Allgemein gilt f¨ ur R(m) , dass f¨ ur alle 1 ≤ i ≤ m , 1 ≤ j ≤ 2m−i − 1 und 0 ≤ k ≤ 2i−1 − 1 das Paar ρk·2m−i+1 +j , ρk·2m−i+1 +j+2m−i ein Decodierungspaar f¨ ur αi ist. Betrachten wir nun ein fehlerhaft empfangenes Wort w , welches aus einem Codewort c und maximal b(d(C) − 1)/2c = 2m−2 − 1 fehlerhaften Positionen hervorgegangen ist. Da die Decodierungspaare f¨ ur ein festes αi alle disjunkt sind, k¨ onnen 2m−2 − 1 fehlerhafte Positionen maximal 2m−2 − 1 Decodierungspaare beeinflussen. Somit gilt f¨ ur mindestesn 2m−1 −(2m−2 −1) = 2m−2 +1 Decodierungspaare, dass die ensprechenden Positionen von c in w korrekt sind. Mit Hilfe einer Mehrheitsentscheidung k¨ onnen wir u ¨ber die Analyse aller Decodierungspaare den korrekten Wert von αi bestimmen. Da dieses f¨ ur alle i m¨ oglich ist, k¨ onnen wir mit Hilfe dieses Verfahrens bis zu b(d(C) − 1)/2c Fehler bei der Benutzung des Reed-Muller Codes korrigieren, ohne das standard Array zu bestimmen. Man beachte, dass diese Schranke bestm¨ oglich ist.
5.3
Zyklische Codes
Zyklische Codes C sind spezielle lineare Codes, f¨ ur die gilt c = (c[1], . . . , c[n − 1], c[n]) ∈ C
⇐⇒ 55
cshif t = (c[n], c[1], . . . , c[n − 1]) ∈ C .
Zur Darstellung dieser Codes hat sich eine alternative Darstellungsform als besonders geeignet herausgestellt, die Polynom-Darstellung. Sei Fq ein K¨ orper, dann bezeichnen wir mit Fq [x] die Menge aller Polynome mit Koeffizienten aus Fq und der Variable x . F¨ ur ein Polynom f ∈ Fq [x] bezeichnet Fq [x]/(f ) die Menge aller Restklassen modulo f , d.h. die Menge aller Klassen [g] mit g ∈ Fq [x] und [g] := { h ∈ Fq [x] | ∃r, a, b ∈ Fq [x] : a · f + r = g und b · f + r = h
d.h.
h ≡ g mod f } .
Zur Darstellung von Codew¨ ortern c ∈ C benutzen wir Polynomklassen aus Fq [x]/(xn − 1) bzw. Repr¨ asentanten dieser Klassen, d.h. c = c[1] + c[2] · x + c[3] · x2 + . . . + c[n] · xn−1
∈ C .
Betrachten wir nun f¨ ur ein Codewort c ∈ C , so erkennen wir: x · c mod (xn − 1) = c[1] · x + . . . + c[n − 1] · xn−1 + c[n] · xn mod (xn − 1)
= c[n] + c[1] · x + . . . + c[n − 1] · xn−1 + c[n] · (xn − 1) mod (xn − 1) = c[n] + c[1] · x + . . . + c[n − 1] · xn−1 mod (xn − 1)
= cshif t . Mit dieser Darstellung gilt:
C ⊆ Fq [x]/(xn − 1) ist genau dann ein zyklischer Code, wenn f¨ ur alle c ∈ C und alle h ∈ Fq [x]/(xn − 1) gilt c · h ∈ C . Wir wollen nun zeigen, dass es ein Polynom g ∈ Fq [x]/(xn −1) gibt, mit dessen Hilfe wir C generieren k¨ onnen. Zun¨ achst w¨ ahlen wir g ∈ C \ {0n} so, dass das dazugeh¨ orige Polynom einen minimalen Grad hat, und zudem der Koeffizient der maximalen Potenz von x gleich 1 ist. Dieses Polynom ist eindeutig bestimmt. Man beachte, dass f¨ ur alle Codew¨ orter c ∈ C gilt: c = h·g + r
f¨ ur h, r ∈ g ∈ Fq [x]/(xn − 1) und r hat einen kleineren Grad als g
d.h. r = c mod g . Da f¨ ur einen linearen Code C und alle Codew¨ orter c, c0 ∈ C auch c − c0 ein Codewort ist und g ein Codewort mit minimalem Grad ist, muss r = 0 sein. Wir k¨ onnen somit jedes Codewort aus C als ein Vielfaches von g generieren. Dieses gilt insbesondere auch f¨ ur das Codewort 0n , welches durch das Polynom xn − 1 repr¨ asentiert werden kann (man beachte (xn −1) mod (xn −1) = 0 ). Wir nennen daher g auch das Generatorpolynom von C und schreiben C = hhgii . Aufgabe 32 Bestimmen Sie die Decodierungspaare von R(4) und decodieren Sie 1100011000110001 mit Hilfe der Reed-Decodierung. Aufgabe 33 Beweisen oder widerlegen Sie, dass der Reed-Muller Codes 1 -ter Ordnung ein zyklischer Code ist. Aufgabe 34 Beweisen Sie, dass das Polynom mit minimalem Grad in C eindeutig ist. Aus der Eigenschaft, dass f¨ ur alle Codew¨ orter c ∈ C c = h·g
f¨ ur h ∈ Fq [x]/(xn − 1)
k¨ onnen wir schließen: 56
Theorem 32 F¨ ur einen nicht leeren zyklichen Code C ⊆ Fq [x]/(xn − 1) mit Generatorpolynom g = g0 + g1 · x + . . . + gk · xk vom Grad k ist B = {g, x · g, . . . , xn−k−1 · g} eine Basis. Beweis: Wir betrachten zun¨ achst folgende Eigenschaft von zyklischen Codes: C
= hhgii = { f · g | f ∈ Fq [x]/(xn − 1) } .
Es folgt unmittelbar, dass jedes Polynom, welches mit Hilfe einer Linearkombination von Polynomen aus B dargestellt werden kann, einem Codewort aus C entspricht. Es verbleibt somit noch zu zeigen, dass jedes Codewort aus C auch mit Hilfe der Basis B dargestellt werden kann. Sei c = (a · g) mod (xn − 1) mit a ∈ Fq [x] ein Codewort aus C . Wir wollen zeigen, dass ein solches Polynom a vom Grad n − k − 1 existiert. Lemma 5 F¨ ur einen nicht leeren zyklichen Code C ⊆ Fq [x]/(xn − 1) mit Generatorpolynom g vom Grad k existiert ein Polynom h ∈ Fq [x] vom Grad n − k − 1 mit h · g = xn − 1 , dieses Polynom nennen wir Kontrollpolynom. Sei h das Kontrollpolynom von C , dann gilt f¨ ur unser Polynom a a = b · h + r mit b, r ∈ Fq [x], wobei der Grad von r durch n − k − 1 beschr¨ ankt ist. Es folgt c ≡ a · g ≡ (b · h + r) · g ≡ b · h · g + r · g ≡ b · (xn − 1) + r · g ≡ r · g mod (xn − 1) . ¨ Aus der Definition der Generatormatrizen und der Aquivalenz der Vektordarstellung und der Polynomdarstellung von linearen Codes folgt unmittelbar, dass g0 g1 g2 . . . gk 0 0 0 ... 0 0 g0 g1 . . . gk−1 gk 0 0 ... 0 0 0 g0 . . . gk−2 gk−1 gk 0 ... 0 G = . .. . . .. .. .. .. .. . . . . . . 0 0 ... 0 g0 g1 g2 . . . gk 0 0 0 ... 0 0 g0 g1 . . . gk−1 gk
eine Generatormatrix von C ist. Aus dieser Eigenschaft folgt unmittelbar:
Theorem 33 Sei C ⊆ Fq [x]/(xn − 1) ein zyklischer Code mit Kontrollpolynom h , dann gilt f¨ ur alle c ∈ Fq [x]/(xn − 1) : c∈C ⇐⇒ c·h=0 . Aus dem Kontrollpolynom h = h0 + h1 · x + . . . + hn−1 · xn−1 zu bestimmen: hk hk−1 hk−2 . . . h0 0 0 h h . . . h h k k−1 1 0 0 0 hk . . . h2 h1 H = . .. .. .. .. . . . 0 0 ... 0 hk hk−1 0 0 ... 0 0 hk 57
ist es m¨ oglich, eine Kontrollmatrix H 0 0 h0
0 0 0 .. .
... ... ... .. .
hk−2 hk−1
... ...
h0 h1
0 0 0 .. .
0 h0
5.4
Reed-Solomon-Code
Ein Code, der in der Praxis eine weite Verbreitung gefunden hat, ist der Reed-Solomon-Code. Dieser Code ist u orper mit einem primitiven Element α , ¨ber einem Galois-Feld Fq , d.h. u ¨ber einem K¨ definiert. Wir definieren den Reed-Solomon-Codes mit Hilfe der Generatorpolynome. Definition 45 Einen Reed-Solomon-Code C ⊆ Fq−1 mit einer Hammingdistanz d ist ein Code ¨ uber q einem Galois-Feld Fq mit Generatorpolynom g
= (x − αb ) · (x − αb+1 ) · . . . · (x − αb+d−2 ) .
f¨ ur ein b ∈ N . F¨ ur b = 1 nennen wir diesen Code auch Reed-Solomon-Code im engeren Sinne. Die folgenden Beobachtungen sind [Jung95] entnommen. Es gilt: Theorem 34 Jeder Reed-Solomon-Code mit Distanz d ist ein zyklischer [q − 1, q − d, d] -Code Zur Codierung haben Reed und Solomon folgendes Codierungsverfahren vorgeschlagen: F¨ ur ein k mit 1 ≤ k ≤ q−1 sei Fkq die Menge der zu codierenden Vektoren. Jedem Vektor u = (u0 , u1 , . . . , uk−1 ) , mit dazugeh¨ origen Polynom u(x) = u0 + u1 · x + . . . + uk−1 · xk−1 , ordnen wir das Codewort cu = u(1), u(α), . . . , u(αq−2 )
zu. Die Menge der Codew¨ orter cu ergibt einen [q − 1, k, q − k] -Reed-Solomon-Code im engeren Sinne.
Zur Decodierung eines m¨ oglicherweise fehlerhaften Wortes k¨ onnen wir wieder eine Form der Mehrheitsentscheidung benutzen. Sei y die empfangene Zeichenkette und e eine Zeichenkette, welche den Fehler in y kennzeichnet, d.h. y = cu + e . Dann gilt aufgrund des oben angegebenen Codierungsverfahrens: y[1] = e[1] + u0 + u1 + . . . + uk−1 y[2] = e[2] + u0 + u1 · α + . . . + uk−1 · αk−1 y[3] = e[3] + u0 + u1 · α2 + . . . + uk−1 · α2·(k−1) .. . y[q − 1] = e[q − 1] + u0 + u1 · αq−2 + . . . + uk−1 · α(q−2)·(k−1) . Um das empfangene Wort korrekt zu decodieren, m¨ ussen wir k dieser Gleichungen mit e[i] = 0 nach den Werten von u0 , u1 , . . . , uk−1 aufl¨ osen. Sei ` = w(e) , d.h. die Anzahl der fehlerhaften Positionen in y , dann ergeben mindestens q−1−w Teilsysteme aus je k dieser Gleichungen das korrekte u k und h¨ ochstens w+k−1 Teilsysteme ein inkorrektes u . Es gilt: k q−1−w w+k−1 > ⇐⇒ q − k > 2w . k k c Fehler auf, so k¨ onnen wir diese mit Hilfe eines Mehrheitsverfahrens Treten also maximal b q−k−1 2 korrekt decodieren. Wie oben schon erw¨ ahnt, finden Reed-Solomon-Codes in der Praxis vielerlei Anwendungen, wie zum Beispiel bei der Fehlerkorrektur beim CD-Spieler oder auch beim RAID-6 um beim Ausfall von Festplatten deren Inhalt zu rekonstruieren. 58
5.5
Das RAID-System
Der Abschluß der Codierungstheorie soll eine kurze Einf¨ uhrung in das Thema RAID-Systeme darstellen. RAID steht f¨ ur Redundant Array of Inexpensive Disks und wurde an der University Berkeley ¨ entwickelt. Eine weitere g¨ angige Ubersetzung von RAID ist Redundant Array of Independent Disks. Die urspr¨ unglich Entwicklung dieser Systeme sah nur 5 Levels f¨ ur RAID-Systeme vor. F¨ ur Systeme von einem h¨ oheren Level gibt es keine g¨ angige Bezeichnung. Die sinnvollste Bezeichnung ist wohl RAID- n + m , wobei n die Nettokapazit¨ at, d.h. die Anzahl der Datenplatten, und m das Maß der Redundanz angibt. Mit RAID-6 wird im Allgemeinen ein RAID- n +2 bezeichnet. Bei LINUX ist n ≤ 254 . Im Wesentlichen gehen wir hierbei wie folgt vor: Von den 254 Datenplatten nehmen wir die jeweils gleichen Bits (b1 , b2 , . . . , b254 ) und codieren diese mit Hilfe eines Reed-Solomon-Codes u ¨ber F28 . Um dieses schneller ausf¨ uhren zu k¨ onnen, wird in der Praxis oft auf Multiplikationstafeln zur¨ uckgegriffen. Im Anschluß werden die 256 Bits u ¨ber Striping u ¨ber die Festplatten verteilt. Liegen weniger als 254 Datenplatten vor, so setzen wir die h¨ oherwertigen Bits auf 08 . mit n ≥ m k¨ onnen wir folgende Generatormatrix benutzen: ... 0 0 1 1 1 ... 1 α1 α1·2 ... α1·(m−1) 0 0 1 .. .. .. .. .. .. . . . . . . n−2 (n−2)·2 (n−2)·(m−1) 1 0 1 α α ... α 0 0 . . . 0 1 1 αn−1 α(n−1)·2 . . . α(n−1)·(m−1)
Zur Codierung im RAID- n + m 1 0 0 1 G = ... 0 0
Das Produkt (b1 , . . . , b254 )·G liefert uns dann den Datenvektor (b1 , . . . , b254 ) zuz¨ uglich eines Kontrollvektors (c1 , . . . , cm ) . Mit Hilfe des Kontrollvektors ist es uns nun m¨ oglich, ein lineares Gleichungssystem aus m Gleichungen aufzustellen. Da ein RAID-System in erster Linie einen Plattenausfall kompensieren soll, besteht unsere Aufgabe hierbei darin aus n + m Gleichungen n verschiedene Gleichungen auszuw¨ ahlen. Da der Fehlervektor e = 0n+m ist, k¨ onnen wir dieses Gleichungssystem korrekt l¨ osen, solange noch n Gleichungen bzw. Platten zur Verf¨ ugung stehen. Wir k¨ onnen also einen Ausfall von m Platten kompensieren. Beim RAID-6 erhalten wir somit als Kontrollbytes c1
= b1 + b2 + . . . + b254
c2
= b1 + b2 · α1 + . . . + b254 · α253 .
Da die Werte von αi die Werte des K¨ orpers Zq aufz¨ ahlen, k¨ onnen wir durch Umverteilung die folgenden Kontrollbytes generieren: c1
= b1 + b2 + . . . + b254
c2
= b1 + 2 · b2 · + . . . + 254 · α253 .
Das erste dieser beiden Kontrollbytes wird in der Literatur oft als Parity-Bit und das zweite als Q-Bit bezeichnet. Weitere Ausf¨ uhrungen zu diesem Thema sind in [Plan97] zu finden. Aufgabe 35
1. Zeigen Sie, dass (Z17 , +, ·) eine Galois-Feld ist.
2. Bestimmen Sie einen Basis des Reed-Solomon-Codes im engeren Sinne mit d = 6 unter Benutzung des kleinsten primitiven Elements f¨ ur Z17 . 3. Korrigieren Sie das Wort (11, 1, 6, 8, 1, 6, 6, 4, 16, 14, 10, 15, 1, 2, 9, 8) .
59
6
Sicherheitsprobleme
Bisher haben wir uns nur mit der Frage der Datensicherheit gegen¨ uber randomisierten Ver¨ anderungen und der Datenrekonstruktion besch¨ aftigt. Unter Sicherheitsproblemen verstehen wir jedoch Fragestellungen, die sich mit zielgerichteter nichtautorisierter Datenmanipulation und dem nichtautorisierten Lesen von Daten besch¨ aftigen. Auf diese Problematik soll in einer gesonderten Vorlesung u ¨ber Kryptographie eingegangen werden. Ein weiteres Feld, welches wir im Folgenden kurz anreißen wollen, besch¨ aftigt sich mit unerw¨ unschten Eindringlingen in einem System: den Intruders (auch Hacker bzw. Cracker) und den programm¨ ahnlichen Gefahren (Viren, W¨ urmer, Trojanische Pferde, etc.). Die folgende Aufarbeitung basiert auf dem Buch von W. Stallings [Stal95].
6.1
Intruders
Im Wesentlichen unterscheiden wir drei Klassen von Intruders: 1. Masquerader: Ein nicht autorisierter Eindringling in ein System, der die Zugriffskontrolle attackiert, um die Zugriffsrechte eines legitimen Benutzers zu erhalten. 2. Misfeasor: Ein legitimer Systembenutzer, der seine Zugriffsrechte mißbraucht oder unautorisiert versucht auf Daten zuzugreifen. 3. Clandestine User: Ein Benutzer, der die Rechte eines Administrators benutzt, um seine Aktivit¨ aten auf dem System zu verschleiern.
6.1.1
Kennw¨ orter
Ziel solcher Attacken ist, einen Zugriff zu erhalten oder auszuweiten. Hierf¨ ur wird zumeist versucht, an das Kennwort eines anderen Benutzers heran zu kommen. Diese werden innerhalb eines Systems in einer Password-Datei gespeichert. Die Kennworte werden in der Password-Datei durch folgende Methoden gesch¨ utzt: 1. One-Way Encryption: Durch eine nichtreversible Berechnung wird aus einem Kennwort ein Codewort berechnet, welches in der Password-Datei gespeichert wird. 2. Zugriffskontrolle: Die Benutzer, die auf die Password-Datei direkt zugreifen d¨ urfen, wird weitgehend eingeschr¨ ankt. Die wesentlichen Attacken auf die Password-Datei k¨ onnen wir wie folgt gliedern: 1. Teste die Benutzer und Kennw¨ orter der Voreinstellung vom Hersteller. 2. Teste alle kurzen Kennw¨ orter. 3. Teste W¨ orter aus On-Line W¨ orterb¨ uchern. 4. Sammele Informationen u ucher. ¨ber die Benutzer, wie z.B. Namen, Bilder, B¨ 5. Teste Nummern, die mit den Benutzern in Zusammenhang stehen. 60
6. Teste legitime Lizenznummern. 7. Benutze ein Trojanisches Pferd. 8. Belausche den Kanal zwischen einem externen Benutzer und dem Server. 9. Behaupte ein legitimer Benutzer zu sein, und frage den Adimistrator nach einem neuen Kennwort. 10. Beobachte Benutzer bei der Eingabe von Kennw¨ ortern. 11. Ein weiterer Angriff hat in der letzten Zeit von sich reden gemacht: Bitte einen legitimen Benutzer seine Zugriffsdaten einzugeben und stelle hierzu eine neue Seite zur Verf¨ ugung. Die ersten 6 Formen von Angriffen basieren auf dem Raten von Kennw¨ ortern. Hierbei kann ein System, welches den Zugriff auf die Password-Datei beschr¨ ankt, die entsprechenden Angriffe weitgehend blockieren. Liegen einem Angreifer jedoch die verschl¨ usselten Kennw¨ orter vor, so kann er mit Hilfe der Verschl¨ usselungsverfahren wiederholt versuchen, die verschl¨ usselten Kennw¨ orter herzuleiten. Diese Formen von Attacken sind oft sehr effizient, sie ben¨ otigen jedoch einen ungehinderten Zugriff auf die verschl¨ usselten Kennw¨ orter. Um diesen zu erhalten, kann eine besondere Form von Trojanischem Pferd eingesetzt werden. Ein besonderer Angriff dieser Art ist in der Literatur bekannt: Ein Systembenutzer stellte einem Administrator ein selbstgeschriebenes Spiel zur Verf¨ ugung. W¨ ahrend des Spielens erstellte das Programm eine Kopie der Password-Datei, welche jedoch nicht mehr unter einer Zugriffskontrolle stand. Diese Datei konnte somit vom Systembenutzer leicht ausgelesen werden. Die achte Form der Angriffe, das Belauschen eines Kanals, ist von physikalischer Natur. Eine verbreitete Gegenmaßnahme gegen solche Angriffe ist der Einsatz von Verschl¨ usselungsverfahren bei der Daten¨ ubertragung, wie dieses beim Einsatz von ssh und scp erfolgt. Die letzten drei Angriffe sind nicht technischer Natur. Um sich vor diesen Angriffen zu sch¨ utzen, muss das Verst¨ andnis der Benutzer und der Administratoren f¨ ur diese Form von Attacken geschult werden. Ferner muss das Wissen u asent sein. ¨ber diese Form der Attacken immer pr¨ Das zentrale Hilfsmittel zum Schutz eines Systems gegen Eindringlinge ist die Identifikation eines Benutzers mit Hilfe einer ID und eines Kennworts. Die Benutzer-ID gibt die Informationen dar¨ uber, ob ein Benutzer auf dem System zugelassen ist, welche Privilegien er hat und welche Zugriffe auf fremde Dateien erlaubt sind. In UNIX wird die Verschl¨ usselung der Kennw¨ orter mit Hilfe des DES-Algorithmus durchgef¨ uhrt, welcher sich hinter der Routine crypt(3) verbirgt. Hierbei wird zun¨ achst ein 56 Bit Kennwort um eine 12 Bit Sequenz, dem Salt, erg¨ anzt. Dieser Salt ist abh¨ angig von dem Zeitpunkt, wann der Eintrag vergeben wird, und soll sicherstellen, dass auch im Fall, dass ein Kennwort doppelt gew¨ ahlt wird, das verschl¨ usselte Kennwort nur einmal in der Password-Datei vorhanden ist. Die crypt(3)-Routine ¨ f¨ uhrt den DES-Algorithmus 25 mal hintereinander aus. Ziel dieser Wiederholungen ist es, eine Uberpr¨ ufung des Kennworts bei einer regul¨ aren Anmeldung zu verlangsamen. Diese Verlangsamung kann jedoch dadurch aufgehoben werden, dass ein Angreifer entweder die crypt(3)-Routine umgeht, wie dieses zum Beispiel beim Einsatz eines Wurms geschehen kann, oder indem ein Angreifer einen direkten Lesezugriff auf die Password-Datei hat. Moderne Computer k¨ onnen mit Hilfe von verbesserten Implementierungen des DES-Algorithmus mehrere Millionen Kennw¨ orter pro Sekunde testen. Da die meisten Benutzer sich jedoch keine vollkommen zuf¨ allig gew¨ ahlte Zeichensequenz merken k¨ onnen, f¨ uhrt eine der folgenden Attacken meistens zu einem Treffer:
61
1. Teste benutzerspezifische Daten und alle Permutationen dieser Daten. 2. Teste W¨ orter aus verschiedenen W¨ orterb¨ uchern. 3. F¨ uhre den letzten Test unter der Ersetzung von o durch 0 und l durch 1 durch. 4. Ersetze kleine Buchstaben durch große Buchstaben. Das wesentliche Problem besteht somit in der Wahl eines guten Kennworts. Eine schlechte Wahl eines Kennworts kann wie folgt verhindert werden: 1. trainierte Benutzer, 2. computergenerierte Kennw¨ orter, 3. Einsatz reaktiver Kennworttests oder 4. Einsatz proaktiver Kennworttests. Ein trainierter Benutzer sucht sich ein Kennwort, welches sich leicht merken l¨ asst, und zudem eine gewisse Sicherheit liefert. Dieses kann beispielsweise mit Hilfe eines Reims geschehen: One for the money −→ 14money oder eines Shifts auf der Tastatur zucchini −→ xivvjomo bzw. uivvjomo Bessere Kennw¨ orter k¨ onnen mit Hilfe eines Computers generierte werden. Diese sind jedoch oft nur schwer zu merken. Eine Hilfe bieten hierbei Programme, die zuf¨ allige Kennw¨ orter generieren, die auch aussprechbar sind. Ein Beispiel ist der Generator FIPS PUB 181. Da der Benutzer oft keinen Bezug zu diesen Kennw¨ ortern hat, ist jedoch die Akzeptanz solcher Generatoren nicht allzu groß.
6.1.2
Kennworttests
Reaktive Kennworttests untersuchen regelm¨ aßig Password-Dateien nach unsicheren Kennw¨ ortern. Hierbei ist zu bedenken, dass diese Tests oft nur parallel zum regul¨ aren Rechnerbetrieb geschehen k¨ onnen. Ein Angreifer kann jedoch seine ganze Rechnerkapazit¨ at auf das Knacken eines Kennworts einsetzen. Zudem ist sein Angriff oft nicht zeitbeschr¨ ankt. Ein weiteres Problem besteht darin, dass ein unsicheres Kennwort, wenn es erst einmal gew¨ ahlt wurde, f¨ ur eine gewisse Zeit den Zugang in ein System erm¨ oglicht. Proaktive Kennworttests testen schon bei der Auswahl des Kennworts dessen Sicherheit. Hierbei ist jedoch darauf zu achten, dass der proaktive Kennworttester eine gewisse Balance zwischen Benutzerfreundlichkeit und Strenge der Auswahl einh¨ alt. Im Wesentlichen k¨ onnte ein solcher Test auf eine Datenbank, bzw. ein W¨ orterbuch, und auf einigen wenigen Kriterien beruhen. Hierbei ergibt sich jedoch das Problem, dass ein proaktiver Kennworttest oft noch weniger Speicherplatz und Zeit zur Verf¨ ugung hat als ein reaktiver Kennworttest. Ein Ausweg bietet hierbei der Einsatz von MarkovModellen f¨ ur die Beschreibung von erratbaren Kennw¨ ortern. Ein Markov-Modell ist ein Quadrupel (m, A, T, k) , wobei m die Anzahl der Zust¨ ande, A den Zu¨ standsraum, T ein mehrdimensionales Feld von Ubergangswahrscheinlichkeiten zwischen den Zust¨ anden 62
und k die Ordnung des Modells angibt. Die Ordnung stellt so etwas wie das Ged¨ achtnis des Modells ¨ dar. Bei einem Modell k -ter Ordnung h¨ angen die Wahrscheinlichkeiten eines Ubergangs von einem Zustand zu einem Nachfolgezustand von k Ereignissen ab. Das k + 1 -dimensionale Feld T k¨ onnen wir wie folgt bestimmen. F¨ ur k + 1 Symbole a1 , . . . , ak , b ∈ Σ und ein W¨ orterbuch W ⊂ Σ∗ sei f (a1 , . . . , ak , b) := |{ (w, i) | w ∈ W, 1 ≤ i ≤ |w| − k und w[i] . . . w[i + k] = a1 . . . ak b }| g(a1 , . . . , ak )
:= |{ (w, i) | w ∈ W, 1 ≤ i ≤ |w| − k und w[i] . . . w[i + k − 1] = a1 . . . ak }|
und
g(i1 , . . . , ik , j) . f (i1 , . . . , ik ) Die Tabelle T reflektiert die Struktur des W¨ orterbuchs W und kann daher benutzt werden, um festzustellen, ob ein Kennwort mit hoher Wahrscheinlichkeit mit dem gegebenen W¨ orterbuch gefunden werden kann. T (i1 , . . . , ik , j) :=
Ein zweites Verfahren, um schlechte von guten Kennworten zu unterscheiden, wurde von Spafford (1992) entwickelt. Er basiert auf dem sogenannten Bloom-Filter. Hierbei verwenden wir k unabh¨ angige Hash-Funktionen H1 ,. . . , Hk . Eine Hash-Funktion H bildet einen Wert auf eine Position in einer Hash-Tabelle T ab. Auf die genaue Konstruktion dieser Hash-Funktionen werden wir nicht n¨ aher eingehen, sondern verweisen hier nur auf die Arbeiten von Spafford [Spa92a, Spa92b]. Beispiele f¨ ur Hash-Funktionen sind auch im Skript zu abstrakten Datenstrukturen zu finden [Jako00]. Das Verfahren von Spafford arbeitet wie folgt. Zun¨ achst besetzen wir die Eintr¨ age der Hash-Tabellen. Sei W ein W¨ orterbuch, dessen Eintr¨ age die jeweils m Eintr¨ age in der Hash-Tabellen T1 ,. . . , Tk bestimmen, dann w¨ ahlen wir f¨ ur alle i ∈ {1, . . . , k} und alle ` ∈ {1, . . . , m} 1 wenn f¨ ur ein w ∈ W gilt Hi (w) = ` Ti (`) := 0 wenn f¨ ur alle w ∈ W gilt Hi (w) 6= ` Ein Kennwort u wird abgelehnt, wenn f¨ ur alle i ∈ {1, . . . , k} gilt Ti (Hi (u)) = 1 . Mit Hilfe dieses Verfahrens k¨ onnen wir schnell die Eintr¨ age aus einem W¨ orterbuch als Kennw¨ orter ausschließen. Die Gefahr besteht jedoch, dass ein sicheres Kennwort ausgeschlossen wird. Sei R = m/|W | , dann ist die Wahrscheinlichkeit, dass ein gutes Kennwort ausgeschlossen wird k −k P ≈ 1 − e−k/R bzw. R ≈ . ln(1 − P 1/k ) 6.1.3
Test auf Eindringlinge
Die beste Wahl eines Kennworts ist jedoch nutzlos, wenn es einem Eindringling einmal gelingt, in ein System einzudringen. Daher spielt die Suche nach m¨ oglichen Eindringlingen in einem großen System eine wichtige Rolle. Der Versuch, einen Eindringling zu entlarven, basiert darauf, dass sich ein Eindringling anders verh¨ alt als ein legitimer Benutzer. Eine M¨ oglichkeit einen Eindringling zu entlarven, besteht darin, das Verhalten der regul¨ aren Benutzer in der Vergangenheit zu analysieren. Wir gehen dabei davon aus, dass sich dieses Verhalten auch in der Zukunft nicht ver¨ andert. Um einen Eindringling aufzusp¨ uren, k¨ onnen wir einen der folgenden Ans¨ atze benutzen: 1. Statistischer Anomalietest: Hierzu m¨ ussen wir eine Statistik u ¨ber das Verhalten des legitimen Benutzers f¨ uhren. Ein Problem ist hierbei, dass wir bei dem Aufbau dieser Statistik sicher sein m¨ ussen, dass dieses Verhalten tats¨ achlich von dem Benutzer und nicht von einem Eindringling stammt. Diese Tests basieren auf dem Aufstellen von Regeln, welche das erwartete Verhalten beschreiben. 63
(a) Threshold-Test: Bei diesem Test wird eine Schwelle von un¨ ublichen Ereignissen festgelegt, die bei einem Benutzer u urfen. ¨ber eine bestimmte Zeit auftreten d¨ (b) Profilbasierte Tests: Mit Hilfe eines Profils wird das Verhalten eines Benutzers dokumentiert. Weicht ein Benutzer von diesem Profil ab, so k¨ onnte es sich um einen Eindringling handeln. 2. Regelbasierte Tests: Hierbei legen wir f¨ ur jeden Benutzer eine Menge von Regeln fest, welche das erlaubte Verhalten der Benutzer festlegen. Diese Tests basieren auf dem Aufstellen von Regeln, welche das korrekte Verhalten beschreiben. (a) Anomalien-Suche: Regeln werden aufgestellt, welche Abweichungen von bekannten Verhaltensmustern feststellen. (b) Eindringling-Identifikation: Ein Expertensystem, welches nach Eindringlingen sucht. Die meisten Tests basieren auf der Aufzeichnung der Aktionen der verschiedenen Benutzer. Hierbei k¨ onnen wir in einer entsprechenden Datei alle Aktionen eines Benutzers aufzeichnen, oder wir k¨ onnen uns auf Aufzeichnung relevanter Aktionen beschr¨ anken. Hierbei gen¨ ugt es, wenn wir den Benutzer, die Form der Aktion, das gelesene Objekt, die Systemreaktion, die ben¨ otigten Systemressourcen und den Zeitpunkt speichern. Bei dem Threshold-Test bestimmen wir die H¨ aufigkeit, mit der ein spezifisches Ereignis vorkommt. Weicht ein Benutzer signifikant von dieser Anzahl ab, so handelt es sich bei diesem Benutzer m¨ oglicherweise um einen Eindringling. Profilbasierte Tests bestimmen mit Hilfe der Aufzeichnungen der Aktionen eines Benutzers ein typisches Verhaltensmuster. Hierbei werden folgende Eigenschaften X gemessen: Anzahl, Pegel, Zeitintervall und Ressourcen. Basierend auf diesen Werten bestimmen wir deren Erwartungswert E und Standardabweichung Var . Mit Hilfe der Ungleichung von Chebyshev k¨ onnen wir ein verd¨ achtiges Verhalten dokumentieren. Wir betrachten hierbei X als eine Zufallsvariable. Es gilt: Prob[|X − E[X]| ≥ k · Var[X]] ≤
1 . k2
Es ist jedoch zu beachten, dass der oben berechnete Erwartungswert und die Standardabweichung aufgrund des beschr¨ ankten Beobachtungsintervalls nur approximiert werden kann. Eine weitere M¨ oglichkeit, ein anormales Verhalten zu dokumentieren, besteht darin, mit Hilfe eines Markov-Modells die Abh¨ angigkeiten zwischen der Benutzung verschiedener Befehle zu messen. Weichen zu viele von den oben beschriebenen Test vom prognostizierten Verhalten ab, so vermuten wir, dass ein Eindringling vorhanden ist. Die Anomalien-Suche ist verwandt mit den oben angegebenen statistischen Test. Bei diesem Test werden basierend auf den Aktionsmustern der Benutzer aus der Vergangenheit Regeln u ¨ber das Verhalten in der Zukunft aufgestellt. Es zeigt sich jedoch, dass ein solches System bis zu 106 Regeln kennen muss, damit dieses System erfolgreich sein kann. Eindringling-Identifikation geht einen anderen Weg. Bei diesem System stellen Experten Regeln auf, mit denen das Verhalten von Eindringlingen beschrieben werden kann. Eine weitaus schwierigere Aufgabe erwartet uns, wenn wir einen Angreifer auf einem verteilten System suchen. Auf einem solchen System kann der Angreifer seine Aktionen verteilt auf parallel laufenden Computern ausf¨ uhren.
64
7
Lo ¨sungen
Die folgenden L¨ osungen wurden von H¨ orern der Vorlesung erstellt: Aufgabe 1: • “ ⇒: ” Sei w = c1 ...cm . Aus der Definition folgt, dass sich die Komponenten aus w eindeutig bestimmen lassen. Somit hat w eine eindeutige Darstellung w = c001 ...c00` . Es gilt daher c001 = c1 = c01 , c002 = c2 = c02
und
l=m=k .
• “ ⇐: ” Sei C nicht eindeutig decodierbar, dann existiert ein x ∈ Σ∗ mit 2 verschiedenen Darstellungen, d.h. x = c1 ...cm = c01 ...c0k und ci 6= c0i f¨ ur ein i ≤ min{m, k} . Somit ist die rechte ¨ Seite der Aquivalenz c1 . . . cm = c01 . . . c0k
m = k und ∀i ∈ {1, . . . , m} : ci = c0i .
⇐⇒
nicht erf¨ ullt. Vorgehensweise: Die ⇒ –Richtung folgt direkt aus der Definition. F¨ ur die ⇐ –Richtung wurde die Negation der Voraussetzung “ C ist eindeutig decodierbar” angenommen und u ¨ber die darausfolgende Existenz zweier unterschiedlicher Darstellungen der gleichen Zeichenkette ein Widerspruch zur zweiten Aussage des Fakts hergeleitet. Aufgabe 2: Zun¨ achst u ufen wir die Kraft’sche Ungleichung f¨ ur C4 und C5 : ¨berpr¨ • C4 :
1 1 1 1 1 + +4· + =1+ >1 2 4 16 32 32
• C5 :
1 1 1 1 1 + + + = ≤1 4 8 16 16 2
Somit ist C4 nicht sofort decodierbar. Bei C5 versagt dieser Ansatz. F¨ ur C5 suchen wir daher nach einem Gegenbeispiel, z.B. 1011 | 10 vs. 10 | 1110 Aufgabe 3: Wir analysieren die Ungleichung von Kraft:
⇐⇒ =⇒
P`
1 i=1 r ni
= 1
| ·rnl
rn` −ni
= 1
| modr
) mod r) mod r
= 0
P`
i=1
(
P`
i=1 (r
n` −ni
65
F¨ ur n` > ni gilt (rn` −ni ) mod r = 0 und f¨ ur n` = ni erhalten wir rn` −ni mod r = r0 mod r = 1 . Sei nun α die Anzahl der Codew¨ orter maximaler L¨ ange, dann gilt (
` X
(rn` −ni ) mod r) mod r = α mod r .
i=1
Die Summe kann Modulo r nur dann 0 sein, wenn α ein Vielfaches von r ist. F¨ ur r ≥ 2 muss es daher zumindest zwei Codew¨ orter maximaler L¨ ange geben. Aufgabe 4: Die erwartete Codewortl¨ ange ist AveLen(C, f ) = 2, 32 . Ein Code ist maximal, wenn in der Ungleichung von Kraft die Gleichheit gilt: 1 1 1 1 = 2 + 3 +···+ 4 = 1 |g(si )| 2 2 2 r ∈Γ
X
si
Somit ist der angegebene Code maximal. Aufgabe 5: Wir zeigen zun¨ achst, dass es ausreicht, die Summe der Codewortl¨ angen zu betrachten. Aus der Definition der erwarteten Codewortl¨ ange folgt:
X
si ∈Γ
X 1 · |f (si )| |r| si ∈Γ 1 X = · |f (si )| |r|
p(si ) · |f (si )| =
(1)
si ∈Γ
Es reicht also, die Summe aller Codewortl¨ angen zu minimieren. Daher konstruieren wir ein Codierungsschema f , welches alle Codew¨ orter aufz¨ ahlt:
f (Γ) =
k [
i=1
Σi ∪ H ,
wobei H Codew¨ orter der L¨ ange k + 1 beinhaltet. Die Anzahl der Codew¨ orter mit 1 bis k Zeichen ist ( -1, da kein Wort der L¨ ange 0 existiert)
−1 +
k X i=0
ri = −1 +
rk+1 − 1 . r−1
Wir w¨ ahlen k maximal, so dass
−1 +
rk+1 − 1 < |Γ| . r−1 66
Da wir |Γ| Codew¨ orter generieren, fehlen eventuell einige Codew¨ orter der L¨ ange k + 1 , daher gilt |H| = |Γ| −
rk+1 − 1 −1 r−1
H ⊂ Σk+1 .
und
Behauptung: Die Summe der Codewortl¨ angen des mit Schema f erzeugten Codes ist minimal.
Beweis: Indirekt. Angenommen, es existiert ein Code C 0 , der einem anderen Codierungsschema g folgt und f¨ ur den AveLen(C 0 , g) ≤ AveLen(C, f ) ist, dann gilt wegen |C| = |C 0 | : Die Anzahl der Codew¨ urter c0 ∈ C mit |c0 | ≥ k + 1 ist kleiner oder gleich der Anzahl der 00 0 Codew¨ orter c ∈ C mit |c00 | ≥ k + 1 . Wir erzeugen nun den Code C 0 aus C , in dem wir von dem Code C0 = C starten und sukzessive W¨ orter entfernen, um diese durch andere zu ersetzen. Es existiert hierbei eine Sequenz von Codes: C0 → C 1 → · · · → C 0 In jedem Schritt erlauben wir ein Codewort nur durch eines zu ersetzen, welches mindestens die gleiche L¨ ange hat: ∃ci ∈ Ci \C 0 c0i ∈ C 0 \Ci mit |ci | ≤ |c0i | und Ci+1 = Ci \{ci } ∪ {c0i } Die Summe der L¨ angen ist somit monoton steigend in i . Es gilt: Entweder haben C und C 0 die gleiche Struktur, d.h. f¨ ur jede L¨ ange ` ist die Anzahl der Codew¨ orter der L¨ ange ` gleich, oder es muss ein kurzes Codewort in C geben, das durch ein l¨ angeres in C 0 ersetzt wird. ¨ Somit hat C 0 unsere oben angegebene Struktur, oder es existiert ein Ubergang Ci → Ci+1 mit X X |c| . |c| < c∈Ci+1
c∈Ci
Aufgrund der Monotonie der Summen in i gilt Annahme, dass C 0 minimal ist.
P
c∈C
|c| <
P
c∈C 0
|c| . Das ist ein Widerspruch zur
Aufgabe 6: Idee: Verwende einen Code, bei dem m¨ oglichst alle Codew¨ orter die gleiche L¨ ange haben. Da das nicht immer m¨ oglich ist, m¨ ussen eventuell einige Codew¨ orter mit gr¨ oßerer L¨ ange hinzugenommen werden. Wir verwenden daher zwei Teilcodes Hk und Hk+1 mit Hk ⊆ Σ k
und 67
Hk+1 ⊆ Σk+1 .
0
0
1
0
1
1
Codewort
0
1 0
1 0
1
0
1
Abbildung 2: Code f¨ ur |Γ| = 5 F¨ ur eine gegebene Quelle w¨ ahlen wir k und l ≤ rk , so dass r · l + rk − l ≥ |Γ| ≥ rk − l + r(l − 1) + 2 gilt. Sei k minimal, so dass |Γ| ≤ r k+1 ist, dann ist l aus der obigen Ungleichung eindeutig bestimmt. Im Beispiel ist r = 2 , k = 2 , l = 1 . Behauptung: Der so erzeugte Code ist minimal. Beweis: Angenommen es existiert ein Code C 0 mit einer k¨ urzeren durchschnittlichen Codewortl¨ ange. Wie schon in Aufgabe 2 erzeugen wir diesen Code aus unserem Code durch schrittweises Ersetzen einzelner W¨ orter. Dabei erfolgt der Umbau nach den folgenden Vorschriften: 1. Wir d¨ urfen Knoten auf dem gleichem Level beliebig hin- und herschieben. Somit k¨ onnen wir das (k + 1) -te Level des Startbaums dem des Zielbaums anpassen. Diese Schritte werden zuerst ausgef¨ uhrt. 2. Wenn ein Quellensymbol auf den Vaterknoten des Codeworts verschoben wird, dann m¨ ussen die Geschwister auf ein tieferes Level wandern. Schon bei Schritt 1 kann sich die durchschnittliche Codewortl¨ ange ¨ andern, wenn nicht alle Geschwisterknoten gleichzeitig verschoben werden. In diesem Fall muss ein Quellensymbol vom Level k + 1 und zus¨ atzlich das Symbol des neuen Vaterknotens vom Level k auf das Level k + 1 wandern. M¨ ussen wir Schritt 2 mindestens einmal ausf¨ uhren, so steigt die erwartete Codewortl¨ ange ebenfalls. Folglich kann der Code C 0 nicht minimal sein. Das ist ein Widerspruch zur Annahme und somit ist unser Code minimal. Aufgabe 7: Der bin¨ are Huffman-Baum entartet zu einer Liste. Eine von zwei m¨ oglichen Codierungen ist: s0
= 0
s1 s2
= 10 = 110
s3 s4
= 1110 = 11110
s5
= 111110
68
s6
= 1111110
s7 s8
= 11111110 = 111111110
s10 s9
= 1111111110 = 1111111111
Aufgabe 8: Es bezeichne Γ das Quellen- und Σ das Codealphabet. Nach Aufgabenstellung gilt ∀si ∈ Γ : P (si ) = |Γ|−1 . F¨ ur r, m ∈ N sei nun |Σ| = r und |Γ| = m . Das Quellenalphabet Γ wird so um ` < r Zeichen si mit P (si ) = 0 erweitert, dass gilt: ∃n ∈ N : |Γ| = |Σ| + n · (|Σ| − 1) = r + n · (r − 1) . Phase 0: 1 • Zun¨ achst werden die ` Symbole si mit pi = 0 und r − ` Symbole sj mit pj = m zu einem 1 neuen Baum verbunden. Der Wurzelknoten (WK) dieses Baumes besitzt den Wert p = ` · m 1 • Es werden jeweils r Symbole sk mit p = m zu neuen B¨ aumen verbunden. Die WK der r entstehenden B¨ aume besitzen den Wert p = m . Es verbleiben h0 ≤ r − 1 unverbundene Symbole.
Phase 1: ` • Es entsteht ein Baum durch das Verbinden des Knotens mit Wert p = m mit den h0 unverr . bundenen Symbole der Phase 0 und weiteren r − h0 − 1 Teilb¨ aumen mit dem Wert p = m r 1 Wert des neuen WK ist p = (` + h0 ) · m + (r − h0 − 1) m . Die Blatttiefe dieses Baumes ist 1 2 r bzw. 2. F¨ ur diesen Wert p gilt m ≤ p < rm . r • Durch Verbinden von jeweils r Knoten mit Wert p = m entstehen neue B¨ aume, deren WK r2 den Wert p = m besitzen. Die Blatttiefe der B¨ aume ist 2.
• Es verbleiben 0 ≤ h1 < r Knoten, die nicht verbunden werden. Existieren diese, so ist ihre r Blatttiefe 1 und ihr Wert p = m Phase 2: 1 r • Durch das Verbinden des Knotens mit Wert (` + h0 ) · m + (r − 1) m mit den h1 in der Phase 1 2 nicht weiterverbundenen Knoten und weiteren r − h1 − 1 Teilb¨ aumen mit dem Wert p = rm . 2 1 r Wert des neuen WK ist (` + h0 ) · m + (r + h1 − h0 − 1) m + (r − h1 − 1) rm . Die Blatttiefe dieses 2 3 Baumes ist 2 bzw. 3. F¨ ur den Wert p des WK gilt: rm ≤ p < rm . 2
aume, deren Blatttiefe • Es werden wieder je r Knoten mit Werten rm verbunden. Es entstehen B¨ r3 3 betr¨ agt. Der Wert ihrer WK betr¨ agt p = m . • Es verbleiben h2 ≤ r − 1 Knoten mit Blatttiefe 2. Wert der WK ist p =
69
r2 m
.
Dieses Verfahren wird bei der Konstruktion des Huffman-Baums fortgesetzt, bis ein Baum u ¨brig bleibt. F¨ ur den Beweis werden folgende Invarianten formuliert: In Phase i existieren (i) maximal ein Baum mit Bl¨ attern der Tiefe i und i + 1 . Der WK dieses Baumes besitzt einen r i+1 ri Wert p mit m ≤ p < m (ii) maximal r − 1 B¨ aume, deren Bl¨ atter die Tiefe i besitzen. Wert der WK: p = (iii) alle anderen B¨ aume haben eine Blatttiefe von i + 1 . Der Wert der WK ist p =
ri m
.
r i+1 m
.
Die G¨ ultigkeit dieser Invarianten wird per Induktion bewiesen: Behauptung: Diese Invarianten besitzen G¨ ultigkeit nach jeder Phase der Huffman-Codierung. Beweis: IA: Alle Invarianten sind nach dem ersten Schritt erf¨ ullt. IV: ∃i ∈ N : Behauptung gilt nach i Schritten. IS: i Schritte → i + 1 Schritte • Zun¨ achst werden alle hi+1 B¨ aume, die die Bedingung (ii) gen¨ ugen, verbunden ( k < r ). Der eventuell vorhandene Baum, der die Bedingung (i) erf¨ ullt, wird ebenfalls mit diesen verbunden. Schließlich werden diese noch um r − hi+1 bzw. r − (hi+1 + 1) Teilb¨ aume erg¨ anzt. Es ensteht ein neuer Baum, dessen Blatttiefe i + 1 und i + 2 betr¨ agt. F¨ ur den Wert p des neuen WK gilt: ri+2 ri+1 ≤p< . m m i
r Die Schranke folgt aus der Beobachtung, dass jeder Teilbaum einen Wert von mindestens m und i+1 r ur die obere Schranke m¨ ussen wir zudem noch zeigen, dass zumindest maximal m besitzt. F¨ ein Baum existiert, der die Bedingung (i) oder (ii) erf¨ ullt.
• Durch Verbinden der B¨ aume, die die Bedingung (iii) erf¨ ullen, entstehen neue B¨ aume, deren i+2 Blatttiefe i + 2 betr¨ agt. Der Wert der WK ist p = r m . • Es verbleiben 0 ≤ hi+1 < r B¨ aume, deren Blatttiefe i + 1 betr¨ agt und deren Werte der WK r i+1 p = m ist. Damit sind alle Invarianten erf¨ ullt und die Behauptung bewiesen. Die Tiefe d des Huffmanbaumes l¨ asst sich nun leicht mit den Invarianten (i) und (iii) bestimmen: logr (m) − 1 ≤ d ≤ logr (m) Damit sind auch die Codewortl¨ angen in Abh¨ angigkeit von |Σ| = r bestimmt und es ist bewiesen, dass die Codew¨ orter einer solchen Huffman-Codierung h¨ ochstens zwei unterschiedliche L¨ angen besitzen. Aufgabe 9: Die wesentliche Aufgabe besteht darin, P (s0 ) so zu maximieren, dass der Huffman-Baum zu einer langen Kette entartet. 70
Fakt: Die maximale Baumtiefe f¨ ur einen Hufmann-Baum ist d =
q−r r−1
.
Wir betrachten zun¨ achst eine beliebige Quelle Q , welche einen solchen Baum zur Folge hat. Diese Quelle soll schrittweise so modifiziert werden, dass die Wahrscheinlichkeit P (s0 ) maximiert wird, jedoch der Hufmann-Baum und die Bedingung P (s0 ) ≤ P (s1 ) ≤ . . . ≤ P (sq ) beibehalten werden. Gilt f¨ ur die Quelle Q • P P (s0 ) < P (sr−1 ) < P (sr ) , so k¨ onnen wir eine Quelle Q0 mit P 0 (s0 ) = . . . = P 0 (sr−1 ) = r−1 i=0
P (si ) r
aus Q generieren, so dass beide Quellen die gleichen Huffman-B¨ aume generieren.
• P P (s0 ) < P (s2r−2 ) < P (s2r−1 ) , so k¨ onnen wir eine Quelle Q0 mit P 0 (s0 ) = . . . = P 0 (s2r−2 ) = 2r−2 i=0
P (si ) 2r
aus Q generieren, so dass beide Quellen immer Huffman-B¨ aume der gleichen Tiefe
generieren. • Gilt f¨ ur Q jedoch P (s0 ) = P (s2r−1 ) oder allgemeiner r · P (s0 ) > P (s2r−1 ) , so werden bei der Generierung des Huffman-Baums die Symbole sr−1 , ·, s2r−1 zusammengefasst. Der Baum hat somit keine maximale Tiefe mehr. Bei r · P (s0 ) = P (s2r−1 ) wird dieses zwar nicht erzwungen, ist jedoch auch nicht ausgeschlossen. Es gen¨ ugt, den Wert P (s2r−1 ) um ein 0 > 0 zu erh¨ ohen, d.h. P (s2r−1 ) + 0 P (s0 ) = ... = P (s2r−2 ) = , 0 > 0 . r F¨ ur den ersten Knoten im Huffman-Baum ergibt sich der Wert w0 = r · P (s0 ) . F¨ ur den n¨ achsten Knoten, der sr bis s2r−2 mit dem ersten Baum verbindet, ergibt sich so der Wert w1 = (2r − 1) · P (s0 ) . Analog zu unserer obigen Beobachtung k¨ onnen wir wieder den Wert von P (s0 ) maximieren, wenn P (s2r−1 ) = . . . = P (s3r−3 ) = w0 + 0 ist. Um das zusammenfassen von den r Symbolen s2r−1 , . . . , s3r−2 zu einem eigenen Unterbaum zu verhindern, m¨ ussen wir auch hierbei wieder ein 1 > 0 finden, so dass P (s3r−2 ) = w1 + 1 ist. Beim Maximieren der Wahrscheinlichkeiten erhalten wir P (s3r−2 ) = . . . = P (s4r−4 ) = w1 +1 . Da die i beliebig klein gew¨ ahlt werden k¨ onnen, betrachten wir den Fall, dass i → 0 , f¨ ur alle i ∈ {0, 1, ..., d} . Noch einmal u ¨bersichtlich: Die maximalen Werte der internen Knoten des Huffman-Baums ergeben sich wie folgt: • w0 = r · P (s0 ) • w1 = (2r − 1) · P (s0 ) • w2 = (2r − 1) · P (s0 ) + (r − 1) · r · P (s0 ) • w3 = (2r − 1) · P (s0 ) + (r − 1) · r · P (s0 ) + (r − 1) · (2r − 1) · P (s0 ) • ... • wi = wi−1 + (r − 1) · wi−2 f¨ ur i ∈ {0, 1, ..., l}, i ≥ 2 Durch Ausklammern von P (s0 ) aus den Werten wi entsteht der Wert hi mit wi = hi · P (s0 ) . Es gilt: ! q−1 d−3 d−3 X X X 1 = P (sj ) = (2r − 1) · P (s0 ) + (r − 1) · wi = P (s0 ) · 2r − 1 + (r − 1) · hi j=0
i=0
i=0
71
und somit P (s0 ) =
1 P d−3 2r−1+(r−1)· i=0 hi
. Somit ist eine scharfe obere Schranke f¨ ur P (s0 ) gefun-
den. Man beachte, dass diese Schranke einen Baum maximaler Tiefe erm¨ oglicht, jedoch nicht erzwingt. Maximale Baumtiefe, bzw. eine maximale Codewortl¨ ange wird erzwungen, wenn wir P (s0 ) = 1 P − w¨ ahlen, und die entsprechenden werden von P (sir−i+1 ) f¨ ur i > 2 entsprechend 2r−1+(r−1)· d−3 h erh¨ ohen.
i=0
i
Aufgabe 10: Die Entropie einer Quelle ist definiert durch H(Q) =
X
si ∈Γ
pi · log2 pi .
Sei α := Anzahl von
2 a
β := Anzahl von
1 a
,
dann erhalten wir H(Q) = = = = =
2 2 1 1 −α −β · log2 · log2 a a a a 1 2 · (log2 2 − log2 a) − β · (log2 1 − log2 a) −α a a 1 2 · (1 − log2 a) − β · log2 a −α a a 2α 2α · log2 a β · log2 a − + + a a a 2α log2 a (2α + β) − . a a
Da { a1 , a1 , . . . , a2 , a2 } eine Wahrscheinlichkeitsverteilung ist, gilt α·
2 1 +β· a a
= 1
und somit
Folglich gilt: H(Q) = log 2 a −
2α + β = a . 2α a
Aufgabe 11: Wir ersetzen p durch (1 − p) : H(1 − p) = −(1 − p) · log (1 − p) − (1 − (1 − p))log (1 − (1 − p)) = −(1 − p) · log (1 − p) − p · log p = H(p)
Damit gilt ∀ε : 0 ≤ ε ≤
1 2
H(ε) = H(1 − ε) 72
Aufgabe 12: Wir untersuchen die Entropie der Wahrscheinlichkeitsverteilung P 0 = {p1 − ε, p2 + ε, . . . , pn } . Nach Lemma 2 gilt: n n X X H(P 0 ) = − p0 i · log p0 i ≤ − p0 i · log pi i=1
i=1
Da ε > 0 ist, gilt sogar folgende Ungleichung: H(P 0 ) = −
n X i=1
p0 i · log p0 i < −
n X i=1
p0 i · log pi
⇔ −(p1 − ε) · log (p1 − ε) − (p2 + ε) · log (p2 + ε) −
n X i=3
< −(p1 − ε) · log (p1 ) − (p2 + ε) · log p2 − ⇔ −(p1 − ε) · log (p1 − ε) − (p2 + ε) · log (p2 + ε)
pi · log pi
n X i=3
pi · log pi
< −(p1 − ε) · log p1 − (p2 + ε) · log p2 < −p1 · log p1 − p2 · log p2 + |{z} ε (log p1 − log p2 ) | {z } >0
<0, da p1
< −p1 · log p1 − p2 · log p2 Wir erhalten somit:
−(p1 − ε) · log (p1 − ε) − (p2 + ε) · log (p2 + ε) < −p1 · log p1 − p2 · log p2 n X ⇔ −(p1 − ε) · log (p1 − ε) − (p2 + ε) · log (p2 + ε) − pi · log pi i=3
< −p1 · log p1 − p2 · log p2 − ⇔ H(P 0 ) < H(P )
n X i=3
pi · log pi
Aufgabe 13: F¨ ur die Codewortl¨ angen li eines Shannon-Fano Codierungsschema gilt: 1 1 ≤ P (si ) < li −1 . 3 li 3 Wir erhalten die folgenden Codewortl¨ angen 1 2 3 4 5 6 7 8 i P (si ) 1/2 1/4 1/8 1/16 1/32 1/64 1/128 1/128 li 1 2 2 3 4 4 5 5 und ein Shannon-Fano Codierungsschema mit folgenden Codew¨ ortern:
73
◦@ @@@2 @@ 1 @ 0 • ◦ • o oo o o 1 ooo ooo 0 1 0 o o • wo ◦ • ◦ 1 1 0 • ◦ ◦ 1 1 0 0 • ◦ • ◦ 0
li 1 2 2 3 4 4 5 5
0
•
→ ci 0 10 20 110 1110 2110 11110 21110
•
Aufgabe 14: Sei Q = ({s0 , s1 , s2 }, P ) eine Quelle mit P (s0 ) = H(Q) = −
2 X i=0
1 2
, P (s1 ) = P (s2 ) =
1 4
. Dann gilt
1 1 3 1 log 2 + log2 4 + log2 4 = 2 2 4 4 2
P (si ) · logP (si ) =
Ein entsprechendes Codierungsschema (C, f ) erhalten wir mit C = {0, 10, 11} und 0 i=0 f (si ) = 10 i = 1 11 i = 2 .
Es gilt:
AveLen(C, f ) =
2 X i=0
P (si ) · |f (si )| =
1 1 1 3 · 1 + · 2 + · 2 = = H(Q) 2 4 4 2
Aufgabe 15: Zur Definition einer sinnvollen Decodierung: Ist die Wahrscheinlichkeit f¨ ur eine korrekte Decodierung kleiner als die f¨ ur eine inkorrekte Decodierung bei mindestens einem Signal, dann ist der Code nicht sinnvoll und eine sinnvolle Decodierung nicht m¨ oglich. X X P ( ai empfangen | ai gesendet) P (Erfolg bei ai ) = P (Erfolg) = ai
ai
P (Fehler) =
X ai
P (Fehler bei ai ) =
X
ai ,aj mit ai 6=aj
74
P ( aj empfangen | ai gesendet)
Zu zeigen ist P (Erfolg) ≤ P (Fehler) . Es gilt P (Erfolg bei ai )
=
P (ai gesendet | ai empfangen)
=
P (ai gesendet ∧ ai empfangen) P (ai empfangen)
=
P (ai empfangen | ai gesendet) · P (ai gesendet) P (ai empfangen) P (ai empfangen | ai gesendet) · P (ai gesendet) P P (ai empfangen ∧ aj gesendet)
=
aj
=
P (a empfangen | ai gesendet) · P (ai gesendet) P i P (ai empfangen | aj gesendet)P (aj gesendet) aj
(1)
=
P (ai empfangen | ai gesendet) · P (ai gesendet) P P (ai empfangen | ai gesendet) · P (aj gesendet) aj
(2)
=
P (ai gesendet)
unter der Verwendung von (1) der Gleichverteilung der Wahrscheinlichkeiten aus der Aufgabenstellung und mit P P ( aj gesendet) = 1 . (2) aj
Daraus folgt P (Fehler bei ai ) = 1 − P ( ai gesendet) . Es existiert somit ein Codewort ai mit P (Fehler bei ai ) ≥ P (Erfolg bei ai ) . Setzen wir eine Gleichverteilung aller ai als gesendetes Codewort voraus, so gilt f¨ ur alle ai : P (Fehler bei ai ) ≥ P (Erfolg bei ai ) . Aufgabe 16: Da f¨ ur die Berechnung des ME-Dekodierers, die Wahrscheinlichkeiten f¨ ur den ML-Dekodierer ben¨ otigt werden, ist es sinnvoll, zuerst den ML-Dekodierer zu betrachten. Dazu werden f¨ ur jedes m¨ ogliche empfangene Wort w ∈ Σ4 , Σ = {a, b, c} , und f¨ ur alle x ∈ Σ die Wahrscheinlichkeiten P rob[w empfangen|x4 gesendet] 2 10
berechnet. Aus der Crossover-Wahrscheinlichkeit P rob[w empfangen|x4 gesendet] =
folgt:
3 Y
P rob[wi empfangen|xi gesendet]
i=0
wobei k und l
k l 1 8 · = 10 10 = Anzahl aller Zeichen wi = xi
= Anzahl aller Zeichen wi 6= xi .
Jedem m¨ oglicherweise empfangenen Wort w ordnet man dasjenige Codewort zu, bei dem obige Wahrscheinlichkeit maximal wird. Daraus kann man folgende Regel f¨ ur den ML-Dekodierer ableiten: 75
W¨ahle das Codewort, dass zu dem am h¨aufigsten empfangenen Buchstaben passt. (Bei Gleichheit w¨ahle eine der beiden M¨oglichkeiten aus.) Aus der Vorlesung wissen wir, dass bei gleichverteilt gesendeten Codew¨ ortern die ME- und MLDekodierer ¨ aquivalent sind, daher gilt in diesem Fall die Regel auch f¨ ur den ME-Dekodierer. Die Sendewahrscheinlichkeiten Prob[x gesendet] , x ∈ {aaaa, bbbb, cccc} , gehen nur im nichtgleichverteilten Fall in die Berechnung ein. F¨ ur den ME-Dekodierer suchen wir diejenigen Dekodierungsregeln, f¨ ur die Prob[x gesendet|w empfangen] minimal wird. Dazu sind einige Umformungen n¨ otig: Prob[x gesendet|w empfangen] = Prob[xxxx gesendet|w0 w1 w2 w3 empfangen] Prob[w0 w1 w2 w3 empfangen|xxxx gesendet] · Prob[xxxx gesendet] = P z∈Σ Prob[w0 w1 w2 w3 empfangen|zzzz gesendet] · Prob[zzzz gesendet] Q3 ( i=0 Prob[wi empfangen|x gesendet]) · Prob[x gesendet] = P Q3 z∈{a,b,c} i=0 Prob[wi empfangen|z gesendet] · Prob[z gesendet]
Daraus ergibt sich eine Tabelle mit 34 = 81 Zeilen f¨ ur jede m¨ ogliche empfangene Zeichenfolge und 3 Spalten f¨ ur die jeweilige Wahrscheinlichkeit, dass aaaa , bbbb oder cccc gesendet wurden. Als Dekodierregel wird jeweils der Eintrag mit der h¨ ochsten Wahrscheinlichkeit einer Zeile gew¨ ahlt. Aufgabe 17: Sei q = 0, 99 , p = 0, 008 und bezeichne f = 1 − p − q = 0, 002 die Flipwahrscheinlichkeit. Die Dekodierregeln ergeben sich durch Berechnung der Wahrscheinlichkeiten Prob[x gesendet|y empfangen] , wobei x ∈ {000, 001, 111} und y ∈ {0, 1, ?}3 ist. gesendet → empf. ↓ 000 001 00? 010 011 01? .. .
000
001
111
max
q3 q2f q2p q2f qf 2 qf p .. .
q2 f q3 q2p qf 2 q2 f qf p .. .
f3 f3 f 2p qf 2 q2f qf p .. .
q3 q3 q2 p q2 f q2 f qf p .. .
m¨ ogliche Dekodierregeln 000 001 000/001 000 001/111 000/001/111 .. .
Aufgabe 18: Werden die drei Kan¨ ale sequentiell durchlaufen, ergibt sich ein gerichteter Graph mit 3 Startknoten und 3 Endknoten. Um die Wahrscheinlichkeiten f¨ ur die Ermittlung einer Dekodierregeln zu berechnen ben¨ otigt man die Gesamtwahrscheinlichkeiten qˆ , pˆ und fˆ = 1 − qˆ − pˆ , mit qˆ = Prob[x ∈ Σ empfangen|x gesendet] und pˆ = P r[? empfangen|x gesendet] . ¨ Um qˆ , pˆ und fˆ zu berechnen betrachtet man alle m¨ oglichen Ubertragungspfade in dem Graphen (siehe Abbildung 3). F¨ ur jeden Weg werden die Wahrscheinlichkeiten multipliziert, die Gesamtwahrscheinlichkeiten aller Wege mit gleichem Start- und Endpunkt werden addiert. So ergeben sich: qˆ = q 3 + 3qf 2 fˆ = f 3 + 3q 2 f pˆ = p + pq + pf + pq 2 + pf 2 + 2pqf Mit Hilfe dieser Wahrscheinlichkeiten kann man analog zu Aufgabe 2 die Dekodierregeln ermitteln. 76
a
a
a
q
a
f = 1-p-q b
b
b
b
?
?
?
?
p 1
Abbildung 3: Sequentieller Kanal mit Wahrscheinlichkeiten
Einen ¨ ahnlichen Graphen kann man f¨ ur den parallelen Fall erstellen (siehe Abbildung 4). Um die Wahrscheinlichkeiten zu bestimmen m¨ ussen wir bei unterschiedlichen Ausgaben eine Mehrheitsentscheidung einf¨ uhren. Es ergeben sich die Wahrscheinlichkeiten qˆ = q 3 + 3q 2 f + 3q 2 p fˆ = f 3 + 3f 2 q + 3f 2 p pˆ = p3 + 3p2 q + 3p2 f + 6pqf, aus denen man wie in Aufgabe 2 die Dekodierregeln berechnen kann.
a
a
b
b
?
?
a
a
q f = 1-p-q
b
b
?
?
a
a
b
b
?
?
p 1
Abbildung 4: Paralleler Kanal mit Wahrscheinlichkeiten
77
Aufgabe 19: Der kleinste Abstand zwischen zwei Codew¨ ortern aus C = {11100, 01001, 10010, 00111} kann leicht nachgerechnet werden, indem man jedes Codewort mit jedem anderen vergleicht. In diesem Fall gibt es sechs M¨ oglichkeiten. Es ergibt sich d(C) = 3 . Die Benutzung der dichtesten Codewortdekodierregel ergibt: 10000 01100 00100
→ → →
10010 11100 11100 oder 00111.
Aufgabe 20: Gesucht sind die Parameter n, m, d von C , wobei n := |c| f¨ ur alle c ∈ C , m := |C| und d := d(C) . Da C ⊂ Zk2 , gilt n = k . Da der Code C aus Z2k−1 und einem zus¨ atzlichen Parit¨ atsbit erzeugt werden kann, gilt: m = 2k−1 . Durch jedes Flippen eines Bits wird die Anzahl der Einsen in einem Codewort genau um 1 ver¨ andert. Um auf diese Weise ein Wort mit gerader Anzahl Einsen in ein anderes mit gerader Anzahl Einsen zu verwandeln, ist also eine gerade Anzahl von Flips n¨ otig. Es gilt somit d(C) ≥ 2 . Da d(0k , 0k−2 11) = 2 k−1 ist, gilt d(C) = 2 . C ist somit ein (k, 2 , 2) -Code. Aufgabe 21: (a) Verwende z.B. C = {00000000, 00011111, 11111000} . (b) W¨ ahlt man zwei Codew¨ orter mit Abstand 5 aus, z.B. c1 = 0000000 und c2 = 0011111 , so existiert kein weiteres Wort c3 mit d(c1 , c3 ) ≥ 5 ∧ d(c2 , c3 ) ≥ 5 . Es gilt: d(c1 , c3 ) ≤ 7−d(c2, c3 )+2 . Falls d(c2 , c3 ) ≥ 5 , dann ist in jedem Fall d(c2 , c3 ) ≤ 4 . W¨ ahlt man zwei Codew¨ orter c1 und c2 mit Abstand 6, so gilt f¨ ur alle c3 ∈ Z72 : d(c1 , c3 ) ≤ 7−d(c2 , c3 )+1 . Ist d(c2 , c3 ) ≥ 5 , so erhalten wir d(c1 , c3 ) ≤ 3 . F¨ ur Codew¨ orter c1 und c2 mit Abstand 7 gilt: d(c1 , c3 ) ≤ 7 − d(c2 , c3 ) . W¨ ahlen wir ein Codewort c3 mit d(c2 , c3 ) ≥ 5 , so gilt d(c1 , c3 ) ≤ 2 . Aufgabe 22: Angenommen es existiert ein perfekter Code C dessen Distanz d(C) gerade ist. Dann existieren zwei Codew¨ orter c1 , c2 mit d(c1 , c2 ) = d(C) . Wir betrachten nun eine Partitionierung I1 , I2 ⊆ {1, ..., |c1 |} mit folgender Eigenschaft: i ∈ I1 i ∈ I2
⇐⇒ ⇐⇒
c1 [i] = c2 [i] c1 [i] 6= c2 [i]
¨ Andern wir weniger als d(C)/2 Bits im Codewort c1 , so wird resultierende Wort noch immer c1 zugeordnet, da sich das enstehende Wort noch in der Sph¨ are von c1 befindet, d.h. f¨ ur alle I 0 ⊆ I2 0 mit |I | < d(C)/2 und f¨ ur das Wort x mit c2 [i] f¨ ur i ∈ I 0 x[i] = c1 [i] f¨ ur i 6∈ I 0 78
gilt d(x, c1 ) <
min
c3 ∈C c3 6=c1
d(x, c3 ) und somit x ∈ Srn (c1 , pr(C))
¨ Andern wir genau d(C)/2 Bits in einem Codewort c1 – das funtioniert weil d(C) nach Voraussetzung gerade ist – ergibt sich folgende Situation: f¨ ur alle I 0 ⊆ I2 mit |I 0 | = d(C)/2 und f¨ ur das Wort x mit c2 [i] f¨ ur i ∈ I 0 x[i] = c1 [i] f¨ ur i 6∈ I 0 gilt d(x, c1 ) ≤
min
c3 ∈C c3 6=c1
d(x, c3 ) und x ∈ Srn (c1 , pr(C)) ⇔ x ∈ Srn (c2 , pr(C))
Da die Sph¨ aren zur Gew¨ ahrleistung der eindeutigen Dekodierbarkeit aber disjunkt sein m¨ ussen, folgt daraus: x∈ / Srn (c1 , pr(C)) und damit x ∈ / Widerspruch.
S
c∈C
Srn (c, pr(C)) also kann dieser Code nicht perfekt sein – ein
Aufgabe 23: (a) ⇒ (b):
⊆ ist eine Teileigenschaft von =
(b) ⇒ (a): Srn (c, pr(C)) ist eine Menge von Zeichenketten der L¨ ange n u aren Alphabet. ¨ber einem r-n¨ Somit ist Srn (c, pr(C)) eine Teilmenge von ΣnS . Die Vereinigung solcher Teilmengen ist auch eine Teilmenge von Σn . Es gibt keine Teilmenge in c∈C Srn (c, pr(C)) die außerhalb von Σn liegt. (a) ⇒ (c): Da die Mengen gleich sind, muss auch die Anzahl der Elemente in den Mengen gleich sein: [ [ Σn = Srn (c, pr(C)) ⇒ rn = Srn (c, pr(C)) c∈C
c∈C
weil die Sph¨ aren disjunkt sind gilt auch
rn = Σc∈C |Srn (c, pr(C))| weiter gilt, da die Sph¨ aren alle gleich groß sind rn = m · |Srn (c, pr(C))| = m · Vrn (pr(C)) und schliesslich gilt mit Theorem 16: n [ d−1 2 ] (r − 1)k . r = m · Σk=0 k n
(c) ⇒ (a): Wir suchen die Menge, die eine Teilmenge von Σn ist und deren M¨ achtigkeit rn ist. Es n gibt nur eine solche Menge, und das ist Σ selbst. Aufgabe 24: Die L¨ ange der Codew¨ orter in C3 ist nach Konstruktion 2n , weil jedes c ∈ C3 die Konkatenation eines der W¨ orter in C1 (L¨ ange n ) und der XOR-Verkn¨ upfung des Wortes aus C1 mit einem aus C2 ist (L¨ ange ebenfalls n ). Da c ∈ C1 ( m1 St¨ uck) mit einem modifizierten Codewort c0 ∈ C2 ( m2 St¨ uck) konkateniert wird, ist die Anzahl m der Codew¨ orter in C3 gleich m1 · m2 . 79
Zu zeigen bleibt d = min{2d1 , d2 } : Angenommen f¨ ur ein Paar c1 , c2 ∈ C3 = C1 ⊗ C2 gilt d(c1 , c2 ) < min{2d1 , d2 } . Aus der Konstruktion von C3 folgt c1 = w1 ◦ (w1 ⊗ w2 )
und
c2 = y1 ◦ (y1 ⊗ y2 ) .
Wir unterscheiden die folgenden F¨ alle: 1. w1 = y1 ⇒ d(c1 , c2 ) = d(w2 , y2 ) ≥ d2 ⇒ Widerspruch zur Annahme 2. w2 = y2 ⇒ d(c1 , c2 ) = 2 · d(w1 , y1 ) ≥ 2d1 ⇒ Widerspruch zur Annahme 3. w1 6= y1 und w2 6= y2 ⇒ d(c1 , c2 ) = d(w1 , y1 ) + d(w1 ⊗ w2 , y1 ⊗ y2 ) ≥ d1 + d(w1 ⊗ w2 , y1 ⊗ y2 ) Definiere folgende Indexmengen: I1 := {i|w1i 6= y1i } und I2 := {i|w2i 6= y2i } d(w1 ⊗ w2 , y1 ⊗ y2 ) = |I1 \ I2 | + |I2 \ I1 |
= |(I1 ∪ I2 )| \ |(I1 ∩ I2 )| ≥ d1 + d2 − d1 = d2 ⇒ Widerspruch zur Annahme
Aufgabe 25: 1. A2 (4, 3) = A2 (4, 4) = 2 Sei C ein (4, m, 3) -Code. Wie wir oben gesehen haben, k¨ onnen wir o.B.d.A. davon ausgehen, dass 0000 ∈ C ist. Betrachten wir nun alle Zeichenketten in Z42 , so erkennen wir, dass f¨ ur alle Paar u, v ∈ Z42 mit d(0000, u), d(0000, v) ≥ 3 gilt d(u, v) ≤ 2 . Somit gilt A2 (4, 3) = A2 (4, 4) = 2. 2. A2 (5, 3) = 4 Sei C ein (5, m, 3) -Code und C0 , C1 die Codes die wir mit Hilfe der Cross-Section und x1 = 0 bzw. x1 = 1 erhalten. Da diese Codes (4, m0 , 3) -Codes bzw. (4, m1 , 3) -Codes sind, k¨ onnen wir das den ersten Teil dieser Aufgabe anwenden und erhalten m0 , m1 ≤ 2 . Somit gilt m = m0 + m1 ≤ 4 . Da C = {00000, 11100, 00111, 11011} ein (5, 4, 3) -Code ist, gilt A 2 (5, 3) = 4 . Aufgabe 26: 1. Widerspruch zu Aufgabe 25.1. 2. Sei C ein (n, m, d)) -Code. C1 , . . . , Cr seien die (n−1, m, d) -Codes, die sich durch Crossections an der ersten Stelle ergeben. Pr Da Ci in (n − 1, m, d) -Code ist, gilt |Ci | ≤ Ar (n − 1, d) somit gilt i=1 |Ci | ≤ r · Ar (n − 1, d) . Da dieses fr alle beliebigen Codes C gilt, folgt Ar (n, d) ≤ Ar (n − 1, d) . 3. Da C eine Teilmenge von Σn ist, gilt |C| ≤ rn . 4. Sei C = Σn . Σn hat die Parameter (n, r n , 1) ferner gilt aufgrund der letzten Teilaufgabe |C| ≤ rn .
80
Aufgabe 32: Wir betrachten zun¨ achst eine Generatormatrix von R(4) u ¨ber Z2 : 0 0 R4 = 0 0 1
0 0 0 1 1
0 0 1 0 1
0 0 1 1 1
0 1 0 0 1
0 1 0 1 1
0 1 1 0 1
0 1 1 1 1
1 0 0 0 1
1 0 0 1 1
1 0 1 0 1
1 0 1 1 1
1 1 0 0 1
1 1 0 1 1
1 1 1 0 1
1 1 1 1 1
Es seien nun r1 , ..., r5 die Zeilenvektoren von R4 . Ein Codewort c kann dargestellt werden als c = α1 · r1 + ... + α5 · r5 , αi ∈ Z2 . In unserem Fall ist c = 1100011000110001 , das es zu decodieren gilt. Wir sind also an den αi , i ∈ {1, ..., 5} interessiert. Wir erhalten α1 , ..., α4 durch Bestimmung der Decodierungspaare und durch Mehrheitsentscheidung. αi α1 α2 α3 α4
Decodierungspaare (1,9) (2,10) (3,11) 1 1 1 (1,5) (2,6) (3,7) 1 0 1 (1,3) (2,4) (5,7) 1 1 1 (1,2) (3,4) (5,6) 0 0 1
Wert f¨ ur αi (4,12) 1 (4,8) 0 (6,8) 1 (7,8) 1
(5,13) 0 (9,13) 0 (9,11) 1 (9,10) 0
(6,14) 1 (10,14) 0 (10,12) 1 (11,12) 0
(7,15) 1 (11,15) 1 (13,15) 0 (13,14) 0
(8,16) 1 (12,16) 0 (14,16) 1 (15,16) 1
⇒ α1 = 1 ⇒ α2 = 0 ⇒ α3 = 1 ⇒ α4 = 0
Tabelle 1: Decodierungspaare und Werte f¨ ur αi , bestimmt durch Mehrheitsentscheidung Es verbleibt die Bestimmung von α5 , f¨ ur die es zwei M¨ oglichleiten gibt. Setzen wir α5 = 0 , so erhalten wir als decodiertes Wort w = 10100 . Multiplizieren wir w an die Generatormatrix, so ergibt sich w · R4 = 0011001111001100 = c0 . Ein Vergleich zwischen den Codeworten c und c0 zeigt, dass sie sich nur an drei Stellen gleichen. Die Multiplikation f¨ ur α5 = 1 ¨ (also w = 10101 ) ergibt das Coderwort c00 = 1100110000110011 und Ubereinstimmungen in allen bis auf drei Stellen mit c . Das gesuchte Wort w ist also w = 10101 . Aufgabe 33:
Zu beweisen ist, dass der Reed-Muller-Code nicht zyklisch ist. Behauptung: Der RM-Code ist zyklisch. Beweis: Wir betrachten R(3) . Es gilt
: zykl.
=⇒ lin.
=⇒ =⇒
RM −Dec.
00001111 ∈ C 10000111 ∈ C
10001000 ∈ C 10001000 6∈ C Widerspruch!
Wir haben einen Widerspruch konstruiert und folgern: Der Reed-Muller-Code ist nicht zyklisch. Aufgabe 34:
81
Wir wollen beweisen, dass das Polynom mit minimalem Grad in C eindeutig ist. Behauptung: Es existieren mindestens zwei linear unabh¨ angige Polynome mit minimalem Grad. Beweis: Es seien c1 , c2 ∈ C zwei linear unabh¨ angige Polynome mit minimalem Grad und k der Grad von c1 , c2 . Sei nun weiter l1 der Koeffizient von xk in c1 und l2 der Koeffizient von xk in c2 . Aus der Linearit¨ at von C folgt c3 = l2 · c1 − l1 · c2 ∈ C . Entweder ist c3 das Nullpolynom, oder aber vom Grad kleiner k . Dies ist ein Widerspruch zur Annahme, dass c1 , c2 linear unabh¨ angige Polynome mit minimalem Grad sind. Wir folgern: Das Polynom mit minimalem Grad ist (bis auf Multiplikation mit einer Konstante) eindeutig.
82
Literatur [D¨ umb02]
L. D¨ umbgen, Skriptum zu den Vorlesungen Stochastik II-III, Med. Universit¨ at zu L¨ ubeck, 2002.
[Gall68]
R. G. Gallagher, Information Theory and Reliable Communication, Wiley and Sons, 1968.
[HeQu95]
W. Heise, P. Quattrocchi, Informations- und Codierungstheorie, Springer, 1995.
[Hung03]
T. W. Hungerford, Algebra, Springer, 2003.
[Jako00]
A. Jakoby, Skriptum zu den Vorlesungen Abstrakte Datenstrukturen, Med. Universit¨ at zu L¨ ubeck, 2000.
[Jung95]
D. Jungnickel, Codierungstheorie, Spektrum, 1995.
[Plan97]
J. S. Plank, A Tutorial on Reed-Solomon Coding for Fault-Tolerance in RAID-like Systems, Software-Practice and Experience, vol. 27(9), 1997, 995-1012.
[Roma96]
S. Roman, Introduction to Coding and Information Theory, Springer, 1996.
[Ross94]
S. Ross, A First Course in Probability, Macmillan Publishing Company, Inc, 1994.
[SaPa53]
A. A. Sardinas, G. W. Patterson, A Necessary and Sufficient Condition for the Unique Decomposition of Coded Messages, IRE Convention Records, S. 104-108, 1953.
[Sayo00]
K. Sayood, Introduction to Data Compression, Second Edition, Morgan Kaufmann, 2000.
[Spa92a]
E. Spafford, Observing Reusable Password Choices, UNIX Security Symposium III, 1992.
[Spa92b]
E. Spafford, OPUS: Preventing Weak Password Choices, Computers and Security, No. 3, 1992.
[Stal95]
W. Stallings, Network and Internetwork Security, IEEE Press, 1995.
83