Präfixcode
# Präfixcode

Präfixcode oder präfixfreier Code ist ein Begriff aus der Kodierungstheorie. Als Präfixcode wird ein Code bezeichnet, der die Fano-Bedingung erfüllt: Kein Codewort des Codes ist Präfix eines anderen Codewortes. Anders ausgedrückt darf kein Codewort den Beginn eines anderen Codewortes darstellen. Ein Code zum Beispiel mit den Codewörtern {0, 10, 11} erfüllt die Präfix-Eigenschaft, während hingegen der Code mit den Codewörtern {0, 01, 10} sie nicht erfüllt, da „0“ Präfix von „01“ ist.

## Eigenschaften

* Bei einem Präfixcode ist eine Nachricht eindeutig in ihre Codewörter zerlegbar
* Codewörter können unterschiedlich lang sein
* Jeder Präfixcode erfüllt die Kraft-Ungleichung

## Beispiele

Die Objekte A, B, C und D werden mit binären Ziffern dargestellt.

    $A\rightarrow 0,B\rightarrow 100,C\rightarrow 101,D\rightarrow 11$

Eine unzulässige Codierung wäre die folgende.

    $A\rightarrow 10,B\rightarrow 100,C\rightarrow 101,D\rightarrow 11$

Die Codierung von A kollidiert jeweils mit der von B und von C. Da hierbei beispielsweise CB zu 101100 und ADB zu 1011100 kodiert wird, wird klar, dass ohne die Präfixeigenschaft die Dekodierung eines Codewortes erst einige Ziffern später (oder möglicherweise gar nicht) möglich ist.

### Telefonnummern

Jeder Anschluss muss durch seine Telefonnummer eindeutig identifizierbar sein. Dabei darf es beim Wählprozess nicht dazu kommen, dass es zwischendrin bei einem anderen Teilnehmer klingelt. So beginnt in Deutschland keine andere Telefonnummer außer dem Notruf mit 112. Ebenso beginnt in keinem Ortsnetz eine Nummer mit 0, damit keine Kollision mit Ortsvorwahlen (oder Sondernummern wie 0800) entsteht. Ähnliche Überlegungen gelten auch für die internationale Vorwahl.

### Huffman-Code

Innerhalb des Huffman-Codes werden Eingabesymbole (beispielsweise die Buchstaben eines Textes) mit unterschiedlich langen binären Ziffernfolgen codiert, deren Länge von der Häufigkeit des zugehörigen Eingabesymbols abhängt. So wird der Speicherverbrauch entsprechend diesen Häufigkeiten optimiert. Der Huffman-Code ist ein Präfixcode.

### Fibonacci-Code

Der Fibonacci-Code ist ein universeller Präfixcode für die natürlichen Zahlen.

### Morse-Code

Der Morse-Code ist von Haus aus kein Präfixcode, da beispielsweise A (kurz-lang) ein Präfix von L (kurz-lang-kurz-kurz) ist. Erst durch das Einfügen von Pausen (im Prinzip ein drittes Symbol neben kurz und lang) zwischen Buchstaben wird die Nachricht eindeutig dekodierbar, z. B. kurz-lang-Pause-kurz-kurz = AI, kurz-lang-kurz-Pause-kurz = RE.

