Toggellichter
Wie kann eine CD immer noch ausgelesen werden, auch wenn einige Kratzer ihre Rückseite zieren? Wie kann ein Rover, der auf dem Mond Untersuchungen vornehmen soll, seine Daten an die Basisstation auf der Erde übermitteln, auch wenn sicher einige Fehler bei der Übermittlung auftreten? Wie kann ich meine Daten auf drei Festplatten effizient abspeichern, sodass, wenn eine dieser Festplatten ausfällt, immer noch alle Daten rekonstruiert werden können?
Mit diesen und ähnlichen Fragen beschäftigt sich die Codierungstheorie. Die grundlegende Idee dabei ist die folgende: Gegeben ist ein endliches Alphabet (z.B.
im binären Fall) und eine Codelänge
. Die zu codierenden Daten werden nun immer in Blöcken der Länge
abgespeichert/übermittelt. Ein solcher Block
enthält aber tatsächlich nur die Information von einer kleineren Zahl
an
-bits. Das heißt, bei der Codierung wird immer je ein Wort der Länge
über dem Alphabet
in ein Wort der Länge
über demselben Alphabet umgewandelt. Dabei sind
-Bits redundant. Mathematisch gesprochen ist diese Codierung nichts anderes als eine injektive Abbildung
. Ihr Bild
wird als ein
–Code bezeichnet (
heißt die Länge von
und
die Dimension).
Nun kann folgendes passieren: In dem Block der Länge
werden einige Symbole (durch Rauschen im Kanal oder Ähnliches) verändert. Sagen wir dies seien
Symbole. Somit entsteht ein neuer gestörter Block
. Kann die ursprüngliche Information noch rekonstruiert werden? Dazu definieren wir den Hamming-Abstand zweier Codewörter
als
(hierbei ist
und
mit
). Die Idee ist nun, den gestörten Block
zu demjenigen Codewort in
abzuändern, das im Hamming-Abstand gemessen am nächsten an diesem Block dran liegt. Aber ist dieses Codewort überhaupt eindeutig? Im Allgemeinen nicht!
Um „zu stark gestörte“ Blöcke als solche zu erkennen und rekonstruierbare Blöcke immer eindeutig rekonstruieren zu können, wird daher um jedes zulässige Codewort
ein Ball
vom Radius
im Hamming-Abstand gezogen, sodass sich keine zwei dieser Bälle überschneiden:
für
verschieden. Liegt nun
in einem dieser Bälle, so wird es zu dem Codewort
rekonstruiert. Auf diese Weise ist
aufgrund der obigen Bedingung immer eindeutig.
Aber wie ist hierbei der Radius zu wählen? Wir wollen, dass sich
und
für
aus
nicht schneiden. Dies ist aber genau dann richtig, wenn
. Diese Bedingung muss nun für alle
und
erfüllt sein. Setzen wir also
(der Minimalabstand von
), so ist
der bestmögliche Radius. Der Parameter
bestimmt also den Korrekturradius. In dieser Situation nennt man
auch einen
-Code.