Kody Huffmana

Transkrypt

Kody Huffmana
WST†P DO TEORII INFORMACJI I
KODOWANIA
Grzegorz Szkibiel
Wiosna 2013/14
Spis tre±ci
1 Kodowanie i dekodowanie
1.1
1.2
1.3
1.4
1.5
Kodowanie a szyfrowanie . . . . . . .
Podstawowe poj¦cia . . . . . . . . . .
Dekodowanie jednoznaczne . . . . . .
Kody blokowe i natychmiastowe . . .
Przykªady znanych kodów blokowych
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
4
4
5
7
7
8
2 Twierdzenia Krafta i McMillana
10
3 Kody Humana
13
2.1
2.2
3.1
3.2
3.3
Konstruowanie kodów natychmiastowych . . . . . . . . . . . . 10
Twierdzenia . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
™ródªo informacji . . . . . . . . . . . . . . . . . . . . . . . . . 13
Denicja kodu Humana . . . . . . . . . . . . . . . . . . . . . 14
Konstrukcja kodu Humana . . . . . . . . . . . . . . . . . . . 15
4 Kompresowanie kodów i entropia
4.1
4.2
4.3
4.4
4.5
4.6
4.7
Przykªad kompresowania danych . . . . . . . . . . .
Idea entropii . . . . . . . . . . . . . . . . . . . . . .
Denicja entropii . . . . . . . . . . . . . . . . . . .
Maximum i minimum entropii . . . . . . . . . . . .
Rozszerzenie ¹ródªa . . . . . . . . . . . . . . . . . .
Entropia a przeci¦tna dªugo±¢ sªowa kodowego . . .
Twierdzenie Shannona o kodowaniu bezszumowym .
5 Pewna komunikacja poprzez niepewne ª¡cza
5.1
5.2
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
18
18
19
20
21
23
24
25
27
Symetryczne ª¡cze binarne . . . . . . . . . . . . . . . . . . . . 27
Pr¦dko±¢ przepªywu informacji . . . . . . . . . . . . . . . . . . 29
2
5.3
5.4
5.5
Bariera pojemno±ci . . . . . . . . . . . . . . . . . . . . . . . . 30
Odlegªo±¢ Hamminga . . . . . . . . . . . . . . . . . . . . . . . 31
Wykrywanie i poprawianie bª¦dów . . . . . . . . . . . . . . . . 33
6 Kody liniowe
6.1
6.2
6.3
6.4
6.5
6.6
6.7
Denicja . . . . . . . . . . . . . .
Macierz generuj¡ca . . . . . . . .
Równania opisuj¡ce kody . . . . .
Macierz sprawdzaj¡ca parzysto±¢
Waga Hamminga . . . . . . . . .
Syndrom . . . . . . . . . . . . . .
Wykrywanie i poprawianie bª¦dów
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Optymalne kody poprawiaj¡ce pojedyncze bª¦dy
Przykªady kodów Hamminga . . . . . . . . . . .
Dekodowanie kodów Hamminga . . . . . . . . .
Uwagi ko«cowe . . . . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
7 Kody Hamminga
7.1
7.2
7.3
7.4
8 Kody ReedaMüllera
8.1
8.2
8.3
8.4
8.5
Funkcje Boole'a . . . . . . . . . . .
Wielomiany Boole'a . . . . . . . . .
Kody ReedaMüllera . . . . . . . .
Geometria aniczna nad ciaªem Z2
Dekodowanie kodu Reeda-Müllera .
3
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
35
35
36
39
40
41
43
44
46
46
48
49
50
51
51
54
56
60
63
Rozdziaª 3
Kody Humana
Kod Humana stanowi rozwi¡zanie minimalizacji dªugo±ci kodu dla danego
tekstu. Dla przykªadu, rozwa»my problem znalezienia takiego kodu binarnego dla alfabetu {A, B, D, K, R}, aby sªowo abrakadabra miaªo mo»liwie
najkrótszy kod. Interesuj¡ nas przy tym, oczywi±cie, tylko kody jednoznacznie 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 przynajmniej trzydziesto-trzy znakowy. Kod Humana daje mo»liwo±¢ zakodowania sªowa abrakadabra kodem natychmiastowym dªugo±ci 23, co daje prawie
trzydziesto 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ór
A = {a1 , a2 , . . . , an }, przy czym n > 1 wraz z funkcj¡ P : A → (0, 1) speªniaj¡c¡ warunek
n
X
P (ai ) = 1.
i=1
Zaªó»my jeszcze, »e prawdopodobie«stwa wyst¦powania poszczególnych liter
w tek±cie s¡ niezale»ne, tj.
P (ai1 ai2 . . . aik ) =
n
Y
j=1
13
P (aij ),
czyli prawdopodobienstwo wyst¡pienia sªowa ai1 ai2 . . . aik jest równe iloczynowi prawdopodobie«stw wyst¡pienia poszczególnych liter.
3.2 Denicja kodu Humana
Niech K b¦dzie kodowaniem ¹ródªa informacji, tj. alfabetu
A = {a1 , a2 , . . . , an }
wraz z przyporz¡dkowan¡ mu dystrybucj¡ prawdopodobie«stw. Oznaczmy
przez di (gdzie 1 ≤ i ≤ n) dªugo±¢ sªowa kodowego K(ai ). ‘redni¡ dªugo±ci¡
sªowa kodowego nazywamy wielko±¢
n
X
L(K) =
di P (ai ),
(3.1)
i=1
czyli warto±¢ oczekiwan¡ zmiennej losowej {(di , P (ai )) : i ∈ {1, 2, . . . , n}} lub
±redni¡ wa»on¡ prawdopodobie«stw.
Najbardziej efektywnym jest taki kod natychmiastowy, dla którego wielko±¢ L(K) jest najmniejsza. Dla danego ¹ródªa informacji S oznaczmy
przez Lmin (S) najmniejsz¡ dªugo±¢ ±redni¡ sªowa kodowego, czyli minimum
po L(K) dla wszystkich mo»liwych kodowa« alfabetu A. Minimum to istnieje, poniewa» mamy tylko sko«czon¡ liczb¦ warto±ci sumy (3.1) mniejszych
od n. Kod K , dla którego L(K) = Lmin (S) nazywamy kodem Humana.
3.1 Przykªad. Rozwa»my nast¦puj¡ce ¹ródªo informacji.
x
A
B
D
K
R
P (x)
5
11
2
11
1
11
1
11
2
11
Przypiszmy sªowa kodowe w trzech ró»nych kodach K1 , K2 i K3 nast¦puj¡co.
x
A
B
D
K1 (x) 000 001 010
K2 (x)
0
10 110
K3 (x)
0 100 101
K
011
1110
110
R
100
1111
111
Otrzymujemy
24
23
L(K3 ) = .
11
11
23
Zatem Lmin (S) ≤ 11 . Analizuj¡c warto±ci sumy (3.1) pod k¡tem znalezienia
warto±ci minimalnej, szybko zauwa»amy »e mamy tu równo±¢.
L(K1 ) = 3
L(K2 ) =
14
3.3 Konstrukcja kodu Humana
Zaªó»my, »e nasze ¹ródªo informacji ma alfabet dwuelementowy. Wówczas
przyporz¡dkowanie jednemu elementowi zera, a drugiemu jedynki jest tu optymalnym 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, »e
A = {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 0
nazywamy ¹ródªo, w którym alfabetem jest A0 = {a1 , a2 , . . . , an−2 , an−1 an }
(ostatnia litera alfabetu A0 jest sªowem w alfabecie A), natomiast dystrybucja
prawdopodobie«stw wygl¡da nast¦puj¡co:
P 0 (ai ) = P (ai ) dla 1 ≤ i ≤ n − 2
P 0 (an−1 an ) = P (an−1 ) + P (an ).
Šatwo jest sprawdzi¢, »e S 0 jest faktycznie ¹ródªem informacji.
3.2 Twierdzenie. Stosuj¡c powy»sze oznaczenia, zaªó»my, »e K 0 jest kodem
Humana dla zredukowanego ¹ródªa informacji. Wówczas kod
K(ai ) = K 0 (ai )
dla 1 ≤ i ≤ n − 2
0
K(an−1 ) = K (an−1 an )0
K(an ) = K 0 (an−1 an )1
jest kodem Humana 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 trzech
krokach.
Krok 1. Poka»emy, »e dla ¹ródªa S istnieje kod Humana K0 , dla którego
d1 ≤ 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 przebiega
wszystkie mo»liwe kody natychmiastowe okre±lone na alfabecie A ¹ródªa informacji S . Poniewa» minimum to jest osi¡galne, wi¦c kod Humana zawsze
istnieje. Niech K b¦dzie pewnym kodem Humana dla ¹ródªa informacji S .
Je»eli istnieje litera ai , dla której di > di+1 , zamieniamy sªowa kodowe liter
15
ai oraz ai+1 . Zatem ai ma teraz kod dªugo±ci di+1 , a ai+1 kod dªugo±ci di .
Otrzymany kod K1 w dalszym ci¡gu jest natychmiastowy. Poka»emy, »e jest
on te» kodem Humana. Istotnie,
L(K) − L(K1 ) = di P (ai ) + di+1 P (ai+1 ) − (di+1 P (ai ) + di P (ai+1 ))
= (di − di+1 )(P (ai ) − P (ai+1 ).
Poniewa» elementy alfabetu A s¡ uporz¡dkowane wedªug malej¡cych prawdopodobie«stw, wi¦c P (ai ) ≥ P (ai+1 ). Z drugiej strony, zaªo»yli±my, »e
di > di+1 . Zatem L(K) − L(K1 ) ≥ 0, czyli L(K) ≥ L(K1 ). Ale K jest
kodem Humana, wi¦c L(K) = Lmin (S). St¡d L(K) = L(K1 ) = Lmin (S) i
K1 te» jest kodem Humana.
Post¦pujemy podobnie a» dªugo±ci sªów kodowych zostan¡ uporz¡dkowane
rosn¡co. Odpowiadaj¡cy kod Human'a jest poszukiwanym kodem K0 .
Krok 2. Poprawimy kod K0 otrzymuj¡c kod Humana K1 taki, »e sªowa
kodowe K1 (an ) oraz K1 (an−1 ) ró»ni¡ si¦ tylko ostatnim bitem.
e 0 b¦dzie kodem otrzymanym z K0 poprzez odrzucenie ostatniego
Niech K
e 0 ) < L(K0 ) = Lmin (S) i
bitu z K0 (an ). Poniewa» P (an ) > 0, wi¦c L(K
e 0 nie mo»e by¢ kodem natychmiastowym (inaczej K0 nie byªby kodem
K
e 0 (an ) musi by¢ pocz¡tkiem pewnego sªowa kodowego
Humana). Zatem K
e 0 (ai ) dla 1 ≤ i ≤ n−1. Oznaczmy przez d˜n dªugo±¢ sªowa K
e 0 (an ).
K0 (ai ) = K
e 0 (an ) jest pocz¡tkiem sªowa K0 (ai ), wi¦c
Mamy dn − 1 = d˜n . Skoro K
˜
˜
e 0 (an ) jest pocz¡tkiem
dn ≤ di ≤ dn . Je±li jednak dn = di , to K0 (ai ) = K
sªowa kodowego K0 (an ) co przeczy natychmiastowo±ci kodu K0 . Zatem musi
by¢ 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 zatem
zamieni¢ 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 zdeniowanego w tezie twierdzenia kodu K zachodzi
równo±¢
L(K) = L(K 0 ) + P (an−1 ) + P (an ).
Niech K1 b¦dzie kodem dla ¹ródªa S otrzymanym w kroku 2. Oznaczmy przez
K10 kod dla zredukowanego ¹ródªa informacji, gdzie sªowo kodowe K10 (an−1 an )
jest równe K1 (an−1 ) lub K1 (an ) z odrzuconym ostatnim bitem oraz K10 (aj ) =
K1 (aj ) dla n 6= j 6= n − 1. Wówczas K10 jest natychmiastowy. Mamy te»
L(K1 ) − L(K10 ) = P (an−1 ) + P (an ) = L(K) − L(K 0 ).
16
St¡d L(K) = L(K1 ) − L(K10 ) + L(K 0 ). Ale K 0 jest z zaªo»enia kodem Humana, wi¦c −L(K10 ) + L(K 0 ) ≤ 0. Zatem L(K) ≤ L(K1 ). Ale skoro K1 jest
kodem Humana, wi¦c takowym musi te» by¢ K .
Konstrukcja kodu Humana dla ¹ródªa informacji S polega na tworzeniu kolejnych ¹ródeª zredukowanych S 0 , S 00 , . . . S (h) a» otrzymamy ¹ródªo z
alfabetem dwuelementowym. Nast¦pnie deniujemy tak jak w poprzednim
twierdzeniu kody Humana 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 zredukowane ¹ródªa
x
S 0:
P (x)
S 00 :
S (3) :
A
B
DK
R
5
11
2
11
2
11
2
11
x
A
BDK
R
P (x)
5
11
4
11
2
11
x
BDKR
A
P (x)
6
11
5
11
którym odpowiadaj¡ kody
K (3) (BDKR) = 0,
K (3) (A) = 1;
K 00 (A) = 1, K 00 (BDK) = 00,
K 00 (R) = 01;
K 0 (A) = 1,
K 0 (B) = 000, K 0 (DK) = 001, K 0 (R) = 01.
Ostatecznie, otrzymamy dla naszego ¹ródªa informacji nast¦puj¡cy kod Humana
x
A
K(x) 1
B
000
D
0010
K
0011
R
01
Zatem Lmin (S) = 23
i najkrótszy jednoznacznie dekodowalny kod sªowa
11
abrakadabra ma 23 znaki.
Kody Humana mo»emy te» tworzy¢ dla alfabetów kodowych o wi¦kszej
ni» dwa liczbie znaków. Caªe rozumowanie tego podrozdziaªu mo»na przenie±¢ na ten przypadekz t¡ tylko ró»nic¡, »e inaczej deniujemy kolejne ¹ródªa
zredukowane.
17

Podobne dokumenty