wst p do teorii informacji i kodowania grzegorz...

65

Upload: others

Post on 23-Jan-2020

3 views

Category:

Documents


1 download

TRANSCRIPT

WST�P DO TEORII INFORMACJI I

KODOWANIA

Grzegorz Szkibiel

Wiosna 2013/14

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