Nierównosc Krafta-McMillana, Kodowanie Huffmana
Transkrypt
Nierównosc Krafta-McMillana, Kodowanie Huffmana
Nierówność Krafta-McMillana, Kodowanie Huffmana Kodowanie i kompresja informacji - Wykład 2 Filip Zagórski 1 marca 2010 Filip Zagórski Nierówność Krafta-McMillana, Kodowanie Huffmana Test na jednoznaczna˛ dekodowalność Kod a jest prefiksem kodu b jeśli b jest postaci ax. x nazywamy sufiksem b wzgledem ˛ a. Filip Zagórski Nierówność Krafta-McMillana, Kodowanie Huffmana Test na jednoznaczna˛ dekodowalność Kod a jest prefiksem kodu b jeśli b jest postaci ax. x nazywamy sufiksem b wzgledem ˛ a. Algorytm Tworzymy liste˛ słów kodowych. Dla każdej pary sprawdzamy czy jedno słowo jest prefiksem drugiego, jeśli tak to do listy dodajemy sufiks drugiego słowa (chyba, że już dodaliśmy taki sufiks). Powtarzamy powyższa˛ procedure˛ aż do momentu kiedy znajdziemy na liście sufiks równy słowu kodowemu (kod nie jest jednoznaczny) albo nie można znaleźć nowych sufiksów (kod jest jednoznaczny). Filip Zagórski Nierówność Krafta-McMillana, Kodowanie Huffmana Przykład Weźmy kod {0, 01, 11}. Filip Zagórski Nierówność Krafta-McMillana, Kodowanie Huffmana Przykład Weźmy kod {0, 01, 11}. Kod 0 jest prefiksem 01. Innych par nie ma wiec ˛ nowa lista ma postać {0, 01, 11, 1}. Filip Zagórski Nierówność Krafta-McMillana, Kodowanie Huffmana Przykład Weźmy kod {0, 01, 11}. Kod 0 jest prefiksem 01. Innych par nie ma wiec ˛ nowa lista ma postać {0, 01, 11, 1}. Teraz dla tej listy mamy 0 jako prefiks 01 i 1 jako prefiks 11, ale sufiks 1 już dopisaliśmy do listy wiec ˛ lista sie˛ nie zmienia. Filip Zagórski Nierówność Krafta-McMillana, Kodowanie Huffmana Przykład Weźmy kod {0, 01, 11}. Kod 0 jest prefiksem 01. Innych par nie ma wiec ˛ nowa lista ma postać {0, 01, 11, 1}. Teraz dla tej listy mamy 0 jako prefiks 01 i 1 jako prefiks 11, ale sufiks 1 już dopisaliśmy do listy wiec ˛ lista sie˛ nie zmienia. Kod jest wiec ˛ jednoznacznie dekodowalny. Filip Zagórski Nierówność Krafta-McMillana, Kodowanie Huffmana Przykład Weźmy kod {0, 01, 10}. Filip Zagórski Nierówność Krafta-McMillana, Kodowanie Huffmana Przykład Weźmy kod {0, 01, 10}. Kod 0 jest prefiksem 01. Innych par nie ma wiec ˛ nowa lista ma postać {0, 01, 10, 1}. Filip Zagórski Nierówność Krafta-McMillana, Kodowanie Huffmana Przykład Weźmy kod {0, 01, 10}. Kod 0 jest prefiksem 01. Innych par nie ma wiec ˛ nowa lista ma postać {0, 01, 10, 1}. Teraz dla tej listy mamy 0 jako prefiks 01 ale on już jest na liście oraz 1 jako prefiks 10 ale sufiks 0 jest równy kodowi 0. Filip Zagórski Nierówność Krafta-McMillana, Kodowanie Huffmana Przykład Weźmy kod {0, 01, 10}. Kod 0 jest prefiksem 01. Innych par nie ma wiec ˛ nowa lista ma postać {0, 01, 10, 1}. Teraz dla tej listy mamy 0 jako prefiks 01 ale on już jest na liście oraz 1 jako prefiks 10 ale sufiks 0 jest równy kodowi 0. Kod nie jest wiec ˛ jednoznacznie dekodowalny. Filip Zagórski Nierówność Krafta-McMillana, Kodowanie Huffmana Kody prefiksowe Kod w którym żadne słowo kodowe nie jest prefiksem innego słowa kodowego. Filip Zagórski Nierówność Krafta-McMillana, Kodowanie Huffmana Kody prefiksowe Kod w którym żadne słowo kodowe nie jest prefiksem innego słowa kodowego. Łatwo zauważyć, że kod prefiksowy jest jednoznacznie dekodowalny. Filip Zagórski Nierówność Krafta-McMillana, Kodowanie Huffmana Nierówność Krafta-McMillana Niech C bedzie ˛ kodem składajacym ˛ sie˛ z N słów o długościach l1 , l2 , . . . , lN . Jeżeli C jest jednoznacznie dekodowalny to K (C) = N X 1 6 1. 2li i=1 Filip Zagórski Nierówność Krafta-McMillana, Kodowanie Huffmana Własności optymalnych kodów prefiksowych Symbolom wystepuj ˛ acym ˛ cz˛eściej odpowiadaja˛ krótsze słowa kodowe. Filip Zagórski Nierówność Krafta-McMillana, Kodowanie Huffmana Własności optymalnych kodów prefiksowych Symbolom wystepuj ˛ acym ˛ cz˛eściej odpowiadaja˛ krótsze słowa kodowe. Dwa najrzadziej wystepuj ˛ ace ˛ symbole maja˛ w kodzie optymalnym słowa kodowe tej samej długości. Filip Zagórski Nierówność Krafta-McMillana, Kodowanie Huffmana Konstruowanie kodów Huffmana Kody dwóch najrzadziej wystepuj ˛ acych ˛ symboli różnia˛ sie˛ tylko na ostatniej pozycji. Filip Zagórski Nierówność Krafta-McMillana, Kodowanie Huffmana Konstruowanie kodów Huffmana Kody dwóch najrzadziej wystepuj ˛ acych ˛ symboli różnia˛ sie˛ tylko na ostatniej pozycji. Algorytm rekurencyjny: rozważ dwa najrzadziej wystepuj ˛ ace ˛ symbole rozróżniajac ˛ je na końcu przez 0 i 1. Połacz ˛ oba w jeden symbol pomocniczy i rozważ teraz rekurencyjnie mniejszy alfabet. Powtarzaj aż zostanie tylko jeden symbol. Filip Zagórski Nierówność Krafta-McMillana, Kodowanie Huffmana Przykład A = {a, b, c, d, e}, P(b) = 0, 4, P(a) = P(c) = 0, 2 i P(d) = P(e) = 0, 1. Filip Zagórski Nierówność Krafta-McMillana, Kodowanie Huffmana Przykład A = {a, b, c, d, e}, P(b) = 0, 4, P(a) = P(c) = 0, 2 i P(d) = P(e) = 0, 1. Rozważamy d i e: kod(d) = kod(x)0, kod(e) = kod(x)1 i P(x) = 0, 2. Filip Zagórski Nierówność Krafta-McMillana, Kodowanie Huffmana Przykład A = {a, b, c, d, e}, P(b) = 0, 4, P(a) = P(c) = 0, 2 i P(d) = P(e) = 0, 1. Rozważamy d i e: kod(d) = kod(x)0, kod(e) = kod(x)1 i P(x) = 0, 2. A0 = {a, b, c, x}. Filip Zagórski Nierówność Krafta-McMillana, Kodowanie Huffmana Przykład A = {a, b, c, d, e}, P(b) = 0, 4, P(a) = P(c) = 0, 2 i P(d) = P(e) = 0, 1. Rozważamy d i e: kod(d) = kod(x)0, kod(e) = kod(x)1 i P(x) = 0, 2. A0 = {a, b, c, x}. Rozważamy c i x: kod(c) = kod(y )0, kod(x) = kod(y )1 i P(y ) = 0, 4. Filip Zagórski Nierówność Krafta-McMillana, Kodowanie Huffmana Przykład A = {a, b, c, d, e}, P(b) = 0, 4, P(a) = P(c) = 0, 2 i P(d) = P(e) = 0, 1. Rozważamy d i e: kod(d) = kod(x)0, kod(e) = kod(x)1 i P(x) = 0, 2. A0 = {a, b, c, x}. Rozważamy c i x: kod(c) = kod(y )0, kod(x) = kod(y )1 i P(y ) = 0, 4. A00 = {a, b, y }. Filip Zagórski Nierówność Krafta-McMillana, Kodowanie Huffmana Przykład A = {a, b, c, d, e}, P(b) = 0, 4, P(a) = P(c) = 0, 2 i P(d) = P(e) = 0, 1. Rozważamy d i e: kod(d) = kod(x)0, kod(e) = kod(x)1 i P(x) = 0, 2. A0 = {a, b, c, x}. Rozważamy c i x: kod(c) = kod(y )0, kod(x) = kod(y )1 i P(y ) = 0, 4. A00 = {a, b, y }. Rozważamy a i b: kod(a) = kod(z)0, kod(b) = kod(z)1 i P(z) = 0, 6. Filip Zagórski Nierówność Krafta-McMillana, Kodowanie Huffmana Przykład A = {a, b, c, d, e}, P(b) = 0, 4, P(a) = P(c) = 0, 2 i P(d) = P(e) = 0, 1. Rozważamy d i e: kod(d) = kod(x)0, kod(e) = kod(x)1 i P(x) = 0, 2. A0 = {a, b, c, x}. Rozważamy c i x: kod(c) = kod(y )0, kod(x) = kod(y )1 i P(y ) = 0, 4. A00 = {a, b, y }. Rozważamy a i b: kod(a) = kod(z)0, kod(b) = kod(z)1 i P(z) = 0, 6. A000 = {y , z}. Filip Zagórski Nierówność Krafta-McMillana, Kodowanie Huffmana Przykład A = {a, b, c, d, e}, P(b) = 0, 4, P(a) = P(c) = 0, 2 i P(d) = P(e) = 0, 1. Rozważamy d i e: kod(d) = kod(x)0, kod(e) = kod(x)1 i P(x) = 0, 2. A0 = {a, b, c, x}. Rozważamy c i x: kod(c) = kod(y )0, kod(x) = kod(y )1 i P(y ) = 0, 4. A00 = {a, b, y }. Rozważamy a i b: kod(a) = kod(z)0, kod(b) = kod(z)1 i P(z) = 0, 6. A000 = {y , z}. Rozważamy y i z: kod(y ) = 0 i kod(z) = 1. Filip Zagórski Nierówność Krafta-McMillana, Kodowanie Huffmana Przykład A = {a, b, c, d, e}, P(b) = 0, 4, P(a) = P(c) = 0, 2 i P(d) = P(e) = 0, 1. Rozważamy d i e: kod(d) = kod(x)0, kod(e) = kod(x)1 i P(x) = 0, 2. A0 = {a, b, c, x}. Rozważamy c i x: kod(c) = kod(y )0, kod(x) = kod(y )1 i P(y ) = 0, 4. A00 = {a, b, y }. Rozważamy a i b: kod(a) = kod(z)0, kod(b) = kod(z)1 i P(z) = 0, 6. A000 = {y , z}. Rozważamy y i z: kod(y ) = 0 i kod(z) = 1. Rekonstruujemy kody: kod(a) = 10, kod(b) = 11, kod(c) = 00, kod(d) = 010, kod(e) = 011. Filip Zagórski Nierówność Krafta-McMillana, Kodowanie Huffmana Własności kodów Huffmana Kod Huffmana jako drzewo - tworzenie takiego drzewa jako algorytm tworzenia kodów Huffmana. Filip Zagórski Nierówność Krafta-McMillana, Kodowanie Huffmana Własności kodów Huffmana Kod Huffmana jako drzewo - tworzenie takiego drzewa jako algorytm tworzenia kodów Huffmana. Niejednoznaczność tworzenia kodów - istnieje cz˛esto wiele kodów dla jednego źródła danych (ale wszystkie maja˛ ta˛ sama˛ średnia˛ długość kodu). Filip Zagórski Nierówność Krafta-McMillana, Kodowanie Huffmana Własności kodów Huffmana Kod Huffmana jako drzewo - tworzenie takiego drzewa jako algorytm tworzenia kodów Huffmana. Niejednoznaczność tworzenia kodów - istnieje cz˛esto wiele kodów dla jednego źródła danych (ale wszystkie maja˛ ta˛ sama˛ średnia˛ długość kodu). Wariancja kodu, redundancja kodu. Filip Zagórski Nierówność Krafta-McMillana, Kodowanie Huffmana Optymalność kodów Huffmana Optymalny kod powinien spełniać nastepuj ˛ ace ˛ warunki: Dla każdych dwóch liter a i b takich, że P(a) > P(b) zachodzi lb > la . Filip Zagórski Nierówność Krafta-McMillana, Kodowanie Huffmana Optymalność kodów Huffmana Optymalny kod powinien spełniać nastepuj ˛ ace ˛ warunki: Dla każdych dwóch liter a i b takich, że P(a) > P(b) zachodzi lb > la . Dwie litery o najmniejszych prawdopodobieństwach maja˛ słowa kodowe o tej samej, maksymalnej długości. Filip Zagórski Nierówność Krafta-McMillana, Kodowanie Huffmana Optymalność kodów Huffmana Optymalny kod powinien spełniać nastepuj ˛ ace ˛ warunki: Dla każdych dwóch liter a i b takich, że P(a) > P(b) zachodzi lb > la . Dwie litery o najmniejszych prawdopodobieństwach maja˛ słowa kodowe o tej samej, maksymalnej długości. Z każdego wierzchołka wewnetrznego ˛ drzewa odpowiadajacego ˛ kodowi optymalnemu powinny wychodzić oba poddrzewa. Filip Zagórski Nierówność Krafta-McMillana, Kodowanie Huffmana Optymalność kodów Huffmana Optymalny kod powinien spełniać nastepuj ˛ ace ˛ warunki: Dla każdych dwóch liter a i b takich, że P(a) > P(b) zachodzi lb > la . Dwie litery o najmniejszych prawdopodobieństwach maja˛ słowa kodowe o tej samej, maksymalnej długości. Z każdego wierzchołka wewnetrznego ˛ drzewa odpowiadajacego ˛ kodowi optymalnemu powinny wychodzić oba poddrzewa. Jeśli połaczymy ˛ dwa liście majace ˛ wspólnego ojca i ten wierzchołek wewnetrzny ˛ potraktujemy jako liść to uzyskane drzewo jest kodem optymalnym dla nowego alfabetu jeśli pierwotne drzewo było optymalne. Filip Zagórski Nierówność Krafta-McMillana, Kodowanie Huffmana Długość kodów Huffmana Dla źródła S spełniona jest nierówność H(S) 6 l 6 H(S) + 1 gdzie l - średnia długość kodu Huffmana dla źródła S. Filip Zagórski Nierówność Krafta-McMillana, Kodowanie Huffmana Rozszerzone i niebinarne kody Huffmana Kody Huffmana możemy zastosować także do bloków symboli. Filip Zagórski Nierówność Krafta-McMillana, Kodowanie Huffmana Rozszerzone i niebinarne kody Huffmana Kody Huffmana możemy zastosować także do bloków symboli. Kody Huffmana można tworzyć także dla innego niż binarny alfabetu wyjściowego - prosta modyfikacja algorytmu: zamiast dwóch symboli łaczymy ˛ m symboli. Filip Zagórski Nierówność Krafta-McMillana, Kodowanie Huffmana Dynamiczne kody Huffmana Aby wykonać kodowanie Huffmana musimy znać prawdopodobieństwa (cz˛estość wystepowania) ˛ liter. Filip Zagórski Nierówność Krafta-McMillana, Kodowanie Huffmana Dynamiczne kody Huffmana Aby wykonać kodowanie Huffmana musimy znać prawdopodobieństwa (cz˛estość wystepowania) ˛ liter. Co zrobić gdy dane napływaja˛ na bieżaco ˛ i nie znamy statystyk? Filip Zagórski Nierówność Krafta-McMillana, Kodowanie Huffmana Dynamiczne kody Huffmana Aby wykonać kodowanie Huffmana musimy znać prawdopodobieństwa (cz˛estość wystepowania) ˛ liter. Co zrobić gdy dane napływaja˛ na bieżaco ˛ i nie znamy statystyk? Kodować k + 1 symbol na podstawie statystyk k symboli. Filip Zagórski Nierówność Krafta-McMillana, Kodowanie Huffmana Przygotowania Dla alfabetu wejściowego mamy kodowanie stałej długości (pomocnicze). Filip Zagórski Nierówność Krafta-McMillana, Kodowanie Huffmana Przygotowania Dla alfabetu wejściowego mamy kodowanie stałej długości (pomocnicze). Dla kodu Huffmana tworzymy na bieżaco ˛ jego drzewo o nastepuj ˛ acych ˛ własnościach: Filip Zagórski Nierówność Krafta-McMillana, Kodowanie Huffmana Przygotowania Dla alfabetu wejściowego mamy kodowanie stałej długości (pomocnicze). Dla kodu Huffmana tworzymy na bieżaco ˛ jego drzewo o nastepuj ˛ acych ˛ własnościach: Każdy liść odpowiada symbolowi i zawiera wage˛ ilość dotychczasowych wystapie ˛ ń. Filip Zagórski Nierówność Krafta-McMillana, Kodowanie Huffmana Przygotowania Dla alfabetu wejściowego mamy kodowanie stałej długości (pomocnicze). Dla kodu Huffmana tworzymy na bieżaco ˛ jego drzewo o nastepuj ˛ acych ˛ własnościach: Każdy liść odpowiada symbolowi i zawiera wage˛ ilość dotychczasowych wystapie ˛ ń. Wierzchołki wewnetrzne ˛ maja˛ wage˛ bed ˛ ac ˛ a˛ suma˛ wag liści z poddrzew. Filip Zagórski Nierówność Krafta-McMillana, Kodowanie Huffmana Przygotowania Dla alfabetu wejściowego mamy kodowanie stałej długości (pomocnicze). Dla kodu Huffmana tworzymy na bieżaco ˛ jego drzewo o nastepuj ˛ acych ˛ własnościach: Każdy liść odpowiada symbolowi i zawiera wage˛ ilość dotychczasowych wystapie ˛ ń. Wierzchołki wewnetrzne ˛ maja˛ wage˛ bed ˛ ac ˛ a˛ suma˛ wag liści z poddrzew. Każdy wierzchołek drzewa ma unikalny numer xi . Numery te tworza˛ porzadek ˛ zgodny z wagami wierzchołków (wieksza ˛ waga to wiekszy ˛ numer wierzchołka). Dodatkowo rodzeństwo ma zawsze dwa kolejne numery. Filip Zagórski Nierówność Krafta-McMillana, Kodowanie Huffmana Przygotowania Dla alfabetu wejściowego mamy kodowanie stałej długości (pomocnicze). Dla kodu Huffmana tworzymy na bieżaco ˛ jego drzewo o nastepuj ˛ acych ˛ własnościach: Każdy liść odpowiada symbolowi i zawiera wage˛ ilość dotychczasowych wystapie ˛ ń. Wierzchołki wewnetrzne ˛ maja˛ wage˛ bed ˛ ac ˛ a˛ suma˛ wag liści z poddrzew. Każdy wierzchołek drzewa ma unikalny numer xi . Numery te tworza˛ porzadek ˛ zgodny z wagami wierzchołków (wieksza ˛ waga to wiekszy ˛ numer wierzchołka). Dodatkowo rodzeństwo ma zawsze dwa kolejne numery. Na poczatku ˛ drzewo zawiera jeden wierzchołek o wadze 0 i etykiecie NYT oznaczajacej ˛ że symbol nie był jeszcze przesyłany. Filip Zagórski Nierówność Krafta-McMillana, Kodowanie Huffmana Opis algorytmu Pierwsze wystapienie ˛ symbolu a Wyślij kod NYT i kod stałej długości dla nowego symbolu. Filip Zagórski Nierówność Krafta-McMillana, Kodowanie Huffmana Opis algorytmu Pierwsze wystapienie ˛ symbolu a Wyślij kod NYT i kod stałej długości dla nowego symbolu. Stary NYT podziel na dwa wierzchołki potomne nowy NYT i liść a, nadaj a wage˛ 1. Nadaj im odpowiednie numery. Filip Zagórski Nierówność Krafta-McMillana, Kodowanie Huffmana Opis algorytmu Pierwsze wystapienie ˛ symbolu a Wyślij kod NYT i kod stałej długości dla nowego symbolu. Stary NYT podziel na dwa wierzchołki potomne nowy NYT i liść a, nadaj a wage˛ 1. Nadaj im odpowiednie numery. Zmodyfikuj drzewo dodajac ˛ 1 do wierzchołków wewnetrznych ˛ na ścieżce od a do korzenia i przebudowujac ˛ drzewo tak aby było zgodne z warunkami z poprzedniego slajdu. Filip Zagórski Nierówność Krafta-McMillana, Kodowanie Huffmana Opis algorytmu Kolejne wystapienie ˛ symbolu a Znajdź liść a i wyślij odpowiadajacy ˛ mu kod. Filip Zagórski Nierówność Krafta-McMillana, Kodowanie Huffmana Opis algorytmu Kolejne wystapienie ˛ symbolu a Znajdź liść a i wyślij odpowiadajacy ˛ mu kod. Zwieksz ˛ wage˛ a o 1. Filip Zagórski Nierówność Krafta-McMillana, Kodowanie Huffmana Opis algorytmu Kolejne wystapienie ˛ symbolu a Znajdź liść a i wyślij odpowiadajacy ˛ mu kod. Zwieksz ˛ wage˛ a o 1. Zmodyfikuj drzewo dodajac ˛ 1 do wierzchołków wewnetrznych ˛ na ścieżce od a do korzenia i przebudowujac ˛ drzewo tak aby było zgodne z warunkami z poprzedniego slajdu. Filip Zagórski Nierówność Krafta-McMillana, Kodowanie Huffmana Modyfikacja drzewa Zbiór wierzchołków o tej samej wadze nazywamy blokiem. Filip Zagórski Nierówność Krafta-McMillana, Kodowanie Huffmana Modyfikacja drzewa Zbiór wierzchołków o tej samej wadze nazywamy blokiem. Jeśli pierwszy wierzchołek od dołu nie ma najwiekszego ˛ numeru w swoim bloku to zamieniamy go z tym o najwiekszym ˛ numerze odpowiednio przebudowujac ˛ drzewo z zachowaniem własności. Nastepnie ˛ aktualizujemy wage˛ i patrzymy dalej rekurencyjnie. Filip Zagórski Nierówność Krafta-McMillana, Kodowanie Huffmana Modyfikacja drzewa Zbiór wierzchołków o tej samej wadze nazywamy blokiem. Jeśli pierwszy wierzchołek od dołu nie ma najwiekszego ˛ numeru w swoim bloku to zamieniamy go z tym o najwiekszym ˛ numerze odpowiednio przebudowujac ˛ drzewo z zachowaniem własności. Nastepnie ˛ aktualizujemy wage˛ i patrzymy dalej rekurencyjnie. Kończymy jak dojdziemy do korzenia. Filip Zagórski Nierówność Krafta-McMillana, Kodowanie Huffmana Przykład Mamy cztery litery z 26. (W drzewie maksymalnie 51 wierzchołków.) a d r v 00001 00100 10010 10110 Filip Zagórski Nierówność Krafta-McMillana, Kodowanie Huffmana Przykład Mamy cztery litery z 26. (W drzewie maksymalnie 51 wierzchołków.) a d r v 00001 00100 10010 10110 Drzewo poczatkowo ˛ wyglada ˛ tak Filip Zagórski Nierówność Krafta-McMillana, Kodowanie Huffmana Przykład Pojawia sie˛ litera a. Filip Zagórski Nierówność Krafta-McMillana, Kodowanie Huffmana Przykład Pojawia sie˛ litera a. Wysyłamy kod NYT (ε) i stały kod a: 00001. Filip Zagórski Nierówność Krafta-McMillana, Kodowanie Huffmana Przykład Pojawia sie˛ litera a. Wysyłamy kod NYT (ε) i stały kod a: 00001. Modyfikujemy drzewo: Filip Zagórski Nierówność Krafta-McMillana, Kodowanie Huffmana Przykład Pojawia sie˛ druga litera a. Filip Zagórski Nierówność Krafta-McMillana, Kodowanie Huffmana Przykład Pojawia sie˛ druga litera a. Wysyłamy kod a: 1 (z drzewa lewe krawedzie ˛ to 0 a prawe to 1). Filip Zagórski Nierówność Krafta-McMillana, Kodowanie Huffmana Przykład Pojawia sie˛ druga litera a. Wysyłamy kod a: 1 (z drzewa lewe krawedzie ˛ to 0 a prawe to 1). Modyfikujemy drzewo: Filip Zagórski Nierówność Krafta-McMillana, Kodowanie Huffmana Przykład Pojawia sie˛ litera r . Filip Zagórski Nierówność Krafta-McMillana, Kodowanie Huffmana Przykład Pojawia sie˛ litera r . Wysyłamy kod NYT (0) i stały kod r : 010010. Filip Zagórski Nierówność Krafta-McMillana, Kodowanie Huffmana Przykład Pojawia sie˛ litera r . Wysyłamy kod NYT (0) i stały kod r : 010010. Modyfikujemy drzewo: Filip Zagórski Nierówność Krafta-McMillana, Kodowanie Huffmana Przykład Pojawia sie˛ litera d. Filip Zagórski Nierówność Krafta-McMillana, Kodowanie Huffmana Przykład Pojawia sie˛ litera d. Wysyłamy kod NYT (00) i stały kod d: 0000100. Filip Zagórski Nierówność Krafta-McMillana, Kodowanie Huffmana Przykład Pojawia sie˛ litera d. Wysyłamy kod NYT (00) i stały kod d: 0000100. Modyfikujemy drzewo: Filip Zagórski Nierówność Krafta-McMillana, Kodowanie Huffmana Przykład Pojawia sie˛ litera v . Filip Zagórski Nierówność Krafta-McMillana, Kodowanie Huffmana Przykład Pojawia sie˛ litera v . Wysyłamy kod NYT (000) i stały kod v : 0010110. Filip Zagórski Nierówność Krafta-McMillana, Kodowanie Huffmana Przykład Modyfikujemy drzewo: Filip Zagórski Nierówność Krafta-McMillana, Kodowanie Huffmana Przykład Modyfikujemy drzewo: Filip Zagórski Nierówność Krafta-McMillana, Kodowanie Huffmana Podsumowanie - własności Optymalność wśród kodów prefiksowych. Filip Zagórski Nierówność Krafta-McMillana, Kodowanie Huffmana Podsumowanie - własności Optymalność wśród kodów prefiksowych. Kodowanie i dekodowanie w czasie liniowym (szybkie). Filip Zagórski Nierówność Krafta-McMillana, Kodowanie Huffmana Podsumowanie - własności Optymalność wśród kodów prefiksowych. Kodowanie i dekodowanie w czasie liniowym (szybkie). Kody rozszerzone - kompromis miedzy ˛ optymalnościa˛ a wielkościa˛ systemu. Filip Zagórski Nierówność Krafta-McMillana, Kodowanie Huffmana Podsumowanie - własności Optymalność wśród kodów prefiksowych. Kodowanie i dekodowanie w czasie liniowym (szybkie). Kody rozszerzone - kompromis miedzy ˛ optymalnościa˛ a wielkościa˛ systemu. Możliwość implementacji dynamicznej. Filip Zagórski Nierówność Krafta-McMillana, Kodowanie Huffmana Podsumowanie - własności Optymalność wśród kodów prefiksowych. Kodowanie i dekodowanie w czasie liniowym (szybkie). Kody rozszerzone - kompromis miedzy ˛ optymalnościa˛ a wielkościa˛ systemu. Możliwość implementacji dynamicznej. Zastosowanie: pkZIP, lha, gzip, zoo, arj, fragmenty formatów JPEG i MPEG. Filip Zagórski Nierówność Krafta-McMillana, Kodowanie Huffmana