Kodowanie i dekodowanie

Transkrypt

Kodowanie i dekodowanie
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 . . . . . . . . . . . . . . . . . . . . .
4
1.2
Podstawowe poj¦cia . . . . . . . . . . . . . . . . . . . . . . . .
5
1.3
Dekodowanie jednoznaczne . . . . . . . . . . . . . . . . . . . .
7
1.4
Kody blokowe i natychmiastowe . . . . . . . . . . . . . . . . .
7
1.5
Przykªady znanych kodów blokowych . . . . . . . . . . . . . .
8
2 Twierdzenia Krafta i McMillana
10
2.1
Konstruowanie kodów natychmiastowych . . . . . . . . . . . .
10
2.2
Twierdzenia
11
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
3 Kody Humana
13
3.1
™ródªo informacji . . . . . . . . . . . . . . . . . . . . . . . . .
13
3.2
Denicja kodu Humana . . . . . . . . . . . . . . . . . . . . .
14
3.3
Konstrukcja kodu Humana . . . . . . . . . . . . . . . . . . .
15
4 Kompresowanie kodów i entropia
19
4.1
Przykªad kompresowania danych . . . . . . . . . . . . . . . . .
19
4.2
Idea entropii . . . . . . . . . . . . . . . . . . . . . . . . . . . .
20
4.3
Denicja entropii
. . . . . . . . . . . . . . . . . . . . . . . . .
21
4.4
Maximum i minimum entropii . . . . . . . . . . . . . . . . . .
22
4.5
Rozszerzenie ¹ródªa . . . . . . . . . . . . . . . . . . . . . . . .
24
4.6
Entropia a przeci¦tna dªugo±¢ sªowa kodowego . . . . . . . . .
25
4.7
Twierdzenie Shannona o kodowaniu bezszumowym . . . . . . .
26
5 Pewna komunikacja poprzez niepewne ª¡cza
28
5.1
Symetryczne ª¡cze binarne . . . . . . . . . . . . . . . . . . . .
28
5.2
Pr¦dko±¢ przepªywu informacji . . . . . . . . . . . . . . . . . .
30
2
5.3
Bariera pojemno±ci . . . . . . . . . . . . . . . . . . . . . . . .
5.4
Odlegªo±¢ Hamminga . . . . . . . . . . . . . . . . . . . . . . .
32
5.5
Wykrywanie i poprawianie bª¦dów . . . . . . . . . . . . . . . .
34
6 Kody liniowe
31
36
6.1
Denicja . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
36
6.2
Macierz generuj¡ca
. . . . . . . . . . . . . . . . . . . . . . . .
37
6.3
Równania opisuj¡ce kody . . . . . . . . . . . . . . . . . . . . .
40
6.4
Macierz sprawdzaj¡ca parzysto±¢
. . . . . . . . . . . . . . . .
41
6.5
Waga Hamminga
. . . . . . . . . . . . . . . . . . . . . . . . .
42
6.6
Syndrom . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
44
6.7
Wykrywanie i poprawianie bª¦dów . . . . . . . . . . . . . . . .
45
6.8
Kody Hamminga
47
. . . . . . . . . . . . . . . . . . . . . . . . .
3
Rozdziaª 1
Kodowanie i dekodowanie
Teoria informacji zajmuje si¦ sposobami gromadzenia, przechowywania oraz
przesyª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 informacji.
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 na
tabliczce, narysowany jest pewien symbol w gurze okre±lonego ksztaªtu.
Jest tak, by ka»dy ªatwo rozpoznaª i odczytaª informacj¦. Celem nie jest tu
ukrycie 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¢ odczytany przez ka»dy telefon. Tak zwana czerwona linia Waszyngton
- Moskwa posiada urz¡dzenia szyfruj¡ce, pozwalaj¡ce zrozumie¢ tylko tre±ci
przesyªane przez okre±lony aparat telefoniczny.
Ka»dy j¦zyk mówiony te» jest przykªadem pewnego kodu sªu»¡cemu przesyªowi informacji, dzi¦ki którym porozumiewamy si¦.
4
Rysunek 1.1: Znaki drogowe
1.2
Podstawowe po j¦cia
Aby zakodowa¢ dan¡ wiadomo±¢ stosujemy pewnego rodzaju alfabet kodowy.
Najcz¦±ciej jest to zbiór dwuelementowy
{0, 1},
czyli danej literze alfabetu
przypisujemy pewien ci¡g zer i jedynek. Sªowa tworzymy poprzez poª¡czenie
kodó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 transmisja
informacji trwaªa mo»liwie nakrócej.
2) Aby zakodowana wiadomo±¢ byªa zabezpieczona przed znieksztaªceniami 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ªcenie 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. Przy tym zaªo»eniu
spróbujemy maksymalnie skompresowa¢ informacje.
Nast¦pnie otrzymany
skompresowany kod uczynimy odpornym na szumy poprzez dodanie do niego
pewnych znaków sprawdzaj¡cych.
Dowolny sko«czony zbiór nazywamy
alfabetem,
jego elementy
literami
symbolami, a sko«czone lub niesko«czone ci¡gi zªo»one z liter nazywamy
wyrazami, 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¡ alfabetu B . Do-
lub
5
A
w(B)
A
w(B)
0
1
2
3
4
00011
11000
10100
01100
10010
5
6
7
8
9
01010
00110
10001
01001
00101
Rysunek 1.2: Kod 2z5
f : A → w(B) nazywa si¦ kodowaniem. Jej obraz nazywamy
kodem. Alfabet A nazywamy alfabetem ¹ródªowym, natomiast alfabet B nazywamy alfabetem kodowym. Je±li alfabet kodowy ma dokªadnie dwa elementy, to kodowanie nazywamy binarnym, dwójkowym lub zerojedynkowym.
wolna funkcja
1.1 Przykªad.
Niech
A = {0, 1, . . . , 9} i B = {0, 1}.
Przykªadem kodu jest
funkcja z rysunku 1.2.
Zauwa»my, »e w ka»dym sªowie kodu 2z5 wyst¦puj¡ dokªadnie dwie jedynki. Policzmy ile jest mo»liwo±ci zakodowania symbolu sªowem zapisanym
alfabetem B , w którym wyst¦puj¡ dwie jedynki. Liczba tych mo»liwo±ci to
5
= 10. Zatem nasze kodowanie jest suriekcj¡. Wyraz 173 kodujemy jako
2
110001000101100. Nie u»ywamy spacji, poniewa» mo»e ona by¢ traktowana
jako litera.
Zakodowan¡ w powy»ej wiadomo±¢ 110001000101100 mo»emy
rozkodowa¢ bior¡c zawsze blok pi¦ciu znaków i odczytuj¡c z tabelki co on
oznacza. Innym sposobem rozkodowania jest u»ycie klucza 01247 jako wag
odpowiedniego symbolu w kodzie.
Dokªadnie, 110001000101100 rozszyfro-
wujemy 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
e
00
10
101
110
1001
Rysunek 1.3: Kod niejednoznacznie dekodowalny
1.3
Dekodowanie jednoznaczne
A oraz kodowego B , niech K : A → w(B) b¦Kodowaniem wiadomo±ci ¹ródªowej nazywamy funkcj¦
Dla alfabetów ¹ródªowego
dzie kodowaniem.
∗
K : w(A) → w(B)
okre±lon¡ wzorem
K ∗ (a1 a2 . . . an ) = K(a1 )K(a2 ) . . . K(an ).
Kodowanie
K
nazywamy
jednoznacznie dekodowalnym,
je±li
K∗
jest ró»no-
warto±ciowa.
Studiuj¡c procedur¦ dekodowania, ªatwo jest zauwa»y¢, »e kod 2z5 z
przykªadu 1.1 jest jednoznacznie dekodowalny.
1.2 Przykªad. Kod z rysunku 1.3 nie jest jednoznacznie dekodowalny.
10110 mo»e tu by¢ rozkodowany jako
cb
lub te» jako
bd.
Ci¡g
Zauwa»my, »e
funkcja K jest ró»nowarto±ciowa, natomiast generowana przez ni¡ funkcja
K ∗ nie jest.
1.4
Kody blokowe i natychmiastowe
Kodowanie, którego kod skªada si¦ z parami ró»nych wyrazów o jednakowej
n nazywamy kodem blokowym dªugo±ci n. Kodowanie nazywamy natychmiastowym, je»eli »adne sªowo kodowe nie jest pocz¡tkiem innego sªowa
kodowego, tj. je±li element alfabetu ¹ródªowego ma kod b1 b2 . . . bn , to »aden
inny element tego alfabetu nie ma kodu b1 b2 . . . bn bn+1 . . . bm .
dªugo±ci
Kod 2z5 jest przykªadem kodu blokowego dªugo±ci 5.
Kody blokowe
s¡ ªatwo dekodowalne, ale staj¡ si¦ za dªugie je±li pewne symbole ¹ródªowe
pojawiaj¡ si¦ w wiadomo±ci zbyt cz¦sto.
Warto wówczas zastosowa¢ kod
natychmiastowy, w którym sªowa s¡ ró»nej dªugo±ci.
7
0
000
4
100
1
001
5
101
2
010
6
110
3
011
7
111.
Rysunek 1.4: Kod ósemkowy
1.3 Przykªad. Kod Morse'a jest tak pomy±lany, »e najcz¦±ciej (w j¦zyku
angielskim) u»ywane sªowa maj¡ najkrótsze kody. Alfabetem ¹ródªowym jest
tu alfabet ªaci«ski, a alfabetem kodowym
zbioru
B
jest spacja). Liter¦
A
kodujemy
B = {·, −, } (trzecim
jako · − , a T jako −
elementem
itp. Sªowo
,,spacja ma kod
··· ·−−· ·− −·−· ·−−− ·−
Spacja zawsze jest na ko«cu kodu litery. Dlatego kod Morse'a jest natychmiastowy.
1.4 Przykªad. Kod ósemkowy
podany na rysunku 1.4 jest przykªadem
kodu blokowego. Dokªadnie, ka»de sªowo kodowe, to zapis dwójkowy cyfry
od 0 do 7.
1.5 Przykªad.
Rozwa»my kod
0
0
2
011
1
01
3
111
Nigdy nie uda nam si¦ rozkodowa¢ zakodowanej wiadomo±ci je±li nie znamy
caªego kodu. Dokªadnie, strumie«
lub te»
1.5
233 . . .
011111 . . .
mo»e by¢
033 . . .
lub
133 . . .
Zatem kod ten nie jest natychmiastowy.
Przykªady znanych kodów blokowych
128 symboli ¹ródªowych klawiatury komputera jest zakodowanych kodem
ASCII (American Standard Code for Information Interchange). Jest to binarny kod blokowy dªugo±ci 8. Siedem pierwszych cyfr tego kodu nazywamy
8
symbolami informacyjnymi, gdy» to one nios¡ informacj¦ jaki sygnaª z klawiatury zostaª nadany. Ostatni, ósmy bit jest bitem sprawdzaj¡cym parzysto±¢.
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), wydawnictwie 01 (PWN) i jej numer w tym wydawnictwie to 06891. Ostatni symbol jest symbolem sprawdzaj¡cym wyznaczonym tak, »e 11 jest dzielnikiem
P10
i=1 iai , gdzie ai jest itym znakiem kodu. Alfabet kodowy ma tu 11 symboli i oprócz cyfr jest tam jeszcze symbol X . Dla podanego kodu powy»sza
suma wynosi 209, 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 inna
zasada 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 podzielna
przez 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ªe
cyfry oznaczaj¡ numer klienta i s¡ wyznaczane przez bank. Liczba 21 jest
liczb¡ kontroln¡. Oblicza si¦ j¡ w nast¦puj¡cy sposób:
1. Literom PL przypisujemy symbol liczbowy wedªug zasady miejsce w
alfabecie+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 zera
i obliczamy reszt¦ z dzielenia otrzymanej liczby przez 97. W naszym
wypadku mamy
114020040000370232093385252100 mod 97 = 77.
4. Poprzedni wynik odejmujemy od 98. W przypadku, gdy jest to liczba
jednocyfrowa, 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 dwiema
cyframi.
Je±li przez omyªk¦ przy wykonywaniu przelewu pomylimy si¦ o
jedn¡ lub dwie cyfry w numerze konta, to przelew zostanie odrzucony.
9