# Kraft-Ungleichung

Die Kraft-Ungleichung, auch als Kraft-McMillan-Ungleichung bezeichnet, ist in der Kodierungstheorie eine notwendige und hinreichende Bedingung für die Existenz eines eindeutig dekodierbaren Codes für einen gegebenen Satz an Schlüssellängen. Seine Implikationen auf Präfixcodes und Binärbäume finden häufig in der Informatik und Informationstheorie Anwendung.
Die Kraft-Ungleichung wurde 1949 von Leon G. Kraft entwickelt, wobei er in seiner Arbeit ausschließlich Präfixcodes behandelte. Unabhängig von Kraft gelangte Brockway McMillan 1956 zu identischen Ergebnissen.

## Aussage

Sei $T$ ein $(n,q)$-Baum mit maximal $q$ Kindknoten je Knoten und $n$ Blättern, deren Tiefen $\ell _{1},\dotsc ,\ell _{n}$ seien.
Dann gilt:
    $\sum _{i=1}^{n}q^{-\ell _{i}}\leq 1$
Gleichheit gilt, falls $T$ ein vollständiger Baum ist.

## Beweis

Man sieht leicht, dass für einen Baum der Tiefe 0 gilt:
    $\sum _{v\in {\text{Blätter}}}\!\!\!q^{-\operatorname {depth} (v)}\;=\!\!\sum _{v\in {\text{Blätter}}}\!\!\!q^{0}=1$
Da ein Knoten eines $q$-ären Baumes maximal $q$ Kinder hat oder ein Blatt ist, verteilt jeder Knoten seinen Wert $q^{-k}$ (Tiefe $k$) auf maximal $q$ Kinder mit dem Wert $q^{-(k+1)}$, die zusammen höchstens einen Wert von $q\cdot q^{-(k+1)}=q^{-(k+1)+1}=q^{-k}$ besitzen. Ist der Baum unvollständig, d. h. besitzt ein Knoten weniger als $q$ Kinder, so sinkt die Summe sogar unter 1. Die Ungleichung wird genau dann verletzt, wenn innere Knoten als Blätter verwendet werden, weil z. B. alle Knoten auf einer Tiefenebene als Codewort verwendet werden, gleichzeitig aber noch längere, tiefer liegende Codewörter existieren. Da diese längeren Codewörter dann aber ein Codewort als Präfix haben, ist dadurch auch die Eigenschaft der Präfixfreiheit verletzt. Es ist natürlich möglich und auch nicht selten, dass der Baum unbalanciert ist, d. h. ein Pfad mit der Länge $\ell _{i}$ existiert, während in einem anderen Ast noch tiefer liegende Blätter zu finden sind.
Andererseits ist es aber auch möglich, „dumme“ Codes zu konstruieren, die die Ungleichung erfüllen, aber trotzdem einen Teil eines Pfades zu einem Blatt als Codewort verwenden.
Im Kontext der Codierungstheorie müssen für jeden eindeutig dekodierbaren Code $C$ über dem Alphabet der Länge $q$ die Längen der Codewörter $\ell _{1},\dotsc ,\ell _{n}$ die Kraft-Ungleichung erfüllen. In der Umkehrung existiert zu jeder Menge von Codewort-Längen, welche die Kraft-Ungleichung erfüllt, ein eindeutig dekodierbarer, präfixfreier Code mit diesen Längen.

## Beweis für unendliche Folgen von Codewortlängen

Sei $l_{i}\in \mathbb {N}$ für alle $i\in N$ $\Rightarrow \exists$ genau dann ein präfixfreier Binärcode, wenn $\sum _{i=1}^{\infty }{2^{-l_{i}}}\leq 1$ $\sum _{i=1}^{\infty }{a_{i}}=\lim _{n\rightarrow \infty }\sum _{i=1}^{n}{a_{i}}$
Seien $b_{1},b_{2},\dotsc$ präfixfreie Binärcode mit Codewortlängen $l_{1},l_{2},\dotsc$
    $\sum _{i=1}^{\infty }{2^{-l_{i}}}=\lim _{n\rightarrow \infty }\sum _{i=1}^{n}{2^{-l_{i}}}$. Da $\forall n\in \mathbb {N} ,b_{1}\dots b_{n}$endlicher präfixfreier Binärcode, gilt weiter für alle $n$
    $\sum _{i=1}^{n}2^{-l_{i}}\leq 1\Rightarrow \lim _{n\rightarrow \infty }\sum _{i=1}^{n}2^{-l_{i}}\leq 1$
Sei $l_{i}\in N\sum _{i=1}^{\infty }2^{-l_{i}}\leq 1$ Die Summe konvergiert absolut $\Rightarrow$ wir können umsortieren $\Rightarrow$ o.B.d.A $l_{1}\leq l_{2}\leq \dotsb$
Induktion nach $k$:
    $k=1$ OK
    $k\rightarrow k+1$ haben präfixfreien Binärcode $b_{1}\dots b_{k}$ zu $l_{1}\dots l_{k}$, repräsentiere $B$ als Binärbaum $D$ und ersetze dann jedes Blatt der aktuellen Tiefe durch vollständigen Binärbaum der Höhe $l_{k+1}-l+1$. Das ändert nichts an der "Hinzufügbarkeit", alle Blätter in $D'$ haben Tiefe $l_{k+1}$ und an der Summe ändert sich auch nichts, denn $2^{-l}=2^{(l_{k}+1-l)}2^{-l_{k}+1}$.
Sei $b$ gleich der Anzahl der Blätter in $T$ $\sum _{i=1}^{k}2^{-l_{k}}<1$. Dann gilt $b2^{-l_{k+1}}\Leftrightarrow b<2^{k+1}$ $\Rightarrow$ $T'$ nicht vollständig $\Rightarrow$ Können Codewort mit Länge $l_{k+1}$ hinzufügen $\Rightarrow$ def. $b$ induktiv, daraus ergibt sich präfixfreier Binärcode.