Notatki z Podstaw kodowania i kryptografii switch486 WIZ : PWr na podstawie folii z wykładu i ćwiczeń dr inż. E. Kukli Złożone W Systemie L A TEX Wrocław 5.6.2008
Spis treści I Kodowanie 5 Wiadomość, a informacja 6. Zbiory wiadomości................................... 6 2 Elementy teorii grafów 8 2. Wstęp.......................................... 8 2.2 Definicje......................................... 9 2.3 Definicje cd........................................ 9 3 Ilość informacji, źródła 3 3. Ilość informacji..................................... 3 3.2 Źródło wiadomości................................... 5 3.3 Entropia źródła wiadomości.............................. 5 3.4 Identyfikacja źródła wiadomości............................ 7 3.5 Źródło rozszerzone................................... 20 3.6 Źródło ciągów Markowa................................ 2 3.7 Źródło stowarzyszone do żródła Markowa...................... 26 4 Kody: definicje i klasyfikacja 28 4. Definicja kodu..................................... 28 4.2 Podstawowe rodzaje kodów.............................. 28 4.2. Kody blokowe.................................. 28 4.2.2 Kody nieosobliwe................................ 29 4.2.3 Rozszerzenie kodu............................... 29 4.2.4 Kody jednoznacznie dekodowalne....................... 3 switch486
SPIS TREŚCI SPIS TREŚCI 4.2.5 Kody jednoznacznie dekodowalne bez opóźnienia.............. 3 4.3 Zasady konstruowania kodów jednoznacznie dekodowalnych bez opóźnienia... 32 5 Kody optymalne, algorytm Huffmana 36 5. Kody optymalne.................................... 36 5.2 Algorytm Huffmana.................................. 38 6 Twierdzenie Shannona 44 7 Kompresja danych 49 7. Kodowanie ciągów binarnych............................. 49 7.. Bezpośrdnie kodowanie runów......................... 50 7..2 Metoda Golomba................................ 5 7..3 Rozrzedzanie ciągu binarnego......................... 52 7.2 Kompresja obrazów................................... 53 7.2. Wyrażenia z nawiasam............................. 53 7.2.2 Drzewo czwórkowe............................... 55 7.2.3 Obrazy z gradacją koloru........................... 56 7.3 Metody słownikowe................................... 57 7.4 Metoda LZ77...................................... 59 7.4. Kompresja................................... 59 7.4.2 Dekompresja.................................. 6 8 Kanały informacyjne 62 8. Wprowadzenie...................................... 62 8.2 Rodzaje kanałów informacyjnych........................... 64 8.3 Parametry charakteryzujące kanał informacyjny................... 65 8.4 Reguły decyzyjne.................................... 68 8.4. Reguła największego prawdopodobieństwa.................. 69 8.4.2 Reguła największej wiarygodnośći...................... 70 8.5 Straty i ryzyko..................................... 70 8.5. Przykład.................................... 7 9 Kody liniowe 73 9. Wprowadzenie...................................... 73 2 switch486
SPIS TREŚCI SPIS TREŚCI 9.2 Struktura kodu liniowego............................... 75 9.2. Odległość Hamminga.............................. 77 9.2.2 Waga Hamminga................................ 77 9.2.3 Odległość między wektorami......................... 77 9.2.4 Zdolność detekcyjna kodu........................... 78 9.3 Geometryczna interpretacja kodu liniowego..................... 78 9.4 Macierzowy opis kody liniowego............................ 80 9.5 Kody liniowe...................................... 82 9.5. Kodowanie informacji............................. 82 9.5.2 Dekodowanie ciągów odebranych....................... 83 9.5.3 Kody Hamminga................................ 86 II Kryptografia 88 0 Wprowadzenie do kryptografii 89 0. Kryptologia, kryptografia i kryptoanaliza...................... 89 0.2 Obszary zastosowań kryptografii........................... 9 0.3 Systemy kryptograficzne................................ 92 0.3. Warunki poufności............................... 94 0.3.2 Warunki autentyczności............................ 94 0.4 Systemy klucza jawnego................................ 95 0.5 Podpis cyfrowy..................................... 98 Szyfry przestawieniowe i podstawieniowe 00. Szyfry przestawieniowe................................. 00.. Szyfry macierzowe............................... 00..2 Szyfry płotowe................................. 0..3 Szyfry z kluczem permutacyjnym....................... 0.2 Szyfry podstawieniowe................................. 02.2. Szyfr Cezara.................................. 02.2.2 Szyfry monoalfabetyczne............................ 02.2.3 Szyfry homofoniczne.............................. 03.2.4 Szyfry wieloalfabetyczne............................ 05 3 switch486
SPIS TREŚCI SPIS TREŚCI.2.5 Szyfry poligramowe.............................. 06 2 Teoria liczb i arytmetyka modularna 07 2. Definicje......................................... 07 2.2 Twierdzenie - zasada arytmetyki modularnej..................... 08 2.3 Obliczanie odwrotności................................. 09 2.4 Twierdzenie 2...................................... 09 2.5 Zredukowany zbiór residuów.............................. 09 2.6 Funkcja Eulera φ(n).................................. 09 2.7 Twierdzenie 3...................................... 2.8 Twierdzenie Fermata.................................. 2.9 Uogólnione twierdzenie Eulera............................. 2 3 Szyfry wykładnicze 3 3. Wstęp.......................................... 3 3.2 Twierdzenie...................................... 4 3.3 Szyfr Pohliga - Hellmana................................ 5 3.4 Szyfr Rivesta - Shamira - Adelmana (RSA)..................... 5 3.5 Szyfry plecakowe - szyfr Merklego - Hellmana.................... 7 3.5. Algorytm SNAP................................ 8 3.6 Zagadnienie plecakowe z tajnym przejściem..................... 8 4 switch486
Część I Kodowanie 5 switch486
Rozdział Wiadomość, a informacja Ogólnie wiadomość będziemy interpretować jako konkretny obiekt, zaś informację jako pewną interpretację wiadomości. Oznacza to, że jedną wiadomość można interpretować na wiele różnych sposobów. Wiadomości można przekształcać. Wyróżnia się przekształcenia: bezstratne (tj. bez straty informacji), stratne (tj. ze stratą informacji).. Zbiory wiadomości Zbiór prosty W = w, w 2,..., w n, gdzie w i wiadomość elementarna, Zbiór złożony, tj. taki, którego elementami są ciągi (w i,..., w ik ), gdzie w ij W dla i=,..., n, j=,..., k, np. lata kalendarzowe: 674, 0963 k=4, Zbiór wielowymiarowy A = a,..., a m, B = b,..., b n, C = c,..., c p Z = A B C, (a i, b j, c k ) wiadomości elementarne Z, gdzie a i A, b j B, c k C, np. data: 23 luty 2006. Przykład Dane są następujące wiadomości: A = {a, a 2, a 3 } B = {b, b 2 } C = {c, c 2, c 3, c 4 } Z = A B C 6 switch486
. Zbiory wiadomości Wiadomość, a informacja Wyznaczyć liczbę wiadomości elementarnych zbioru Z. Mamy do czynienia ze zbiorem wielowymiarowym. Widać, że musimy sprawdzić ile jest możliwych różnych kombinacji (a i, b j, c k ), takich, że a i A, b j B, c k C. Wynikiem jest iloczyn liczności zbioru A, B i C. Więc wynikiem będzie 3 2 4. Przykład * Niech A = {I, II, III, IV }, B = {a, b, c, d, e}, C = {, 2, 3, 4, 5, 6} będą źródłami wiadomości elementarnych. Co możemy powiedzieć na temat zbioru Z = A B C? na pewno to, że jest to zbiór wielowymiarowy, zawiera więc 4 5 6 = 20 wiadomości wielowymiarowych, przykładową wiadomością elementarną ze zbioru Z jest (II, c, 2), Przykład * Ile wiadomości złożonych o długości k = 5 można utwożyć ze zbioru prostego A = {a, b, c, d, e, f, g, h}? Musimy wyliczyć ile jest wszystkich słów długości 5 złożonych z liter ze zbioru A, przy założeniu, że litery nie mogą się powtarzać. Oczywiście mamy tutaj do czynienia z prostą zależnością, wynikiem jest 8 5, ponieważ 5 - długość słowa, 8 - ilość liter do dyspozycji. 7 switch486
Rozdział 2 Elementy teorii grafów 2. Wstęp Grafem nazywamy trójkę: G = (E, K, r), gdzie: E zbiór węzłów (wierzchołków) grafu, E, K zbiór krawędzi (E K = ), r relacja incydencji, która określa węzły związane (incydentne) z daną krawędzią i odwrotnie. Zakłada się, że każda krawędź jest incydentna z co najmniej jednym i z co najwyżej dwoma wierzchołkami. Przykład G = (E, K, r), E = {e, e 2, e 3 }, K = {k, k 2, k 3, k 4, k 5 }, r = {(e, k, e 3 ), (e 2, k 2, e 3 ), (e 2, k 3, e 2 ), (e, k 4, e2 ), (e, k 5, e 2 )} e e 2 e 3 e 0 2 e 2 2 e 3 0 8 switch486
2.2 Definicje Elementy teorii grafów 2.2 Definicje Pętlą nazywamy krawędź incydentną z jednym węzłem. Rzędem węzła nazywamy liczbę krawędzi, z którymi jest on incydentny, przy czym każdą pętlę liczymy podwójnie. Drogą w grafie nazywamy ciąg (e, k, e 2, k 2,..., e n, k n, e n ), w którym sąsiednie krawędzie i węzły są incydentne. Węzły e i e n nazywamy węzłami końcowymi drogi Drogę nazywamy zamkniętą, jeżeli e = e n i otwartą, gdy e e n. Drogę, w której wszystkie krawędzie są różne nazywamy łańcuchem. Łańcuch zamknięty nazywamy cyklem. Graf nazywamy spójnym, jeżeli dla dowolnych dwóch węzłów istnieje droga, w której węzły te są węzłami końcowymi. Graf spójny zawierający co najmniej jedną krawędź i nie zawierający cykli nazywamy drzewem. Drogą Eulera nazywamy łańcuch, w którym występują wszystkie krawędzie grafu. Twierdzenie W grafie istnieje droga Eulera wtedy i tylko wtedy, gdy rzędy wszystkich węzłów grafu są parzyste lub gdy graf zawiera dokładnie dwa węzły o rzędach nieparzystych, zaś pozostałe węzły mają rzędy parzyste. Przykład Zadanie Eulera: Czy można odwiedzić wszystkie dzielnice Królewca przechodząc przez każdy most tylko jeden raz? 2.3 Definicje cd. Graf nazywamy skierowanym, gdy dla każdej krawędzi i węzłów z nią incydentnych ustalono węzeł początkowy i końcowy. 9 switch486
2.3 Definicje cd. Elementy teorii grafów Drzewem zorientowanym nazywamy taki graf spójny zorientowany, w którym istnieje dokładnie jeden węzeł (korzeń) nie będący węzłem końcowym żadnej krawędzi, a każdy z pozostałych węzłów jest węzłem końcowym dokładnie jednej krawędzi. Poziomem węzła nazywamy liczbę gałęzi leżących na drodze od korzenia do tego węzła. Drzewo nazywamy r-narnym, jeżeli liczba krawędzi wychodzących z każdego węzła jest z góry ograniczona przez Jeżeli poziomy wszystkich liści drzewa są jednakowe i równe h, to drzewo nazywamy drzewem h-poziomowym. Drzewo nazywamy pełnym, jeżeli liczba gałęzi wychodzących z każdego węzła nie będącego liściem jest równa r. Twierdzenia h poziomowe, r narne drzewo pełne zawiera r h liści. Liczby naturalne m, m 2,..., m n są poziomami węzłów końcowych drzewa r narnego wtedy Przykład i tylko wtedy, gdy spełniony jest warunek (nierówność Krafta): n r mi (2.) i= Niech r = 3. Sprawdzamy czy liczby,, 2, 2, 2, 3, 3 mogą być poziomami liści tego drzewa. Korzystamy z nierówności Krafta (2.): 2 3 + 3 3 2 + 2 3 3 = 2 3 + 3 9 + 2 27 > Ponieważ nierówność nie jest spełniona, nie da się zbudować takiego drzewa. Przykład Niech r = 3. Sprawdzamy czy liczby,, 2, 2, 3, 3 mogą być poziomami liści tego drzewa. Korzystamy z nierówności Krafta (2.): 2 3 + 2 3 2 + 2 3 3 = 2 3 + 2 9 + 2 27 < W tym przypadku nierówność jest spełniona, zatem można zbudować takie drzewo. 0 switch486
2.3 Definicje cd. Elementy teorii grafów Przykład * Dla jakich wartości x, y liczby,, 2, x, 3, y mogą być poziomami węzłów końcowych (liści) drzewa trójnarnego? Z nierówności Krafta (2.) pytamy, dla jakich liczb jest spełnione: 2 3 + 3 2 + 3 x + 3 3 + 3 y 2 3 + 9 + 3 x + 27 + 3 y 3 x + 3 y 22 27 3 x + 3 y 5 27 Widzimy, w treści zadania, że x (2, 3) (nie mamy ograniczenia na y). W tym momencie kończy się matematyka i zaczyna sprawdzanie kilku możliwości, jeśli jest wybór (test abcd), to spradzamy wszystkie pary liczb (x, y) i jeśli spełniają powyższą nierówność, to znaczy, że należy je zaznaczyć. Przykład * Co możemy powiedzieć o grafie prezentowanym przez poniższą macierz incydencji? e e 2 e 3 e 4 e 0 2 e 2 2 0 e 3 0 e 4 0 Wskazówka: Namaluj ten graf i zgodnie z definicjami na początku rozdziału 2 odczytuj informacje. to na pewno NIE jest drzewo (w tym grafie są połączenia podwójne), jest spójnym grafem, ponieważ z każdego wierzchołka możemy w kończonej liczbie kroków dojść do każdego innego wierzchołka, istnieje w nim łańcuch Hamiltona, istnieje w nim droga Eulera, nie zawiera pętli, ponieważ nie ma na przekątnej grafu wartości niezerowych; e i W ierzcholki : e i nie jest incydentny z e i, switch486
2.3 Definicje cd. Elementy teorii grafów Przykład * Co można powiedzieć o grafie przedstawionym przez poniższą macierz? a b c d k 0 k 2 y x k 3 y x k 4 y x k 5 y x k 6 x y Gdzie: {a, b, c, d} - wierzchołki grafu skierowanego {k, k 2, k 3, k 4, k 5, k 6 } - krawędzie grafu skierowanego x - wierzchołek początkowy, y - wierzchołek końcowy, 0 - pętla Wskazówka: Namaluj ten graf i zgodnie z definicjami na początku rozdziału 2 odczytuj informacje. nie ma w nim łańcuchu Hamiltona - ponieważ zaczynając od wierzchołka c nie dojdziemy do wierzchołka d, są w nim 2 cykle: pętla pdzy wierzchołku d, oraz a k 6 b k 4 a, 2 switch486
Rozdział 3 Ilość informacji, źródła 3. Ilość informacji W teorii informacji pojęcia: informacja i wiadomość są niedefiniowalne. Wiadomość traktujemy jako konkretny obiekt, zaś informację jako interpretację tego obiektu. Wiadomość uważamy za określoną, jeśli ją znamy i wiemy, z jakiego zbioru pochodzi. W konkretnym zbiorze, wiadomości są równorzędne, a rozróżnia się je na podstawie nazwy. Definicja Niech w będzie pewną wiadomością, która może pojawić się z prawdopodobieństwem p(w). Ilość informacji zawartą w wiadomości w definiujemy następująco: I r (w) = log r p(w) (3.) gdzie r podstawa logarytmu. Parametr ten decyduje o wyborze jednostki ilości informacji. Przykład dla r = 2, [I(w)] = bit, dla r = 0, [I(w)] = hartley, ogólnie mówimy o jednostkach r narnych. Jeżeli r = 2, to zamiast I r (w) piszemy I(w). 3 switch486
3. Ilość informacji Ilość informacji, źródła Przydatne twierdzenia Do zamiany jednostek, w których wyrażona jest ilość informacji wykorzystuje się przekształcenie: Ponieważ: Przykład I r (w) = I r 2 (w) log r2 (r ) log a (x) = log b(x) log b (a) Zakładając, że każdy punkt obrazu telewizyjnego może przująć 256 kolorów i obraz telewizyjny zapisany jest na 500 liniach, a każda linia składa się z 600 punktów, obliczyć ile informacji niesie za sobą obraz. Liczba obrazów : l = 256 (500 600) Prawdopodobieństwo jednego obrazu: p r (w) = l Korzystamy ze wzoru (3.): Podstawiając mamy: I r (w) = log r l = log r l I r (w) = log r 256 (500 600) = 500 600 log r 256 I r (w) = 500 600 log r 2 8 = 500 600 8 log r 2 Dla r = 2 mamy: I 2 (w) = 500 600 8 log 2 2 = 500 600 8 bitow Przykład * Ile bitów informacji niesie ze sobą obraz z wyświetlacza o rozdzielczości 280 800 pikseli i 32 bitowej głębi kolorów (tj. każdy punkt może przyjąć 2 32 kolorów)? Liczba wszystkich możliwych obrazów : l = 2 32(280 800) Prawdopodobieństwo jednego obrazu: p 2 (w) = l Korzystamy ze wzoru (3.) i liczymy: I 2 (w) = log 2 2 32(280 800) = log 2 2 32 280 800 I 2 (w) = log 2 2 32 280 800 = 280 800 32 log 2 2 I 2 (w) = 280 800 32 4 switch486
3.2 Źródło wiadomości Ilość informacji, źródła 3.2 Źródło wiadomości Definicja Źródłem wiadomości jest pewien obiekt, który z wiadomości elementarnych, tworzących ustalony i skończony zbiór W = {w, w 2,..., w n }, wytwarza ciąg wiadomości elementarnych. Kolejne wiadomości elementarne w tym ciągu wybierane są zgodnie z pewnym ustalonym rozkładem prawdopodobieństwa p = p(w ), p 2 = p(w 2 ),..., p n = p(w n ). Najprostszym rodzajem źródła wiadomości jest takie źródło, w którym kolejno generowane wiadomości elementarne są statystycznie niezależne, tj. p(w i, w k ) = p(w i ) p(w k ). Źródło wiadomości spełniające powyższą zależność nazywamy źródłem bezpamięciowym. Jest ono w pełni opisane przez zbiór wiadomości elementarnych i prawdopodobieństwa pojawiania się tych wiadomości, tj. W = {w, w 2,..., w n }, p = p(w ), p 2 = p(w 2 ),..., p n = p(w n ). 3.3 Entropia źródła wiadomości Definicja Entropią źródła wiadomości nazywamy średnią ilość informacji przypadającą na pojedynczą wiadomość generowaną przez to źródło i wyznaczamy ze wzoru: Twierdzenie H r (W ) = n p(w i ) I r (w i ) = (3.) i= n i= p(w i ) log r p(w i ) = Jeżeli p = p 2 =... = p n, to entropia jest maksymalna i równa log r (n). n i= p i log r p i (3.2) Przykładowo Dla binarnego binarnego źródła wiadomości prawdziwa jest następująca zależność: 2 H(W ) = p i log = p log + p 2 log p i= i p p 2 A ponieważ p 2 = p, to: H(W ) = p log + ( p ) log p p 5 switch486
3.3 Entropia źródła wiadomości Ilość informacji, źródła W tym przypadku entropia jest więc funkcją jednej zmiennej. Funkcję tę nazywamy funkcją entropii: H(ω) = ω log ω + ( ω) log ω Pomiędzy H(W ) a H(ω) zachodzi istotna różnica. H(W ) określa entropię konkretnego źródła W, zaś H(ω) jest funkcją zmiennej ω określoną w przedziale < 0, >. Założenie Definiujemy: 0 log 0 = 0 Przykład W urnie znajduje się 3 kule białe i czarna. Losujemy kule bez zwracania w sposób następujący: losujemy pierwszą kulę, jeżeli była to kula czarna to losowanie kończymy, jeżeli nie to postępowanie kontynuujemy, aż do wyciągnięcia kuli czarnej. Niech proces losowania będzie źródłem wiadomości takich, że wiadomością elementarną jest długość serii wyciągniętych kul. Obliczyć entropię tego źródła. Jeśli kule białe oznaczymy przerz 0, a kulę czarną przez to możliwe są takie losowania, z następującymi prawdopodobieństwami: wynik losowania p(x) 4 0 3 4 3 = 4 00 3 4 2 3 2 = 4 000 3 4 2 3 2 = 4 Obliczamy entropię ze wzoru (3.2): H r (W ) = 4 i= p i log r p i Podstawiając otrzymamy: H r (W ) = 4 4 log r 4 = log r 4 Przykład * Entropia źródła generujacego wiadomości ze zbioru W = {w, w 2, w 3, w 4 } z prawdopodobieństwami p = 2, p 2 = 4, p 3 = p 4 = 8 wynosi: 6 switch486
3.4 Identyfikacja źródła wiadomości Ilość informacji, źródła Korzystamy bezpośrednio ze wzoru (3.2): H r (W ) = 2 log 2 2 + 4 log 2 4 + 2 8 log 2 8 H r (W ) = 2 + 2 4 log 2 2 + 3 2 8 log 2 2 H r (W ) = 2 + 2 4 + 3 2 8 H r (W ) = 2 + 2 + 3 4 = + 3 4 = 3 4 3.4 Identyfikacja źródła wiadomości Przez identyfikację źródła wiadomości będziemy rozumieć rozpoznawanie (ustalanie), którą wiadomość źródło to wygenerowało. Proces identyfikacji odpowiada serii pytań, jakie trzeba zadać, by ustalić wygenerowaną wiadomość. Wybór kolejnego pytania wynika z odpowiedzi na pytanie poprzednie. Przykład Niech W = {w,, w 5 }, p,, p 5 będzie bezpamięciowym źródłem wiadomości. Sposób identyfikacji tego źródła przedstawimy na kolejnych rysunkach: 7 switch486
3.4 Identyfikacja źródła wiadomości Ilość informacji, źródła Dla celów identyfikacji stosuje się pytania r narne (mówimy o r narnym systemie identyfikacji źródła). Miarą jakości systemu identyfikacji S źródła wiadomości W jest średnia liczba pytań niezbędna do zidentyfikowania wiadomości generowanych przez to źródło. n E r (S) = l i p i (3.3) gdzie l = l(w ), l 2 = l(w 2 ),, l n = l(w n ) oznaczają liczby r narnych pytań, jakie trzeba zadać, aby zidentyfikować wiadomości generowane przez źródło W = {w,, w n }, p,, p n. Mówimy, że system S jest lepszy od systemu S, jeżeli E r (S) < E r (S ). System S jest najlepszy (optymalny), jeżeli nie istnieje taki system identyfikacji S, że E r (S ) < E r (S). i= Przykład Aby ustalić, który system identyfikacji źródła W (z poprzedniego przykładu) jest lepszy - S czy S 2 - należy obliczyć miary jakości tych systemów i porównać je ze sobą. Najpierw jednak należy 8 switch486
3.4 Identyfikacja źródła wiadomości Ilość informacji, źródła określić prawdopodobieństwa p,, p 5. Jeśli przyjmiemy, że p = = p 5 = 5, to do identyfikacji źródła W lepszy jest system S 2, ponieważ - ze wzoru (3.3): E(S 2 ) = 3 2 0.2 + 2 3 0.2 =.2 +.2 = 2.4, E(S ) = 0.2 + 2 0.2 + 3 0.2 + 2 4 0.2 = 0.2 + 0.4 + 0.6 +.6 = 2.8 zatem E(S 2 ) < E(S ). Jeśli założymy, że p = 0.5, p 2 = 0.2, p 3 = p 4 = p 5 = 0., to do identyfikacji źródła W lepszy jest system S, gdyż: E(S ) = 0.5 + 2 0.2 + 3 0. + 2 4 0. = 0.5 + 0.4 + 0.3 + 0.8 = 2, E(S 2 ) = 2 0.5 + 2 0.2 + 2 0. + 2 3 0. = + 0.4 + 0.2 + 0.6 = 2.2 zatem E(S ) < E(S 2 ). Przykład * Dane jest źródło wiadomości W = {w, w 2, w 3 }, p = 2, p 2 = p 3 = 4. Jaka jest średnia liczba pytań, jakie trzeba zadać, by zidentyfikować to źródło, tj. efektywność binarnego systemu identyfikacji E 2 (S)? Pytanie jest nieprecyzyjne, ale załóżmy, że chodzi o optymalny system identyfikacji. Rozpatrzmy poniższy graf. Liczymy jakości systemu identyfikacji zgodnie ze wzorem (3.3). E r (S) = 2 + 2 4 + 2 4 = 2 + 4 4 = 2 9 switch486
3.5 Źródło rozszerzone Ilość informacji, źródła Dodatkowo możemy się zapytać jak się ma jakości systemu identyfikacji do entropii źródła. Korzystamy ze wzoru (3.2) i liczymy entropię tego źródła. Oczywiście dla r = 2. H r (W ) = 2 log r 2 + 2 4 log r 4 H 2 (W ) = 2 log 2 2 + 2 4 log 2 4 = 2 + 2 2 log 2 2 H 2 (W ) = 2 + log 2 2 = 2 Widać, że entropia jest równa średniej długość słowa kodowego. 3.5 Źródło rozszerzone Definicja Źródło rozszerzone - Niech W = {w,, w n }, p,, p n będzie bezpamięciowym źródłem wiadomości. K krotnym rozszerzeniem źródła W jest źródło: W k = {ω,, ω ( k n) }, gdzie ω i = (w i,, w ik ), w ij W dla j =,, k. Oczywiście p(ω i ) = p(w i ) p(w ik ). Entropię źródła k krotnie rozszerzonego obliczamy podobnie jak entropię źródła W, tj.: H r (W ) = nk p(ω i ) log r p(ω i ) Twierdzenie Entropie źródła k krotnie rozszerzonego jest k krotnie większa od entropii odpowiadającego mu źródła bezpamięciowego: H r (W k ) = k H r (W ) (3.4) Przykład * Dla źródła generującego wiadomości ze zbioru W = {w, w 2, w 3 } z prawdopodobieństwami p = 2, p 2 = p 3 = 4, entropia źródła W 3 wynosi [bitów]: Mamy więc policzyć entropię źródła rozszerzonego, więc H 2 (W 3 ). Zgodnie z zależnością z powyższego punktu: H 2 (W 3 ) = 3 H 2 (W ) Liczymy entropię H 2 (W ): H 2 (W ) = 2 log 2 2 + 2 4 log 2 4 20 switch486
3.6 Źródło ciągów Markowa Ilość informacji, źródła H 2 (W ) = 2 + 4 4 log 2 2 Wynikiem będzie oczywiście iloczyn: Przykład * H 2 (W ) = 2 + = 2 H 2 (W 3 ) = 3 H 2 (W ) = 3 2 = 3 3 2 = 9 2 Entropia źródła wiadomości, w którym pojedyncza wiadomość jest ciągiem dwóch rzutów kostką (, 2, 3, 4, 5, 6) i pieciu rzutów monetą (O, R)... jest sumą entropii dwukrotnie rozszerzonego źródła wyników pojedynczego rzutu kostką i entropii pieciokrotnie rozszerzonego źródła wyników pojedynczego rzutu monetą. Oczywiście wynika to z definicji źródła rozszerzonego. Policzmy: Dla pojedynczego rzutu kostką: Dla pojedynczego rzutu monetą: H 2 (W ) = 6 log 2 6 +... + 6 log 2 6 = log 2 6 }{{} 6 H 2 (W ) = 2 log 2 2 + 2 log 2 2 = 2 + 2 = Całkowita entropia będzie miała postać (zgodnie z H r (W k ) = k H r (W )) sumy iloczynów: H 2 (W ) = 2 log 2 6 + 5 = 2 log 2 6 + 5 Oczywiście możemy logarytm przekształcić i napisac: H 2 (W ) = 2 log 2 6+5 = 2 (log 2 3+log 2 2)+5 = 2 log 2 3+2 log 2 2+5 = 2 log 2 3+2+5 = 2 log 2 3+7 3.6 Źródło ciągów Markowa Ogólny model źródła wiadomości zakłada, że wygenerowanie dowolnej wiadomości w i ze zbioru W zależy od pewnej skończonej liczby m wiadomości wygenerowanych wcześniej. Źródło takie nazywa się źródłem ciągów Markowa m tego rzędu. 2 switch486
3.6 Źródło ciągów Markowa Ilość informacji, źródła Źródło Markowa jest w pełni opisane za pomocą zbioru wiadomości W = {w, w 2,, w n } oraz prawdopodobieństw warunkowych: p(w i w j, w j2,, w jm ), dla i =, 2,, n oraz j k =, 2,, n Ciąg wiadomości w j, w j2,, w jm, dla i =, 2,, n oraz jk =, 2,, n nazywamy stanem źródła w danym momencie czasu. Stan źródła Markowa ulega zmianom wraz z generowaniem kolejnych wiadomości. Ponieważ źródło może wygenerować n różnych wiadomości, to może ono przyjmować n m różnych stanów. Źródło ciągów Markowa można reprezentować (definiować) na kilka różnych sposobów: w postaci listy prawdopodobieństw warunkowych, w postaci macierzy, której wiersze odpowiadają stanom źródła a kolumny wiadomościom przez nie generowanym, a także (w prostych przypadkach) za pomocą grafu. Przykład Niech W = {0, } będzie binarnym źródłem Markowa 2 go rzędu z prawdopodobieństwami: p(0 00) = 0.3 p( 00) = 0.7 p(0 0) = 0.5 p( 0) = 0.5 p(0 0) = 0.9 p( 0) = 0. p(0 ) = 0.2 p( ) = 0.8 To samo źródło możemy określić za pomocą macierzy: stan wiadomosc 0 00 0.3 0.7 0 0.5 0.5 0 0.9 0. 0.2 0.8 Albo za pomocą grafu: 22 switch486
3.6 Źródło ciągów Markowa Ilość informacji, źródła Przykład Źródło Markowa pierwszego rzędu wysyła dwie wiadomości elementarne. Prawdopodobieństwo wygenerowania wiadomości zgodnej z poprzednią jest równe 4. Narysować graf tego źródła oraz macierz przejść. Z danych mamy: Przepiszmy to do macierzy przejść grafu: p(0 0) = 4 p( ) = 4 p( 0) = 3 4 p( 0) = 3 4 w w 2 w 4 w 2 3 4 3 4 4 Namalowanie grafu pozostaje czytelnikowi. Można jednak policzyć entropie tego źródła. Korzystamy ze wzoru na entropię (przedstawiony poniżej (3.6)) przekształconago dla binarnego źródła wiadomości: H 2 (W w ) = 4 log 2 4 + ( 4 ) log 4 2 3 = H 2 (W w ) = 4 2 log 2 2 + 3 4 log 2 4 3 = H 2 (W w ) = 2 + 3 4 (log 2 4 log 2 3) = H 2 (W w ) = 2 + 3 2 3 4 log 2 3 = 2 3 4 log 2 3 23 switch486
3.6 Źródło ciągów Markowa Ilość informacji, źródła Dodatkowo widać, że: H 2 (W w ) = H 2 (W w 2 ) Definicja Ilość informacji, jaką przenosi pojedyncza wiadomość generowana przez źródło Markowa rzędu m wyznaczamy ze wzoru: I r (w i w j, w j2,..., w jm ) = log r p(w i w j, w j2,..., w jm ) (3.5) gdzie p(w i w j, w j2,..., w jm ) oznacza prawdopodobieństwo wygenerowania wiadomości w i pod warunkiem, że źródło znajduje się w stanie w j, w j2,..., w jm, tzn., że wcześniej wygenerowało ciąg wiadomości w j, w j2,..., w jm. Definicja Entropią źródła Markowa rzędu m nazywamy średnią ilość informacji przypadającą na pojedynczą wiadomość wygenerowaną przez to źródło, a obliczamy ją ze wzoru: H(W ) = W m p(w j,..., w jm ) H(W w j,..., w jm ) = (3.6) Z twierdzenia Bayesa = W m p(w j,..., w jm ) W p(w i w j,..., w jm ) log r p(w i w j,..., w jm ) p(w j,..., w jm ) p(w i w j,..., w jm ) = p(w i, w j,..., w jm ) zatem: H(W ) = p(w i, w j,..., w jm ) log r p(w i w j,..., w jm ) W m+ Przykład * Źródło ciągów Markowa II rzędu opisane jest macierzą: w w 2 w w 4 w w 2 2 w 2 w 3 4 w 2 w 2 2 3 4 2 4 2 24 switch486
3.6 Źródło ciągów Markowa Ilość informacji, źródła Ile wynosi entropia tego źródła w stanie w w 2? Obliczamy entropię z najprostszego wzoru: Mamy po podstawieniu, dla stanu w w 2 : H r (W ) = p i log r p i H r (W ) = 2 log r 2 + 2 log r 2 = Przykład * Źródło ciągów Markowa II rzędu opisane jest macierzą: w w 4 w w 2 3 4 w w 2 0 w 2 w 3 4 w 2 w 2 2 W którym stanie entropia tego źródła wynosi 2 3 4 log 2 3? Obliczamy entropię z najprostszego wzoru (dla r = 2): 4 2 H r (W ) = p i log r p i Po podstawieniu, dla stanu w w mamy : H 2 (W ) = 4 log 2 4 + 3 4 log 2 4 3 = = 2 + 3 4 (log 2 4 log 2 3) = 2 + 3 4 log 2 4 3 4 log 2 3 = 2 + 3 2 3 4 log 2 3 = 2 3 4 log 2 3 Po podstawieniu, dla stanu w w 2 mamy : H 2 (W ) = log 2 + 0 log 2 0 = 0 + 0 = 0 (* skorzystaliśmy z założenia wcześniej opisanego przy części z entropią źródła wiadomości : 0 log 0 = 0) Po podstawieniu, dla stanu w 2 w mamy : H 2 (W ) = 3 4 log 2 4 3 + 4 log 2 4 Identycznie jak w przypadku w w. Po podstawieniu, dla stanu w 2 w 2 mamy : H 2 (W ) = 2 log 2 2 + 2 log 2 2 = 25 switch486
3.7 Źródło stowarzyszone do żródła Markowa Ilość informacji, źródła 3.7 Źródło stowarzyszone do żródła Markowa Definicja Źródłem stowarzyszonym do źródła Markowa rzędu m nazywamy źródło generujące wiadomości ze zbioru W z prawdopodobieństwami bezwarunkowymi p, p 2,..., p n. Entropia źródła stowarzyszonego spełnia zależność: H r (W ) H r ( W ) przy czym równość zachodzi wtedy i tylko wtedy, gdy: p(w i w j,..., w jm ) = p(w i ) to jest, gdy wiadomości generowane są niezależnie. To z kolei zachodzi wówczas, gdy źródło Markowa jest w rzeczywistości źródłem bezpamięciowym. Przykład Dane jest źródło Markowa I-go rzędu z macierzą prawdopodobieństw P : w 2 w 2 4 w w 2 w 3 4 2 4 4 w 3 2 0 2 Obliczyć entropię tego źródła oraz entropię źródła stowarzyszonego. Entropię źródła obliczamy z zależności, która dla tego konkretnego zadania przyjmie postać: H(W ) = i p(w i ) H(W w i ) = p(w ) H(W w ) + p(w 2 ) H(W w 2 ) + p(w 3 ) H(W w 3 ) Wyznaczamy entropie warunkowe, tj. entropie źródła w poszczególnych stanach (przyjmujemy r = 2): H(W w ) = 3 i= p(w i w ) log 2 p(w i w ) = 2 4 log 2 4 + 2 log 2 2 = 3 2 bitow H(W w 2 ) = 2 4 log 2 4 + 2 log 2 2 = 3 2 bitow H(W w 3 ) = 2 2 log 2 2 = bit 26 switch486
3.7 Źródło stowarzyszone do żródła Markowa Ilość informacji, źródła A następnie wyznaczamy prawdopodobieństwa brzegowe p(w ), p(w 2 ), p(w 3 ): p(w ) + p(w 2 ) + p(w 3 ) = p(w ) = p(w ) p(w w ) + p(w 2 ) p(w w 2 ) + p(w 3 ) p(w w 3 ) p(w 2 ) = p(w ) p(w 2 w ) + p(w 2 ) p(w 2 w 2 ) + p(w 3 ) p(w 2 w 3 ) p(w 3 ) = p(w ) p(w 3 w ) + p(w 2 ) p(w 3 w 2 ) + p(w 3 ) p(w 3 w 3 ) W wyniku rozwiązania układu równań otrzymujemy: p(w ) = p(w 2 ) = p(w 3 ) = 3 Entropia źródła Markowa wynosi więc: a entropia źródła stowarzyszonego: H 2 (W ) = H(W ) = 2 3 3 2 + 3 = 4 3 bitow H r ( W ) = 3 3 log r 3 = log r 3 dla r = 2: H 2 ( W ) = log 2 3 bitow 27 switch486
Rozdział 4 Kody: definicje i klasyfikacja 4. Definicja kodu Niech W = {w, w 2,..., w n } będzie dowolnym zbiorem wiadomości, zaś X = {x, x 2,..., x r } dowolnym alfabetem (przy czym na ogół zachodzi n r). Definicja Kodem nazywamy odwzorowanie wszystkich możliwych ciągów wiadomości elementarnych ze zbioru W w zbiór słów nad alfabetem X. 4.2 Podstawowe rodzaje kodów 4.2. Kody blokowe Definicja Kodem blokowym nazywamy taki kod, w którym każdej wiadomości w i ze zbioru W odpowiada słowo X i nad alfabetem X. Ciąg X i nazywamy słowem (albo ciągiem) kodowym. 28 switch486
4.2 Podstawowe rodzaje kodów Kody: definicje i klasyfikacja Przykład Dane jest źródło wiadomości W = {w, w 2, w 3, w 4 } oraz alfabety X = {0, } i X = {a, b, c}. Tabela prezentuje przykładowe kody blokowe dla źródła W : Wiadomość Słowo kodowe nad alfabetem X Słowo kodowe nad alfabetem X w 0 a w 2 b w 3 0 c w 4 0 ab 4.2.2 Kody nieosobliwe Definicja Kod blokowy jest kodem nieosobliwym, jeżeli wszystkie słowa kodowe są nawzajem różne Przykład Dane jest źródło W = {w, w 2, w 3, w 4 } i alfabet X = {0, }. Wiadomość Słowo kodowe w 0 w 2 w 3 00 w 4 4.2.3 Rozszerzenie kodu Definicja K krotnym rozszerzeniem kodu blokowego nazywamy kod, w którym ciągom wiadomości elementarnych (w i, w i2,..., w ik ) przyporządkowane są ciągi słów kodowych (X i, X i2,..., X ik ), przy czym kolejne elementy ciągu kodowego odpowiadają słowom kodowych przypisanym pojedynczym wiadomościom elementarnym. Uwaga! Z powyższej definicji wynika, że k krotne rozszerzenie kodu blokowego jest kodem blokowym dla źródła k krotnie rozszerzonego (uzasadnienie i przykłady na ćwiczeniach). 29 switch486
4.2 Podstawowe rodzaje kodów Kody: definicje i klasyfikacja Przykład Podaj przykład kody nieosobliwego, którego drugie rozszerzenie jest kodem osobliwym. Kod nieosobliwy Drugie rozszerzenie kodu Wiadomość Słowo kodowe Wiadomość Słowo kodowe w w w 2 0 w 2 0 w 3 w 0 w 3 0 Przykład * Źródło generuje wiadomości ze zbioru W = {w, w 2, w 3 } z prawdopodobieństwami p = 0.2, p 2 = 0.3. Jaką postać ma drugie rozszerzenie kodu optymalnego dla tego źródła? Na początek wyliczymy p 3. 3 p i = p 3 = 0.5 i= Można namalować graf, ale z kodu i algorytmu Huffmana wynika, że możemy otrzymać przykładowo takie 2 kody: Wiadomość Słowo kodowe Wiadomość Słowo kodowe w 3 w 3 0 w 2 00 w 2 w 0 w 0 Stwórzmy teraz drugie rozszerzenie tych kodów Wiadomość Słowo kodowe Wiadomość Słowo kodowe w 3 w 3 w 3 w 3 00 w 3 w 2 00 w 3 w 2 0 w 3 w 0 w 3 w 00 w 2 w 3 00 w 2 w 3 0 w 2 w 2 0000 w 2 w 2 w 2 w 000 w 2 w 0 w w 3 0 w w 3 00 w w 2 000 w w 2 0 w w 00 w w 00 30 switch486
4.2 Podstawowe rodzaje kodów Kody: definicje i klasyfikacja 4.2.4 Kody jednoznacznie dekodowalne Definicja Kod blokowy nazywamy kodem jednoznacznie dekodowalnym, jeżeli k-krotne rozszerzenie tego kodu jest kodem nieosobliwym dla każdego k. Przykład Dane jest źródło W = {w, w 2, w 3, w 4 } i alfabet X = {0, }. Przykładowy kod jednoznacznie dekodowalny dla źródła W : Wiadomość Słowo kodowe w 0 w 2 0 w 3 0 w 4 0 Przykład Podać przytkład kodu nieblokowego, jednoznacznie dekodowalnego. Wiadomość Słowo kodowe w 0 w 2 0 w 3 w w 2 0 4.2.5 Kody jednoznacznie dekodowalne bez opóźnienia Definicja Kod blokowy nazywamy kodem jednoznacznie dekodowalnym bez opóźnienia, jeżeli żadne słowo kodowe nie jest przedrostkiem innego słowa kodowego. Przykład Czy istnieje binarny kod jednoznacznie dekodowalny bez opóxnienia dla źródła wysyłającego n wiadomości elementarnych, taki, że każde słowo kodowe czytane wprost i wspak jest takie samo (tzn. każde słowo kodowe jest palindromem)? 3 switch486
4.3 Zasady konstruowania kodów jednoznacznie dekodowalnych Kody: bez definicje opóźnienia i klasyfikacja Oczywiście, przykładem jest kod składający się z np. {0, 00, 000, 0000, }. Jest jednoznacznie dekodowalny, bez opóźnienia i każde słowo kodowe jest palindromem. Przykład * Źródło generuje wiadomości ze zbioru W = {w, w 2, w 3, w 4 }, p = 4, p 2 = 2 5, p 3 = 5. Podaj kilka przykładów binarnych kodów jednoznacznie dekodowalnych bez opóźnienia. Na początek korzystając z definicji pradopodobieństwa: p + p 2 + p 3 + p 4 = Więc: 4 + 2 5 + 5 + p 4 = p 4 = 3 20 Przykładowymi kodami niesprzecznymi z poleceniem są: Wiadomość Słowo kodowe Wiadomość Słowo kodowe w 00 w 2 w 3 00 w 4 0 w 0 w 2 0 w 3 w 4 0 4.3 Zasady konstruowania kodów jednoznacznie dekodowalnych bez opóźnienia Do konstruowania kodów jednoznacznie dekodowalnych bez opóźnienia wykorzystuje się systemy identyfikacji źródła. Dowolny r narny system identyfikacji źródła wiadomości można przedstawić w postaci r narnego drzewa skierowanego, którego liście odpowiadają wiadomościom elementarnym ze zbioru W = {w, w 2,..., w n }. Na podstawie takiego drzewo konstruujemy kod r-narny w następujący sposób:. Gałęzie wychodzące z każdego węzła oznaczamy różnymi literami alfabetu kodowego. 2. Dla każdej wiadomości tworzymy słowo kodowe spisując litery, przypisane poszczególnym gałęziom, na drodze od korzenia do liścia odpowiadającego danej wiadomości. 32 switch486
4.3 Zasady konstruowania kodów jednoznacznie dekodowalnych Kody: bez definicje opóźnienia i klasyfikacja Twierdzenie Kod r narny otrzymany w wyniku powyższego algorytmu jest kodem dekodowalnym bez opóźnienia. Przykład Dany jest trzynarny (r = 3) system identyfikacji dla źródła W = {w, w 2,..., w 5 }, p, p 2,..., p 5. Niech X = {a, b, c}. Na podstawie systemu identyfikacji S 3 budujemy drzewo trzynarne. Postępując zgodnie z algorytmem otrzymujemy następujący kod: w a, w 2 b, w 3 cb, w 4 cc, w 5 ca. Prawdziwe jest także twierdzenie odwrotne: 33 switch486
4.3 Zasady konstruowania kodów jednoznacznie dekodowalnych Kody: bez definicje opóźnienia i klasyfikacja Twierdzenie Każdemu r narnemu kodowi jednoznacznie dekodowalnemu bez opóźnienia odpowiada taki r narny system identyfikacji, w którym liczba pytań niezbędna do zidentyfikowania każdej, pojedynczej wiadomości jest równa długości słowa kodowego odpowiadającego tej wiadomości. Konstruowanie systemu identyfikacji, o którym mowa w powyższym twierdzeniu, opisuje następujący algorytm:. Budujemy r narne, h poziomowe drzewo pełne, w którym h jest równe długości najdłuższego słowa kodowego. 2. Gałęzie wychodzące z każdego wierzchołka oznaczamy różnymi literami alfabetu. 3. Redukujemy drzewo, pozostawiając wyłącznie gałęzie, których oznaczenia na drogach od korzenia do liści odpowiadają ciągom kodowym. 4. Oznaczamy węzły końcowe (liście) wiadomościami elementarnymi, pozostałym węzłom przyporządkowujemy pytania r narne. Przykład Dany jest następujący kod jednoznacznie dekodowalny bez opóźnienia: w 0, w 2 0, w 3 0, w 4. Na podstawie drzewa kodowego budujemy, zgodnie z podanym algorytmem, system identyfikacji źródła: Jakość kodu będziemy oceniać na podstawie średniej długości słowa kodowego. 34 switch486
4.3 Zasady konstruowania kodów jednoznacznie dekodowalnych Kody: bez definicje opóźnienia i klasyfikacja Definicja Niech K będzie r narnym kodem źródła wiadomości W = {w, w 2,..., w n }, p, p 2,..., p n i niech d i = d(w i ) dla i =, 2,..., n będą długościami słów kodowych przypisanych poszczególnym wiadomościom. Miarą jakości kodu jest liczba (zwana średnią długością słowa kodowego): n E r (K) = d i p i (4.) i= Mówimy, że kod K jest lepszy niż kod K, jeżeli E r (K) < E r (K ). Kod K jest optymalny (zwięzły, najlepszy), jeżeli nie istnieje taki kod K, że E r (K ) < E r (K). Przykład * Dane jest źródło W generujące wyniki rzutu koscią (, 2, 2, 2). Ile wynosi średnia długość słowa kodowego przypadająca na pojedyńczą wiadomość w kodzie binarnym będącym dwukrotnym rozszerzeniem binarnego kodu optymalnego dla źródła W? Najpierw zakodujemy wyniki rzutu kościa, nie mamy w treści prawdopodobieńswa, więc przyjmujemy 6. Wynikiem jest...wt F???? 35 switch486
Rozdział 5 Kody optymalne, algorytm Huffmana 5. Kody optymalne Twierdzenie Średnia długość słowa kodowego kodu jednoznacznie dekodowalnego bez opóźnienia dla źródła wiadomości W jest nie mniejsza niż entropia źródła (co najwyżej równa entropii). E r (K) H r (W ) Dowód H r (W ) E r (K) = n i= H r (W ) E r (K) = H r (W ) E r (K) = n i= (p i log r p i ) n i= H r (W ) E r (K) = n p i d i i= p i (log r p i d i ) p i (log r p i log r r di ) n r di p i log r Z wykresów funkcji f(x) = a(x ) oraz g(x) = log r x wynika, że f(x) g(x), a więc: i= p i log r r di p i a( rdi p i ) 36 switch486
5. Kody optymalne Kody optymalne, algorytm Huffmana Po podstawieniu otrzymujemy: H r (W ) E r (K) H r (W ) E r (K) n i= Z twierdzenia i liniowości sumy: a( p i r di p i p i ) = n i= n i= H r (W ) E r (K) a ( p i a( rdi p i ) a( p i r di p i p i ) = n r di i= n p i ) Z twierdzenia Krafta (2.) oraz defincji prawdopodobieństwa mamy: n n r di p i = Podstawiając będziemy mieć: Co jest dowodem nierówności. i= i= H r (W ) E r (K) 0 i= n a(r di p i ) i= Twierdzenie Zależność: Zachodzi tylko wtedy, gdy: H r (W ) = E r (K) log r p i ℵ, dla i=, 2, n Twierdzenie Dla każdego źródła wiadomości można zbudować r narny kod K taki, że: H r (W ) E r (K) H r (W ) + (5.) Dowód W przedziale [log r p i, log r p i + ] znajduje się dokładnie jedna liczba naturalna (m i ). Ustalając takie liczby dla i =, 2,, n otrzymujemy n nierówności postaci: log r p m < log r p + log r p 2 m 2 < log r p 2 +. log r p n m n < log r p n + (5.2) 37 switch486
5.2 Algorytm Huffmana Kody optymalne, algorytm Huffmana Sprawdzamy, czy liczby m, m 2,, m n mogą być poziomami liści w drzewie rzędu r. Ponieważ: m i log r p i to r mi r log r p i = r (log r log r pi) r (log r pi log r ) = r (log r pi 0) = r log r pi = p i Czyli: r mi p i dla i=, 2,, n Po zsumowaniu otrzymanych nierówności otrzymujemy: n i= r mi n p i = Spełniona jest więc nierówność Krafta (2.). Z tego wynika, że można zbudować drzewo r narne, a na jego podstawie r narny system identyfikacji i r narny kod jednoznacznie dekodowalny bez opóźnienia taki, że d i = m i, dla i =, 2,, n. Aby stwierdzić, czy kod ten spełnia warunek w twierdzeniu (5.), mnożymy układ nierówności (5.2) odpowiednio przez p, p 2,, p n, a następnie sumujemy uzyskane wyniki: n i= p i log r p i i= n p i m i < i= n i= p i (log r p i + ) Czyli: Dodatkowo: n i= H r (W ) = p i log r p i n i= n p i m i < i= n i= (p i log r p i ), E r (K) = p i log r p i + n p i m i, i= n i= p i n p i = i= H r (W ) E r (K) H r (W ) + cnp. 5.2 Algorytm Huffmana Rozważmy źródło wiadomości W = {w,, w n }, p,, p n. Niech wiadomości te będą uporządkowane według malejących wartości prawdopodobieństwa, tzn. p p 2 p n. Traktując dwie ostatnie wiadomości jako jedną wiadomość wtórną, otrzymujemy w miejsce pierwotnego źródła W nowe, tzw. zredukowane źródło, zawierające n wiadomości. 38 switch486
5.2 Algorytm Huffmana Kody optymalne, algorytm Huffmana Elementy tego źródło można na nowo uporządkować i ponownie połączyć dwie wiadomości o najmniejszym prawdopodobieństwie, redukując w ten sposób źródło wcześniej zredukowane. Stosując opisaną procedurę rekurencyjną, otrzymamy ciąg źródeł o zbiorach wiadomości, z których każdy zawiera o element mniej niż poprzedni. Ostatnie ze źródeł w tym ciągu będzie zawierać tylko dwa elementy. Konstruowanie ciągu źródeł zredukowanych jest pierwszym etapem konstruowania kodu zwięzłego jednoznacznie dekodowalnego bez opóźnienia dla źródła W. Zanim przejdziemy do konstruowania kodu zauważmy, że binarny kod zwięzły dekodowalny bez opóźnienia dla źródła zredukowanego W 4 (gdzie W 4 zawiera tylko dwie wiadomości) jest prostym kodem z dwoma słowami kodowymi 0 i. Startując od ostatniego źródła zredukowanego i cofając się wzdłuż ciągu źródeł możemy skonstruować kod zwięzły jednoznacznie dekodowalny dla źródła pierwotnego. Najlepiej proces ten zobrazujemy na drzewie binarnym. Łatwo zauważyć, że kod jest kodem jednoznacznie dekodowalnym bez opóźnienia. Kode ten przedstawia się następująco: w w 2 00 w 3 0 w 4 000 w 5 000 w 6 00 Twierdzenie Kod binarny uzyskany w wyniku zastosowania algorytmu Huffmana jest kodem optymalnym. 39 switch486
5.2 Algorytm Huffmana Kody optymalne, algorytm Huffmana R-narny algorytm Huffmana Aby skonstruować r narny kod zwięzły należy zastosować analogiczne kroki jak przedstawione powyżej. Zatem dla źródła wiadomości W = {w,, w n }, p,, p n : Porządkujemy wiadomości według malejących wartości prawdopodobieństw. Jeśli liczba wiadomości elementarnych zbioru pierwotnego nie była równa r + α(r ), gdzie α jest liczbą naturalną, to do zbioru wiadomości elementarnych należy dodać tzw. elementy symulujące przypisując im prawdopodobieństwo równe zero. Liczba elementów symulujących zsumowana z liczbą elementów zbioru pierwotnego powinna spełniać zależność r + α(r ) dla dowolnego α >. Tworzymy ciąg źródeł zredukowanych łącząc ze sobą w każdym kroku r wiadomości o najmniejszych prawdopodobieństwach. Na podstawie ciągu źródeł zredukowanych tworzymy drzewo r narne. Konstruujemy r narny kod zwięzły oznaczając kolejnymi literami alfabetu kodowego krawędzie wychodzące z każdego z wierzchołków drzewa. Przypisujemy słowa kodowe poszczególnym wiadomościom spisując litery kodu leżące w drzewie na drodze od korzenia do liścia reprezentującego daną wiadomość. Przykład Dane jest źródło wiadomości W = {w, w 2,, w 9 }, p = 0.5, p 2 = 0.04, p 3 = p 4 = 0.0, p 6 = 0.2, p 7 = p 8 = 0.02, p 5 = p 9 = 0.. Zbudować binarny, 3 narny i 4 narny system identyfikacji tego źródła spełniający nierówność (5.): H r (W ) E r (S) < H r (W ) + Porównać E r (S) i H r (W ) dla każdego z tych systemów. Moglibyśmy przedstawić to zadanie dużo wcześniej, ale dla ułatwienia skorzystamy z algorytmu Huffmana. Zbudowany system musi spełniać założenia z pierwszego podpunktu, ale korzystając z algorytmu Huffmana dostaniemy system optymalny, a w związku z tym, spełniający nierówność (5.). 40 switch486
5.2 Algorytm Huffmana Kody optymalne, algorytm Huffmana binarny w 0.5 w 6 0.2 w 9 0. w 5 0. w 2 0.04 w 7 0.02 w 8 0.02 w 4 0.0 \z 0.2 w 3 0.0 / w 0.5 w 6 0.2 w 9 0. w 5 0. w 2 0.04 z 0.02 w 7 0.02 \z 2 0.04 w 8 0.02 / w 0.5 w 6 0.2 w 9 0. w 5 0. z 2 0.04 w 2 0.04 \z 3 0.06 z 0.02 / w 0.5 w 6 0.2 w 9 0. w 5 0. z 3 0.06 \z 4 0. z 2 0.04 / w 0.5 w 0.5 w 6 0.2 z 5 0.2 z 4 0. w 6 0.2 \z 6 0.3 w 9 0. \z 5 0.2 z 4 0. / w 5 0. / dodakowo wypadałoby namalować graf... 3 narny zostawiamy czytelnikowi... w 0.5 z 6 0.3 \z 7 0.5 z 5 0.2 / w 0.5 z 7 0.5 4 narny liczba wiadomości jest różna od r + α(r ) więc musimy dodać kilka elementów z p i = 0 w 0.5 w 6 0.2 w 9 0. w 5 0. w 2 0.04 w 7 0.02 w 8 0.02 \ w 4 0.0 z 0.04 w 3 0.0 w 0 0.00 / Namalujemy drzewo. w 0.5 w 6 0.2 w 9 0. w 5 0. \ z 0.04 z 2 0.2 w 2 0.04 w 7 0.02 / w 0.5 w 6 0.2 z 2 0.2 w 9 0. 4 switch486
5.2 Algorytm Huffmana Kody optymalne, algorytm Huffmana Możemy to przedstawić w postaci tablicy. Wiadomość Słowo kodowe Wiadomość Słowo kodowe w a w 6 b w 2 cc w 7 cd w 3 cbc w 8 cba w 4 bcc w 9 d w 5 ca w 0 cbd Policzmy wartości E r (S) i H r (W ) z drugiego podpunktu. Mamy więc do czynienia z zależnościami :(3.3) i (3.2) Oraz: E 4 (S) = n l i p i E 4 (S) = 0.5 + 2 0.04 + 3 0.0 + 3 0.0 + 2 0. + 0.2 + 2 0.02 + 3 0.02 + 0. E 4 (S) = 0.5 + 0.08 + 0.03 + 0.03 + 0.2 + 0.2 + 0.04 + 0.06 + 0. H 4 (W ) = i= E 4 (S) =.24 n i= p i log 4 p i H 4 (W ) = 0.5 log 4 0 5 + 0.04 log 4 00 4 + 0.0 log 4 00 + 0. log 4 0 + 0 + 0.2 log 4 2 + 0.02 log 4 00 2 + 0.02 log 4 00 2 + 0.0 log 4 00 H 4 (W ) = Z dydaktycznego punktu widzenia należy zostawić resztę przykłądu do rozwiązania czytelnikowi. 42 switch486
5.2 Algorytm Huffmana Kody optymalne, algorytm Huffmana Przykład Dany jest kod K = (k, k 2,, k 7 ) taki, że k = 00, k 2 = 0, k 3 = 00, k 4 = 000, k 5 =, k 6 = 0, k 7 = 0. Podać przykład źródła, dla którego kod K jest kodem optymalnym. Wystarczy namalować graf (chociaż z punktu widzenia nie jest to konieczne), oznaczyć liście, a potem na podstawie grafu spisać tablicę kodów, np. wraz z zwiększającą się długością słowa kodowego i do niej dopisywać prawdopodobieństwa... Natomiast same prawdopodobieństwa należo otrzymać stosując metodę odwrotną do algorytmu Huffmana, zacząć od pierwszego węzła i rozpatrywać jego potomków... (mamy wtedy szansę na taki dobór prawdopodobieństw, że będzie jednoznaczna i jedyna postać optymalnego kodu - ponieważ algorytm Huffmana może działać różnie i różne kody dawać, a wszystkie będą optymalne) lub na drzewie opisywać prawdopodobieństwa zgodnie z zasadą, że potomkowie będą mieli prawdopodobieństwo ojca/2, a korzeń drzewa ma prawdopodobieństwo równe. 43 switch486
Rozdział 6 Twierdzenie Shannona Algorytm Huffmana nie zawsze prowadzi do zadowalających rezultatów. Przykład Rozważmy następujące źródło wiadomości: W = {w, w 2 }, p = 0.999, p 2 = 0.00, X = {0, }. Kodem optymalnym dlatego źródła będzie kod zbudowany w oparciu o jedno z następujących drzew kodowych: Średnia długość słowa kodowego jest w obu przypadkach równa jednemu bitowi, ale entropia tego źródła niewiele różni się od zera. Kod jest optymalny, ale jego jakość jest niewielka. Aby ocenić jakość kodu wprowadzimy dwie dodatkowe miary, mianowicie sprawność i rozwlekłość kodu. 44 switch486
Twierdzenie Shannona Definicja Sprawność: η = H r(w ) E r (K) (6.) Definicja Rozwlekłość: λ = η = E r(k) E r (K) H r(w ) E r (K) = E r(k) H r (W ) E r (K) (6.2) Kod, który powstaje wyniku zastosowania algorytmu Huffmana dla źródła W jest więc kodem optymalnym, ale mało sprawnym (albo bardzo rozwlekłym). Niech W będzie bezpamięciowym źródłem wiadomości, W k k krotnym rozszerzeniem tego źródła, zaś K k kodem jednoznacznie dekodowalnym bez opóźnienia zbudowanym dla źródła W k, takim że: H r (W k ) E r (K k ) H r (W k ) + Twierdzenie Shannona Dowód E r (K k ) lim = H r (W ) k k k H r (W ) E r (K k ) k H r (W k ) + H r (W ) E r(k k ) H r (W k ) + k k Ponieważ: lim k k = 0 to z twierdzenia o trzech ciągach otrzymujemy, że : k cnp. E r (K k ) lim = H r (W ) k k Przykład Niech W = {w, w 2 }, p = 0.9, p 2 = 0., X = {0, } oraz k = 2. Wówczas W k = W 2 = {w w, w w 2, w 2 w, w 2 w 2 }, p = 0.8, p 2 = p 2 = 0.09, p 22 = 0.0. Budujemy kod optymalny dla źródła dwukrotnie rozszerzonego: w w 0.8 w w 0.09 w w 0.09 \z 0. w w 0.0 / w w 0.8 w w 0.09 \z 2 0.9 z 0. / w w 0.8 z 2 0.9 45 switch486
Twierdzenie Shannona Na podstawie drzewa kodowego przypisujemy kody poszczególnym wiadomościom: w w, w w 2 00, w 2 w 0, w 2 w 2 00. Obliczamy: E r (K 2 ) = 0.8 + 2 0.09 + 0.0 =.29 E r (K 2 ) 2 = 0.645 Wniosek Średnia długość słowa kodowego przypadająca na pojedynczą wiadomość w kodzie optymalnym dla źródła dwukrotnie rozszerzonego jest bliższa entropii tego źródła niż średnia długość słowa kodowego kodu optymalnego zbudowanego dla tego samego źródła pierwotnego. Przykład Dane jest źródło W = {w, w 2 }, p = 0.8, p 2 = 0.2. Obliczyć entropię źródła oraz średnią długość słowa kodowego w optymalnym kodzie binarnym. Wyznaczyć drugie i trzecie rozszerzenie kodu optymalnego oraz kody optymalne dla drugiego i trzeciego rozszerzenia źródła. Dla każdego przypadku obliczyć średnią długość słowa kodowego przypadającą na pojedynczą wiadomość. Znaleźć związki z twierdzeniem Shannona. Bez rozszerzenia źródła Liczymy E r (S) i H r (W ). n E 2 (S) = l i p i = 0.8 + 0.2 = i= 46 switch486
Twierdzenie Shannona H 2 (W ) = n i= 5 p i log 2 = 0.8 log p 2 i 4 + 0.2 log 0 2 2 H 2 (W ) = 0.8 (log 2 5 log 2 4) + 0.2 log 2 5 = 0.8 log 2 5 + 0.8 log 2 4 + 0.2 log 2 5 Drugie rozszerzenie źródła H 2 (W ) = log 2 5 +.6 W = {w, w 2 }, p = 0.8, p 2 = 0.2 W 2 = {w w, w w 2, w 2 w, w 2 w 2 }, p = 0.64, p 2 = p 2 = 0.6, p 22 = 0.04 Zgodnie z algorytmem Huffmana: w w 0.64 w w 2 0.6 w 2 w 0.6 \z 0.2 w 2 w 2 0.04 / Otrzymujemy tabelę: w w 0.64 z 0.2 \z 2 0.36 w w 2 0.6 / w w 0.64 z 2 0.36 Wiadomość Słowo kodowe Wiadomość Słowo kodowe w w 0 w 2 w 0 w w 2 0 w 2 w 2 Wzory w tym przypadku się nie zmienią, zmieni się tylko interpretacja argumentów. W związku z tym analogicznie jak poprzednio. E 2 (S) = n l i p i = 0.64 + 2 0.6 + 3 0.6 + 3 0.04 i= E 2 (S) = 0.64 + 0.32 + 0.48 + 0.2 =.56 n H 2 (W ) = p i log 2 p i i= H 2 (W ) = 0.64 log 2 00 64 + 2 0.6 log 2 00 6 + 0.04 log 00 2 4 H 2 (W ) = 0.64 (log 2 00 log 2 64) + 0.32 (log 2 00 log 2 6) + 0.04 (log 2 00 log 2 4) H 2 (W ) = log 2 00 (0.64 + 0.32 + 0.04) 0.64 log 2 64 0.32 log 2 6 0.04 log 2 4 H 2 (W ) = log 2 00 0.64 6 log 2 2 0.32 4 log 2 2 0.04 2 log 2 2 H 2 (W ) = log 2 00 3.84.28 0.08 = log 2 2 + log 2 5 + log 2 2 + log 2 5 5.2 H 2 (W ) = 2 log 2 5 3.2 47 switch486
Twierdzenie Shannona Trzecie rozszerzenie źródła Pozostawiamy czytelnikowi. Na podstawie powyższych wyników widać, że spełniona jest zależność (3.4) przedstawiona jako: H r (W k ) = k H r (W ). Dodatkowo widzimy, że z kolejnym rozszerzeniem średnia długość słowa kodowego rośnie... Policzmy jednak sprawność (6.) i efektywność (6.2) stworzonych systemów: Przypadek pierwszy: η = H 2(W ) E 2 (K) = log 2 5 +.6 η = log 2 5 +.6 λ = η = log 2 5.6 = log 2 5 0.6 Sprawdźmy jeszcze przypadek z twierdzenia Shannona: E 2 (K ) = = Przypadek drugi: η = H 2(W ) E 2 (K) = 2 log 2 5 3.2.56 η =.28 log 2 5 2.05 λ = η =.28 log 2 5 + 2.05 =.28 log 2 5 + 3.05 Sprawdźmy jeszcze przypadek z twierdzenia Shannona: E 2 (K 2 ) 2 =.56 2 = 0.78 Widać wyraźnie, że ten iloraz dąży do entropii wraz ze rozszerzeniem źródła. 48 switch486