6 Kody Hamminga

Transkrypt

6 Kody Hamminga
6
Kody Hamminga
6.1
Optymalne kody poprawiające pojedyncze błędy
Zajmiemy się teraz kodami, które zostały skonstruowane w celu wykrywania
pojedynczych błędów. Jak wiadomo, taki kod powinien mieć wagę minimalną
większą lub równą 3. Naszym problemem jest skonstruowanie optymalnego
kodu poprawiającego pojedyncze błędy, czyli liczba bitów sprawdzających
powinna być jak najmniejsza.
Twierdzenie. Każdy binarny kod liniowy długości n poprawiający pojedyncze błędy ma co najmniej log2 (n + 1) bitów sprawdzających.
Wobec powyższego twierdzenia, łatwo jest zauważyć, że optymalny kod,
którego szukamy powinien mieć długość 2m − 1 oraz posiadać dokładnie
m bitów sprawdzających. Ponieważ waga minimalna nie może być mniejsza
od 3, więc 2m − 1 ≥ 3, czyli m ≥ 2.
Przyjrzyjmy się teraz jak powinna wyglądać macierz sprawdzająca parzystość optymalnego kodu poprawiającego pojedyncze błędy.
Twierdzenie. Dwójkowy kod K poprawia pojedyncze błędy wtedy i tylko
wtedy, gdy każda macierz sprawdzająca jego parzystość ma niezerowe i parami różne kolumny.
Z powyższych twierdzeń wnioskujemy jak powinna wyglądać macierz sprawdzająca parzystość optymalnego kodu. Jej kolumnami powinny być wszystkie kombinacje zer i jedynek długości m. Taki kod nazywamy kodem Hamminga.
6.2
Przykłady kodów Hamminga
Z rozważań poprzedniego podrozdziału wynika, że kody Hamminga zależą od
jednego paramatru m, który jest liczbą naturalną większą lub równą 2. Kody
Hamminga będziemy więc oznaczać KHm . Dla KH2 , macierz sprawdzająca
parzystość jest macierzą 2 × 3:
0 1 1
.
1 0 1
Zatem kod jest opisany układem równań
x2 + x3 = 0
x1 + x3 = 0,
który jest równoważny równaniu
x1 = x2 = x3 . Zatem KH2 = K3 . Macierzą
generującą kodu KH2 jest 1 1 1 .
37
Rozważmy teraz kod KH3 . Jego

0 0 0
0 1 1
1 0 1
macierzą sprawdzającą parzystość jest

1 1 1 1
0 0 1 1 .
0 1 0 1
Kod jest więc opisany układem równań
x4 + x5 + x6 + x7 = 0
x2 + x3 + x6 + x7 = 0
x1 + x3 + x5 + x7 = 0,
który jest równoważny poniższemu:
x5 = x2 + x3 + x4
x6 = x1 + x3 + x4
x7 = x1 + x2 + x4 .
Jeśli więc x1 , x2 , x3 oraz x4 są bitami informacyjnymi, to macierz generująca
KH3 ma postać


1 0 0 0 0 1 1
0 1 0 0 1 0 1


0 0 1 0 1 1 0 .
0 0 0 1 1 1 1
Kod KH3 jest najprostszym nietrywialnym kodem Hamminga. Kody
Hamminga KHm dla m > 3, stają się dość niewygodne w zapisie. Podamy
tu jeszcze macierz sprawdzającą parzystość kodu KH4 , ale nie będziemy tego
kodu szczegółowo rozważać.


0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 


 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 .
1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
6.3
Dekodowanie kodów Hamminga
Jedną z przyczyn, dla których kody Hamminga są dość popularne jest łatwość ich dekodowania. Tak jak w przypadku ogólnym, dekodowanie polega
na obliczeniu syndromu, którym jest iloczyn macierzy sprawdzającej parzystość i otrzymanego słowa. Tym razem jednak nie trzeba konstruować tabeli
38
warstw oraz odpowiadajacej im listy syndromów, ponieważ syndrom, to zapisany w układzie dwójkowym numer pozycji zniekształconego bitu. Dla przykładu, rozważmy sytuację, w której otrzymujemy słowo 1101011 (wykorzystujemy kod KH3 ). Jego syndromem jest
 
1
1

   

0 0 0 1 1 1 1 
1
0
T

1 ,
s = 0 1 1 0 0 1 1 1
=


1 0 1 0 1 0 1 
0
0
 
1
1
co oznacza, że zniekształcony został bit o numerze (110)2 = 22 + 21 = 6.
Zatem otrzymane słowo dekodujemy jako 1101001.
Załóżmy, że otrzymaliśmy słowo 1110101. Obliczamy jego syndrom:
 
1
1

   
0 0 0 1 1 1 1 
1
0


T





s = 0 1 1 0 0 1 1 0 = 1 .

1 0 1 0 1 0 1 
0
1
0
1
Oznacza to, że błąd wystąpił na pozycji (010)2 = 21 = 2. Oznacza to, że
wysłane zostało słowo 1010101.
6.4
Uwagi końcowe
Zauważmy, że prędkość przepływu informacji dla kodów Hamminga wynosi
R=1−
m
.
2m − 1
Zatem jeśli m → ∞, to R → 1.
Odległość minimalna dla każdego kodu Hamminga wynosi 3. Wynika
to z dwóch faktów. Po pierwsze, pokazaliśmy, że KHm poprawia pojedyncze błędy, zatem odległość minimalna musi wynosić przynajmniej trzy.
Po drugie, słowo 11100 . . . 0 jest słowem kodowym w dowolnym kodzie Hamminga, więc waga minimalna (a więc i odległość minimalna) KHm wynosi
dokładnie 3.
39
Optymalność (w sensie opisanym na początku rozdziału) ma też swoje
wady. Otóż każde słowo jest albo słowem kodowym, albo jego odległość
Hamminga od pewnego słowa kodowego wynosi dokładnie 1. Oznacza to, że
jeśli w wyniku transmisji wystąpiły dwa błędy, to otrzymane słowo zostanie
na pewno źle rozkodowane.
40