Kody Hamminga
Transkrypt
Kody Hamminga
WSTP DO TEORII INFORMACJI I KODOWANIA Grzegorz Szkibiel Wiosna 2013/14 Spis tre±ci 1 Kodowanie i dekodowanie 1.1 1.2 1.3 1.4 1.5 Kodowanie a szyfrowanie . . . . . . . Podstawowe poj¦cia . . . . . . . . . . Dekodowanie jednoznaczne . . . . . . Kody blokowe i natychmiastowe . . . Przykªady znanych kodów blokowych . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 4 5 7 7 8 2 Twierdzenia Krafta i McMillana 10 3 Kody Humana 13 2.1 2.2 3.1 3.2 3.3 Konstruowanie kodów natychmiastowych . . . . . . . . . . . . 10 Twierdzenia . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 ródªo informacji . . . . . . . . . . . . . . . . . . . . . . . . . 13 Denicja kodu Humana . . . . . . . . . . . . . . . . . . . . . 14 Konstrukcja kodu Humana . . . . . . . . . . . . . . . . . . . 15 4 Kompresowanie kodów i entropia 4.1 4.2 4.3 4.4 4.5 4.6 4.7 Przykªad kompresowania danych . . . . . . . . . . . Idea entropii . . . . . . . . . . . . . . . . . . . . . . Denicja entropii . . . . . . . . . . . . . . . . . . . Maximum i minimum entropii . . . . . . . . . . . . Rozszerzenie ¹ródªa . . . . . . . . . . . . . . . . . . Entropia a przeci¦tna dªugo±¢ sªowa kodowego . . . Twierdzenie Shannona o kodowaniu bezszumowym . 5 Pewna komunikacja poprzez niepewne ª¡cza 5.1 5.2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 18 19 20 21 23 24 25 27 Symetryczne ª¡cze binarne . . . . . . . . . . . . . . . . . . . . 27 Pr¦dko±¢ przepªywu informacji . . . . . . . . . . . . . . . . . . 29 2 5.3 5.4 5.5 Bariera pojemno±ci . . . . . . . . . . . . . . . . . . . . . . . . 30 Odlegªo±¢ Hamminga . . . . . . . . . . . . . . . . . . . . . . . 31 Wykrywanie i poprawianie bª¦dów . . . . . . . . . . . . . . . . 33 6 Kody liniowe 6.1 6.2 6.3 6.4 6.5 6.6 6.7 Denicja . . . . . . . . . . . . . . Macierz generuj¡ca . . . . . . . . Równania opisuj¡ce kody . . . . . Macierz sprawdzaj¡ca . . . . . . . Waga Hamminga . . . . . . . . . Syndrom . . . . . . . . . . . . . . Wykrywanie i poprawianie bª¦dów . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Optymalne kody poprawiaj¡ce pojedyncze bª¦dy Przykªady kodów Hamminga . . . . . . . . . . . Dekodowanie kodów Hamminga . . . . . . . . . Uwagi ko«cowe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 Kody Hamminga 7.1 7.2 7.3 7.4 8 Kody ReedaMüllera 8.1 8.2 8.3 8.4 8.5 Funkcje Boole'a . . . . . . . . . . . Wielomiany Boole'a . . . . . . . . . Kody ReedaMüllera . . . . . . . . Geometria aniczna nad ciaªem Z2 Dekodowanie kodu Reeda-Müllera . 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 35 36 39 40 41 43 44 46 46 48 49 50 51 51 54 56 60 63 Rozdziaª 7 Kody Hamminga 7.1 Optymalne kody poprawia j¡ce po jedyncze bª¦dy Zajmiemy si¦ teraz kodami liniowymi, 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 zadaniem jest skonstruowanie optymalnego kodu poprawiaj¡cego pojedyncze bª¦dy, czyli liczba bitów sprawdzaj¡cych powinna by¢ mo»liwie najmniejsza. Pierwszy punkt zaczepienia daje nam nast¦puj¡ce twierdzenie. 7.1 Twierdzenie. Ka»dy binarny kod liniowy dªugo±ci dyncze bª¦dy ma co najmniej dlog2 (n + 1)e n poprawiaj¡cy poje- bitów sprawdzaj¡cych. Zaªó»my, »e K jest naszym kodem liniowym i »e ma on r bitów sprawdzaj¡cych. Wynika st¡d, »e bitów informacyjnych jest n − r. Rozwa»my bloki informacyjne, w których wyst¦puje dokªadnie jedna jedynka. Takich bloków jest n − r. Poniewa» K poprawia pojedyncze bª¦dy, wi¦c jego minimalna waga musi by¢ wi¦ksza lub równa 3. Zatem w±ród bitów sprawdzaj¡cych odpowiadaj¡cych rozwa»anym blokom informacyjnym musz¡ si¦ znajdowa¢ przynajmniej dwie jedynki. Otrzymujemy wi¦c nierówno±¢ r r r n−r ≤ + + ··· + , 2 3 r Dowód. która musi by¢ speªniona. Jest ona równowa»na nierówno±ci n − r ≤ 2r − 1 − r. 46 Z ostatniej nierówno±ci otrzymujemy log2 (n + 1) ≤ r. Poniewa» r jest liczb¡ caªkowit¡, wi¦c dlog2 (n + 1)e ≤ r. Wobec powy»szego twierdzenia, ªatwo jest zauwa»y¢, »e nasz optymalny kod powinien mie¢ dªugo±¢ 2m − 1 oraz posiada¢ dokªadnie m bitów sprawdzaj¡cych. Przyjrzyjmy si¦ teraz jak powinna wygl¡da¢ macierz sprawdzaj¡ca kod poprawiaj¡cy pojedyncze bª¦dy. 7.2 Twierdzenie. Dwójkowy kod K poprawia pojedyncze bª¦dy wtedy i tylko wtedy, gdy ka»da jego macierz sprawdzaj¡ca ma niezerowe i parami ró»ne kolumny. Zaªó»my najpierw, »e K poprawia pojedyncze bª¦dy. Niech H b¦dzie macierz¡ sprawdzaj¡c¡ kod K , w której jedna kolumna (powiedzmy j -ta) skªada si¦ z samych zer. Wówczas sªowo o wadze Hamminga 1, które jedyn¡ jedynk¦ ma na pozycji j -tej jest sªowem kodowym. Zatem K nie mo»e poprawia¢ pojedynczych bª¦dów. Zaªó»my teraz, »e macierz sprawdzaj¡ca kod K ma identyczne dwie kolumny, powiedzmy i-t¡ oraz j -t¡. Wtedy sªowo o wadze Hamminga 2, które ma jedynki na pozycjach i-tej oraz j -tej jest sªowem kodowym, co znów oznacza, »e K nie mo»e poprawi¢ pojedynczych bª¦dów. Zaªó»my teraz, »e H jest macierz¡ sprawdzaj¡c¡ kod K , która nie ma kolumn skªadaj¡cych si¦ z samych zer oraz nie ma dwóch identycznych kolumn. Mno»¡c H przez sªowo w którym wyst¦puje dokªadnie jedna jedynka (powiedzmy na pozycji j ), otrzymamy j -t¡ kolumn¦ macierzy H , która nie jest zerowa. Zatem sªowa o wadze Hamminga 1 nie s¡ sªowami kodowymi. Podobnie, je±li pomno»ymy H przez sªowo maj¡ce jedynki na pozycjach i oraz j otrzymamy sum¦ i-tej i j -tej kolumny macierzy H . Poniewa» kolumny te s¡ ró»ne, wi¦c suma nie b¦dzie zerowa. Zatem sªowa o wadze Hamminga 2 te» nie s¡ sªowami kodowymi. Tak wi¦c waga minimalna kodu K wynosi przynajmniej 3, czyli K poprawia pojedyncze bª¦dy. Dowód. Z powy»szego twierdzenia w poª¡czeniu z dyskusj¡ po twierdzeniu 7.1 wnioskujemy jak powinna wygl¡da¢ macierz sprawdzaj¡ca optymalny kod poprawiaj¡cy pojedyncze bª¦dy: powinna mie¢ ona 2m − 1 parami ró»nych, niezerowych kolumn. Czyli jej kolumnami powinny by¢ wszystkie liczby od 1 do 2m − 1 zapisane w ukªadzie dwójkowym. Liniowy kod dwójkowy K nazywamy kodem Hamminga, je±li dla pewnego m ≥ 2 macierz sprawdzaj¡ca kod H ma m wierszy oraz 2m − 1 kolumn, które 47 stanowi¡ liczby od 1 do 2m − 1 zapisane w systemie o podstawie 2 (lub ka»de niezerowe sªowo binarne dªugo±ci m jest pewn¡ kolumn¡ macierzy H ). 7.2 Przykªady kodów Hamminga Z podanej denicji 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¢ Hm . Dla H2 , macierz¡ sprawdzaj¡c¡ 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 H2 = K3 . Macierz¡ generuj¡c¡ kod H2 jest 1 1 1 . Rozwa»my teraz kod H3 . Jego macierz¡ sprawdzaj¡c¡ jest 0 0 0 1 1 1 1 0 1 1 0 0 1 1 . 1 0 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 + x 4 x7 = x1 + x2 + x 4 . Je±li wi¦c x1 , x2 , x3 oraz x4 s¡ bitami informacyjnymi, to macierz generuj¡ca H3 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 48 Kod H3 jest najprostszym nietrywialnym kodem Hamminga. Kody Hamminga Hm dla m > 3 staj¡ si¦ do±¢ niewygodne w zapisie. Podamy tu jeszcze macierz sprawdzaj¡c¡ kod H4 , 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 7.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 i otrzymanego sªowa. Tym razem jednak nie trzeba konstruowa¢ tabeli reprezentantów warstw oraz odpowiadaj¡cej im listy syndromów jak w poprzednim rozdziale, poniewa» tutaj syndrom jest zapisanym w ukªadzie dwójkowym numerem pozycji znieksztaªconego bitu. Dla przykªadu, rozwa»my sytuacj¦, w której otrzymujemy sªowo 1101011 (wykorzystujemy kod H3 ). Jego syndromem jest 1 1 0 0 0 1 1 1 1 1 0 T s = 0 1 1 0 0 1 1 1 = 1 , 1 0 1 0 1 0 1 0 0 1 1 co oznacza, »e znieksztaªcony zostaª (110)2 = 6 bit. Zatem otrzymane sªowo dekodujemy jako 1101001. Dlaczego opisany powy»ej algorytm jest prawidªowy? Aby odpowiedzie¢ na to pytanie, zaªó»my, »e otrzymali±my sªowo w = w1 w2 . . . w2m −1 ze znieksztaªconym jednym bitem. Przyjmijmy, »e bª¡d wyst¡piª na pozycji i. Znieksztaªcenie bita jest równowa»ne dodaniu sªowa di , które ma zera na wszystkich pozycjach z wyj¡tkiem i-tej. Zatem w = v + di , gdzie v jest wysªanym sªowem kodowym. Je±li macierz sprawdzaj¡c¡ oznaczymy przez H , to syndrom (transponowany) jest równy H wT = H vT + H dTi = H dTi . 49 Ale ostatni iloczyn to i-ta kolumna macierzy H , czyli i zapisane w systemie o podstawie 2. Dowodzi to sªuszno±ci przedstawionego algorytmu. 7.4 Uwagi ko«cowe Zauwa»my, »e pr¦dko±¢ przepªywu informacji dla kodów Hamminga wynosi R=1− m . −1 2m 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 Hm 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) Hm wynosi dokªadnie 3. Optymalno±¢ (w sensie opisanym na pocz¡tku) 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. 50