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.