1.5 Shannons Source-Coding-Theorem

Zur Wiederholdung: wir betrachten eine endliche Menge X und eine Codierung von X über dem Alphabet {0,1}. Diese Codierung ist eine Funktion C:X{0,1}, und sie heißt präfixfrei wenn für alle x,yX mit xy gilt:

C(x)⪯̸C(y) .

Das Codewort C(x) darf also kein Präfix von C(y) sein, und insbesondere muss C(x)C(y) gelten. Wenn X mit einer Wahrscheinlichkeitsverteilung P:X[0,1] ausgestattet ist, dann können wir über die erwartete Codelänge sprechen:

ExP[|C(x)|]=xXP(x)|C(x)| .

Theorem 1.5.1 (Source-Coding-Theorem). Sei X eine endliche Menge und P eine Wahrscheinlichkeitsverteilung über X.

  1. Untere Schranke: wenn C:X{0,1} ein präfixfreier Code ist, dann gilt ExP[|C(x)|]H(P) .
  2. Obere Schranke: es gibt einen präfixfreien Code C:X{0,1} mit (1)|C(x)|log2(1P(x)) für jedes xX, und somit auch ExP[|C(x)|]H(P)+1 .

Beweis (untere Schranke). Sei C:X{0,1} ein Code. Wir definieren

Q:XRx2|C(x)|

Nach Teil 1 von Reference "theorem-kraft-ineq" not found. Go to put-all-in-one-page.html and read the instructions. (der Kraft-McMillan-Ungleichung) gilt xXQ(x)1. Wir rechnen nun

ExP[|C(x)|]=ExP[logQ(x)]=ExP[logP(x)logQ(x)+logP(x)]=ExP[logP(x)]+ExP[log(P(x)Q(x))]=H(P)+ExP[log(P(x)Q(x))] .

Es bleibt zu zeigen, dass der zweite Term dieser Summe nicht negativ ist.

ExP[log(P(x)Q(x))]0ExP[log(Q(x)P(x))]0 .

Wir rechnen nun weiter mit der linken Seite der letzten Ungleichung. Wenn wir die Zufallsvariable XP wählen - also Pr[X=x]=P(x) und Y:=Q(X)P(X) setzen, dann ist Y auch eine Zufallsvariable, die endlich viele Werte annimmt (höchstens so viele wie X selbst, also maximal |X| viele). Darüberhinaus ist Y auch immer definiert: X nimmt ja nur jene Werte xX an, für die P(x)>0 gilt. Und für jedes xX gilt ja auch Q(x)>0. Somit ist Y=Q(X)P(X) definiert und größer als 0, und so ist auch logY auch definiert. Die linke Seite der obigen Ungleichung ist also

EP[log2(Y)] .

Nun ist Y eine Zufallsvariable, die nur endlich viele Werte annimmt, und log2 ist eine konkave Funktion. Wir wenden Jensens Ungleichung Reference "theorem-jensen" not found. Go to put-all-in-one-page.html and read the instructions. an:

EP[log2(Y)]log2(EP[Y]) .

Was ist EP[Y], der Erwartungswert von Y über der Wahrscheinlichkeitsverteilung P?

EP[Y]=xXP(x)Y(x)=xXP(x)Q(X)P(X)=xXQ(x) .

Diese Summe ist, nach der Kraft-McMillan-Ungleichung (Reference "theorem-kraft-ineq" not found. Go to put-all-in-one-page.html and read the instructions.) höchstens 1, und somit ist ihr Logarithmus höchstens 0.

Anmerkung. Ganz allgemein gilt, mit der gleichen Rechnung wie gerade eben: wenn P und Q zwei Wahrscheinlichkeitsverteilungen über einer Menge X sind und Q(x)>0 ist für alle x mit P(x)>0, dann ist

(2)ExP[P(x)Q(x)]

definiert und nichtnegativ. Der Ausdruck (2) ist als Kullback-Leibler-Divergenz bekannt und wird auch mit KL(P||Q) abgekürzt. Im Lichte der obigen Rechnung hat KL(P||Q) folgende Interpretation (die mit einer Prise Salz zu nehmen ist): wenn wir davon ausgehen, dass die Elemente XX der Verteilung Q folgen und einen präfixfreien Code konstruieren, der für Q optimal wäre, die wirklich Wahrscheinlichkeitsverteilung jedoch P ist, dann ist KL(P||Q) der Preis, den wir für diese Fehleinschätzung bezahlen müssen: im Schnitt ist jedes Codewort um KL(P||Q) länger, als es in einer für P optimalen Verteilung der Fall wäre.

Beweis (obere Schranke). Der Einfachheit halber sei X={x1,,xn} und pi:=P(xi). Wir setzen li:=log2pi. Der Ausdruck 2li ist also pi, abgerundet auf die nächstkleinere Zweierpotenz. So würden wir beispielsweise 1/7 auf 1/8 abrunden und 15/32 auf 1/4. Es gilt

i=1n2lii=1npi=1 .

Wir können also den zweiten Teil von Reference "theorem-kraft-ineq" not found. Go to put-all-in-one-page.html and read the instructions., der Kraft-McMillan-Ungleichung anwenden und erhalten einen präfixfreien Code {c1,,cn} mit |ci|=li=log2pi. Somit ist (1) gezeigt. Für die erwartete Codelänge gilt nun

ExP[|C(x)|]=ExP[log2(1P(x))]<ExP[1+log2(1P(x))]=1+ExP[log2(1P(x))]=1+H(P) .

Somit ist Teil 2 gezeigt.

Der definierte Code für X weißt individuelle Optimalität auf: es gilt |C(x)|1+log2(1P(x)) für jedes x. Diese individuelle Optimalität gilt aber im Allgemeinen nicht für das Ergebnis des Huffman-Algorithmus:

Übungsaufgabe 1.5.1 Sei p[0,1] und nN. Definieren Sie eine Wahrscheinlichkeitsverteilung über {1,,n} mit P(1)=p, so dass |C(1)| möglichst groß wird; der Code C ist hier der vom Huffman-Algorithmus erzeugte optimale Code. Zeigen Sie, dass |C(1)| deutlich größer werden kann als log2(1P(1)).