wst p do teorii informacji i kodowania grzegorz...
TRANSCRIPT
Spis tre±ci
1 Kodowanie i dekodowanie 4
1.1 Kodowanie a szyfrowanie . . . . . . . . . . . . . . . . . . . . . 41.2 Podstawowe poj¦cia . . . . . . . . . . . . . . . . . . . . . . . . 51.3 Dekodowanie jednoznaczne . . . . . . . . . . . . . . . . . . . . 71.4 Kody blokowe i natychmiastowe . . . . . . . . . . . . . . . . . 71.5 Przykªady znanych kodów blokowych . . . . . . . . . . . . . . 8
2 Twierdzenia Krafta i McMillana 10
2.1 Konstruowanie kodów natychmiastowych . . . . . . . . . . . . 102.2 Twierdzenia . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
3 Kody Hu�mana 13
3.1 �ródªo informacji . . . . . . . . . . . . . . . . . . . . . . . . . 133.2 De�nicja kodu Hu�mana . . . . . . . . . . . . . . . . . . . . . 143.3 Konstrukcja kodu Hu�mana . . . . . . . . . . . . . . . . . . . 15
4 Kompresowanie kodów i entropia 19
4.1 Przykªad kompresowania danych . . . . . . . . . . . . . . . . . 194.2 Idea entropii . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204.3 De�nicja entropii . . . . . . . . . . . . . . . . . . . . . . . . . 214.4 Maximum i minimum entropii . . . . . . . . . . . . . . . . . . 224.5 Rozszerzenie ¹ródªa . . . . . . . . . . . . . . . . . . . . . . . . 244.6 Entropia a przeci¦tna dªugo±¢ sªowa kodowego . . . . . . . . . 254.7 Twierdzenie Shannona o kodowaniu bezszumowym . . . . . . . 26
5 Pewna komunikacja poprzez niepewne ª¡cza 28
5.1 Symetryczne ª¡cze binarne . . . . . . . . . . . . . . . . . . . . 285.2 Pr¦dko±¢ przepªywu informacji . . . . . . . . . . . . . . . . . . 30
2
5.3 Bariera pojemno±ci . . . . . . . . . . . . . . . . . . . . . . . . 315.4 Odlegªo±¢ Hamminga . . . . . . . . . . . . . . . . . . . . . . . 325.5 Wykrywanie i poprawianie bª¦dów . . . . . . . . . . . . . . . . 34
6 Kody liniowe 36
6.1 De�nicja . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 366.2 Macierz generuj¡ca . . . . . . . . . . . . . . . . . . . . . . . . 376.3 Równania opisuj¡ce kody . . . . . . . . . . . . . . . . . . . . . 406.4 Macierz sprawdzaj¡ca parzysto±¢ . . . . . . . . . . . . . . . . 416.5 Waga Hamminga . . . . . . . . . . . . . . . . . . . . . . . . . 426.6 Syndrom . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 446.7 Wykrywanie i poprawianie bª¦dów . . . . . . . . . . . . . . . . 45
7 Kody Hamminga 47
7.1 Optymalne kody poprawiaj¡ce pojedyncze bª¦dy . . . . . . . . 477.2 Przykªady kodów Hamminga . . . . . . . . . . . . . . . . . . . 497.3 Dekodowanie kodów Hamminga . . . . . . . . . . . . . . . . . 507.4 Uwagi ko«cowe . . . . . . . . . . . . . . . . . . . . . . . . . . 51
8 Kody Reeda�Müllera 52
8.1 Funkcje Boole'a . . . . . . . . . . . . . . . . . . . . . . . . . . 528.2 Wielomiany Boole'a . . . . . . . . . . . . . . . . . . . . . . . . 558.3 Kody Reeda�Müllera . . . . . . . . . . . . . . . . . . . . . . . 578.4 Geometria a�niczna nad ciaªem Z2 . . . . . . . . . . . . . . . 618.5 Dekodowanie kodu Reeda-Müllera . . . . . . . . . . . . . . . . 64
3
Rozdziaª 1
Kodowanie i dekodowanie
Teoria informacji zajmuje si¦ sposobami gromadzenia, przechowywania orazprzesyªania informacji. Przesyªanie odbywa si¦ za pomoc¡ ª¡czy kablowych,czy te» za po±rednictwem przeka¹ników fal. Zatem, by przesªa¢ wiadomo±¢musimy j¡ zakodowa¢. Informacje kodujemy te» dla ochrony przed intruzami.Teoria kodowania zajmuje si¦ sposobami zakodowania lub zaszyfrowania in-formacji.
1.1 Kodowanie a szyfrowanie
Te dwa wyrazy cz¦sto s¡ stosowane zamiennie, co jest bª¦dem. Na przykªad,znaki drogowe s¡ przykªadem pewnego kodu: zamiast pisa¢ informacje natabliczce, narysowany jest pewien symbol w �gurze okre±lonego ksztaªtu.Jest tak, by ka»dy ªatwo rozpoznaª i odczytaª informacj¦. Celem nie jest tuukrycie informacji tak, by tylko nieliczni mogli j¡ odczyta¢.
Podobnie, podczas rozmowy telefonicznej, wypowiedziane sªowa s¡ kodowane,by mo»na je byªo przesªa¢ do aparatu odbiorcy. Dzwoni¡cy cz¦sto nie wie,jakiego typu telefon ma odbieraj¡cy. Dlatego kod rozmowy powinien by¢ od-czytany przez ka»dy telefon. Tak zwana czerwona linia Waszyngton - Moskwaposiada urz¡dzenia szyfruj¡ce, pozwalaj¡ce zrozumie¢ tylko tre±ci przesyªaneprzez okre±lony aparat telefoniczny.
Ka»dy j¦zyk mówiony te» jest przykªadem pewnego kodu sªu»¡cemu przesyªowiinformacji, dzi¦ki którym porozumiewamy si¦.
4
Rysunek 1.1: Znaki drogowe
1.2 Podstawowe poj¦cia
Aby zakodowa¢ dan¡ wiadomo±¢ stosujemy pewnego rodzaju alfabet kodowy.Najcz¦±ciej jest to zbiór dwuelementowy {0, 1}, czyli danej literze alfabetuprzypisujemy pewien ci¡g zer i jedynek. Sªowa tworzymy poprzez poª¡czeniekodów liter wyst¦puj¡cych w tym sªowie. Chcemy generalnie dwóch rzeczy:
1) Aby zakodowana wiadomo±¢ byªa jak najkrótsza, wi¦c aby transmisjainformacji trwaªa mo»liwie nakrócej.
2) Aby zakodowana wiadomo±¢ byªa zabezpieczona przed znieksztaªceni-ami jakie mog¡ powsta¢ przy jej przesyªaniu.
Zauwa»my, »e punkty 1) oraz 2) przecz¡ sobie � im krótszy jest kod� tym ªatwiej jest uczyni¢ go nierozszyfrowywalnym poprzez znieksztaªce-nie paru znaków. Powstaje zatem problem pogodzenia powy»szych dwóch»ycze«. Na pocz¡tek zaªo»ymy, »e kody nie ulegaj¡ znieksztaªceniu, wi¦cª¡cze, po którym przesyªamy wiadomo±¢ nie jest podatne na szumy. Przytym zaªo»eniu spróbujemy maksymalnie skompresowa¢ informacje. Nast¦p-nie otrzymany skompresowany kod uczynimy odpornym na szumy poprzezdodanie do niego pewnych znaków sprawdzaj¡cych.
Dowolny sko«czony zbiór nazywamy alfabetem, jego elementy literamilub symbolami, a sko«czone lub niesko«czone ci¡gi zªo»one z liter nazywamywyrazami, sªowami lub wiadomo±ciami.
Niech A oraz B oznaczaj¡ dwa sko«czone zbiory. Oznaczmy przez w(B)zbiór wszystkich sko«czonych sªów zapisanych za pomoc¡ alfabetuB. Dowolna
5
A 0 1 2 3 4w(B) 00011 11000 10100 01100 10010A 5 6 7 8 9
w(B) 01010 00110 10001 01001 00101
Rysunek 1.2: Kod 2�z�5
funkcja f : A→ w(B) nazywa si¦ kodowaniem. Jej obraz nazywamy kodem.Alfabet A nazywamy alfabetem ¹ródªowym, natomiast alfabet B nazywamyalfabetem kodowym. Je±li alfabet kodowy ma dokªadnie dwa elementy, tokodowanie nazywamy binarnym, dwójkowym lub zero�jedynkowym.
1.1 Przykªad. Niech A = {0, 1, . . . , 9} i B = {0, 1}. Przykªadem kodu jestfunkcja z rysunku 1.2.
Zauwa»my, »e w ka»dym sªowie kodu 2�z�5 wyst¦puj¡ dokªadnie dwie je-dynki. Policzmy ile jest mo»liwo±ci zakodowania symbolu sªowem zapisanymalfabetem B, w którym wyst¦puj¡ dwie jedynki. Liczba tych mo»liwo±ci to(52
)= 10. Zatem nasze kodowanie jest suriekcj¡. Wyraz 173 kodujemy jako
110001000101100. Nie u»ywamy spacji, poniewa» mo»e ona by¢ traktowanajako litera. Zakodowan¡ w powy»ej wiadomo±¢ 110001000101100 mo»emyrozkodowa¢ bior¡c zawsze blok pi¦ciu znaków i odczytuj¡c z tabelki co onoznacza. Innym sposobem rozkodowania jest u»ycie klucza 01247 jako wagodpowiedniego symbolu w kodzie. Dokªadnie, 110001000101100 rozszyfrowu-jemy nast¦puj¡co
1 · 0 + 1 · 1 + 0 · 2 + 0 · 4 + 0 · 7 = 1
1 · 0 + 0 · 1 + 0 · 2 + 0 · 4 + 1 · 7 = 7
0 · 0 + 1 · 1 + 1 · 2 + 0 · 4 + 0 · 7 = 3.
Wyj¡tkiem jest tu liczba 0, która rozkodowuje si¦ w ten sposób jako 11(zamiast 0). Zauwa»my, »e ka»dy kod rozkodowujemy natychmiastowo (tj.do rozkodowania potrzebny nam jest blok pi¦ciu bitów) oraz jednoznacznie.
6
a b c d e00 10 101 110 1001
Rysunek 1.3: Kod niejednoznacznie dekodowalny
1.3 Dekodowanie jednoznaczne
Dla alfabetów ¹ródªowego A oraz kodowego B, niech K : A → w(B) b¦dziekodowaniem. Kodowaniem wiadomo±ci ¹ródªowej nazywamy funkcj¦K∗ : w(A)→ w(B)okre±lon¡ wzorem
K∗(a1a2 . . . an) = K(a1)K(a2) . . . K(an).
KodowanieK nazywamy jednoznacznie dekodowalnym, je±liK∗ jest ró»nowarto±-ciowa.
Studiuj¡c procedur¦ dekodowania, ªatwo jest zauwa»y¢, »e kod 2�z�5 zprzykªadu 1.1 jest jednoznacznie dekodowalny.
1.2 Przykªad. Kod z rysunku 1.3 nie jest jednoznacznie dekodowalny. Ci¡g10110 mo»e tu by¢ rozkodowany jako cb lub te» jako bd. Zauwa»my, »efunkcja K jest ró»nowarto±ciowa, natomiast generowana przez ni¡ funkcjaK∗ nie jest.
1.4 Kody blokowe i natychmiastowe
Kodowanie, którego kod skªada si¦ z parami ró»nych wyrazów o jednakowejdªugo±ci n nazywamy kodem blokowym dªugo±ci n. Kodowanie nazywamynatychmiastowym, je»eli »adne sªowo kodowe nie jest pocz¡tkiem innegosªowa kodowego, tj. je±li element alfabetu ¹ródªowego ma kod b1b2 . . . bn,to »aden inny element tego alfabetu nie ma kodu b1b2 . . . bnbn+1 . . . bm.
Kod 2�z�5 jest przykªadem kodu blokowego dªugo±ci 5. Kody blokowes¡ ªatwo dekodowalne, ale staj¡ si¦ za dªugie je±li pewne symbole ¹ródªowepojawiaj¡ si¦ w wiadomo±ci zbyt cz¦sto. Warto wówczas zastosowa¢ kodnatychmiastowy, w którym sªowa s¡ ró»nej dªugo±ci.
7
0 000 4 1001 001 5 1012 010 6 1103 011 7 111.
Rysunek 1.4: Kod ósemkowy
1.3 Przykªad. Kod Morse'a jest tak pomy±lany, »e najcz¦±ciej (w j¦zykuangielskim) u»ywane sªowa maj¡ najkrótsze kody. Alfabetem ¹ródªowym jesttu alfabet ªaci«ski, a alfabetem kodowym B = {·,−, } (trzecim elementemzbioru B jest spacja). Liter¦ A kodujemy jako · − , a T jako − itp. Sªowo,,spacja� ma kod
· · · · − − · · − − · − · · − − − · −
Spacja zawsze jest na ko«cu kodu litery. Dlatego kod Morse'a jest natych-miastowy.
1.4 Przykªad. Kod ósemkowy podany na rysunku 1.4 jest przykªademkodu blokowego. Dokªadnie, ka»de sªowo kodowe, to zapis dwójkowy cyfryod 0 do 7.
1.5 Przykªad. Rozwa»my kod
0 0 2 0111 01 3 111
Nigdy nie uda nam si¦ rozkodowa¢ zakodowanej wiadomo±ci je±li nie znamycaªego kodu. Dokªadnie, strumie« 011111 . . . mo»e by¢ 033 . . . lub 133 . . .lub te» 233 . . . Zatem kod ten nie jest natychmiastowy.
1.5 Przykªady znanych kodów blokowych
128 symboli ¹ródªowych klawiatury komputera jest zakodowanych kodemASCII (American Standard Code for Information Interchange). Jest to bi-narny kod blokowy dªugo±ci 8. Siedem pierwszych cyfr tego kodu nazywamy
8
symbolami informacyjnymi, gdy» to one nios¡ informacj¦ jaki sygnaª z klaw-iatury zostaª nadany. Ostatni, ósmy bit jest bitem sprawdzaj¡cym parzys-to±¢. Jest on ustalony tak, aby ilo±¢ jedynek w kodzie byªa parzysta.
Ka»da ksi¡»ka ma swój kod ISBN (International Standard Book Number).Do ko«ca 2006 roku byª to kod blokowy dªugo±ci 10. Na przykªad
ISBN-83-01-06891-4
oznacza, »e ksi¡»ka zostaªa wydana w kraju o kodzie 83 (Polska), wydawnictwie01 (PWN) i jej numer w tym wydawnictwie to 06891. Ostatni symbol jestsymbolem sprawdzaj¡cym wyznaczonym tak, »e 11 jest dzielnikiem
∑10i=1 iai,
gdzie ai jest i�tym znakiem kodu. Alfabet kodowy ma tu 11 symboli i opróczcyfr jest tam jeszcze symbol X. Dla podanego kodu powy»sza suma wynosi209, co jest podzielne przez 11.
Od 1 stycznia 2007 roku zmieniª si¦ standard nadawania numerów ISBN.Ró»nica polega na tym, »e na pocz¡tku dodano numer 978 oraz jest innazasada obliczania cyfry kontrolnej: cyfry z pozycji nieparzystych maj¡ wag¦1, a z pozycji parzystych wag¦ 3. Cyfr¦ kontroln¡ (znajduje si¦ ona na ko«cu,czyli na pozycji nieparzystej) dobieramy tak, by wa»ona suma byªa podzielnaprzez 10. Numer 83-01-06891-4 to obecnie 978-83-01-06891-2.
Numer konta w banku (IBAN) jest te» kodem:
PL21 1140 2004 0000 3702 3209 3385
PL oznacza tu polsk¦ 1140 2004 jest numerem banku i oddziaªu. Pozostaªecyfry oznaczaj¡ numer klienta i s¡ wyznaczane przez bank. Liczba 21 jestliczb¡ kontroln¡. Oblicza si¦ j¡ w nast¦puj¡cy sposób:
1. Literom PL przypisujemy symbol liczbowy wedªug zasady miejsce walfabecie+9. A ma symbol 10, B � 11, itd. PL ma wi¦c numer 2521.
2. liczb¦ 2521 umieszczamy na ko«cu numeru.
3. Odrzucamy dwie pierwsze cyfry numeru, na ko«cu dodajemy dwa zerai obliczamy reszt¦ z dzielenia otrzymanej liczby przez 97. W naszymwypadku mamy 114020040000370232093385252100 mod 97 = 77.
4. Poprzedni wynik odejmujemy od 98. W przypadku, gdy jest to liczbajednocyfrowa, dodajemy z przodu zero. U nas jest to 21.
Nie ma dwóch numerów kont, które ró»niªyby si¦ tylko jedn¡ lub dwiemacyframi. Je±li przez omyªk¦ przy wykonywaniu przelewu pomylimy si¦ ojedn¡ lub dwie cyfry w numerze konta, to przelew zostanie odrzucony.
9
Rozdziaª 2
Twierdzenia Krafta i McMillana
2.1 Konstruowanie kodów natychmiastowych
Zajmiemy si¦ teraz konstrukcjami dwójkowych kodów natychmiastowych. Wtym celu ustalmy alfabet A = {a1, a2, . . . , an}. Chcieliby±my, »eby kod miaªjak najkrótsze sªowa kodowe. B¦dziemy szukali te» zale»no±ci mi¦dzy dªu-go±ciami sªów kodowych. Dla litery ai, dªugo±¢ jej kodu oznaczmy przez di.Mo»emy zaªo»y¢, »e d1 ≤ d2 ≤ · · · ≤ dn. Nasza konstrukcja przebieganast¦puj¡co:
1) Za K(a1) wybieramy jakiekolwiek sªowo dwójkowe dªugo±ci d1. Jest tomo»liwe je±li d1 ≥ 1. Mamy wówczas mo»liwo±¢ wyboru spo±ród 2d1
sªów. Dodatkowo zachodzi nierówno±¢ 2−d1 ≤ 1.
2) W±ród wszystkich sªów, które nie zaczynaj¡ si¦ od K(a1), wybieramysªowo K(a2) dªugo±ci d2. Zauwa»my, »e wybór jest mo»liwy poniewa»mamy 2d2 wszystkich sªów dªugo±ci d2 i 2d2−d1 sªów dªugo±ci d2, którychpocz¡tkiem jest K(a1). Je±li wi¦c 2d2 > 2d2−d1 , to mamy przynajmniejjeden wybór K(a2). Nierówno±¢ ta zachodzi, poniewa» d1 > 0. Do-datkowo mamy jeszcze 2−d1 + 2−d2 ≤ 1.
3) Podobnie jak w 2) spo±ród wszystkich sªów, które si¦ nie zaczynaj¡ odK(a1) ani od K(a2) wybieramy sªowo K(a3) dªugo±ci d3. Aby wybórbyª mo»liwy musi by¢ speªniona nierówno±¢ 2d3 > 2d3−d1 +2d3−d2 , którajest równowa»na nierówno±ci
2−d1 + 2−d2 + 2−d3 ≤ 1.
10
4) Post¦pujemy jak w 3) wybieraj¡c kolejno K(a4), K(a5), . . . , K(an).Aby wybór sªowa K(ai) byª mo»liwy musi zachodzi¢ nierówno±¢
2−d1 + 2−d2 + · · ·+ 2−di ≤ 1.
Zatem aby mo»na byªo wybra¢ sªowa K(a1), K(a2), . . . , K(an), ich dªu-go±ci musz¡ speªnia¢ warunek
2−d1 + 2−d2 + · · ·+ 2−dn ≤ 1.
Otrzyman¡ nierówno±¢ nazywamy nierówno±ci¡ Krafta dla kodu dwójkowego.W nast¦pnym podrozdziale przedstawimy twierdzenia uogólniaj¡ce powy»sz¡konstrukcj¦.
2.2 Twierdzenia
2.1 Twierdzenie. (Krafta) Zaªó»my, »e alfabet ¹ródªowy ma n symboli, aalfabet kodowy k symboli. Kod natychmiastowy o sªowach kodowych dªugo±cid1, d2, . . . , dn istnieje je±li zachodzi nierówno±¢
k−d1 + k−d2 + · · ·+ k−dn ≤ 1.
Twierdzenie odwrotne do powy»szego jest prawdziwe. Poka»emy nawetwi¦cej, a mianowicie
2.2 Twierdzenie. (McMillana) Nierówno±¢ Krafta jest speªniona dla ka»degokodu jednoznacznie dekodowalnego.
Zatem ka»dy kod jednoznacznie dekodowalny mo»na zast¡pi¢ kodem naty-chmiastowym, który ma sªowa kodowe takiej samej dªugo±ci co kod wyj±-ciowy.
Dowód. Dla dowodu oznaczmy przez A = {a1, a2, . . . , an} alfabet ¹ródªowy,przez B alfabet kodowy, który ma k elementów, przez K kodowanie, a przezd1, d2, . . . , dn dªugo±ci odpowiednich sªów kodowych. Dla dowolnego j, liczbawszystkich j-literowych sªów zapisanych za pomoc¡ alfabetu B wynosi kj.Zatem liczba wszystkich wiadomo±ci aj1aj2 . . . ajr , których kod ma dªugo±¢ j,nie mo»e by¢ wi¦ksza od kj. Dokªadnie, zachodzi tu równo±¢
dj1 + dj2 + · · ·+ djr = j. (2.1)
11
Zatem ilo±¢ wszystkich mo»liwych sum postaci (2.1) jest mniejsza lub równa kj.Rozwa»my teraz
c =n∑i=1
k−di .
Mamy limr→∞
cr
r=∞ wtedy i tylko wtedy, gdy c > 1. Poka»emy, »e ci¡g
(cr
r
)r
jest ograniczony, co uzasadni fakt, »e c ≤ 1. W tym celu obliczmy cr.
cr =
(n∑i=1
k−di
)r
=∑
i1,i2,...,ir
k−(di1+di2+···+dir )
≤dr∑j=1
∑di1+di2+···+dir=j
k−(di1+di2+···+dir )
=dr∑j=1
∑di1+di2+···+dir=j
k−j
≤dr∑j=1
kjk−j = dr.
Tutaj d = max(d1, d2, . . . , dn). Zatem cr
r≤ d i c ≤ 1.
Rozwa»my przykªad nast¦puj¡cego kodu:
A B C D F G H I11 12 13 21 22 23 31 32
�rednia dªugo±¢ sªowa kodowego to 2. Jednak, jedno ze sªów dwuznako-wych (33) nie jest wykorzystane. Czy mo»na wi¦c nasz kod zoptymalizowa¢,tj. tak go poprawi¢, by ±rednia dªugo±¢ sªowa kodowego byªa mniejsza?Zauwa»my, »e je±li kod jednej z liter b¦dzie miaª dªugo±¢ 1, to nie b¦dziespeªniona nierówno±¢ Krafta, czyli kod nie b¦dzie ju» jednoznacznie dekodo-walny. Kod byªby optymalny, gdyby w nierówno±ci Krafta byªaby równo±¢,ale w przypadku gdy mamy sum¦ o±miu skªadników o równych licznikach, aw mianownikach których s¡ pot¦gi trójki, otrzymanie takiej równo±ci nie jestmo»liwe.
12
Rozdziaª 3
Kody Hu�mana
Kod Hu�mana stanowi rozwi¡zanie minimalizacji dªugo±ci kodu dla danegotekstu. Dla przykªadu, rozwa»my problem znalezienia takiego kodu bina-rnego dla alfabetu {A,B,D,K,R}, aby sªowo abrakadabra miaªo mo»liwienajkrótszy kod. Interesuj¡ nas przy tym, oczywi±cie, tylko kody jednoz-nacznie dekodowalne. Je±li zastosujemy tu kod blokowy, to b¦dzie on miaªdªugo±¢ nie mniejsz¡ ni» 3. Wówczas nasze sªowo b¦dzie miaªo kod przyna-jmniej trzydziesto-trzy znakowy. Kod Hu�mana daje mo»liwo±¢ zakodowa-nia sªowa abrakadabra kodem natychmiastowym dªugo±ci 23, co daje prawietrzydziesto procentow¡ oszcz¦dno±¢.
3.1 �ródªo informacji
�ródªem informacji nazywamy alfabet ¹ródªowy wraz z dystrybucj¡ praw-dopodobie«stw wyst¦powania poszczególnych liter tego alfabetu, tj. zbiórA = {a1, a2, . . . , an}, przy czym n > 1 wraz z funkcj¡ P : A→ (0, 1) speªni-aj¡c¡ warunek
n∑i=1
P (ai) = 1.
Zaªó»my jeszcze, »e prawdopodobie«stwa wyst¦powania poszczególnych literw tek±cie s¡ niezale»ne, tj.
P (ai1ai2 . . . aik) =n∏j=1
P (aij),
13
czyli prawdopodobienstwo wyst¡pienia sªowa ai1ai2 . . . aik jest równe iloczynowiprawdopodobie«stw wyst¡pienia poszczególnych liter.
3.2 De�nicja kodu Hu�mana
NiechK b¦dzie kodowaniem ¹ródªa informacji, tj. alfabetuA = {a1, a2, . . . , an}wraz z przyporz¡dkowan¡ mu dystrybucj¡ prawdopodobie«stw. Przez di(gdzie 1 ≤ i ≤ n) oznaczmy dªugo±¢ sªowa kodowego K(ai). �redni¡ dªugo±-ci¡ sªowa kodowego nazywamy wielko±¢
L =n∑i=1
diP (ai),
czyli warto±¢ oczekiwan¡ zmiennej losowej {(di, P (ai)) : i ∈ {1, 2, . . . , n}} lub±redni¡ wa»on¡ prawdopodobie«stw.
Najbardziej efektywnym kodem jest kod, dla którego wielko±¢ L jest na-jmniejsza. Zajmiemy si¦ teraz szukaniem takiego kodu przy czym ograniczymysi¦ tylko do kodów natychmiastowych. Taki kod nazywamy kodem Hu�-mana. Dla danego ¹ródªa informacji S oznaczmy przez Lmin(S) najmniejsz¡dªugo±¢ ±redni¡ sªowa kodowego (tutaj Lmin(S) jest funkcj¡ o warto±ciachrzeczywistych okre±lon¡ w klasie wszystkich mo»liwych kodów dla ¹ródªa S).
3.1 Przykªad. Rozwa»my nast¦puj¡ce ¹ródªo informacji
x A B D K R
P (x) 511
211
111
111
211
Dla powy»szego ¹ródªa informacji przypiszmy sªowa kodowe w trzech ró»nychkodach K1, K2 i K3 nast¦puj¡co
x A B D K RK1(x) 000 001 010 011 100K2(x) 0 10 110 1110 1111K3(x) 0 100 101 110 111
Je±li przez L(K) oznaczymy ±redni¡ dªugo±¢ sªowa kodowego w kodzie K, tootrzymamy
L(K1) = 3 L(K2) =24
11L(K3) =
23
11.
14
Zatem Lmin(S) ≤ 2311. Czy jest to nierówno±¢ ostra? Odpowied¹ na to pytanie
otrzymamy po przestudiowaniu nast¦pnego podrozdziaªu.
3.3 Konstrukcja kodu Hu�mana
Zaªó»my, »e nasze ¹ródªo informacji ma alfabet dwuelementowy. Wówczasprzyporz¡dkowanie jednemu elementowi zera, a drugiemu jedynki jest tu op-tymalnym kodem i w tym przypadku Lmin = 1. Je±li ¹ródªo ma n symboli,to sprowadzimy je do przypadku dwuelementowego. W tym celu zaªó»my, »eA = {a1, a2, . . . , an} jest alfabetem ¹ródªowym oraz »e zachodzi
P (a1) ≥ P (a2) ≥ · · · ≥ P (an).
Powy»sze ¹ródªo informacji oznaczmy przez S. �ródªem zredukowanym S ′
nazywamy ¹ródªo, w którym alfabetem jest A′ = {a1, a2, . . . , an−2, an−1an}(ostatnia litera alfabetu A′ jest sªowem w alfabecie A), natomiast dystrubucjaprawdopodobie«stw wygl¡da nast¦puj¡co:
P ′(ai) = P (ai) dla 1 ≤ i ≤ n− 2
P ′(an−1an) = P (an−1) + P (an).
�atwo jest sprawdzi¢, »e S ′ jest faktycznie ¹ródªem informacji.
3.2 Twierdzenie. Stosuj¡c powy»sze oznaczenia, zaªó»my, »e K ′ jest kodemHu�mana dla zredukowanego ¹ródªa informacji. Wówczas kod
K(ai) = K ′(ai) dla 1 ≤ i ≤ n− 2
K(an−1) = K ′(an−1an)0
K(an) = K ′(an−1an)1
jest kodem Hu�mana dla ¹ródªa S.
Dowód. Zaªó»my, »e elementy a1, a2, . . . , an s¡ uporz¡dkowane wedªug male-j¡cych prawdopodbie«stw. Dowód konstrukcyjny przeprowadzimy w trzechkrokach.
Krok 1. Poka»emy, »e dla ¹ródªa S istnieje kod Hu�mana K0, dla któregod1 ≤ d2 ≤ · · · ≤ dn, gdzie di oznacza dªugo±¢ K0(ai) oraz 1 ≤ i ≤ n.
Zauwa»my, »e Lmin(S) jest równy minimum z L(K), gdzie K przebiegawszystkie mo»liwe kody natychmiastowe okre±lone na A. Poniewa» minimum
15
to jest osi¡galne, wi¦c kod Hu�mana zawsze istnieje. NiechK b¦dzie pewnymkodem Hu�mana dla ¹ródªa informacji S. Je»eli istnieje litera ai, dla którejdi > di+1, zamieniamy sªowa kodowe liter ai oraz ai+1. Zatem ai ma teraz koddªugo±ci di+1, a ai+1 � kod dªugo±ci di. Otrzymany kod K1 w dalszym ci¡gujest natychmiastowy. Poka»emy, »e jest on te» kodem Hu�mana. Istotnie,
L(K)− L(K1) =n∑i=1
diP (ai)−n∑i=1
d′iP (ai)
= diP (ai) + di+1P (ai+1)− (di+1P (ai) + diP (ai+1))
= (di − di+1)(P (ai)− P (ai+1).
Poniewa» elementy alfabetu A s¡ uporz¡dkowane wedªug malej¡cych praw-dopodbie«stw, wi¦c P (ai) ≥ P (ai+1). Z drugiej strony, zaªo»yli±my, »edi > di+1. Zatem L(K) − L(K1) ≥ 0, czyli L(K) ≥ L(K1). Ale K jestkodem Hu�mana, wi¦c L(K) = Lmin(S). St¡d L(K) = L(K1) = Lmin(S) iK1 jest kodem Hu�mana.
Post¦pujemy podobnie a» dªugo±ci sªów kodowych zostan¡ uporz¡dkowanerosn¡co. Odpowiadaj¡cy kod Hu�man'a jest poszukiwanym kodem K0.
Krok 2. Poprawimy kod K0 otrzymuj¡c kod Hu�mana K1 taki, »e sªowakodowe K(an) oraz K(an−1) ró»ni¡ si¦ tylko ostatnim bitem.
Niech K̃0 b¦dzie kodem otrzymanym z K0 poprzez odrzucenie ostatniegobitu z K0(an). Poniewa» P (an) > 0, wi¦c L(K̃0) < L(K0) = Lmin(S) iK̃0 nie mo»e by¢ kodem natychmiastowym (inaczej K0 nie byªby kodemHu�mana). Zatem K̃0(an) musi by¢ pocz¡tkiem pewnego sªowa kodowegoK0(ai) = K̃0(ai) dla 1 ≤ i ≤ n−1. Oznaczmy przez d̃n dªugo±¢ sªowa K̃0(an).Mamy dn − 1 = d̃n. Skoro K̃0(an) jest pocz¡tkiem sªowa K0(ai), wi¦cd̃n ≤ di ≤ dn. Je±li jednak d̃n = di, to K0(ai) = K̃0(an) jest pocz¡tkiemsªowa kodowego K0(an) co przeczy natychmiastowo±ci kodu K0. Zatem musiby¢ di = dn. Oznacza to, po pierwsze, »e di = di+1 = · · · = dn oraz, po drugie,»e sªowa K0(ai) oraz K0(an) ró»ni¡ si¦ tylko ostatnim bitem. Mo»emy zatemzamieni¢ sªowa kodowe liter an−1 oraz ai (o ile jest to konieczne) i otrzymamy»¡dany kod K1.
Krok 3. Zako«czymy dowód twierdzenia.Zauwa»my, »e dla zde�niowanego w tezie twierdzenia kodu K zachodzi
równo±¢
L(K) = L(K ′) + P (an−1) + P (an).
16
NiechK1 b¦dzie kodem dla ¹ródªa S otrzymanym w kroku 2. Oznaczmy przezK ′1 kod dla zredukowanego »ródªa informacji, gdzie sªowo kodoweK ′1(an−1an)jest równe K(an−1) lub K(an) z odrzuconym ostatnim bitem. Wówczas K ′1jest natychmiastowy. Mamy te»
L(K1)− L(K ′1) = P (an−1) + P (an) = L(K)− L(K ′).
St¡d L(K) = L(K1)− L(K ′1) + L(K ′). Ale K ′ jest z zaªo»enia kodem Hu�-mana, zatem L(K ′) = Lmin(S
′) i st¡d mamy −L(K ′1)+L(K ′) ≤ 0. Tak wi¦cL(K) ≤ L(K1). Ale skoro K1 jest kodem Hu�mana, wi¦c takowym musi te»by¢ K.
Konstrukcja kodu Hu�mana dla ¹ródªa informacji S polega na tworze-niu kolejnych ¹ródeª zredukowanych S ′, S”, . . . S(h) a» otrzymamy »ródªo zalfabetem dwuelementowym. Nast¦pnie de�niujemy tak jak w poprzednimtwierdzeniu kody Hu�mana dla ¹ródeª S(h−1), S(h−2), . . . S.
3.3 Przykªad. Dla ¹ródªa informacji z przykªadu 3.1 tworzymy kolejne zre-dukowane ¹ródªa
S ′:x A B DK R
P (x) 511
211
211
211
S ′′:x A BDK R
P (x) 511
411
211
S(3):x BDKR A
P (x) 611
511
którym odpowiadaj¡ kody
K(3)(BDKR) = 0, K(3)(A) = 1;
K ′′(A) = 1, K ′′(BDK) = 00, K ′′(R) = 01;
K ′(A) = 1, K ′(B) = 000, K ′(DK) = 001, K ′(R) = 01.
Ostatecznie, otrzymamy dla naszego ¹ródªa informacji nast¦puj¡cy kod Hu�-mana
x A B D K RK(x) 1 000 0010 0011 01
17
Zatem Lmin(S) = 2311
i najkrótszy jednoznacznie dekodowalny kod sªowaabrakadabra ma 23 znaki.
Kody Hu�mana mo»emy te» tworzy¢ dla alfabetów kodowych o wi¦kszejni» dwa liczbie znaków. Caªe rozumowanie tego podrozdziaªu mo»na prze-nie±¢ na ten przypadek.
18
Rozdziaª 4
Kompresowanie kodów i entropia
4.1 Przykªad kompresowania danych
W poprzednim rozdziale zauwa»yli±my, »e kody Hu�mana s¡ najkrótszymimo»liwymi kodowaniami danego alfabetu ¹ródªowego. Zatem, aby danykod byª krótszy, musimy kompresowa¢ ju» sam kod, czyli ,,kodowa¢ kod�.Przypu±¢my, »e zakodowali±my pewn¡ wiadomo±¢ w kodzie dwójkowym. Wnast¦pstwie tej czynno±ci okazaªo si¦, »e 90% kodu to zera, a tylko 10% tojedynki. Nasz¡ zakodowan¡ wiadomo±¢ mo»emy skompresowa¢ koduj¡c blokibitów.
Dokªadnie, zauwa»my, »e zakªadaj¡c niezale»no±¢ wyst¦powania poszczegól-nych bitów w zakodowanej wiadomo±ci, prawdopodobie«stwa wyst¡pieniabloków 00, 01, 10, 11 s¡ równe, odpowiednio 81, 9, 9 oraz 1 procent. Otrzy-mujemy wi¦c nast¦puj¡ce ¹ródªo informacji
00 01 10 110,81 0,09 0,09 0,01
Dla powy»szego ¹ródªa informacji konstruujemy kod Hu�mana otrzymu-j¡c
00 01 10 110 10 110 111
19
Otrzymany kod ma przeci¦tn¡ dªugo±¢ równ¡
1 · 0, 81 + 2 · 0, 09 + 3 · 0, 09 + 3 · 0, 01 = 1, 29.
Poniewa» kodujemy bloki dwubitowe, wi¦c na ka»de dwa bity ,,starego� kodupotrzebujemy 1, 29 bitów ,,nowego� kodu. Zyskali±my zatem ponad siedemdziesi¡tych bita, co kompresuje nasz kod do okoªo 64% (≈ 1, 29/2) jegopierwotnej dªugo±ci.
Próbuj¡c kodowa¢ wi¦ksze bloki otrzymujemy kompresj¦ 53% przy blokachtrzybitowych oraz 49% przy blokach czterobitowych. Pojawia si¦ zatempytanie, czy dany kod mo»na skompresowa¢ do dowolnie maªej obj¦to±ci.Odpowied¹ na to pytanie daje teoria entropii, któr¡ opiszemy poni»ej.
4.2 Idea entropii
Zaªó»my, »e mamy dane ¹ródªo informacji S. Chcemy wprowadzi¢ wielko±¢H(S), która wyra»a ilo±¢ informacji zawart¡ w jednym symbolu ¹ródªowym.Liczb¦ H(S) nazwiemy entropi¡. Chcemy, aby speªnione byªy nast¦puj¡cewarunki:
� H(S) zale»y jedynie od statystyki ¹ródªa S, nie od nazw poszczególnychsymboli ¹ródªowych;
� H(S) mo»e by¢ rozwa»ana jako funkcja prawdopodobie«stw symboli¹ródªa S. Oznaczmy przez p1, p2, . . . , pn prawdopodobie«stwa odpowiada-j¡ce poszczególnym symbolom alfabetu ¹ródªowego. Zatem
H : (p1, p2, . . . , pn) 7→ H(p1, p2, . . . , pn).
Funkcja ta powinna by¢
1) Dodatnia;
2) Ci¡gªa, co oznacza, »e maªym zmianom prawdopodobie«stw odpowiadaniewielka zmiana entropii;
3) Symetryczna, co oznacza, »e zmiana porz¡dku symboli ¹ródªowychnie powoduje zmiany entropii ¹rodªa;
4) Koherentna, co w tym przypadku oznacza, »e entropia ¹ródªa n�elementowego mo»e by¢ obliczona je±li znamy entropi¦ mniejszych¹ródeª.
20
Wytªumaczmy dokªadniej, co oznacza termin w podpunkcie 4). Zaªó»myw tym celu, »e czytamy pewien tekst nie rozró»niaj¡c liter a1 i a2. Aby wpeªni zrozumie¢ tekst nie musimy go ju» czyta¢ po raz drugi w caªo±ci, tylkokoncentrujemy si¦ na symbolach a1 i a2. Zatem znaj¡c entropi¦ ¹ródeª zre-dukowanego (ze zredukowanymi symbolami a1 oraz a2) oraz entropi¦ ¹ródªadwuelementowego {a1, a2}, mo»emy obliczy¢ entropi¦ caªego ¹ródªa. Dokªad-nie,
H(p1, p2, . . . , pn) = H(p1 + p2, p3 . . . , pn) + (p1 + p2)H
(p1
p1 + p2,
p2p1 + p2
).
4.1 Twierdzenie. Istnieje dokªadnie jedna, z dokªadno±ci¡ do staªej k, do-datnia, symetryczna i koherentna funkcja H n�zmiennych. Jest ona okre±lonawzorem
H(p1, p2, . . . , pn) = kn∑i=1
pi log1
pi. (4.1)
Skomplikowany i nie bardzo zwi¡zany z tematem dowód tego twierdzeniapomijamy.
4.3 De�nicja entropii
Opieraj¡c si¦ na twierdzeniu 4.1, wprowadzimy nast¦puj¡c¡ de�nicj¦. Przedtemjednak ustalmy pewne oznaczenia. Staªa k, która pojawia si¦ w (4.1) stanowiwybór jednostki entropii. Zapiszmy k = 1
log r. Je»eli r = 2, jednostk¦ nazy-
wamy bitem. Zatem
H(p1, p2, . . . , pn) = −n∑i=1
pi log2 pi.
Je±li ¹ródªo S ma dokªadnie dwie jednakowo prawdopodobne litery, to
H(S) =1
2log2 2 +
1
2log2 2 = 1bit.
Entropi¡ ¹ródªa informacji S, którego symbole a1, a2, . . . , an wyst¦puj¡z prawdopodobie«stwami p1, p2, . . . , pn nazywamy liczb¦ okre±lon¡ przezrównanie (4.3).
21
Przykªady
� W naszym pocz¡tkowym przykªadzie kompresowania danych mamyp1 = 0, 9 oraz p2 = 0, 1. Zatem entropia tego ¹ródªa jest równa
H(S) = −0, 1 log2 0, 1− 0, 9 log2 0, 9 ≈ 0, 469bita.
Oznacza to, »e po przeczytaniu jednego symbolu tekstu ¹ródªowegootrzymujemy okoªo 0,469 bitów informacji lub, »e ka»de tysi¡c litertekstu mo»na zast¡pi¢ przez 469 cyfr dwójkowych.
� U»ywaj¡c kodu blokowego, 26 liter alfabetu angielskiego mo»na za-kodowa¢ w bloki dwójkowe dªugo±ci 5. Z drugiej strony, je±li policzymyentropi¦ ¹ródªa informacji, którym jest alfabet angielski, otrzymamyliczb¦ 1,5. Oznacza to, i» ka»dy tekst angielski zakodowany kodemblokowym dªugo±ci 5 mo»na skompresowa¢ nawet do 30% jego pierwot-nej dªugo±ci!
� Obliczmy entropi¦ ¹ródªa informacji M jakim jest rzut monet¡. Mamytu dwa symbole ¹ródªowe � orªa i reszk¦, którym odpowiadaj¡ równeprawdopodobie«stwa. ZatemH(M) = 1. Tak wi¦c tekstu pochodz¡cegoz tego ¹ródªa nie mo»na skompresowa¢, poniewa» ka»dy symbol ¹ródªowyto dokªadnie 1 bit informacji.
Ogólniej, je±li ¹ródªo informacji ma dokªadnie dwa symbole, to ich praw-dopodobie«stwa mo»na wyrazi¢ jako p oraz 1− p, a jego entropi¦ przez
H(p, 1− p) = −p log2 p+ (p− 1) log2(1− p).
Funkcja p 7→ H(p, 1 − p) osi¡ga maximum w punkcie 12. Natomiast jej in�-
mum wynosi 0 i jest osi¡gane granicznie, gdy p→ 1 lub p→ 0.
4.4 Maximum i minimum entropii
Gdyby jeden symbol ¹ródªowy miaª prawdopodobie«stwo bliskie 1, pozostaªemusiaªyby mie¢ prawdopodobie«stwa bliskie 0. Dla tego rodzaju ¹ródeª en-tropia byªaby najbli»sza swojego in�mum. Fakt ten udowodnimy poni»ej.
4.2 Twierdzenie. Je±li jeden z symboli ¹ródªowych ma prawdopodobie«stwobliskie 1, to entropia tego ¹ródªa jest bliska 0.
22
Dowód. Zaªó»my, »e p1 → 1. Zatem pi → 0 dla 2 ≤ i ≤ n. St¡d pi log2 pi → 0poniewa» (log2 pi)
−1 = o(pi) dla 2 ≤ i ≤ n oraz p1 log2 p1 → 0 gdy» log2 p1 →0, a p1 jest wielko±ci¡ ograniczon¡. Zatem H(S)→ 0.
Przykªad entropii rzutu monet¡ oraz rozwa»ania poprzedzaj¡ce niniejszyrozdziaª sugeruj¡, »e najwi¦ksz¡ entropi¦ maj¡ ¹ródªa, w których praw-dopodobie«stwa poszczególnych symboli s¡ równe. Nast¦puj¡ce twierdzenieuzasadni to rozumowanie.
4.3 Twierdzenie. Maximum entropii jest osi¡gane dla takich ¹ródeª infor-macji, gdzie p1 = p2 = · · · = pn = 1
n. Jest ono równe log2 n.
Dowód. Zauwa»my najpierw, »e faktycznie, je±li p1 = p2 = · · · = pn = 1n,
to H(p1, p2, . . . , pn) = log2 n. Aby pokaza¢, »e jest to maximum u»yjemynierówno±ci log x ≤ x − 1, w której równo±¢ zachodzi wtedy i tylko wtedy,gdy x = 1. Mamy
H(S)− log2 n =∑i
pi log21
pi−∑i
pi log2 n
=∑i
pi
(log2
1
pi− log2 n
)=
1
log 2
∑i
pi
(log
1
pi− log n
)=
1
log 2
∑i
pi log1
npi
≤ 1
log 2
∑i
pi
(1
npi− 1
)=
1
log 2
∑i
(1
n− pi
)
=1
log 2
(∑i
1
n−∑i
pi
)= 0.
Zatem H(S) ≤ log2 n, przy czym równo±¢ zachodzi wtedy i tylko wtedy, gdy1npi
= 1, czyli gdy pi = 1n.
23
4.5 Rozszerzenie ¹ródªa
4.4 Przykªad. Je»eli ¹ródªem informacjiM2 jest rzut dwiema symetrycznymimonetami, to H(M2) = 2. Czyli ka»dy rzut niesie dwa bity informacji. Jestto zgodne z naszym wcze±niejszym rozwa»aniem rzutu jedn¡ monet¡, kiedyto entropia wynosiªa 1.
Powró¢my do naszego pierwotnego przykªadu ¹ródªa informacji, w którym0 wyst¦powaªo z prawdopodobie«stwem 0, 9, a 1 z prawdopodobie«stwem 0, 1.Aby skompresowa¢ wiadomo±¢ dzielili±my j¡ na bloki po dwie litery. Czyn-no±¢ t¦ b¦dziemy nazywali rozszerzaniem ¹ródªa. Dokªadnie, k�tym rozsz-erzeniem ¹ródªa S w którym symbolom a1, a2, . . . , an odpowiadaj¡, odpowied-nio, prawdopodobie«stwa p1, p2, . . . , pn nazywamy ¹ródªo informacji Sk,którego alfabet skªada si¦ z bloków k�literowych
ai1ai2 . . . aik
liter alfabetu ¹ródªa S, którym to blokom odpowiadaj¡ prawdopodobie«stwa
P (ai1ai2 . . . aik) = P (ai1)P (ai2) . . . P (aik).
�ródªo rzutu dwiema monetamiM2 jest rozszerzeniem ¹ródªa rzutu jedn¡monet¡. Jak ju» zauwa»yli±my, H(M2) = 2H(M). Istotnie, jest to reguªa, oczym mówi nast¦puj¡ce twierdzenie.
4.5 Twierdzenie. Dla dowolnego ¹ródªa informacji, H(Sk) = kH(S).
Dowód. Wynika z nast¦puj¡cych oblicze«:
H(Sk) = −∑
i1,i2,...,ik
pi1pi2 . . . pik log2(pi1pi2 . . . pik)
= −∑i1
∑i2
· · ·∑ik
pi1pi2 . . . pik (log2 pi1 + log2 pi2 + · · ·+ log2 pik)
= −∑i1
pi1 log2 pi1∑i2
pi2 · · ·∑ik
pik
−∑i2
pi2 log2 pi2∑i1
pi1∑i3
pi3 · · ·∑ik
pik
− · · ·
−∑ik
pik log2 pik∑i1
pi1 · · ·∑ik−1
pik−1
24
= −∑i1
pi1 log2 pi1 −∑i2
pi2 log2 pi2 − · · · −∑ik
pik log2 pik
= kH(S).
4.6 Entropia a przeci¦tna dªugo±¢ sªowa kodowego
Skoro entropia, to liczba bitów zawartych w jednym symbolu tekstu ¹ródªowego,wi¦c nie powinna ona by¢ wi¦ksza ni» przeci¦tna dªugo±¢ sªowa kodowego.To intuicyjne spostrze»enie potwierdza nast¦puj¡ce twierdzenie.
4.6 Twierdzenie. Ka»dy dwójkowy kod natychmiastowy dla ¹ródªa S madªugo±¢ przeci¦tn¡ wi¦ksz¡ lub równ¡ entropii tego ¹ródªa.
Dowód. Oznaczaj¡c przez di dªugo±¢ i�tego sªowa kodowego, a przez L prze-ci¦tn¡ dªugo±¢ sªowa kodowego, otrzymujemy
H(S)− L =∑i
pi log21
pi−∑i
pidi
=∑i
pi
(log2
1
pi− log2 2
di
)=∑i
pi log21
pi2di
=1
log 2
∑i
pi log1
pi2di
≤ 1
log 2
∑i
pi
(1
pi2di− 1
)=
1
log 2
∑i
(1
2di− pi
)
=1
log 2
(∑i
1
2di−∑i
pi
)≤ 1
log 2(1− 1) = 0,
gdzie ostatnia nierówno±¢ jest konsekwencj¡ nierówno±ci Krafta, a pierwszawynika ze wzoru log x ≤ x− 1. Zatem H(S) ≤ L.
25
4.7 Twierdzenie Shannona o kodowaniu bezszu-mowym
W naszym pocz¡tkowym przykªadzie mieli±my
H(S) = 0, 469,1
2Lmin(S
2) = 0, 645, qquad1
3Lmin(S
3) = 0, 533.
Zwi¦kszaj¡c bloki, a nast¦pnie koduj¡c je, nigdy nie zejdziemy poni»ej poziomuentropii dla danego ¹ródªa. Nast¦puj¡ce twierdzenie mówi o tym, »e entropiastanowi graniczny poziom kompresowania tekstów zapisanych za pomoc¡ al-fabetu danego ¹ródªa informacji. Granicy tej nie mo»na przekroczy¢, alemo»na si¦ do niej zbli»y¢ na dowoln¡ odlegªo±¢.
4.7 Twierdzenie. (Shannona o kodowaniu bezszumowym) Dla dowolnego¹ródªa informacji S zachodzi nast¦puj¡cy zwi¡zek mi¦dzy entropi¡ tego ¹ródªaa przeci¦tn¡ dªugo±ci¡ kodu Hu�mana dla tego ¹ródªa
H(S) ≤ Lmin(S) ≤ H(S) + 1. (4.2)
W szczególno±ci, dla k�tego rozszerzenia »ródªa S mamy
limk→∞
1
kLmin(S
k) = H(S). (4.3)
Dowód. Udowodnimy najpierw wzór (4.3) zakªadaj¡c (4.2). Mamy
kH(S) = H(Sk) ≤ Lmin(Sk) ≤ H(Sk) + 1 = kH(S) + 1.
St¡d bezpo±rednio wynika
H(S) ≤ 1
kLmin(S
k) ≤ H(S) +1
k
i stosuj¡c twierdzenie o trzech granicach otrzymujemy (4.3).Aby udowodni¢ (4.2), zauwa»my, ze wobec twierdzenia 4.6, wystarczy
pokaza¢, »eLmin(S) ≤ H(S) + 1.
W tym celu elementom »ródªowym a1, a2, . . . , an, których prawdopodobie«stwawynosz¡, odpowiednio, p1, p2, . . . , pn przyporz¡dkujmy sªowa kodowe dªu-
go±ci d1, d2, . . . , dn, gdzie di =⌈log2
1pi
⌉. Poniewa» nierówno±¢ Krafta dla
26
tych dªugo±ci zachodzi (dokªadnie,
n∑i=1
2−di ≤n∑i=1
2− log2
1pi =
n∑i=1
pi = 1),
wi¦c odpowiedni kod natychmiastowy istnieje. Kod ten ma przeci¦tn¡ dlu-go±¢ L równ¡
n∑i=1
pidi ≤n∑i=1
pi
(1 + log2
1
pi
)= 1 +H(S).
Zatem Lmin(S) ≤ L ≤ H(S) + 1, sk¡d (4.2).
Nasze rozwa»ania na temat entropii zako«czymy uwag¡, »e caªe powy»szerozumowanie bez trudu przenosi si¦ na przypadek dowolnego r. Wówczasentropi¦ ¹ródªa S oznaczamy Hr(S) i wielko±¢ ta jest równa −
∑i pi logr pi.
27
Rozdziaª 5
Pewna komunikacja poprzez
niepewne ª¡cza
Jak dot¡d, starali±my si¦ jak najbardziej skróci¢ kod przesyªanej wiadomo±ci.W poprzednim rozdziale pokazali±my, »e granic¦ kompresji stanowi entropiadanego ¹ródªa. Maksymalnie skompresowany tekst nie jest jednak dobry doprzesªania poprzez ª¡cze, w którym mog¡ pojawi¢ si¦ zakªócenia � niewielkiezakªócenie kodu powoduje niemo»no±¢ rozkodowania. Aby nasz kod staªsi¦ odpornym na zakªócenia, musimy go wydªu»y¢ uzupeªniaj¡c go pewn¡liczb¡ dodatkowych bitów. Zanim jednak przejdziemy do mody�kacji kodów,zde�niujmy ª¡cza, po których ów zmody�kowany kod zostanie przesªany.
5.1 Symetryczne ª¡cze binarne
Gdyby±my mieli do dyspozycji ª¡cze, w którym nigdy nie pojawiaj¡ si¦ szumy,nie musieliby±my mody�kowa¢ kodu. Jednak»e tego rodzaju ª¡cza s¡ w prak-tyce nie spotykane. Dlatego zaªó»my, »e w ª¡czu powstaj¡ szumy, którepowoduj¡, »e odebrana wiadomo±¢ mo»e si¦ ró»ni¢ od wysªanej. Zakªadamyjednak, »e podczas transmisji nie powstaje bª¡d synchronizacji, tj. »adennowy symbol nie pojawi si¦ w kodzie, ani te» »aden nie zniknie.
Symetrycznym ª¡czem binarnym (BSC) nazywamy ª¡cze, które speªnianast¦puj¡ce warunki:
1. Komunikacja zachodzi za pomoc¡ kodu dwójkowego, tj. zarówno nawej±ciu, jak i na wyj±ciu mog¡ pojawia¢ si¦ tylko 0 lub 1;
28
2. Prawdopodobie«stwo otrzymania 1 pod warunkiem wysªania 0 jestrówne prawdopodobie«stwie otrzymania 0 pod warunkiem wysªania 1;
3. �¡cze nie ma pami¦ci, tj. prawdopodobie«stwo znieksztaªcenia danegosymbolu nie zale»y od wcze±niej wysªanych bitów.
Oznaczmy przez p prawdopodobie«stwo znieksztaªcenia wysªanego przezBSC symbolu, a przez q = 1 − p prawdopodobie«stwo poprawnej trans-misji danego bitu. Mo»emy zaªo»y¢, »e 0 ≤ p ≤ 0, 5 jako, »e je±li praw-dopodobie«stwo to jest wi¦ksze od 1
2, to przed przeczytaniem kodu mo»emy
zamieni¢ rolami zera i jedynki.
5.1 Przykªad. Zaªó»my, »e pewne ª¡cze znieksztaªca 1 symbol na tysi¡c.Zatem p = 0, 001 oraz q = 0, 999. Zaªó»my jednak»e, »e nie mo»emy sobiepozwoli¢ na wi¦cej ni» jeden bª¡d na dziesi¦¢ tysi¦cy symboli. Aby podnie±¢pewno±¢ kodu mo»emy ka»dy symbol kodowy powtórzy¢ kilka razy. Nazywasi¦ to kodem powtórze«1. Na przykªad,
011001 7→ 000111111000000111.
Dla danego kodu K, odpowiadaj¡cy mu kod powtórze« oznaczymy przez Ks,gdzie s oznacza liczb¦ powtórze« danego bitu.
Tak wi¦c otrzymuj¡c wiadomo±¢ w kodzie K3 oczekujemy, »e bity wys-t¦puj¡ w jednorodnych blokach dªugo±ci 3. Zatem, gdy otrzymujemy takiblok a1a2a3, wiemy, »e zanim zostaª on wysªany wszystkie jego bity byªyrówne. Je±li jednak otrzymany blok nie ma takich samych bitów, rozkodowu-jemy go wedªug ,,prawa wi¦kszo±ci�. Bª¡d w odczycie popeªniamy, je±liwszystkie trzy bity zostaªy znieksztaªcone (prawdopodobie«stwo p3), lub gdydwa bity zostaªy znieksztaªcone (prawdopodobie«stwo 3p2q). Zatem praw-dopodobie«stwo niewªa±ciwego odczytu wynosi
Perr(K3) = p3 + 3p2q < 10−5.
KodK3 speªnia wi¦c postawione wcze±niej wymagania. Uzupeªnimy przykªaduwag¡, »e Perr(K5) ≈ 10−8 oraz, »e Perr(Kn)→ 0 je±li n→∞.
1ang. repetition code
29
5.2 Pr¦dko±¢ przepªywu informacji
W przykªadzie kodu powtórze« Kn tylko jeden bit na n byª no±nikiem in-formacji. Pozostaªe bity jedynie sprawdzaªy, czy informacja zostaªa praw-idªowo przesªana przez ª¡cze. Zatem mieli±my tu do czynienia z kodemblokowym, w którym jeden bit jest bitem informacyjnym, a n − 1 bitóws¡ bitami sprawdzaj¡cymi. Uogólniaj¡c powy»sz¡ sytuacj¦, dla dowolnegokodu blokowego K wyró»niamy w ka»dym bloku k bitów informacyjnychoraz n − k bitów sprawdzaj¡cych. Bity informacyjne mog¡ by¢ dowolne,wi¦c mamy mo»liwych dokªadnie 2k sªów kodowych. Bity sprawdzaj¡ce wtych sªowach ±ci±le zale»¡ od bitów informacyjnych. Odwrotnie, je±li danykod blokowy ma dokªadnie 2k sªów, to oznacza to, »e w ka»dym bloku mamyk bitów informacyjnych.
Przesyªanie informacji odbywa si¦ wi¦c w nast¦puj¡cy sposób:
• dan¡ wiadomo±¢ kodujemy stosuj¡c kod Hu�mana;
• otrzymany kod kompresujemy tak, by byª on mo»liwie najkrótszy,
• skompresowany kod dzielimy na bloki dªugo±ci k i ka»dy z tych blokówuzupeªniamy bitami sprawdzaj¡cymi tak by otrzyma¢ kod blokowy dªu-go±ci n ≥ k;
• ka»dy z bloków przesyªamy poprzez ª¡cze,
• odbiorca kodu, najpierw sprawdza poprawno±¢ przesªanego kodu i poprawiabª¦dy transmisji wykorzystuj¡c bity sprawdzaj¡ce,
• odbiorca odrzuca bity sprawdzaj¡ce i ª¡czy bloki bitów informacyjnychw zakodowan¡ i skompresowan¡ wiadomo±¢,
• odbiorca dekompresuje kod i rozkodowuje wiadomo±¢.
Czynno±¢ sprawdzania otrzymanego w wyniku transmisji kodu blokowegooraz poprawiania wynikªych bª¦dów, tak»e nazywamy dekodowaniem lubrozkodowywaniem.
Dla dwójkowego kodu blokowego K dªugo±ci n o k ≤ n bitach informa-cyjnych de�niujemy wielko±¢R(K) = k
n, któr¡ nazwiemy pr¦dko±ci¡ przepªywu
informacji kodu K. Je»eli k = 0, kod K ma tylko jedno sªowo kodowe,R(K) = 0 i bity sprawdzaj¡ce sygnalizuj¡ jedynie, »e nast¡piªa transmisja.
30
Taki kod nazywamy trywialnym. Drug¡ skrajno±¢ stanowi kod o pr¦dko±ciprzepªywu informacji 1. Taki kod nie posiada bitów sprawdzaj¡cych. Gen-eralnie, je±li R(K) jest bliskie 0, kod ma du»¡ odporno±¢ na szumy, ale niejest efektywny w sensie przepªywu informacji. Je»eli natomiast R(K) jestbliskie 1, kod K ma bardzo du»¡ efektywno±¢, ale nie ma istotnego zabez-pieczenia na zakªócenia.
Dla przykªadu zauwa»my, »e kod powtórze« Kn ma pr¦dko±¢ przepªywuinformacji 1
n. ,,ortogonalnym� do niego jest kod sprawdzaj¡cy parzysto±¢,1
w którym mamy n − 1 bitów informacyjnych oraz jeden bit sprawdzaj¡cyustalony tak, by liczba jedynek w bloku byªa parzysta. Zatem tutaj, R = n−1
n,
ale tylko pojedyncze bª¦dy zostan¡ wykryte bez mo»liwo±ci ich poprawienia.
5.3 Bariera pojemno±ci
Wysyªaj¡c kod poprzez ª¡cze, musimy mie¢ na uwadze nie tylko to, i» wª¡czu mog¡ wyst¡pi¢ zakªócenia, ale tak»e to, »e ª¡cze ma pewn¡ ogranic-zon¡ pojemno±¢. Rozwa»my tu nast¦puj¡cy przykªad: nasze ¹ródªo wysyªajeden bit na sekund¦, ale ª¡cze nie mo»e przesªa¢ wi¦cej ni» dwa bity nasekund¦. Zaªó»my konkretnie, »e p = 0, 001, jednak»e nie mo»emy sobie poz-woli¢ na wi¦cej bª¦dów ni» dwa na 10000. Ze wzgl¦du na pojemno±¢ ª¡cza niemo»emy doda¢ wi¦cej ni» jednego bitu sprawdzaj¡cego na jeden bit informa-cyjny. Zauwa»my, »e kod K2 nie jest w ogóle dobrym rozwi¡zaniem. Istotnie,bª¡d popeªniamy, gdy oba bity s¡ znieksztaªcone (prawdopodobie«stwo p2),lub gdy jeden bit jest znieksztaªcony, przy czym musimy zdecydowa¢ który(prawdopodobie«stwo 2 · 1
2pq). St¡d P (K2) = p2 + pq = p. Zatem praw-
dopodobie«stwo bª¦du jest takie samo jak bez u»ycia bitu sprawdzaj¡cego.Podobnie, mo»emy zauwa»y¢, »e P (K2s) = P (K2s−1).
5.2 Przykªad. Spróbujmy nast¦puj¡cego kodu, w którym do bloku infor-macyjnego dªugo±ci k dodajemy dwa bity sprawdzaj¡ce, które s¡ równedrugiemu bitowi z bloku. Tak wi¦c
00 7→ 0000 01 7→ 011110 7→ 1000 11 7→ 1111.
Powy»szy kod oznaczymy przez K∗4 . Przy odbiorze, zakªadamy, »e pierwszybit jest prawidªowy, a drugi ustalamy poprzez ,,prawo wi¦kszo±ci�. Zatem
1ang. even-parity code
31
odbiór jest prawidªowy wtedy i tylko wtedy, gdy »aden z bitów nie zostaªznieksztaªcony, lub gdy tylko drugi, trzeci lub czwarty bit zostaª przeinac-zony. St¡d
1− Perr(K∗4) = q4 + 3pq3 ≈ 0, 9997.
Zatem a» 3 bity na 10000 mog¡ by¢ ¹le odczytane, co nas jeszcze niesatysfakcjonuje. Wypróbujemy wi¦c nast¦puj¡cy kod K∗6 .
5.3 Przykªad. Kod K∗6 koduje bloki informacyjne dªugo±ci 3 dodaj¡c 3 bitysprawdzaj¡ce.
000 7→ 000000 100 7→ 100011010 7→ 010101 001 7→ 001110011 7→ 011011 101 7→ 101101110 7→ 110110 111 7→ 111000
Kod ten jest tak skonstruowany, »e dwa ró»ne sªowa kodowe ró»ni¡ si¦ mi¦dzysob¡ przynajmniej trzema bitami. Zatem przy rozkodowywaniu natra�amyalbo na sªowo kodowe albo na sªowo, które ró»ni si¦ od pewnego (dokªadniejednego) sªowa kodowego w dokªadnie jednym bitem. W pierwszym przy-padku nie mamy problemów z dekodowaniem, w drugim dekodujemy otrzy-many blok jako w. Zatem bª¡d mo»emy popeªni¢ je±li przynajmniej dwa bityw bloku zostaªy znieksztaªcone. St¡d
1− Perr(K∗6) ≥ q6 + 6pq5 ≥ 0, 99984,
czyli Perr ≤ 0, 00016, co jest lepszym wynikiem ni» pierwotnie wymagali±my.
Precyzyjna de�nicja pojemno±ci ª¡cza jest nieco skomplikowana. Poniewa»w dalszym ci¡gu wykªadu zajmiemy si¦ tylko sposobami kodowania blokówinformacyjnych, nie b¦dziemy teraz dokªadnie rozpatrywa¢ kwestii pojem-no±ci. Zajmiemy si¦ natomiast praktycznymi sposobami odczytywania koduprzesªanego przez ª¡cze BSC.
5.4 Odlegªo±¢ Hamminga
Naszym celem jest skonstruowanie kodu, który ma minimaln¡ liczb¦ bitówsprawdzaj¡cych, ale sªowa kodowe ró»ni¡ si¦ od siebie jak najwi¦ksz¡ liczb¡bitów. Chcemy zatem, aby sªowa kodowe byªy ,,jak najdalej� od siebie. Sfor-malizujemy teraz poj¦cie odlegªo±ci.
32
Niech a = a1a2 . . . an oraz b = b1b2 . . . bn b¦d¡ sªowami kodu blokowego.Odlegªo±ci¡ Hamminga d(a,b) pomi¦dzy sªowami a oraz b nazywamy liczb¦pozycji na których sªowa te maj¡ ró»ne bity, tj.
d(a,b) = # {1 ≤ i ≤ n : ai 6= bi} .
W kodzie powtórze« Kn odlegªo±¢ Hamminga pomi¦dzy dwoma ró»nymisªowami wynosi n. W kodzie K∗6 jest ona wi¦ksza lub równa 3.
5.4 Twierdzenie. Dla danego alfabetu A odlegªo±¢ Hamminga okre±la me-tryk¦ na zbiorze Wn(A) wszystkich sªów n�literowych.
Dowód. Zauwa»my, »e wprost z de�nicji wynika, »e d(a, a) = 0 oraz, »ed(a,b) > 0 dla a 6= b. Dalej mamy d(a,b) = d(b, a). Wystarczy zatempokaza¢, »e zachodzi warunek trójk¡ta. W tym celu zapiszmy a = a1a2 . . . an,b = b1b2 . . . bn oraz c = c1c2 . . . cn. Przyjmijmy d(a,b) = v i d(b, c) = woraz zaªó»my, »e
ai1 6= bi1 , ai2 6= bi2 , . . . , aiv 6= biv ,bj1 6= cj1 , bj2 6= cj2 , . . . , bjw 6= cjw .
Rozwa»my teraz d(a, c). Odlegªo±¢ ta b¦dzie najwi¦ksza, je±li »adne is niepokryje si¦ z jr i b¦dzie wówczas równa dokªadnie v + w. Tak wi¦c ogólnie,
d(a, c) ≤ d(a,b) + d(b, c).
Opisan¡ przestrze« metryczn¡ mo»na zinterpretowa¢ geometrycznie jakograf, którego wierzchoªkami s¡ sªowa kodowe, a kraw¦dziami s¡ poª¡czonetylko te wierzchoªki, które ró»ni¡ si¦ mi¦dzy sob¡ o jeden bit. Odlegªo±¢pomi¦dzy dwoma wierzchoªkami, to najmniejsza ilo±¢ kraw¦dzi, które trzebapokona¢, by dotrze¢ od jednego wierzchoªka do drugiego.
Odlegªo±¢ Hamminga wykorzystujemy przy wykrywaniu i poprawianiubª¦dów powstaªych w wyniku transmisji przez ª¡cze BSC. Przesªany kodb¦dziemy dekodowa¢ wedªug dekodowania maksymalnego podobie«stwa1 (MLD).Jego dwie gªówne zasady to:
• je±li otrzymujemy sªowo kodowe, zakªadamy, »e nie wyst¡piª bª¡d trans-misji;
1ang. maximum likelihood decoding
33
• je±li otrzymane sªowo nie nale»y do kodu, dekodujemy je jako sªowokodowe, które jest najbli»ej otrzymanego w sensie odlegªo±ci Ham-minga. Je»eli mamy wi¦cej ni» jeden wybór, wybieramy losowo.
Je±li otrzymane sªowo nie jest sªowem kodowym, jeste±my pewni, »e wys-t¡piª bª¡d. Mamy wówczas dwa wyj±cia: zawiadomi¢ o tym nadawc¦ i po-prosi¢ o ponown¡ transmisj¦, lub te» poprawi¢ bª¡d stosuj¡c zasad¦ MLD.Mówimy, »e kod wykrywa t bª¦dów, je±li dla dowolnego sªowa kodowego a ika»dego sªowa a' otrzymanego z a przez zmian¦ co najwy»ej t bitów, a' niejest sªowem kodowym. Mówimy, »e kod poprawia t bª¦dów, je»eli dla dowol-nego sªowa kodowego a i ka»dego sªowa a' otrzymanego z a przez zmian¦co najwy»ej t bitów, procedura MLD dekodowania a' wiedzie jednoznaczniedo a.
5.5 Wykrywanie i poprawianie bª¦dów
Aby powi¡za¢ wykrywanie i poprawianie bª¦dów z odlegªo±ci¡ Hamminga,potrzebna nam b¦dzie nast¦puj¡ca de�nicja. Minimaln¡ odlegªo±ci¡ d(K)dla nietrywialnego kodu K nazywamy najmniejsz¡ niezerow¡ odlegªo±¢ Ham-minga pomi¦dzy dwoma ró»nymi sªowami kodowymi.
d(K) = inf {d(a,b) : K 3 a 6= b ∈ K} .
5.5 Twierdzenie. Kod K wykrywa t bª¦dów wtedy i tylko wtedy, gdy
d(K) > t.
Dowód. Zaªó»my najpierw, »e d(K) > t. Je»eli sªowo a' zostaªo otrzymaneze sªowa kodowego a przez zmian¦ t bitów, to d(a, a') = t < d(K). Zatem a'
nie mo»e by¢ sªowem kodowym.Zaªó»my teraz, nie wprost, »e d(K) ≤ t. Niech a oraz a' b¦d¡ takimi
sªowami kodowymi, »e d(K) = d(a, a') ≤ t. Je±li sªowo a' powstaªo zwysªanego sªowa a poprzez znieksztaªcenie co najwy»ej t bitów, to poniewa»a' jest sªowem kodowym, bª¡d pozostaje nie wykryty.
Udowodnimy teraz podobne twierdzenie na temat poprawiania bª¦dów.
5.6 Twierdzenie. Kod K poprawia t bª¦dów wtedy i tylko wtedy, gdy
d(K) > 2t.
34
Dowód. Zaªó»my, »e d(K) > 2t, a jest sªowem kodowym oraz a' otrzymal-i±my z a przez zmian¦ co najwy»ej t symboli. Zaªó»my, »e procedura MLDdla sªowa a' prowadzi do sªowa b ∈ K. Wówczas
d(a,b) ≤ d(a, a') + d(a',b).
Z drugiej strony jednak,
d(a,b) ≥ d(K) > 2t.
Zatemd(a',b) ≥ d(a,b)− d(a, a') > 2t− t = t ≥ d(a, a').
Otrzymana nierówno±¢ daje sprzeczno±¢, poniewa» b jest dalej ni» a od a'.Zaªó»my teraz nie wprost, »e K poprawia t bª¦dów, ale d(K) ≤ 2t. Niech
a oraz b b¦d¡ sªowami kodowymi, dla których d(K) ≤ d(a,b)) = u ≤ 2t.Oznaczmy przez i1, i2, . . . , iu wszystkie wska¹niki, dla których ai 6= bi.Zaªó»my, »e min(t, u) = v oraz v ≤ u− v. Zde�niujmy a' nast¦puj¡co
a′i =
ai = bi, je»eli i /∈ {i1, i2, . . . , iu}ai, je»eli i ∈ {i1, i2, . . . , iv}bi, w przeciwnym wypadku.
Wówczas a' ró»ni si¦ od a o dokªadnie u − v ≤ t bitów. Jednak»e proce-dura MLD dla a' prowadzi do b. Podobnie post¦pujemy je±li v ≥ u − v,tylko w de�nicji a′i zamieniamy ai oraz bi. W obu przypadkach otrzymujemysprzeczno±¢.
35
Rozdziaª 6
Kody liniowe
Jak ju» wiemy, w celu przesªania zakodowanego tekstu dzielimy go na blokirównych dªugo±ci i do ka»dego z tych bloków dodajemy tak zwane bitysprawdzaj¡ce. Bity te s¡ w ±cisªej zale»no±ci z bitami informacyjnymi, czylitymi, z których skªadaª si¦ blok przed dodaniem do niego symboli sprawdza-j¡cych. Wspomniana zale»no±¢ najcz¦±ciej jest liniowa i dlatego odpowiada-j¡cy kod nazwiemy kodem liniowym. W dalszym ci¡gu rozwa»a¢ b¦dziemytylko kody dwójkowe, jednak»e podane de�nicje i wªasno±ci przenosz¡ si¦ naprzypadek ogólny.
6.1 De�nicja
W naszych rozwa»aniach przyjmiemy, »e alfabet kodowy ma struktur¦ ciaªa(sko«czonego). W dalszym ci¡gu wykªadu oznaczymy go przez F. Wówczaszbiór wn(F) wszystkich sªów n�literowych daj¡cych si¦ zapisa¢ za pomoc¡alfabetu F ma struktur¦ przestrzeni wektorowej nad ciaªem F je»eli dziaªaniadodawania wektorów a = a1a2 . . . an, b = b1b2 . . . bn i mno»enia przez skalar λokre±limy nast¦puj¡co:
a+ b = (a1 + b1)(a2 + b2) . . . (an + bn)
λa = (λa1)(λa2) . . . (λan).
Dodawanie wspóªrz¦dnych oraz mno»enie przez λ jest dodawaniem i mno»e-niem zde�niowanym w ciele F.
Kodem liniowym dªugo±ci n nazywamy dowoln¡ podprzestrze« wektorow¡Kprzestrzeni wn(F). Je»eli dimK = k, kod K nazywamy liniowym (n, k)�
36
kodem w alfabecie F. Nie trudno si¦ domy±li¢, »e wymiar podprzestrzeniK jest liczb¡ bitów informacyjnych. Mo»na te» zauwa»y¢, jak rozkodowu-jemy kod liniowy. Mianowicie, je±li otrzymane w wyniku transmisji sªowow nale»y do podprzestrzeni K, uznajemy, »e bª¡d nie zostaª popeªniony. Wprzeciwnym wypadku, sªowo w nale»y do pewnej warstwy s+K o ±tandar-dowym»eprezentancie. Zatem w − s ∈ K i w rozkodowujemy wªa±nie jakow− s.
6.2 Macierz generuj¡ca
Zajmiemy si¦ teraz zwi¡zkiem bitów informacyjnych z bitami sprawdzaj¡-cymi. Czyli sposobem generowania kodu. W przypadku kodów liniowychwykorzystujemy odwzorowanie liniowe z wk(F) do wn(F) czyli mno»enie przezpewn¡ macierz o wymiarach k × n o wspóªczynnikach z F. Macierz t¦nazwiemy macierz¡ generuj¡c¡. Aby zde�niowa¢ precyzyjnie to poj¦cie,przyjmijmy, »e dimK = k oraz u1u2 . . . uk jest blokiem bitów informacyjnych,który chcemy zakodowa¢. Niech e1, e2, . . . , ek b¦dzie baz¡ w K. Zatem
v ∈ K ⇐⇒ v =k∑i=1
uiei. (6.1)
Tak wi¦c bity informacyjne u1, u2, . . . , uk jednoznacznie okre±laj¡ sªowokodowe v.
Macierz¡ generuj¡c¡ kodu K nazywamy macierz
G =
e1e2. . .ek
, (6.2)
gdzie e1, e2, . . . , ek jest baz¡ w K. Aby otrzyma¢ sªowo kodowe z bitówinformacyjnych u1, u2, . . . , uk, mno»ymy[
u1 u2 . . . uk]G. (6.3)
6.1 Przykªad. Kod powtórze« Kn jest liniowym (n, 1)�kodem o macierzygeneruj¡cej
G =[1 1 . . . 1
].
37
6.2 Przykªad. Kod sprawdzaj¡cy parzysto±¢ K⊥n jest liniowym (n, n− 1)�kodem o macierzy generuj¡cej
G =
1 0 . . . 0 10 1 . . . 0 1
. . . . . .. . . . . .
0 0 . . . 1 1
.Zauwa»my, »e je±li pomno»ymy macierz generuj¡c¡ koduK⊥n przez transponowan¡macierz generuj¡c¡ kodu powtórze«Kn, to otrzymamy macierz zerow¡. Mo»emywi¦c przyj¡¢, »e oba kody s¡ w opisanym sensie ortogonalne do siebie (macierzzerow¡ otrzymamy tak»e mno»¡c macierz kodu Kn przez transponowan¡macierz generuj¡c¡ kodu K⊥n .
6.3 Przykªad. Macierze generuj¡ca nie jest okre±lona jednoznacznie. Niechodzi tu tylko o wybór wektorów bazowych ale i o ich kolejno±¢. Na przykªaddla kodu K∗4 (zobacz przykªad 5.2) ma 6 macierzy generuj¡cych:[
1 0 0 00 1 1 1
] [1 1 1 10 1 1 1
] [1 0 0 01 1 1 1
][0 1 1 11 0 0 0
] [0 1 1 11 1 1 1
] [1 1 1 11 0 0 0
].
Zauwa»my, »e bloki bitów informacyjnych 00, 01, 10 i 11 pomno»one kolejnoprzez ka»d¡ z powy»szych macierzy daj¡ zbiór {0000, 1000, 0111, 1111}.
Przykªadem macierzy generuj¡cej dla kodu K∗6 jest macierz 1 0 0 0 1 10 1 0 1 0 10 0 1 1 1 0
.6.4 Przykªad. Podamy teraz przykªad kodu, który jeszcze si¦ nie pojawiª.Niech r > 1 i s > 1 b¦d¡ ustalonymi liczbami naturalnymi i niech n = rs.Ka»de sªowo kodowe zapisujemy w postaci macierzy w nast¦puj¡cy sposób:
• W ka»dym z wierszy 1, 2, . . . , s − 1 zapisujemy r − 1 bitów informa-cyjnych. W sumie daje to (r − 1)(s− 1) bitów informacyjnych.
• Ostatni bit w wierszu jest bitem, który sprawdza parzysto±¢ sªowa wdanym wierszu.
38
• Ostatni wiersz skªada si¦ z bitów sprawdzaj¡cych parzysto±ci swoichkolumn.
Ustalmy r = 4 i s = 3. Przykªadem sªowa kodowego jest 1 1 0 00 1 1 01 0 1 0.
Bitami informacyjnymi s¡ tu (czytane wierszami) 110011. Jest to wi¦c(12, 6)�kod i jego baza musi by¢ sze±cio-elementowa. Przyjmijmy, »e sªowakodowe odczytujemy z macierzy poprzez ª¡czenie kolejnych wierszy. Przykªa-dem macierzy generuj¡cej jest tu wi¦c
1 0 0 1 0 0 0 0 1 0 0 10 1 0 1 0 0 0 0 0 1 0 10 0 1 1 0 0 0 0 0 0 1 10 0 0 0 1 0 0 1 1 0 0 10 0 0 0 0 1 0 1 0 1 0 10 0 0 0 0 0 1 1 0 0 1 1
.
Jak ju» zauwa»yli±my, baz¦ w podprzestrzeni mo»na wybra¢ na wielesposobów, wi¦c macierz generuj¡ca nie jest dla danego kodu wyznaczonajednoznacznie. Zawsze jednak mo»emy otrzyma¢ sªowo kodowe v mno»¡cblok bitów informacyjnych u przez macierz generuj¡c¡ (patrz (6.2) i (6.3)).Tak wi¦c
v = uG.
Zmiana macierzy generuj¡cej oznacza zmian¦ bazy w kodzie, a w konsek-wencji zmian¦ reguªy kodowania bitów informacyjnych. Je»eli na przykªad w(4, 3)�kodzie sprawdzaj¡cym parzysto±¢ przyjmiemy baz¦ {1001, 0101, 0011},to macierz generuj¡ca b¦dzie miaªa posta¢
G =
1 0 0 10 1 0 10 0 1 1
i wynik mno»enia macierzy uG da nam sªowo kodowe, w którym bity in-formacyjne b¦d¡ na pocz¡tku (czyli ka»de sªowo kodowe b¦dzie sie zaczy-na¢ od u), a bit sprawdzaj¡cy b¦dzie ostatni. Je»eli za baz¦ przyjmiemy
39
{1001, 1100, 1111}, bity informacyjne ,,schowaj¡ si¦� i nie b¦dzie ich mo»naodczyta¢ patrz¡c na sªowo kodowe. Na przykªad 101 b¦dzie zakodowane jako0110.
Najbardziej wygodnym kodem liniowym jest taki kod, w którym bityinformacyjne znajduj¡ si¦ na pocz¡tku sªowa kodowego. Takiemu kodowiodpowiada macierz generuj¡ca postaci
G = [I|B] , (6.4)
gdzie I jest macierz¡ jednostkow¡, a B macierz¡, która ustala zasady dobiera-nia bitów sprawdzaj¡cych. Kod liniowy nazywamy systematycznym, je±lijego macierz generuj¡ca ma posta¢ (6.4). Dwa kody liniowe K oraz K ′ o tejsamej dªugo±ci n nazywamy równowa»nymi, je»eli istnieje taka permutacja σzbioru n�elementowego, »e sªowu kodowemu v1v2 . . . vn ∈ K odpowiada sªowovσ(1)vσ(2) . . . vσ(n) ∈ K ′. Na przykªad kody K∗4 oraz {0000, 1011, 0100, 1111}s¡ równowa»ne (σ = (12)). Okazuje si¦, »e prawdziwe jest nast¦puj¡cetwierdzenie, które pozwala nam skupi¢ caª¡ uwag¦ na kodach systematy-cznych.
6.5 Twierdzenie. Ka»dy kod liniowy jest równowa»ny pewnemu kodowi sys-tematycznemu.
Dowód. Niech K b¦dzie (n, k)�kodem liniowym o macierzy generuj¡cej G.Zatem rz¡d tej macierzy jest równy k, a to oznacza, »e ma ona k liniowoniezale»nych kolumn. Przestawmy kolumny tak, aby owe k liniowo nieza-le»nych kolumn znalazªo si¦ z lewej strony. Oznacza to ustalenie pewnej per-mutacji bitów sªowa kodowego. Nast¦pnie poprzez wykonanie pewnej liczbyelementarnych operacji na wierszach (zamiany wierszy lub dodanie do siebiedwóch wierszy) dochodzimy do postaci [I|B]. Wykonuj¡c te operacje niezmieniamy podprzestrzeni, tylko jej baz¦. ustalona permutacja nie zmieniasi¦.
6.3 Równania opisuj¡ce kody
Macierz generuj¡ca daje nam mo»liwo±¢ zakodowania bloku informacyjnego.Je»eli bity informacyjne mamy ju» zakodowane, mo»emy powstaªy kod opisa¢stosuj¡c jednorodne ukªady równa« liniowych. Na przykªad, dla kodu powtórze«
40
Kn wiemy, »e wszystkie bity s¡ równe. Mo»na wi¦c to zapisa¢ jako x1 = x2 =· · · = xn lub, równowa»nie, w postaci
x1+xn =0x2+xn =0
· · · · · · ...xn−1+xn =0.
(6.5)
Kod sprawdzaj¡cy parzysto±¢ opisuje natomiast równanie
x1 + x2 + · · ·+ xn = 0. (6.6)
Zauwa»my, »e macierz generuj¡ca kod sprawdzaj¡cy parzysto±¢ jest macierz¡ukªadu (6.5), czyli ukªadu opisuj¡cego kod powtórze«. Natomiast macierzukªadu opisuj¡cego kod sprawdzaj¡cy parzysto±¢ (6.6) jest macierz¡ generu-j¡c¡ kod powtórze«.
Ka»dy jednorodny ukªad równa« opisuje pewien kod liniowy i odwrotnie,ka»dy kod liniowy mo»e by¢ opisany za pomoc¡ ukªadu równa« jednorodnych.Niech dane b¦d¡ dwa kody liniowe K oraz K ′. Je»eli istnieje taki ukªadrówna« jednorodnych opisuj¡cy kod K, »e macierz tego ukªadu jest macierz¡generuj¡c¡ kod K ′, to kody K i K ′ nazywamy ortogonalnymi lub dualnymi,co zapisujemy K ′ = K⊥. Zatem kod powtórze« oraz kod sprawdzaj¡cyparzysto±¢ s¡ ortogonalne.
6.4 Macierz sprawdzaj¡ca parzysto±¢
Maj¡c dany kod K oraz ukªad równa« jednorodnych opisuj¡cy ten kod,macierz¡ sprawdzaj¡c¡ parzysto±¢ kodu K nazywamy macierz tego ukªadu.Macierz t¦ oznacza¢ b¦dziemy przez H. Dla kodu sprawdzaj¡cego parzysto±¢mamy H =
[1 1 . . . 1
], a dla kodu powtórze« mamy
H =
1 0 . . . 0 10 1 . . . 0 1
. . . . . .. . . . . .
0 0 . . . 1 1
.Wprost z de�nicji wynika, »e je±li v ∈ K, to
HvT = 0T .
41
Podobnie jak macierz generuj¡ca, tak»e macierz sprawdzaj¡ca parzysto±¢nie jest okre±lona jednoznacznie. Poka»emy teraz jaki zwi¡zek zachodzipomi¦dzy macierz¡ generuj¡c¡ a macierz¡ sprawdzaj¡c¡ parzysto±¢.
6.6 Twierdzenie. Kod systematyczny o macierzy generuj¡cej G = [I|B] mamacierz sprawdzaj¡c¡ parzysto±¢ H =
[−BT |I
].
Dowód. Dla dowodu przyjmijmy, »eK jest liniowym (n, k)�kodem o macierzygeneruj¡cej G = [I|B]. Dowolne sªowo kodowe w kodzie K ma posta¢ uGdla pewnego bloku bitów informacyjnych u. Nale»y zatem sprawdzi¢, czy dladowolnego bloku bitów informacyjnych u zachodzi równo±¢ H(uG)T = 0T .Korzystaj¡c z wªasno±ci transpozycji oraz postaci macierzy G oraz H mamy
H(uG)T = HGTuT =[−BT |I
] [ IBT
]uT = (−BT I + IBT )uT = 0T .
6.7 Wniosek. Ka»dy liniowy (n, k)�kod ma macierz sprawdzaj¡c¡ parzysto±¢o wymiarach (n− k)× n. �
6.8 Wniosek. Dla danego kodu (n, k)�kodu liniowego K zachodzi równo±¢dimK + dimK⊥ = n. �
6.5 Waga Hamminga
Do tej pory mówili±my jak opisa¢ dany kod liniowy oraz jak zakodowa¢ blokbitów informacyjnych. Zajmiemy si¦ teraz dekodowaniem, czyli odczyty-waniem bitów informacyjnych, pami¦taj¡c, »e przy tej czynno±ci musimy te»korygowa¢ lub wykrywa¢ ewentualne bª¦dy powstaªe w wyniku transmisji.Okazuje si¦, »e w przypadku kodów liniowych zasad¦ MLD ªatwiej jest za-stosowa¢ ni» w przypadku ogólnym. Przede wszystkim, dzi¦ki strukturzeprzestrzeni wektorowej, mo»emy dla danego kodu wprowadzi¢ norm¦, któr¡jest zde�niowana poni»ej waga Hamminga.
Wag¡ Hamminga binarnego sªowa kodowego a = a1a2 . . . an nazywamyliczb¦ ró»nych od zera symboli w tym sªowie, tj.
||a|| = # {i : ai 6= 0} .
Zauwa»ymy zaraz, »e waga Hamminga jest norm¡ na przestrzeni wektorowejwn(F), a metryka generowana przez t¦ norm¦ jest odlegªo±ci¡ Hamminga.
42
Dzi¦ki wadze Hamminga, zastosowanie twierdze« 5.5 oraz 5.6 znacznie si¦ up-ro±ci, gdy» zamiast rozpatrywa¢ odlegªo±ci pomi¦dzy ka»dymi dwoma sªowami,wystarczy rozwarzy¢ odlegªo±¢ ka»dego ze sªów od zera.
6.9 Twierdzenie. Dla dowolnych sªów a, b ∈ wn(F) zachodz¡ nast¦puj¡cewªasno±ci:
(i) ||a|| = 0 ⇐⇒ a = 0;
(ii) || − a|| = ||a||;
(iii) ||a+ b|| ≤ ||a||+ ||b||.
(iv) Je±li okre±limy d(a,b) = ||a− b||, to d jest odlegªo±ci¡ Hamminga.
Dowód. Wªasno±ci (i) oraz (ii) s¡ ªatwe do pokazania. Zajmijmy si¦ wi¦cwªasno±ci¡ (iii). Rozwa»my w tym celu ||a + b||. Je±li ai + bi 6= 0 dlapewnego i, to ai 6= 0 lub bi 6= 0, czyli
# {i : ai + bi 6= 0} ≤ # {i : ai 6= 0}+# {i : bi 6= 0} .
Zatem ||a+ b|| ≤ ||a||+ ||b||.Dla dowodu (iv) zauwa»my, »e sªowa a oraz b maj¡ na pozycji i takie
same znaki wtedy i tylko wtedy, gdy ai − bi = 0. Zatem ||a − b|| oznaczaliczb¦ pozycji, na których symbole obu sªów s¡ ró»ne, czyli d(a,b).
Podobnie jak dla odlegªo±ci Hamminga zde�niowali±my odlegªo±¢ mini-maln¡, tak teraz zde�niujemy wag¦ minimaln¡. Wag¡ minimaln¡ kodu Knazywamy najmniejsz¡ wag¦ Hamminga niezerowego sªowa a ∈ K:
w(K) = min {||a|| : a 6= 0} .
W celu obliczenia minimalnej wagi rozwa»amy tylko odlegªo±ci Ham-minga sªów kodowych od sªowa 0, a nie wszystkie mo»liwe odlegªo±ci. Naprzykªad waga minimalna kodu sprawdzaj¡cego parzysto±¢ wynosi 2, a kodupowtórze« � n.
6.10 Twierdzenie. Dla dowolnego nietrywialnego kodu dwójkowego, wagaminimalna jest równa odlegªo±ci minimalnej.
43
Dowód. Niech a oraz b b¦d¡ sªowami kodowymi, dla których d(a,b) = d(K),gdzie przez d(K) oznaczyli±my minimaln¡ odlegªo±¢ dla naszego kodu lin-iowego K. Wówczas, poniewa» d(K) > 0,
d(K) = ||a− b|| ≥ w(K),
gdzie w(K) oznacza wag¦ minimaln¡ kodu K.Z drugiej strony, niech c b¦dzie sªowem kodowym, dla którego ||c|| =
w(K) > 0. Wówczas mamy
w(K) = ||c− 0|| = d(c,0) ≥ d(K).
Zatem w(K) = d(K).
6.11 Wniosek. Kod liniowy poprawia (wykrywa) t bª¦dów wtedy i tylko wt-edy, gdy jego waga minimalna jest wi¦ksza od 2t (t). �
6.6 Syndrom
Zajmiemy si¦ teraz dekodowaniem kodów liniowych stosuj¡c zasad¦ MLD.Zaªó»my, »e w wyniku wysªania sªowa kodowego v otrzymali±my sªowo w.Sytuacj¡ bª¦du1 nazywamy sªowo e = w − v. Aby rozkodowa¢ sªowo w
musimy wi¦c zna¢ sytuacj¦ bª¦du e. Wówczas v = w − e. Oczywi±cie,szukamy sªowa e, które ma najmniejsz¡ wag¦ Hamminga, poniewa» prowadzito, zgodnie z MLD, do najbli»szego od w, w sensie odlegªo±ci Hamminga,sªowa kodowego v.
Du»o informacji na temat sytuacji bª¦du daje nam ªatwo obliczalny syn-drom. Dokªadnie, Niech kod liniowy K ma macierz sprawdzaj¡c¡ parzys-to±¢ H. Syndromem sªowa w nazywamy iloczyn s = HwT . Zatem, je±li Kjest (n, k)�kodem, macierz sprawdzaj¡ca parzysto±¢ H ma n kolumn i n− kwierszy. Zatem syndrom s ∈ wn−k(F).
6.12 Twierdzenie. Sytuacja bª¦du ma ten sam syndrom, co otrzymane sªowo,tj. dla dowolnego sªowa kodowego v i sytuacji bª¦du e,
HeT = H(v+ e)T .
1ang. error pattern
44
Dowód. Poniewa» v jest sªowem kodowym, wi¦c HvT = 0T . St¡d
H(v+ e)T = HvT +HeT = HeT .
Powy»sze twierdzenie, cho¢ jest wyj¡tkowo proste w tre±ci i dowodzie,stanowi podstaw¦ dekodowania kodów liniowych: otrzymujemy sªowo, liczymyjego syndrom i szukamy sªowa kodowego o najmniejszej wadze Hamminga,które posiada taki sam syndrom.
6.7 Wykrywanie i poprawianie bª¦dów
Przypomnijmy, »e kod K wykrywa t bª¦dów, je±li jego waga minimalnajest wi¦ksza od t. Zatem kod liniowy jest tym lepszy im wi¦ksza jest jegowaga minimalna i im wi¦ksza jest liczba bitów informacyjnych. Niestety tedwa warunki stoj¡ ze sob¡ w jawnej sprzeczno±ci, o czym mówi nast¦puj¡cetwierdzenie
6.13 Twierdzenie. Waga minimalna w liniowego (n, k)�kodu speªnia nierówno±¢
w ≤ n− k + 1.
Dowód. Poniewa» kod równowa»ny kodowiK ma t¦ sam¡ wag¦ minimaln¡ w,co K, wi¦c mo»emy zaªo»y¢, »e K jest kodem systematycznym. Dla takiegokodu sªowo
v = 100 . . . 0︸ ︷︷ ︸k−1
vk+1vk+2 . . . vn
jest sªowem kodowym oraz ||v|| ≤ n− (k − 1). Zatem w ≤ n− k + 1.
Opiszemy teraz procedur¦ tak zwanego dekodowania przez syndrom. Za-ªó»my, »e K jest liniowym (n, k)�kodem z macierz¡ sprawdzaj¡c¡ parzysto±¢H, której wiersze s¡ liniowo niezale»ne. Tworzymy warstwy e + K pod-przestrzeni K wybieraj¡c reprezentantów o najmniejszej wadze Hamminga.Wszystkie elementy warstwy e+K maj¡ ten sam syndrom (twierdzenie 6.12).Sªowo s =
(HeT
)Tnazywamy syndromem warstwy. Zaªó»my, »e otrzymal-
i±my sªowo w. Dekodowanie wygl¡da nast¦puj¡co:
1. Liczymy syndrom s =(HwT
)T;
2. Znajdujemy reprezentanta e warstwy o syndromie s o najmniejszejwadze Hamminga;
45
3. Zakªadamy, »e wysªanym sªowem jest v = w− e.
Oczywi±cie, przed rozpocz¦ciem opisanej procedury, warto sporz¡dzi¢ jesttablic¦ syndromów i odpowiadaj¡cych im sytuacji bª¦du.
6.14 Przykªad. Rozwa»my kod K∗6 . Jego macierz¡ generuj¡c¡ jest1 0 0 0 1 10 1 0 1 0 10 0 1 1 1 0
.Zatem macierz¡ sprawdzaj¡c¡ parzysto±¢ jest
H =
0 1 1 1 0 01 0 1 0 1 01 1 0 0 0 1
.Poniewa» kod ma 8 elementów, a caªa przestrze« 64 elementy, wi¦c mamytu 8 warstw. Dla ka»dej warstwy wybieramy reprezentatnta o najmniejszejwadze Hamminga i obliczamy jego syndrom.
reprezentant syndrom
000000 000000001 001000010 010100000 011000100 100010000 101001000 110010010 111
Zaªó»my, »e otrzymali±my sªowo 111111. Jego syndrom, to 111. Z powy»szejtabeli odczytujemy sytuacj¦ bª¦du któr¡ jest 010010. Zatem otrzymane sªoworozkodowujemy jako 101101. Je±li otrzymanym sªowem jest 001101, to syn-dromem jest 011, czyli zakªadamy, »e wysªane zostaªo 101101. Je»eli otrzy-mamy, 010101, to syndrom tego sªowa wynosi 000, wi¦c jest to sªowo kodowei zakªadamy, »e takowe zostaªo wysªane.
46
Rozdziaª 7
Kody Hamminga
7.1 Optymalne kody poprawiaj¡ce pojedynczebª¦dy
Zajmiemy si¦ teraz kodami liniowymi, które zostaªy skonstruowane w celuwykrywania pojedynczych bª¦dów. Jak wiadomo, taki kod powinien mie¢wag¦ minimaln¡ wi¦ksz¡ lub równ¡ 3. Naszym zadaniem jest skonstruowanieoptymalnego kodu poprawiaj¡cego pojedyncze bª¦dy, czyli liczba bitów sprawdza-j¡cych powinna by¢ mo»liwie najmniejsza. Pierwszy punkt zaczepienia dajenam nast¦puj¡ce twierdzenie.
7.1 Twierdzenie. Ka»dy binarny kod liniowy dªugo±ci n poprawiaj¡cy poje-dyncze bª¦dy ma co najmniej dlog2(n+ 1)e bitów sprawdzaj¡cych.
Dowód. Zaªó»my, »e K jest naszym kodem liniowym i »e ma on r bitówsprawdzaj¡cych. Wynika st¡d, »e bitów informacyjnych jest n−r. Rozwa»mybloki informacyjne, w których wyst¦puje dokªadnie jedna jedynka. Takichbloków jest n − r. Poniewa» K poprawia pojedyncze bª¦dy, wi¦c jego min-imalna waga musi by¢ wi¦ksza lub równa 3. Zatem w±ród bitów sprawdza-j¡cych odpowiadaj¡cych rozwa»anym blokom informacyjnym musz¡ si¦ zna-jdowa¢ przynajmniej dwie jedynki. Otrzymujemy wi¦c nierówno±¢
n− r ≤(r
2
)+
(r
3
)+ · · ·+
(r
r
),
która musi by¢ speªniona. Jest ona równowa»na nierówno±ci
n− r ≤ 2r − 1− r.
47
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 optymalnykod powinien mie¢ dªugo±¢ 2m−1 oraz posiada¢ dokªadniem bitów sprawdza-j¡cych.
Przyjrzyjmy si¦ teraz jak powinna wygl¡da¢ macierz sprawdzaj¡ca parzys-to±¢ kodu poprawiaj¡cego pojedyncze bª¦dy.
7.2 Twierdzenie. Dwójkowy kod K poprawia pojedyncze bª¦dy wtedy i tylkowtedy, gdy ka»da macierz sprawdzaj¡ca jego parzysto±¢ ma niezerowe i paramiró»ne kolumny.
Dowód. Zaªó»my najpierw, »eK poprawia pojedyncze bª¦dy. NiechH b¦dziemacierz¡ sprawdzaj¡c¡ parzysto±¢ koduK, w której jedna kolumna (powiedzmyj-ta) skªada si¦ z samych zer. Wówczas sªowo o wadze Hamminga 1, którejedyn¡ jedynk¦ ma na pozycji j-tej jest sªowem kodowym. Zatem K niemo»e poprawia¢ pojedynczych bª¦dów. Zaªó»my teraz, »e macierz sprawdza-j¡ca parzysto±¢ kodu K ma identyczne dwie kolumny, powiedzmy i-t¡ orazj-t¡. Wtedy sªowo o wadze Hamminga 2, które ma jedynki na pozycjach i-tejoraz j-tej jest sªowem kodowym, co znów oznacza, »e K nie mo»e poprawi¢pojedynczych bª¦dów.
Zaªó»my teraz, »eH jest macierz¡ sprawdzaj¡c¡ parzysto±¢ koduK, któranie ma kolumn skªadaj¡cych si¦ z samych zer oraz nie ma dwóch identycznychkolumn. Mno»¡cH przez sªowo w którym wyst¦puje dokªadnie jedna jedynka(powiedzmy na pozycji j), otrzymamy j-t¡ kolumn¦ macierzy H, która niejest zerowa. Zatem sªowa o wadze Hamminga jeden nie s¡ sªowami kodowymi.Podobnie, je±li pomno»ymyH przez sªowo maj¡ce jedynki na pozycjach i orazj otrzymamy sum¦ i-tej i j-tej kolumny macierzy H. Poniewa» kolumny tes¡ ró»ne, wi¦c suma nie b¦dzie zerowa. Zatem sªowa o wadze Hamminga 2te» nie s¡ sªowami kodowymi. Tak wi¦c waga minimalna kodu K wynosiprzynajmniej 3, czyli K poprawia pojedyncze bª¦dy.
Z powy»szego twierdzenia w poª¡czeniu z twierdzeniem 7.1 wnioskujemyjak powinna wygl¡da¢ macierz sprawdzaj¡ca parzysto±¢ optymalnego kodupoprawiaj¡cego pojedyncze bª¦dy. Jej kolumnami powinny by¢ kolejne liczbyod 1 do 2m − 1 zapisane w ukªadzie dwójkowym.
Liniowy kod dwójkowyK nazywamy kodem Hamminga, je±li dla pewnegom ≥ 2 macierz sprawdzaj¡ca parzysto±¢ kodu H ma m wierszy oraz 2m − 1
48
kolumn, które stanowi¡ liczby od 1 do 2m − 1 zapisane w systemie o pod-stawie 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 de�nicji wynika, »e kody Hamminga zale»¡ od jednego parama-tru m, który jest liczb¡ naturaln¡ wi¦ksz¡ lub równ¡ 2. Kody Hammingab¦dziemy wi¦c oznacza¢ KHm. Dla KH2, macierz¡ sprawdzaj¡c¡ parzysto±¢jest macierz 2× 3 [
0 1 11 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
].
Rozwa»my teraz kod KH3. Jego macierz¡ sprawdzaj¡c¡ parzysto±¢ jest 0 0 0 1 1 1 10 1 1 0 0 1 11 0 1 0 1 0 1
.Kod jest wi¦c opisany ukªadem równa«
x4 + x5 + x6 + x7 = 0x2 + x3 + x6 + x7 = 0x1 + x3 + x5 + x7 = 0,
który jest równowa»ny poni»szemu:
x5 = x2 + x3 + x4x6 = x1 + x3 + x4x7 = x1 + x2 + x4.
49
Je±li wi¦c x1, x2, x3 oraz x4 s¡ bitami informacyjnymi, to macierz generuj¡caKH3 ma posta¢
1 0 0 0 0 1 10 1 0 0 1 0 10 0 1 0 1 1 00 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 tujeszcze macierz sprawdzaj¡c¡ parzysto±¢ kodu KH4, ale nie b¦dziemy tegokodu szczegóªowo rozwa»a¢.
0 0 0 0 0 0 0 1 1 1 1 1 1 1 10 0 0 1 1 1 1 0 0 0 0 1 1 1 10 1 1 0 0 1 1 0 0 1 1 0 0 1 11 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 ªat-wo±¢ ich dekodowania. Tak jak w przypadku ogólnym, dekodowanie polegana obliczeniu syndromu, którym jest iloczyn macierzy sprawdzaj¡cej parzys-to±¢ i otrzymanego sªowa. Tym razem jednak nie trzeba konstruowa¢ tabelireprezentantów warstw oraz odpowiadaj¡cej im listy syndromów jak w poprzed-nim rozdziale, poniewa» tutaj syndrom jest zapisanym w ukªadzie dwójkowymnumerem pozycji znieksztaªconego bitu. Dla przykªadu, rozwa»my sytuacj¦,w której otrzymujemy sªowo 1101011 (wykorzystujemy kod KH3). Jego syn-dromem jest
sT =
0 0 0 1 1 1 10 1 1 0 0 1 11 0 1 0 1 0 1
1101011
=
110
,
co oznacza, »e znieksztaªcony zostaª (110)2 = 6 bit. Zatem otrzymane sªowodekodujemy jako 1101001.
50
Dlaczego opisany powy»ej algorytm jest prawidªowy? Aby odpowiedzie¢na to pytanie, zaªó»my, »e otrzymali±my sªowo w = w1w2 . . . w2m−1 ze zniek-sztaªconym jednym bitem. Przyjmijmy, »e bª¡d wyst¡piª na pozycji i. Zniek-sztaªcenie bita jest równowa»ne dodaniu sªowa di, które ma zera na wszyst-kich pozycjach z wyj¡tkiem i-tej. Zatem w = v+ di, gdzie v jest wysªanymsªowem kodowym. Je±li macierz sprawdzaj¡c¡ parzysto±¢ oznaczymy przezH,to syndrom (transponowany) jest równy
HwT = HvT +HdTi = HdTi .
Ale ostatni iloczyn to i-ta kolumna macierzy H, czyli i zapisane w systemieo 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
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 poje-dyncze bª¦dy, zatem odlegªo±¢ minimalna musi wynosi¢ przynajmniej trzy.Po drugie, sªowo 11100 . . . 0 jest sªowem kodowym w dowolnym kodzie Ham-minga, wi¦c waga minimalna (a wi¦c i odlegªo±¢ minimalna) KHm wynosidokª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 odpewnego sªowa kodowego wynosi dokªadnie 1. Oznacza to, »e je±li w wynikutransmisji wystapiªy dwa bª¦dy, to otrzymane sªowo zostanie na pewno ¹lerozkodowane.
51
Rozdziaª 8
Kody Reeda�Müllera
Zajmiemy si¦ teraz pewn¡ szczególn¡ klas¡ kodów poprawiaj¡cych bª¦dy.Kody te oznaczane s¡ przez R(m, r) i nazywane kodami Reeda�Müllera. S¡to kody liniowe dªugo±ci n = 2m, które maj¡ k =
∑ri=0
(ni
)bitów informa-
cyjnych, a ich odlegªo±¢ minimalna wynosi d = 2m−r. Kody te poprawiaj¡2m−r−1 − 1 bª¦dów.
Kod R(1, 5) zostaª u»yty w 1969 roku do przekazu zdj¦¢ z powierzchniKsi¦»yca. Kod ten poprawia 7 bª¦dów. Ka»dej kropce (pixelowi) zakodowanegoobrazu odpowiadaª ci¡g 32 bitów, z których tylko 6 byªo bitami informa-cyjnymi. Dzi¦ki tym sze±ciu bitom mo»na byªo zakodowa¢ 26 = 64 odcieni.
Zanim jednak przejdziemy do szczegóªowego omówienia kodów Reeda�Müllera, zajmiemy si¦ funkcjami okre±lonymi na zbiorze {0, 1}k i za ich po-moc¡ zde�niujemy wspomniane kody.
8.1 Funkcje Boole'a
Funkcj¡ Boole'a nazywamy dowoln¡ funkcj¦ okre±lon¡ na zbiorze {0, 1}mo warto±ciach w {0, 1}. �atwo jest zauwa»y¢, »e wszystkich takich funkcjijest dokªadnie 22
m. Najcz¦±ciej u»ywanymi funkcjami Boole'a s¡ negacja,
alternatywa, koniunkcja, implikacja i równowa»no±¢. Pierwsza z tych funkcjijest okre±lona na {0, 1}, podczas gdy pozostaªe na {0, 1}2. Funkcje Boole'amo»emy przedstawia¢ za pomoc¡ tabelki. Wówczas wszystkie argumentywypisujemy po lewej stronie w postaci dwójkowych rozwini¦¢ liczb 0, 1,2, . . . , 2m − 1, a odpowiadaj¡ce im warto±ci po prawej. Na przykªad al-ternatyw¦ przedstawiamy jak na rysunku 8.1.
52
00 001 110 111 1
Rysunek 8.1: Alternatywa
0 . . . 000 0 f0 = 00 . . . 001 1 f1 = 10 . . . 010 2 f2 = 1. . . . . . . . . . . . . . . . . . . . . . . . . . .1 . . . 111 2m − 1 f2m−1 = 1
Rysunek 8.2: Funkcja Boole'a
W celu unikni¦cia dªugiego ci¡gu zer i jedynek, mo»emy pisa¢ liczb¦ wsystemie dziesi¦tnym, któr¡ ten ci¡g reprezentuje. Mo»emy wi¦c zapisa¢ jakna rysunku 8.2.
Poniewa» liczby w zapisie dwójkowym pojawiaj¡ si¦ wedªug naturalnegoporz¡dku, wi¦c ka»d¡ funkcj¦ Boole'a mo»emy zapisa¢ podaj¡c jej kolejnewarto±ci, tj.
f = f0f1 . . . f2m−1.
Dla przykªadu, alternatyw¦ zapisujemy jako 0111, a negacj¦ zapisujemy wpostaci 10. W ten sposób uto»samiamy ka»d¡ funkcj¦ Boole'a ze sªowembinarnym dªugo±ci 2m.
Wyró»nimy kilka szczególnych funkcji Boole'a. Dwie staªe funkcje, to1 = 111 . . . 1 oraz 0 = 000 . . . 0. Zaªó»my teraz, »e f jest funkcj¡ Boole'am zmiennych. Ka»dy z argumentów, to zapisana w ukªadzie dwójkowymliczba 0,1, . . . , 2m − 1. Bior¡c wszystkie cyfry najni»szego rz¦du otrzy-mamy funkcj¦ Boole'a, któr¡ oznaczymy przez x0. �atwo zauwa»y¢, »ex0 = 0101 . . . 01. Bior¡c wszystkie cyfry pierwszego rz¦du otrzymamy funkcj¦x1 = 00110011 . . . 0011 itd. Ogólnie, funkcja xi przyporz¡dkowuje ka»dejliczbie od 0 do 2m − 1 jej i�t¡ cyfr¦ w ukªadzie dwójkowym (i ≥ 0). Naprzykªad, dla m = 4 mamy jak na rysunku 8.3.
53
x0 x1 x2 x3
0000 0 0 0 00001 1 0 0 00010 0 1 0 00011 1 1 0 00100 0 0 1 00101 1 0 1 00110 0 1 1 00111 1 1 1 01000 0 0 0 11001 1 0 0 11010 0 1 0 11011 1 1 0 11100 0 0 1 11101 1 0 1 11110 0 1 1 11111 1 1 1 1
Rysunek 8.3: funkcje specjalne
54
8.2 Wielomiany Boole'a
Skoro ka»d¡ funkcj¦ Boole'a mo»emy uto»sami¢ ze sªowem binarnym, wi¦c wzbiorze wszystkich takich funkcjim zmiennych mo»emy wprowadzi¢ struktur¦przestrzeni wektorowej nad Z2. Sum¦ dwóch funkcji Boole'a de�niujemy takjak dodawanie dwóch sªów, tj. je±li f = f0f1 . . . f2m−1 oraz g = g0g1 . . . g2m−1,to
f+g = ((f0+g0) mod 2)((f1+g1) mod 2) . . . ((f2m−1+g2m−1) mod 2). (8.1)
Sum¦ zde�niowan¡ w (8.1) nazywamy sum¡ logiczn¡. Dodatkowo zde�niu-jemy jeszcze iloczyn logiczny wedªug wzoru
fg = (f0g0)(f1g1) . . . (f2m−1g2m−1).
Zauwa»my, »e ff = f dla dowolnej funkcji Boole'a f. Zªo»enie negacji orazfunkcji f mo»emy zapisa¢ w postaci v f = 1 + f. Natomiast zªo»enie alter-natywy i funkcji f oraz g zapisujemy
f ∨ g = f+ g+ fg.
Wielomianem Boole'a m zmiennych jest suma logiczna iloczynów log-icznych funkcji 1, x0, . . . , xm−1. Na przykªad, wielomianami logicznymi s¡0 (pusta suma), 1, 1+ x0x3 itp.
Stopniem wielomianu Boole'a ró»nego od 0 i od 1 nazywamy najwi¦ksz¡liczb¦ czynników xi, gdzie i ∈ {0, 1, . . . ,m− 1} wyst¦puj¡cych w iloczynie,który jest skªadnikiem danego wielomianu. Stopnie 0 oraz 1 de�niujemyjako, odpowiednio −∞ i 0.
Wielomian 1+x1x2 jest wielomianem stopnia 2. Mo»e on by¢ rozwa»anyjako wielomian 3, 4, 5, . . . zmiennych. Je»eli rozwa»amy go jako wielo-mian trzech zmiennych, to jest on równy funkcji Boole'a 11101110. Je±lib¦dziemy go rozwa»a¢ jako wielomian czterech zmiennych, to b¦dzie on równy1110111011101110.
Okazuje si¦, »e ka»da funkcja Boole'a jest wielomianem Boole'a. Dowódtego faktu wynika bezpo±rednio z poni»szego
8.1 Lemat. Dla dowolnej funkcji Boole'a f zachodzi
f(x0, x1, . . . , xm−1) = f(x0, x1, . . . , xm−2, 0)+(f(x0, x1, . . . , xm−2, 0)
+ f(x0, x1, . . . , xm−2, 1))xm−1.
(8.2)
55
Dowód. Poniewa» xm−1 mo»e by¢ równy tylko 0 lub 1, wi¦c wystarczy rozwa»y¢dwa przypadki. Je±li xm−1 = 0, to wzór (8.2) jest oczywisty. Je»eli xm−1 = 1,to drugi skªadnik w (8.2) jest równy
f(x0, x1, . . . , xm−2, 0) + f(x0, x1, . . . , xm−2, 1)
co po dodaniu do pierwszego skªadnika daje
f(x0, x1, . . . , xm−2, 1) = f(x0, x1, . . . , xm−1).
8.2 Twierdzenie. Ka»da funkcja Boole'a jest wielomianem Boole'a.
Dowód. Zauwa»my, »e funkcja f(x0, x1, . . . , xm−2, 0) jest funkcj¡ m − 1 zmi-ennych. Po zastosowaniu dla niej lematu 8.1 otrzymamy sum¦ iloczynówfunkcji Boole'a m − 2 zmiennych oraz bitów xm−1 oraz xm−2. Schodz¡c docoraz to mniejszej liczby zmiennych, otrzymamy w ko«cu sum¦ iloczynów 1,x0, x1 . . . , xm−1. Poniewa» xi(x0, x1, . . . , xm−1) = xi, wi¦c f jest wielomi-anem.
Dla przykªadu rozwa»my funkcj¦ f = 01100111. Mamy f(x0, x1, 0) = 0110oraz f(x0, x1, 1) = 0111. St¡d
f = 01100111 = 0110 + (0110 + 0111)x2
= 0110 + 0001x2
= 01 + (01 + 10)x1 + (00 + (00 + 01)x1)x2
= 01 + 11x1 + 01x1x2
= 0 + (0 + 1)x0 + (1 + (1 + 1)x0)x1 + (0 + (0 + 1))x0x1x2
= x0 + x1 + x0x1x2.
Jak ju» zauwa»yli±my, zbiór wszystkich funkcji Boole'a okre±lonych na{0, 1}m ma struktur¦ przestrzeni wektorowej. Wymiar tej przestrzeni wynosi 2m.Poka»emy, »e baz¦ wspomnianej przestrzeni stanowi¡ wszystkie (niezerowe)jednomiany Boole'a.
8.3 Twierdzenie. Przestrze« liniowa Z2m
2 ma baz¦ zªo»on¡ z jednomianów
1,xi, gdzie 0 ≤ i ≤ m− 1xixj, gdzie i, j ∈ {0, 1, . . . ,m− 1}. . . . . . . . . . . . .x0x1 . . .xm−1.
56
Dowód. Poniewa» wymienionych jednomianów jest dokªadnie(m
0
)+
(m
1
)+ · · ·+
(m
m
)= 2m,
wi¦c wystarczy pokaza¢, »e jednomiany generuj¡ caª¡ przestrze«, Ale jest toprawda wobec twierdzenia 8.2.
Na zako«czenie zauwa»my jeszcze, »e waga Hamminga jednomianu Boole'axi1xi2 . . .xir wynosi 2
m−r.
8.3 Kody Reeda�Müllera
Kodami Reeda�Müllera R(m, r) nazywamy kody blokowe dªugo±ci n = 2m,które skªadaj¡ si¦ ze wszystkich wielomianów Boole'a stopnia co najwy»ej r.Rozwa»ymy teraz pewne, w miar¦ proste, przykªady kodów Reeda�Müllera.
8.4 Przykªad. Przypadek r = 0. Jedynymi wielomianami Boole'a stopniaco najwy»ej 0 s¡ 1 oraz 0. Zatem R (m, 0) jest kodem powtórze«.
8.5 Przykªad. Przypadek r = 1. Poniewa» ka»dy wielomian stopnia conajwy»ej 1 jest kombinacj¡ liniow¡ jednomianów stopnia 1 lub 0, wi¦c
R(r,m) = lin({1,x0,x1, . . . ,xm−1}
).
�atwo zauwa»y¢, »e jest to liniowy (2m,m+ 1)�kod.Rozwa»my przypadek, gdy m=3. Macierz generuj¡ca koduR (3, 1) wygl¡da
nast¦puj¡co:
G =
1 1 1 1 1 1 1 10 1 0 1 0 1 0 10 0 1 1 0 0 1 10 0 0 0 1 1 1 1
.Powy»szy kod ma wi¦c cztery bity informacyjne i tyle samo sprawdzaj¡-cych. Poniewa» w ka»dym wierszu macierzy G wyst¦puj¡ przynajmniej 4jedynki, wi¦c bloki informacyjne z jedn¡ jedynk¡ maj¡ kody o wadze Ham-minga nie mniejszej od 4. Podobnie, suma dwóch wierszy macierzy G mawag¦ Hamminga wi¦ksz¡ lub równ¡ 4, wi¦c kody bloków informacyjnych zdwiema jedynkami maj¡ wag¦ Hamminga nie mniejsz¡ od czterech. Je±lirozwa»ymy kody bloków informacyjnych z trzema jedynkami, czyli sumy
57
1 1 1 1 1 1 1 10 1 0 1 0 1 0 10 0 1 1 0 0 1 10 0 0 0 1 1 1 10 0 0 1 0 0 0 10 0 0 0 0 1 0 10 0 0 0 0 0 1 1
Rysunek 8.4: Macierz generuj¡ca kodu R (3, 2)
dowolnych trzech wierszy macierzy G, to ponownie otrzymamy, »e maj¡one wag¦ przynajmniej 4. I wreszcie suma wszystkich wierszy powy»szejmacierzy ma wag¦ Hamminga 4. Zatem ostatecznie, waga minimalna koduR (3, 1) jest równa 4. Zatem kod ten poprawia pojedyncze bª¦dy lub te»wykrywa potrójne bª¦dy.
8.6 Przykªad. Przypadek r = 2, m = 3. Macierz generuj¡ca tego kodupodana jest na rysunku 8.4. Oznaczmy j¡ przez G. Po wykonaniu pewnejliczby elementarnych operacji na wierszach macierzy G otrzymamy macierzgeneruj¡c¡ kodu sprawdzaj¡cego parzysto±¢, wi¦c R (3, 2) jest kodem spraw-dzaj¡cym parzysto±¢.
Zauwa»my, »e ogólnie, ka»dy wielomian Boole'a ma parzyst¡ wag¦ Ham-minga. Z drugiej strony, je±li we¹miemy wszystkie wielomiany stopnia niewi¦kszego od m − 1, to pozostanie jedynie wielomian x0x1 . . .xm−1, wi¦ckod R (m,m− 1) ma wymiar 2m − 1. Tak wi¦c podprzestrze« R (m,m− 1)zawiera 22
m−1 funkcji Boole'a o wadze Hamminga parzystej. Wszystkichfunkcji Boole'a (m zmiennych) jest 22
m. Zatem R (m,m− 1) skªada si¦ ze
wszystkich funkcji Boole'a o parzystej wadze Hamminga. Jest to wi¦c kodsprawdzaj¡cy parzysto±¢.
Wiemy ju», »e kod sprawdzaj¡cy parzysto±¢ jest dualny do kodu powtórze«.Okazuje si¦, »e prawdziwa jest reguªa, i» kodR (m, r) jest dualny doR (m,m− r − 1).Zanim jednak udowodnimy odpowiednie twierdzenie, zako«czmy rozwa»anienaszych przykªadów. Ostatnim prostym przykªadem kodu Reeda�Müllerajest kod R (m,m). Jego baz¦ stanowi¡ wszystkie wielomiany Boole'a m zmi-ennych, zatem jest to kod blokowy bez bitów sprawdzaj¡cych.
58
8.7 Twierdzenie. Kod Reeda�Müllera R (m, r) ma dokªadnie
k =r∑i=0
(m
i
)bitów informacyjnych. Kodem dualnym do R (r,m) jest R (m,m− r − 1).
Dowód. Zauwa»my najpierw »e poniewa» jednomianów stopnia i jest dokªad-nie(mi
), wi¦c pierwsza cz¦±¢ twierdzenia jest oczywista.
Nast¦pnie zauwa»my »e
dimR (m, r)⊥ = 2m −r∑i=0
(m
i
).
Z drugiej strony
2m −r∑i=0
(m
i
)=
m∑i=0
(m
i
)−
r∑i=0
(m
i
)=
m∑i=r+1
(m
i
)
=m∑
i=r+1
(m
m− i
)
=m−r−1∑i=0
(m
i
).
Zatem dimR (r,m)⊥ = dimR (m− r − 1,m). Aby zako«czy¢ dowód, poka»emy,»e ka»dy wielomian Boole'a f = f0f1 . . . fm−1 stopnia p ≤ m − r − 1 jestortogonalny do ka»dego wielomianu Boole'a stopnia q ≤ r. Niech wi¦cg = g0g1 . . . gm−1 b¦dzie dowolnym wielomianem Boole'a stopnia mniejszegolub równego r. Rozwa»my
f • g =m∑i=0
figi.
Aby f•g byªo równe 0 wystarczy pokaza¢, »e produkt logiczny fgma parzyst¡wag¦ Hamminga. W tym celu rozpatrzmy stopie« wielomianu fg. Mamy
deg fg = p+ q ≤ m− r − 1− 1 + r = m− 1.
59
Zatem fg ∈ R (m− 1,m), co jest kodem sprawdzaj¡cym parzysto±¢. St¡dwaga Hamminga fg jest parzysta.
Poka»emy jeszcze jaka jest zale»no±¢ pomi¦dzy kodami Hamminga, akodami Reeda�Müllera. W tym celu wprowadzimy nast¦puj¡c¡ de�nicj¦.Rozszerzeniem (n, k)�kodu liniowego K nazywamy (n+1, k)�kod liniowy K∗
otrzymany przez dodanie do ka»dego sªowa kodowego kodu K bitu sprawdza-j¡cego parzysto±¢, tj. je»eli x1x2 . . . xn+1 ∈ K∗, to x1x2 . . . xn ∈ K oraz∑n+1
i=1 xi = 0. Tak wi¦c je±li kodK byª opisany pewnym ukªadem równa« jed-norodnych (*), to jego rozszerzenie opisane jest ukªadem równa«, w którymwyst¦puj¡ wszystkie równania ukªadu (*) oraz równanie
∑n+1i=1 xi = 0. Zatem
je±li macierz H jest macierz¡ sprawdzaj¡c¡ parzysto±¢ kodu K, to Kod K∗
ma macierz sprawdzaj¡c¡ parzysto±¢
H∗ =
0
H 0...0
1 1 . . . 1 1
(8.3)
Porównuj¡c macierze sprawdzaj¡ce parzysto±¢ dla kodu Hamminga (7, 4)oraz kodu Reeda�Müllera R (3, 1) (która � zgodnie z twierdzeniem 8.7� jestmacierz¡ generuj¡c¡ ten kod) i bior¡c pod uwag¦ (8.3) zauwa»amy, »e kodReeda�Müllera R (3, 1) jest rozszerzeniem kodu Hamminga (7, 4). Ogólnie,prawdziwe jest nast¦puj¡ce twierdzenie.
8.8 Twierdzenie. R (m,m− 2) jest rozszerzeniem kodu Hamminga dªugo-±ci 2m − 1
Dowód. Macierz sprawdzaj¡ca parzysto±¢ kodu R (m,m− 2) jest to macierzgeneruj¡ca kod R (m, 1). Po dodaniu (w tej macierzy) pierwszego wiersza dowszystkich pozostaªych i przesuni¦ciu wszystkich wierszy o jedn¡ pozycj¦ wgór¦ (pierwszy wiersz staje si¦ wówczas ostatnim), otrzymamy macierz
1 0 1 0 1 0 . . . 1 01 1 0 0 1 1 . . . 0 0. . . . . . . . . . . . . . . . . . . . . . . . . . .1 1 1 1 1 1 . . . 0 01 1 1 1 1 1 . . . 1 1
,
60
w której pierwszy wiersz skªada si¦ z 1 i 0 wpisywanych na przemian. Drugiwiersz stanowi¡ bloki 11 i 00 wpisywane na przemian, itd. Przedostatniwiersz to jedynki do poªowy, a od poªowy zera i wreszcie ostatni wierszskªada si¦ z samych jedynek. Po skre±leniu ostatniego wiersza oraz ostatniejkolumny otrzymamy macierz mm − 1, w której kolumny (zgodnie z de�nicj¡x0, x1 . . . , xm−1) stanowi¡ wszystkie liczby od 1 do 2m−1 zapisane w ukªadzieo podstawie 2. Zatem macierz ta jest macierz¡ sprawdzaj¡c¡ parzysto±¢ koduHamminga dªugo±ci 2m − 1.
8.4 Geometria a�niczna nad ciaªem Z2
Aby zobaczy¢, jak dekoduje si¦ kody Reeda�Müllera, wprowadzimy inn¡ in-terpretacj¦ tych kodów i poka»emy, »e jest ona izomor�czna z wcze±niej po-dan¡. Wspomniana interpretacja opiera si¦ na geometrii a�nicznej.
Przestrzeni¡ a�niczn¡ zwi¡zan¡ z przestrzeni¡ wektorow¡ V nad ciaªem Fnazywamy zbiór A, je»eli okre±lona jest funkcja f : A× V → A, która przy-porz¡dkowuje parze (p, v) element f(p, v), tak »e speªnione s¡ nast¦puj¡cewarunki:
1. f(p, v+w) = f(f(p, v), w) dla dowolnego p ∈ A i dowolnych v, w ∈ V ;
2. Dla dowolnych elementów p,q ∈ A istnieje dokªadnie jeden wektorv ∈ V , taki »e f(p, v) = q.
Elementy przestrzeni A nazywamy punktami, a elementy V nazywamywektorami. Zwykle uto»samiamy przestrze« a�niczn¡ A z przestrzeni¡ wek-torow¡ V , z któr¡ A jest zwi¡zana. Na przykªad, piszemy R3 zarówno dlaprzestrzeni wektorowej jak i a�nicznej. Odwzorowanie f oznacza zwykledodawanie i dlatego b¦dziemy pisa¢ p + v zamiast f(p, v). W zwi¡zku zpowy»szym, je»eli mamy dane dwa punkty p,q, to wektor, o którym mowaw punkcie 2 de�nicji zapisujemy q− p.
Niech dana b¦dzie przestrze« a�niczna A zwi¡zana z przestrzeni¡ wek-torow¡ V nad ciaªem F.
• Prost¡ a�niczn¡ nazywamy zbiór {p+ tv : t ∈ F}, gdzie v 6= θ.
• Pªaszczyzn¡ a�niczn¡ nazywamy zbiór
{p+ t1v1 + t2v2 : t1, t2 ∈ F} ,
gdzie v1, v2 s¡ liniowo niezale»ne.
61
• n−pªaszczyzn¡ a�niczn¡ nazywamy zbiór
{p+ t1v1 + t2v2 + · · ·+ tnvn : t1, t2, . . . , tn ∈ F} ,
gdzie v1, v2, dots , vn s¡ liniowo niezale»ne.
Zbiory postaci
{p+ t1v1 + t2v2 + · · ·+ tnvn : t1, t2, . . . , tn ∈ K} ,
nazywamy rozmaito±ciami liniowymi. Rozmaito±ciami liniowymi s¡ wi¦c jed-noelementowe podzbiory przestrzeni A (rozmaito±ci 0�wymiarowe), proste(rozmaito±ci 1�wymiarowe) oraz n−pªaszczyzny (dla n ≥ 2).
W naszym przypadku, kiedy ciaªo F ma 2 elementy, wszystkie powy»szezbiory s¡ sko«czone. Skoro za t mo»emy podstawi¢ tylko 0 lub 1, wi¦c prostajest to zbiór dwupunktowy. Z kolei n−pªaszczyzna jest to zbiór 2n−punktowy.W szczególno±ci punkt p oraz wektory v, w wyznaczaj¡ pªaszczyzn¦
{p,p+ v,p+ w,p+ v + w} .
Dwa wektory mo»emy otrzyma¢ maj¡c trzy punkty p, q i r. Tak wi¦c trzypunkty wyznaczaj¡ pªaszczyzn¦
{p,q, r,p+ (q− p) + (r− p)}
Przypu±¢my, »e mamy dan¡ przestrze« Zm2 . Wówczas (m−1)−pªaszczyzn¦nazywamy hiperpªaszczyzn¡. Ka»d¡ hiperpªaszczyzn¦ mo»na opisa¢ rów-naniem
h0x0 + h1x1 + · · ·+ hm−1xm−1 = c, (8.4)
gdzie x0, x1, . . . , xm−1 s¡ wspóªrz¦dnymi punktów, które nale»¡ do danejhiperpªaszczyzny. Cz¦±ci¡ wspóln¡ dwóch hiperpªaszczyzn jest (m−2)−pªasz-czyzna, któr¡ mo»emy opisa¢ ukªadem dwóch równa« podobnych do (8.4) lubte» równaniem macierzowym
HpT = cT , (8.5)
gdzie H jest macierz¡ m × 2, a c jest wektorem o dwóch wspóªrz¦dnych.Ogólnie, r−pªaszczyzn¦ opisujemy równaniem macierzowym jak (8.5), tyle,»e H jest macierz¡ m× (m− r), a c ma tu m− r wspóªrz¦dnych.
62
Uto»samimy teraz r-pªaszczyzny oraz funkcje Boole'a. W tym celu wprowadz-imy funkcj¦ charakterystyczn¡ r-pªaszczyzny L. Przypu±¢my, »e L zawiera si¦w Zm2 . Ponumerujmy wszystkie punkty Zm2 od 0 do 2m − 1, Funkcj¡ charak-terystyczn¡ r-pªaszczyzny L nazywamy funkcj¦ fL = f2m−1 . . . f1f0, gdziefi = 0 je±li i−ty punkt nie nale»y do L oraz fi = 1 w przeciwnym wypadku.Przyporz¡dkowanie L → fL daje wzajemnie jednoznaczn¡ odpowiednio±¢pomi¦dzy wszystkimi rozmaito±ciami liniowymi Zm2 oraz funkcjami Boole'am zmiennych. Co wi¦cej, je±li fL oraz fM s¡ funkcjami charakterystycznymi,odpowiednio, r-pªaszczyzny L oraz s-pªaszczyzny M , to fLfM jest funkcj¡charakterystyczn¡ L ∩M . Zauwa»my jeszcze, »e je»eli hiperpªaszczyzna Hjest opisana wzorem (8.4), to jej funkcja charakterystyczna fH wyra»a si¦wzorem
fH(x0, x1, . . . , xm−1) = h0x0 + h1x1 + · · ·+ hm−1xm−1 + c+ 1.
Istotnie, punkt p = x0x1 . . . xm−1 nale»y do hiperpªaszczyzny H wtedy itylko wtedy gdy fH(p) = 1 oraz wtedy i tylko wtedy, gdy h0x0+h1x1+ · · ·+hm−1xm−1 + c = 0. Zauwa»my te», »e fH jest wielomianem Boole'a stopnia1, a dokªadnie, fH = h0x0 + h1x1 + · · ·+ hm−1xm−1 + c+ 1.
Aby poda¢ interpretacj¦ geometryczn¡ kodu Reeda-MülleraR(m, r) udowod-nimy nast¦puj¡ce twierdzenie.
8.9 Twierdzenie. Funkcj¡ charakterystyczn¡ r-pªaszczyzny jest pewien wielo-mian Boole'a stopnia m− r.
Dowód. Zapiszmy
H =
h10 h11 . . . h1m−1h20 h21 . . . h2m−1. . . . . . . . . . . . . . . . . . . . .hm−r 0 hm−r 1 . . . hm−rm−1
Zatem dowoln¡ r-pªaszczyzn¦ mo»emy opisa¢ równaniem macierzowym
HpT = cT
lub ukªadem równa« liniowych
m−1∑j=0
hijxi = ci, dla i ∈ {1, 2, . . . ,m− r},
63
który jest równowa»ny ukªadowi równa«
m−1∑j=0
hijxi + ci + 1 = 1, dla i ∈ {1, 2, . . . ,m− r}.
Zatem funkcj¡ charakterystyczn¡ naszej r-pªaszczyzny jest
f(x1, x2, . . . xm) =m−1∏i=1
(m−1∑j=0
hijxi + ci + 1
),
która jako iloczynm−1 wielomianów stopnia 1 jest wielomianem stopniam−r.
8.10 Wniosek. Kod Reeda-Müllera R(m, r) mo»na uto»sami¢ ze zbioremwszystkich rozmaito±ci liniowych wymiaru wi¦kszego lub równego m− r. �
8.5 Dekodowanie kodu Reeda-Müllera
Zaªó»my, »e punkty przestrzeni Z2m
2 s¡ ponumerowane od 0 do 2m − 1 oraz,»e mamy rozkodowa¢ kod R (m, r). Przypu±¢my, »e otrzymali±my sªowow = w2m−1w2m−2 . . . w0. r+ 1-pªaszczyzn¦ L nazywamy parzyst¡ ze wzgl¦duna w, je±li W • fL = 0, tzn. iloczyn skalarny tego sªowa i funkcji charak-terystycznej r + 1-pªaszczyzny L jest równy 0. W przeciwnym wypadku,tj. gdy w • fL = 1, r + 1-pªaszczyzn¦ L nazywamy nieparzyst¡ ze wzgl¦duna w. Dla s < r + 1, s-pªaszczyzn¦ L nazywamy parzyst¡, je»eli wi¦kszo±¢s + 1-pªaszczyzn zawieraj¡cych L jest parzysta. W przeciwnym wypadku,L nazywamy nieparzyst¡. Dekodowanie sªowa w przeprowadzamy induk-cyjnie:
KROK 1: Wyznaczamy, które r+1-pªaszczyzny s¡ parzyste, a które nieparzysteze wzgl¦du na w.
KROK INDUKCYJNY: Wyznaczamy, które s-pªaszczyzny s¡ parzyste,a które nieparzyste znaj¡c parzysto±¢ s+ 1-pªaszczyzn.
KROK OSTATNI: Zmieniamy wi, je±li 0-pªaszczyzna (punkt o numerze i)jest nieparzysta.
64
Dla kodu R (3, 1) rozkodujemy sªowo w = 11101010. Zaczynamy odwyznaczenie, które z 2-pªaszczyzn w Z8
2 s¡ parzyste, a które nieparzyste zewzgl¦du na w. Otrzymujemy
pªaszczyzna parzysto±¢ pªaszczyzna parzysto±¢
p0p1p2p3 P p0p1p4p5 Pp0p1p6p7 N p0p2p4p6 Np0p2p5p7 P p0p3p4p7 Pp0p3p5p6 N p1p2p4p7 Pp1p2p5p6 N p1p3p4p6 Np1p3p5p7 P p2p3p4p5 Pp2p3p6p7 N p4p5p6p7 N
Nast¦pnie wyznaczamy, które proste s¡ parzyste, a które nieparzyste zewzgledu na w.
prosta parzysto±¢ prosta parzysto±¢ prosta parzysto±¢p0p1 P p0p2 P p0p3 Pp0p4 P p0p5 P p0p6 Np0p7 P p1p2 P p1p3 Pp1p4 P p1p5 P p1p6 Np1p7 P p2p3 P p2p4 Pp2p5 P p2p6 N p2p7 Pp3p4 P p3p5 P p3p6 Np3p7 P p4p5 P p4p6 Np4p7 P p5p6 N p5p7 P
p6p7 N
Jedynym nieparzystym punktem jest p6, wi¦c w sªowie w zmieniamyszósty bit. Otrzymane sªowo, to 10101010.
65