Der Hamming-Abstand, die Hamming-Distanz und das Hamming-Gewicht, sind Maße für die Unterschiedlichkeit digitaler Daten und so grundlegende Begriffe der Codierungstheorie, benannt nach dem Mathematiker Richard Wesley Hamming (1915–1998).
Der Hamming-Abstand zweier Blöcke von binären Daten mit fester Länge (so genannter Codewörter) kann ermittelt werden, indem man beide in binärer Form schreibt, diese Bit für Bit vergleicht und die Stellen zählt, die ungleich sind. Rechnerisch lässt sich der Vergleich durch eine XOR-Operation und das Abzählen der resultierenden Einsen realisieren.
Das Hamming-Gewicht ist der Hamming-Abstand von einem leeren Wort -- gleichbedeutend mit der Anzahl der gesetzten Bits.
Beispiel:
unsigned char hamming_weight(unsigned char word){ unsigned char weight=0; int i; for( i = 0 ; i < 8 ; i++ ){ if( word & ( 1 << i ) ){ weight += 1; } } return weight; }
Beispiel:
Wichtig ist die Hamming-Distanz, wenn man Codes entwickeln möchte, die Fehler erkennen (EDC) oder korrigieren (ECC) können. Bei Codes mit Hamming-Abstand h können (h-1)-Bit-Fehler erkannt werden. In dem Beispiel mit h=2 können somit alle 1-Bit-Fehler erkannt werden. Um die Fehler auch korrigieren zu können, muss die Hamming-Distanz auf mindestens 2r+1 vergrößert werden, wobei r für die Anzahl der korrigierbaren Bit-Fehler steht.
Bei h=3 können alle 1-Bit-Fehler erkannt und korrigiert werden. Treten 2-Bit-Fehler auf, werden diese unter Umständen falsch „korrigiert“, da das fehlerhafte Wort möglicherweise den Abstand 1 zu einem anderen gültigen Codewort hat.
Bei h=4 können ebenfalls alle 1-Bit-Fehler erkannt und korrigiert werden. Treten 2-Bit-Fehler auf, können diese zwar erkannt, aber nicht mehr korrigiert werden. Eine falsche „Korrektur“ ist ab 3-Bit-Fehlern möglich.
Der Hamming-Abstand eines Codes ist notwendigerweise eine natürliche Zahl. Ein Code mit Hamming-Abstand 0 ist nicht möglich, da sich in diesem Fall zwei Codewörter nicht unterscheiden ließen.
Nun sucht man weiter nach dem dritten Wort, das zu ersten beiden Einträgen den Abstand 5 hat, und findet '0000 0000 1110 0011'. Fährt man fort, erhält man alle 256 Codewörter, die mit 16 Bits und Abstand 5 möglich sind.
| Bits | Distanz | Hammingcodes | Erkennbare Fehler | Korrigierbare Fehler |
|---|---|---|---|---|
| 6 | 3 | 8 | 2-Bitfehler | 1-Bitfehler |
| 7 | 3 | 16 | 2-Bitfehler | 1-Bitfehler |
| 8 | 3 | 16 | 2-Bitfehler | 1-Bitfehler |
| 8 | 4 | 16 | 3-Bitfehler | 1-Bitfehler |
| 12 | 3 | 256 | 2-Bitfehler | 1-Bitfehler |
| 12 | 4 | 128 | 3-Bitfehler | 1-Bitfehler |
| 12 | 5 | 16 | 4-Bitfehler | 2-Bitfehler |
| 12 | 6 | 16 | 5-Bitfehler | 2-Bitfehler |
| 16 | 3 | 2048 | 2-Bitfehler | 1-Bitfehler |
| 16 | 4 | 2048 | 3-Bitfehler | 1-Bitfehler |
| 16 | 5 | 256 | 4-Bitfehler | 2-Bitfehler |
| 16 | 6 | 128 | 5-Bitfehler | 2-Bitfehler |
| 16 | 7 | 32 | 6-Bitfehler | 3-Bitfehler |
| 16 | 8 | 32 | 7-Bitfehler | 3-Bitfehler |
Wird ein Code mit den Worten {000, 101, 110, 011} gewählt, so beträgt die minimale Hamming-Distanz 2. Mit einem Hamming-Abstand von 2 lassen sich 1-Bit-Fehler lediglich erkennen, aber nicht korrigieren (beispielsweise lässt sich zwar erkennen, dass 111 einen fehlerhaften Wert darstellt, jedoch nicht, ob er nach 110 oder 011 oder 101 korrigiert werden soll).
Es gilt für einen Code mit Hammingdistanz h, dass Fehler korrigierbar sind.
Siehe auch: Hamming-Ähnlichkeit, Hamming-Code, Levenshtein-Distanz
Diskrete Mathematik | Informationstheorie | Kodierungstheorie
Hammingafstand | Distància de Hamming | Hamming distance | Distancia de Hamming | Hammingin etäisyys | Distance de Hamming | Distanza di Hamming | ハミング距離 | 해밍 거리 | Hammingafstand | Odległość Hamminga | Расстояние Хэмминга
This article is licensed under the GNU Free Documentation License.
It uses material from the
"Hamming-Abstand".
Home Page • arts • business • computers • games • health • hospitals • home • kids & teens • news • physicians • recreation• reference • regional • science • shopping • society • sports • world