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