|
Die Fehlerkorrektur ist eine Abbildung fehlerhafter (und fehlerfreier) Codewörter auf fehlerfreie Codewörter. Wieviele fehlerhafte Codewörter werden jeweils auf ein korrektes abgebildet? Geht man von einem korrekten Wort der Länge m+k Bit aus, so gibt es m+k Möglichkeiten für 1 Fehler. Für 2 Fehler hat man (m+k über 2) Möglichkeiten. Die Anzahl unterschiedlicher Bits zweier Wörter, hier also die Anzahl der Fehler, nennt man Hammingabstand. Die Menge aller Wörter mit einem Hammingabstand e oder weniger zu einem Wort nennt man Hammingkugel mit Radius e.
Soll also ein Code e Fehler korrigieren so liegen in der Hammingkugel mit Radius e folgende Anzahl an Woertern
1 das fehlerfreie Wort
+ m+k Woerter mit einem Fehler
/m+k\
+ | | Woerter mit zwei Fehlern
\ 2 /
+ ....
/m+k\
+ | | Woerter mit e Fehlern
\ e /
Alle diese Woerter müssen eindeutig auf das fehlerfreie Wort abgebildet
werden, sprich die Hammingkugeln dürfen sich nicht schneiden.
Die Redundanz der k Korrekturbits dient nun dazu alle diese Fehlerfälle
zu unterscheiden und muß daher mindestens so groß sein sein.
e
k ___ / m+k \
2 >= \ | |
/__ \ i /
i=0
Es muß noch darauf hingewiesen werden, daß die Gleichheitsbedingung
nur selten auftritt.
Ein "verschnittfreier" Code ist nur für wenige m und e möglich.
Bei vielen Codes gibt es daher
neben den korrigierbaren Wörtern auch noch welche die außerhalb aller
Hammingkugeln liegen. Diese werden zwar als fehlerhaft erkannt, können aber
nicht mehr eindeutig zugeordnet werden.
Fehlererkennung und Korrigierbarkeit sind dann unterschiedlich.

( 1101 )
| 1011 |
| 1000 |
G = | 0111 |
| 0100 |
| 0010 |
( 0001 )
( 1010101 )
H = | 0110011 |
( 0001111 )
/1\
|0|
( 1010101 ) |0| /1\
H c = | 0110011 | |0| = |1| -> Fehler in Bit 3
( 0001111 ) |1| \0/
|0|
\1/
S1 = ((K1 AND K2) OR (K3 AND K4)) AND A1und
S2 = ((K1 OR K3) AND A1) AND ((K2 OR K4) AND A2).

lambda klein, mu groß => Ki zuverlässig, Ai unzuverlässig => phi(S1, T) > phi(S2, T)
z.B. lambda = 10^(-6)/h, mu = 1/h =>
phi(S1, 10^3 h) = (1 - (1 - (e^(-10^(-6)/h * 10^3 h))^2)^2) * e^(-1/h * 10^3h)
= 0,999 996 0 * e-1000 = 1/e^1000
phi(S2, 10^3 h) = (1 - (1 - (e^(-10^(-6)/h * 10^3 h)))^2)^2 * (e^(-1/h) * 10^3h)^2
= 0,999 998 0 * e-2000 = 1/e^1000 * 1/e^1000
lambda groß, mu klein => Ki unzuverlässig, Ai zuverlässig => phi(S1) < phi(S2)
z.B. lambda = 100/h, mu = 10^(-6)/h => phi(S1, 10^3 h) = (1 - (1 - (e^(-10))^2)^2) * e^(-0,001) = 4 * 10^(-9) * 1
phi(S2, 10^3 h) = (1 - (1 - (e^(-10))^2)^2) * (e^(-0,001))^2 = 8,2 * 10-9 * 1^2