Kody Hamminga

Transkrypt

Kody Hamminga
WST†P 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