Codierungstheorie Rudolf Scharlau, SoSe 2006 9 2 Optimale Codes Optimalität bezieht sich auf eine gegebene Quelle, d.h. eine Wahrscheinlichkeitsverteilung auf den Symbolen s 1,..., s q des Quellalphabets bzw. den zugehörigen Codewörtern. Wir besprechen vor allem ein Konstruktionsverfahren von Huffman, das ausgehend von den Wahrscheinlichkeiten p 1,...,p q in einem festen Algorithmus die Codewörter konstruiert. 2.1 Optimalität Definition. Ein eindeutig decodierbarer Code C = {w 1,..., w q } heißt optimal für eine Wahrscheinlichkeitsverteilung Pr = (p 1, p 2,..., p q ), falls die durchschnittliche Wortlänge l(c, Pr) minimal ist, d.h. l(c, Pr) l(d, Pr) für alle eindeutig decodierbaren Codes D mit D = q. Beachte, dass dieser Begriff sich nicht auf den Code als Menge, sondern die Codierung s i w i bezieht, d.h. es kommt auf die Reihenfolge der w i an. Beispiel 2.1 Für Pr = (p 1, p 2, p 3 ) = (0.25, 0.5, 0.25) ist die Codierung C : 00, 01, 1 nicht optimal, l(c, Pr) = 2 0.25+2 0.5+ 1 0.25 = 1.75, während D : 00, 1, 01 optimal ist, l(d, Pr) = 1.5. Aus Folgerung 1.22 folgt: Lemma 2.2 Bei der Untersuchung optimaler Codes kann man sich auf präfixfreie Codes beschränken. Satz 2.3 Für jede diskrete Quelle, d.h. jede Wahrscheinlichkeitsverteilung Pr = (p 1, p 2,...,p q ) existiert ein optimaler Code. Beweisskizze: Man wählt irgendeinen präfixfreien Code C mit C = q. Dann überlegt man sich, daß die Wortlängen der Codes D mit D = q und l(d, Pr) l(c, Pr) beschränkt sind. Folglich gibt es für D nur endlich viele Möglichkeiten, und man kann unter diesen den kleinsten Wert l(d, Pr) wählen. 2.2 Binäre Huffman Codes Aus einer Wahrscheinlichkeitsverteilung Pr = (p 1,..., p q ), dabei p 1 p 2 p q, erzeugt man Pr von der Länge q 1 durch addieren p q 1 +p q und neues Sortieren. Entsprechend wird ein Quellalphabet S = {s 1,...,s q } erzeugt durch S = {s 1,..., s q 2, s := s q 1 s q }. Bei der Konstruktion der Huffman Codes wird dieser Prozess iteriert und auf der Ebene der Codes umgekehrt: C : w 1,...,w q 2, w C : w 1,...,w q mit w q 1 = w 0, w q = w 1
Codierungstheorie Rudolf Scharlau, SoSe 2006 10 Lemma 2.4 Wenn C präfixfrei ist, dann ist auch C präfixfrei. Beispiel 2.5 S habe 5 Elemente mit den Wahrscheinlichkeiten p i = 0.3, 0.2, ; 0.2, 0.2, 0.1. S : 0.3 0.2 0.2 0.2 0.1 S : 0.3 0.3 0.2 0.2 S : 0.4 0.3 0.3 S (3) : 0.6 0.4 S (4) : 1 C : 00 10 11 010 011 C : 00 01 10 11 C : 1 00 01 C (3) : 0 1 C (4) : ε Durchschnittliche Wortlänge: l(c, Pr) = 2 0.3 + 2 0.2 + 2 0.2 + 3 0.2 + 3 0.1 = 2.3 Beispiel 2.6 S habe 5 Elemente mit den Wahrscheinlichkeiten p i = 0.2 für i = 1,...,5. S : 0.2 0.2 0.2 0.2 0.2 S : 0.4 0.2 0.2 0.2 S : 0.4 0.4 0.2 S (3) : 0.6 0.4 S (4) : 1 C : 01 10 11 000 001 C : 00 01 10 11 C : 1 00 01 C (3) : 0 1 C (4) : ε Durchschnittliche Wortlänge: 0.2 (2 + 2 + 2 + 3 + 3) = 2.4 2.3 Die durchschnittliche Wortlänge von Huffman- Codes Wir betrachten einen Code C = {w 1,..., w q 2, w } mit Wahrscheinlichkeitsverteilung Pr = (p 1,..., p q 2, p ) (relativ zu einer Quelle (S, Pr ) und einer Codierung S C ), sowie den daraus durch die Huffman-Konstruktion entstandenen Code C = {w 1,..., w q 2, w q 1 = w 0, w q = w 1} mit p q 1 + p q = p. Wenn wir kurz l := w setzen, so berechnet man in offensichtlicher Weise l(c, Pr) l(c, Pr ) = p q 1 (l+1)+p q (l+1) p l = p q 1 +p q = p. Folgerung. Die durchschnittliche Wortlänge eines Huffman-Codes zur Wahrscheinlichkeitsverteilung Pr = (p 1 p 2 p q ) berechnet sich ohne explizite Bestimmung von C aus der Folge
Codierungstheorie Rudolf Scharlau, SoSe 2006 11 Pr, Pr,..., Pr (q) = (1) der jeweils durch p = p q 1 +p q definierten Wahrscheinlichkeitsverteilungen als l(c, Pr) = p +p + +p (q 1) (dabei p (q 1) = 1). Beispiel. In Beispiel 2.5 ist l(c, (0.3, 0.2, 0.2, 0.2, 0.1)) = 0.3 + 0.4+0.6+1 = 2.3, in Beispiel 2.6 ist l(c, (0.2, 0.2,..., 0.2)) = 0.4+ 0.4 + 0.6 + 1 = 2.4. (Jeweils die fettgedruckten/unterstrichenen Wahrscheinlichkeiten des Schemas werden aufaddiert!) 2.4 Binäre Huffman-Codes sind optimal Wir benutzen ab jetzt die Notation S = (S, Pr) für eine (diskrete, gedächtnislose) Quelle. Mathematisch relevant ist weiterhin nur der durch Nummerierung der Elemente von S = {s 1,..., s q } entstandene Wahrscheinlichkeitsvektor p = (p 1,...,p q ) := (Pr(s 1 ),..., Pr(s q )). Lemma 2.7 Es sei D ein optimaler binärer Code für S (bzw. für p). Sei ferner die (ungewichtete) Gesamtlänge l(w) minimal w D unter allen solchen Codes D. Dann enthält D ein Paar ut, u t, u {0, 1}, t {0, 1}, t = 1 t von Codewörtern maximaler Länge (d.h. ut = max{ w w D}). Beweisskizze: Wähle w D von maximaler Länge, schreibe w = ut, t {0, 1}. Man zeigt, daß dann automatisch auch u t D ist; sonst könnte man ut durch u ersetzen und hätte einen Widerspruch zu der angenommenen Minimalität von D. Bemerkung: Im Fall echt positiver Wahrscheinlichkeiten erfüllt jeder optimale Code (und jedes längste Codewort ut) die Schlussfolgerung des Lemmas; die Zusatzbedingung ist überflüssig. Satz 2.8 Jeder binäre Huffman-Code für eine gegebene Quelle S = (S, Pr) ist optimal für S. Beweis(skizze): Sei C dieser Code, C zu S wie in der Huffman- Konstruktion, weiter D und x i = ut, x j = u t wie im Lemma. Man überlegt sich zunächst, daß man i = q 1, j = q annehmen kann (folgt aus der maximalen Wortlänge). Wenn nun D entsprechend zu C gebildet wird, so folgt mittels der Formel aus Abschnitt 2.3 also l(d, Pr) l(d, Pr ) = p q 1 + p q = l(c, Pr) l(c, Pr ) l(d, Pr ) l(c, Pr ) = l(d, Pr) l(c, Pr). Nach Induktionsannahme (Induktion über q) ist C optimal, also die linke Seite 0, also auch l(d, Pr) l(c, Pr). Weil D als optimal vorausgesetzt war, muß Gleichheit gelten. Also ist auch C optimal.
Codierungstheorie Rudolf Scharlau, SoSe 2006 12 2.5 Nicht-binäre Huffman-Codes Bei der Huffman-Konstruktion zur Alphabetgröße r = T > 2 werden immer die r kleinsten Wahrscheinlichkeiten zusammengefasst. Umgekehrt wird das letzte Codewort w durch die r Codwörter w t, t T ersetzt. Gegebenenfalls sind noch Wahrscheinlichkeiten Null hinzuzufügen, damit q 1 (mod r 1) ist. Beispiel 2.9 Es sei q = 6, r = 3 und S habe die Wahrscheinlichkeitsverteilung p i = 0.3, 0.2, 0.2, 0.1, 0.1, 0.1. Nach Hinzufügen von s 7 mit p 7 = 0 erhält man S : 0.3 0.2 0.2 0.1 0.1 0.1 0 S : 0.3 0.2 0.2 0.2 0.1 S : 0.5 0.3 0.2 S : 1 Mit T = Z 3 = {0, 1, 2} ist eine mögliche Codierung C : 1 2 00 02 010 011 012 C : 1 2 00 01 02 C : 0 1 2 C : ε Nach Weglassen des zu s 7 gehörenden Wortes 012, erhält man C = {1, 2, 00, 02, 010, 011} mit l(c) = 1.7. Anders als im binären Fall liefert die Konstruktion nicht immer optimale Codes. 2.6 Blockweise Codierung einer Quelle Wir erinnern an die Idee, daß eine Signalquelle S (formal ein endlicher Wahrscheinlichkeitsraum (S, P r)) eine (potentiell beliebig lange) Folge X 1 X 2... X k... von identisch verteilten Zufallsvariablen (mit Werten in S und Verteilung P r) aussendet. Es ist eine naheliegende Idee, bei der Quellencodierung jeweils n Symbole, für ein festes n, zusamenzufassen und gemeinsam in einem Codewort zu codieren. Hierbei kann man tatsächlich etwas gewinnen, nämlich den Aufwand, gemessen in der gemittelten Wortlänge, reduzieren. Wir wollen in diesem Abschnitt hierzu ein wenig Terminologie einführen sowie ein einfaches Beispiel anschauen. Eine systematischere Behandlung ergibt sich erst im nächsten Kapitel unter Verwendung des zentralen Begriffs der Entropie. Die n-te Potenz S n der Quelle S definieren wir in naheliegender Weise als S n = (S n, Pr n ), wobei mit S n wie üblich das n-fache kartesische Produkt von S mit sich selbst gemeint ist, dessen Elemente weiterhin als (Quell-)Wörter der festen Länge n geschrieben werden, und die Wahrscheinlichkeit definiert wird als Pr n (s 1 s 2... s n ) := Pr(s 1 )Pr(s 2 )...Pr(s n ). Wir haben also eine Spezialfall der üblichen Definition des direkten Produktes zweier (endlicher) Wahrscheinlichkeitsräume; die Definition von Pr n ist verträglich mit dem obigen Sender- Modell, denn sie spiegelt die Unabhängigkeit der X k wieder.
Codierungstheorie Rudolf Scharlau, SoSe 2006 13 Jones und Jones bezeichnen S n als n-te Erweiterung ( extension ) von S, was uns weniger glücklich erscheint. Unter einer blockweisen Codierung der Ordnung n wollen wir eine Codierung von S n im üblichen Sinne verstehen (also eine Abbildung c : S n T + für ein Code-Alphabet T). Mathar spricht in seinem Buch einfach von einem Blockcode; allerdings wird dieser Begriff oft auch für Codes mit Codewörtern konstanter Länge benutzt (also C T m T + für ein festes m). Beispiel 2.12 Für S = {s 1, s 2 }, p 1 = 2/3, p 2 = 1/3 hat S 2 die Wahrscheinlichkeiten 4/9, 2/9, 2/9, 1/9, woraus man den Huffman-Code C 2 = {0, 10, 110, 111} herleitet. Als gemittelte Wortlänge bezogen auf S ist die Größe l(c 2, Pr 2 )/2 relevant, da ein Symbol aus C zwei Symbole aus S codiert. Diese Zahl ist gleich 17/18, also echt kleiner als 1, die gewichtete Wortlänge eines optimalen Codes für S. Übung: Benutzung von S 3 liefert einen noch besseren Wert, nämlich l(c 3, Pr 3 )/3 = 76/81.