Kody Huffmana
Transkrypt
Kody Huffmana
WSTP 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