www.wikidata.de-de.nina.az
Der Hamming Abstand auch Hamming Distanz und das Hamming Gewicht benannt nach dem US amerikanischen Mathematiker Richard Wesley Hamming 1915 1998 sind Masse fur die Unterschiedlichkeit von Zeichenketten Der Hamming Abstand zweier Blocke mit gleicher Lange sogenannter Codeworter ist dabei die Anzahl der unterschiedlichen Stellen Die Hamming Distanz wird zur Fehlererkennung und zur Fehlerkorrektur benutzt indem Dateneinheiten die uber eine Ubertragungsstrecke empfangen werden mit gultigen Zeichen verglichen werden Eine etwaige Korrektur der Zeichen erfolgt nach dem Wahrscheinlichkeitsprinzip Ob eine Fehlererkennung oder korrektur stattfinden kann hangt von der Hamming Distanz ab Haufig handelt es sich um binar dargestellte Zahlen so zum Beispiel in der Kodierungstheorie In diesem Fall lasst sich rechnerisch der Vergleich durch eine XOR Operation und das Abzahlen der resultierenden Einsen realisieren Fur andere Zahlensysteme oder Alphabete existieren jedoch ebenfalls wichtige Anwendungen Inhaltsverzeichnis 1 Definition 2 Beispiele 3 Hamming Gewicht 4 Hamming Abstand eines Codes 4 1 Ermitteln des Hamming Abstands eines Codes 5 Programmierung 6 Anwendungsbeispiel 7 Reprasentation der Bit Kette in einem Hyperwurfel 7 1 Beispiel 8 Mindestdistanz 8 1 Beispiel 8 2 Folgerung 9 Siehe auch 10 Literatur 11 WeblinksDefinition BearbeitenS displaystyle Sigma nbsp sei ein endliches Alphabet sowie x x 1 x n displaystyle x x 1 dots x n nbsp und y y 1 y n displaystyle y y 1 dots y n nbsp zwei n displaystyle n nbsp Zeichen lange Worte aus S n displaystyle Sigma n nbsp Der Hamming Abstand zwischen x displaystyle x nbsp und y displaystyle y nbsp ist definiert als D x y j 1 n x j y j displaystyle Delta x y Bigl bigl j in 1 dots n mid x j neq y j bigr Bigr nbsp Zu beachten ist dass der Hamming Abstand zugleich eine Metrik auf dem Coderaum ist Beispiele Bearbeiten00110 und 00100 Hamming Abstand 112345 und 13344 Hamming Abstand 2Haus und Baum Hamming Abstand 2Hamming Gewicht Bearbeiten Hauptartikel Hamming Gewicht Das Hamming Gewicht einer Zeichenkette ist definiert als die Anzahl der vom Nullzeichen des verwendeten Alphabets verschiedenen Zeichen Hierbei handelt es sich zugleich um den Hamming Abstand zum Nullvektor einer gleich langen Zeichenkette die nur aus Nullzeichen besteht Hamming Abstand eines Codes BearbeitenUnter dem Hamming Abstand eines Codes versteht man das Minimum aller Abstande zwischen verschiedenen Wortern innerhalb des Codes Beispiel Ein Code besteht aus folgenden drei Wortern x 00110 displaystyle x 00110 nbsp y 00101 displaystyle y 00101 nbsp z 01110 displaystyle z 01110 nbsp Der Hamming Abstand zwischen x displaystyle x nbsp und y displaystyle y nbsp ist 2 Um y displaystyle y nbsp zu generieren muss man zwei Bits von rechts nach links das erste und zweite Bit andern y x XOR 00011 Der Hamming Abstand zwischen x displaystyle x nbsp und z displaystyle z nbsp ist 1 Um z displaystyle z nbsp zu generieren muss man ein Bit das vierte andern z x XOR 01000 Der Hamming Abstand zwischen y displaystyle y nbsp und z displaystyle z nbsp ist 3 Um z displaystyle z nbsp zu generieren muss man drei Bits andern z y XOR 01011 Der kleinste der drei Abstande ist 1 also ist der Hamming Abstand des Codes ebenfalls gleich 1 Wichtig ist die Hamming Distanz wenn man Codes entwickeln mochte die Fehlererkennung EDC oder korrektur ECC ermoglichen Bei Codes mit Hamming Abstand h displaystyle h nbsp konnen alle h 1 displaystyle h 1 nbsp Bit Fehler erkannt werden In dem Beispiel mit h 1 displaystyle h 1 nbsp kann somit nicht einmal jeder 1 Bit Fehler erkannt werden x z fallt nicht auf alle anderen 1 Bit Fehler erzeugen ungultige Codes z B 00111 aus x oder y Bei h 2 displaystyle h 2 nbsp konnen alle 1 Bit Fehler erkannt werden Um die Fehler auch korrigieren zu konnen muss die Hamming Distanz auf mindestens 2 r 1 displaystyle 2r 1 nbsp vergrossert werden wobei r displaystyle r nbsp fur die Anzahl der korrigierbaren Bit Fehler steht Bei h 3 displaystyle h 3 nbsp konnen alle 1 Bit Fehler erkannt und korrigiert werden Treten 2 Bit Fehler auf werden diese unter Umstanden falsch korrigiert da das fehlerhafte Wort moglicherweise den Abstand 1 zu einem anderen gultigen Codewort hat Bei h 4 displaystyle h 4 nbsp konnen ebenfalls alle 1 Bit Fehler erkannt und korrigiert werden Treten 2 Bit Fehler auf konnen diese zwar erkannt aber nicht mehr korrigiert werden Der Hamming Abstand eines Codes ist notwendigerweise eine positive naturliche Zahl Ein Code mit Hamming Abstand 0 ist nicht moglich da sich in diesem Fall zwei Codeworter nicht unterscheiden liessen Ermitteln des Hamming Abstands eines Codes Bearbeiten Karnaugh Veitch Diagramm 4 3 2 3 43 2 1 2 32 1 X 1 23 2 1 2 34 3 2 3 4Die manuelle Ermittlung erfolgt am besten mit dem Karnaugh Veitch Diagramm Dort tragt man fur jeden vorkommenden Codewert ein Kreuz ein Liegen anschliessend mindestens zwei Kreuze horizontal oder vertikal direkt aneinander wobei gegenuberliegende Rander zusammenfallen so ist der Hamming Abstand 1 Liegen zwei Kreuze entweder nur diagonal aneinander oder mit einem Feld dazwischen horizontal oder vertikal zueinander so ist der Hamming Abstand 2 Das nebenstehende Karnaugh Veitch Diagramm fur 4 Bit graue Felder sind zyklische Wiederholungen zeigt den Abstand eines Codewerts von einem gegebenen Kreuz So kann man z B erkennen dass es mit 4 Bit nur zwei Werte mit Hamming Abstand 4 gibt und zwar ein komplementares Paar Bei binaren Codes kann der Hamming Abstand zweier Codeworter a displaystyle a nbsp und b displaystyle b nbsp auch durch a XOR b und das Auszahlen der Einsen im Ergebnis ermittelt werden Programmierung BearbeitenFolgendes Beispiel zeigt eine Implementierung in Pseudocode Diese Funktion berechnet den Hamming Abstand zwischen den Blocken a und b int hammingDistance string a string b int count 0 assert a length b length Strings mussen gleich lang sein for int i 0 i lt a length i if a i b i count return count Anwendungsbeispiel BearbeitenBei der Ubertragung von Daten muss sichergestellt werden dass Informationen nicht verfalscht bzw dass Veranderungen der Daten zumindest bemerkt werden Erkennen von n fach Fehlern und vielleicht noch korrigiert werden konnen Im folgenden Beispiel hat ein Drehschalter vier Einstellmoglichkeiten Diese werden elektronisch als binare Zahl Codewort an einen Empfanger ubermittelt 00 01 10 11 Der Empfanger erhalt das Codewort hat aber sonst keine Moglichkeit die Schalterstellung zu uberprufen oder zu erkennen Dies ist in technischen Anwendungen bereits der Fall wenn der Empfanger ein Mikrocontroller ist und der Sender aus den Sensoren innerhalb eines Schalters besteht Der Empfanger hat in diesem Szenario keine Moglichkeit eine Verfalschung bei der Ubertragung oder einen Defekt des Schalters z B defekte Sensoren im Schalter zu erkennen Mit Hilfe der Hamming Distanz und entsprechender Codes soll nun ein Weg gefunden werden Fehler beim Sender oder in der Leitung zu erkennen Der Hamming Abstand zwischen den genannten vier Werten 00 01 10 11 ist jeweils 1 d h falls durch einen Fehler nur ein Bit umgekehrt wird erhalt der Empfanger zwar ein anderes aber ebenso gultiges Codewort Wird eine 00 zu 01 verfalscht kann der Empfanger den Fehler allein an der Nachricht nicht erkennen weil sowohl der gewollte wie auch der verfalschte Wert eine gultige Stellung des Schalters beschreiben Um die Situation zu verbessern einigen sich Sender und Empfanger zunachst darauf nur bestimmte dafur aber langere Codeworter zu verwenden und in einer Tabelle deren Bedeutung festzulegen Dazu konnen beide beispielsweise die Codeworter 001 010 100 111 wahlen die jeweils zueinander den Hamming Abstand von 2 haben die ubrigen vier Codeworter mit drei Bit Lange werden nicht verwendet Bei einem einzelnen fehlerhaften Bit Einfachfehler verandert sich keines dieser vier Codeworter 001 010 100 111 in eines der anderen drei gultigen Codeworter Der Empfanger erkennt also wenn z B ein 011 ankommt dass ein Fehler aufgetreten sein muss Ein Code mit dem Hamming Abstand 2 ist aber nicht sicher korrigierbar wie dieses Beispiel zeigt Die 011 konnte durch umkehren von nur einem Bit aus einem der drei gultigen Codeworter 001 010 111 entstanden sein Wenn der Empfanger annimmt dass nur Einfachfehler auftreten und der Empfanger diese korrigieren mochte muss er mit dem Sender Codeworter vereinbaren die jeweils einen Hamming Abstand 3 haben z B 01011 01100 10010 10101 Wenn der Empfanger nun 01111 empfangt und er annimmt dass ein Einfachfehler aufgetreten ist dann kann 01111 nur aus dem gultigen Codewort 01011 entstanden sein bei dem das mittlere Bit verandert wurde Ein Doppelfehler kann ebenfalls erkannt werden Da Sender und Empfanger wissen dass sie nur bestimmte Codeworter verwenden die sich um mindestens drei Bit Hamming Abstand 3 unterscheiden fallt auch ein Doppelfehler nur zwei Bits geandert auf der aber mit den gesendeten Informationen nicht korrigiert werden kann Dreifachfehler konnen nicht mehr erkannt werden doch die Relevanz von mehrfachen Fehlern nimmt in technischen Systemen ab da das gleichzeitige Auftreten mehrerer Fehler immer unwahrscheinlicher wird je mehr Fehler zusammentreffen sollen Der Doppelfehler offnet die Moglichkeit eines Irrtums wie sich am Beispiel 01111 zeigen lasst Wenn 01111 durch einen Doppelfehler aus 01100 entstanden sein sollte aber der Empfanger es fur einen Einfachfehler halt und korrigiert dann wird aus dem eigentlich vom Sender gewollten 01100 durch den Doppelfehler ein 01111 und durch die Korrektur des Empfangers wegen der Annahme eines Einzelfehlers falschlicherweise eine 01011 Wegen der schon genannten abnehmenden Wahrscheinlichkeit von Mehrfachfehlern n fach Fehlern mit steigendem n kommt man in den meisten Anwendungen mit einem Hamming Abstand von 4 Erkennen von Dreifachfehlern bis 5 Korrigieren von Doppelfehlern aus Die notwendige Lange des Codewortes hangt vom geforderten Hamming Abstand und der Zahl der moglichen Schalterstellungen ab und ist in der oben stehenden Tabelle dargestellt Dort sieht man beispielsweise dass fur 20 verschiedene Positionen eines Schalters mindestens 8 Bit ubertragen werden mussen wenn alle 20 Codeworter zueinander mindestens den Hamming Abstand 3 erreichen sollen Reprasentation der Bit Kette in einem Hyperwurfel BearbeitenDie Idee der Hamming Distanz kann gut mit Hilfe von Hyperwurfeln dargestellt werden Ein Hyperwurfel ist die Generalisierung eines dreidimensionalen Wurfels auf die Dimension d displaystyle d nbsp Jeder Knoten der Figur entspricht einer Bitkombination die auch als Koordinatenangabe im Raum verstanden werden kann Die minimale Anzahl der Kanten die traversiert werden mussen um von einem gultigen Wort eines Codes zu einem anderen gultigen Wort des Codes zu gelangen entspricht der Hamming Distanz Beispiel Bearbeiten nbsp Hyperwurfel mit d 1 bis d 4Wenn im nebenstehenden Wurfel mit d 3 displaystyle d 3 nbsp die beiden Worter 101 010 fur einen Code gewahlt werden so betragt die minimale Hamming Distanz 3 Damit konnen in einer Sphare mit dem Abstand 1 um einen Punkt mit einem gultigen Wort z B fur das gultige Code Wort 010 alle Fehler 1 Bit Fehler erkannt und korrigiert werden 000 110 011 Wird ein Code mit den Wortern 000 101 110 011 gewahlt so betragt die minimale Hamming Distanz 2 Mit einem Hamming Abstand von 2 lassen sich 1 Bit Fehler lediglich erkennen aber nicht korrigieren beispielsweise lasst sich zwar erkennen dass 111 ein fehlerhaftes Wort darstellt jedoch nicht ob es nach 110 oder 011 oder 101 korrigiert werden soll Mindestdistanz BearbeitenDie Mindestdistanz zwischen zwei benachbarten Codewortern ist fur die Konstruktion eines Codes interessant der bei m displaystyle m nbsp Bitstellen fur Nutzinformation k displaystyle k nbsp Fehler korrigieren kann Bei Blockcodes mit fixiertem Alphabet liefern die Singleton Schranke die Hamming Schranke Stichwort t perfekt und die Plotkin Schranke allgemeinere Aussagen uber den maximalen Minimalabstand Es gilt fur einen Code mit Mindestabstand h displaystyle h nbsp dass k lt h 2 displaystyle k lt tfrac h 2 nbsp Fehler korrigierbar und h 1 displaystyle h 1 nbsp Fehler erkennbar sind Beispiel Bearbeiten Sollen alle 1 Bit Fehler korrigierbar sein also k 1 displaystyle k 1 nbsp so folgt durch Einsetzen und Umstellen h gt 2 displaystyle h gt 2 nbsp Mit h 3 displaystyle h 3 nbsp kann man aber nur 1 Bit Fehler korrigieren 2 Bit Fehler kann man zwar als Fehler erkennen aber weder korrigieren noch verlasslich von 1 Bit Fehlern unterscheiden Eine Fehlerkorrektur macht aus 2 Bit Fehlern meist 3 Bit Fehler Folgerung Bearbeiten Bei jedem Code muss die Hammingdistanz h displaystyle h nbsp somit mindestens 3 betragen damit uberhaupt Fehler korrigierbar sind Siehe auch BearbeitenHamming Ahnlichkeit Hamming Code Levenshtein Distanz Gestalt Pattern Matching Gray CodeLiteratur BearbeitenRichard W Hamming Error detecting and error correcting codes In Bell System Technical Journal XXIX 2 1950 S 147 160 Karsten Weicker Evolutionare Algorithmen 2 Auflage B G Teubner Verlag Wiesbaden 2007 ISBN 978 3 8351 0219 4 Weblinks BearbeitenErklarung und Online Visualisierung auch im Vergleich zur Levenshtein Distanz Technische Grundlagen der Informatik abgerufen am 12 Februar 2018 Fehlererkennung und Fehlerkorrektur in Codes abgerufen am 12 Februar 2018 Hamming Codes abgerufen am 12 Februar 2018 Abgerufen von https de wikipedia org w index php title Hamming Abstand amp oldid 231776258