Grundlagen der Informatik
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 0 | 1 | 0 | 1 |
| 1 | 1 | 0 | 0 |
| 1 | 1 | 1 | 1 |
| 0 | 1 | 1 | 0 |
Die grün gekennzeichneten Bits entsprechen unserer Nachricht, die schwarzen Bits sind die Prüfbits für gerade Parität. Das rote Bit in der Ecke ergänzt die Prüfpits auf gerade Parität. Sehen wir uns nun mal drei mögliche Übertragungsfehler an:
| 0 | 1 | 0 | 1 | 0 | 1 | 0 | 1 | 1 | 1 | 0 | 1 | ||
| 1 | 0 | 0 | 0 | 1 | 1 | 0 | 0 | 1 | 1 | 0 | 0 | ||
| 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 1 | 1 | 1 | ||
| 0 | 1 | 1 | 0 | 0 | 0 | 1 | 0 | 0 | 1 | 1 | 0 |
Die blau gekennzeichneten Bits sind falsch Übertragen worden.
Beispiel 1: Der
Decodierer erkennt Paritätsfehler in Zeile 2 und Spalte 2, er
erkennt das entsprechende Bit als falsch und dreht es um (auf 1).
Die Nachricht konnte decodiert werden, der Fehler wurde entfernt.
Beispiel 2: Der Decodierer erkennt einen Fehler
in Spalte 2, findet aber keine entsprechenden Zeilenfehler.
Auserdem ist das rote Paritätsprüfbit falsch. Der Fehler wird
richtig dem Prüfbit der 2. Spalte zugeordnet. Die
Informationsbits werden als richtig erkannt.
Beispiel 3: Der Decodierer erkennt Fehler in der
1. und dritten Zeile, jedoch in keiner Zeile. Da wir nicht wissen,
ob die Paritäts- oder die Informationsbits falsch sind, können
wir den Fehler zwar erkennen, aber nicht eindeutig decodieren.
Die Information kann nicht decodiert werden, die Nachricht muss
erneut übermittelt werden.
Erkentniss: Wir können Einzehlfehler korrigieren und Doppelfehler erkennen.
Die Hamming Metrik hilft uns, Aussagen über den Abstand zweier Codewörter zueinander zu machen. Dieser Abstand d gibt an, in wie vielen Stellen sich die beiden Wörter unterscheiden ( 010 unterscheidet sich von 111 in 2 Stellen -> d( 010, 111 ) = 2 ). Wir überprüfen, wie groß der Abstand von einem empfangenen Wort zu den Codewörtern ist. Der Abstand gibt dann gleich die Anzahl der Fehler bei der Übertragung. Veranschaulichen kann man das in einem Würfel, weshalb man auch die Menge der Codewörter mit W(n) bezeichnet, wobei n die Anzahl der Bits eines Wortes ist. Es gibt dann wieder 2^n Codewörter. Für n=3 kann man dann tatsächlich einen Würfel aufzeichnen und seine Eckpunkte mit den Codewörtern von 000 bis 111 beschriften. Dabei unterscheiden sich benachbarte Punkte um nur ein Bit, ihr Abstand ist eins.
Bei der Mindestabstandsdecodierung legt man fest, welchen Abstand zwei beliebige Codewörter aus W(n) mindestens haben müssen. Damit können wir einen speziellen Code definieren: den (n, M, d)-Code, wobei n die Anzahl der Bits in einem Wort, M die Anzahl der Codeworte und d der Mindestabstand ist. Damit lassen sich bis zu 0.5( d - 1 ) Fehler korrigieren. q.e.d.
Wir müssen uns damit auseinander setzen, einen Algorithmus zur Berechnung der maximalen Anzahl der Codewörter bei gegebenem n und d zu finden. Für n = d ist dies trivial ( M = 2: 0. . . 0 und 1 . . . 1 ), ebenso für d = 1 ( M = 2^n, weil sich jedes Codewort ja mindestens um 1 von jedem anderen unterscheidet, sonst wären sie ja gleich). Aber für n = 10, d = 3 lässt sich das schon nicht mehr vernünftig berechnen. Wir können nur eine Abschätzung der oberen Grenze vornehmen um eine Anzahl A(n,d) zu gewinnen. Sei e=0.5(d-1):

Unser Ziel ist es, perfekte Codes zu entwickeln. Dazu muss gelten:
Der Mindestabstand der Codewörter ist 2e + 1
Die Anzahl der Codewörter ist eine Potenz von 2. Der Exponent sei k
Sei C ein Code, |C| = 2^k. Ist C perfekt, so gilt:

|
© Gerhard Zapf
|
||||
Letzte Änderung: 11.09.2003 |
||||