Informatik Repetition Code Frage?
0 und 1 wird kodiert zu
000 und 111
Das sind unsere Codewörter. Die Hamming Distanz ist 3.
Jedem dieser Codewörter wird nun ein Fehlercodewort zugeordnet, das sich in einem Bit unterscheidet, also 001, 010, 100 gehören zu 000 und kann korrigiert werden. Bei 111 analog vorgehen.
Da die Hamming Distanz 3 ist, kann 1 Bit Fehler korrigiert werden. Aber anscheinend können 2 Bit Fehler erkannt werden, warum?
000 wird zu 011 (zwei Bit Fehler) und das wird korrigiert zu 111 (ist dem eben am ähnlichsten)... Damit ist die Korrektur falsch und Hamming, liefert meiner Meinung Schwachsinn...
2 Antworten
Ja ein Bitfehler wird bei deinem Beispiel Korrigiert
Genau das ist der Punkt. Hamming sagt 2 Bitfehler könnten erkannt werden, das ergibt aber keinen Sinn.
Es wird trotzdem vom Algorithmus erkannt, dass da ein Fehler ist. Ggf. wird nur falsch korrigiert. Das Ergebnis müsste so aussehen: Die Nachricht war nicht fehlerfrei. Unter der Annahme, dass es nur ein Fehler war, konnte dieser korrigiert werden. Mehr ist nicht möglich - bei keinem Fehlerkorrigierenden Verfahren. Lediglich die Wahrscheinlichkeiten variieren.
Doch erkannt schon - nur können die 2 Bit Fehler nicht eindeutig repariert werden.
Es wäre eine 50/50 Chance.
Unter der Annahme, dass es nur ein Fehler war, konnte dieser korrigiert werden. Mehr ist nicht möglich - bei keinem Fehlerkorrigierenden Verfahren.
Natürlich könnten auch mehrere Bitfehler korrigiert werden, nur nicht bei diesem Einfachen Beispiel
Erkennen heißt eben nicht, dass es richtig korrigiert werden kann. Erkennen heißt nur, dass du siehst, dass ein Fehler da ist.
Bei zwei Bit Fehlern stimmt das Ergebnis nicht, es ist weder 000 noch 111. Daran kannst du erkennen, das es einen Übertragungsfehler gab. Aber du kannst keine weiteren Rückschlüsse ziehen.
Das automatische Korrigieren funktioniert immer nur mit einer gewissen Wahrscheinlichkeit... Bei 1Bit-Fehlern garantiert es dir zwar, dass es funktioniert - aber dir kann ja nicht garantiert werden, dass du wirklich nur einen Fehler hast.
Erkennen heißt eben nicht, dass es richtig korrigiert werden kann. Erkennen heißt nur, dass du siehst, dass ein Fehler da ist.
Macht Sinn!
2 Bitfehler würde ich nach wie vor sehen, die Korrektur, die mein System darauf automatisch machen kann, könnte einen Restfehler enthalten, da eben nicht sicher ist ob der Fehler 1 Bit oder 2 Bit betrug. Schlechter Code! Danke :)
Ja genau. Du kannst mit sämtlichen Erkennungs- und Korrigierungsverfahren nur die Wahrscheinlichkeit ändern, dass es einen Fehler gibt. Darauf bauen die Aussagen: x-Bit Fehler können erkannt, y Fehler korrigiert werden. 100%ige Sicherheit hast du nie. Es könnten ja auch alle 3 Bits falsch übertragen werden.
Wenn du aber z.B. weißt, dass Zwei-Bit-Fehler extrem selten sind, ist korrigieren trotzdem sinnvoll.
aber der zweite Fehler würde nicht erkannt werden, weil er einfach falsch korrigiert wird ;)