Nierówność Krafta-McMillana, Kodowanie Huffmana

Podobne dokumenty
Kompresja bezstratna. Entropia. Kod Huffmana

Kody Tunstalla. Kodowanie arytmetyczne

Wstęp Statyczne kody Huffmana Dynamiczne kody Huffmana Praktyka. Kodowanie Huffmana. Dawid Duda. 4 marca 2004

Granica kompresji Kodowanie Shannona Kodowanie Huffmana Kodowanie ciągów Kodowanie arytmetyczne. Kody. Marek Śmieja. Teoria informacji 1 / 35

KODY SYMBOLI. Kod Shannona-Fano. Algorytm S-F. Przykład S-F

Algorytmy kodowania entropijnego

Teoria Informacji - wykład. Kodowanie wiadomości

Kodowanie Huffmana. Platforma programistyczna.net; materiały do laboratorium 2014/15 Marcin Wilczewski

Teoria informacji i kodowania Ćwiczenia

Temat: Algorytm kompresji plików metodą Huffmana

Kodowanie informacji

Kompresja danych kodowanie Huffmana. Dariusz Sobczuk

Kodowanie informacji

LZ77 LZ78. Kompresja danych. Tomasz Jurdziński. Wykład 5: kodowanie słownikowe

Kodowanie i kompresja Streszczenie Studia dzienne Wykład 9,

Definicja. Jeśli. wtedy

Def. Kod jednoznacznie definiowalny Def. Kod przedrostkowy Def. Kod optymalny. Przykłady kodów. Kody optymalne

Kompresja Kodowanie arytmetyczne. Dariusz Sobczuk

Kodowanie i entropia

Elementy teorii informacji i kodowania

teoria informacji Entropia, informacja, kodowanie Mariusz Różycki 24 sierpnia 2015

KODY SYMBOLI. Materiały KODA, A.Przelaskowski. Koncepcja przedziałów nieskończonego alfabetu

Algorytmy zachłanne. dr inż. Urszula Gałązka

0-0000, , , itd

Algorytmy i struktury danych. wykład 8

Wygra Polska czy Brazylia, czyli o tym jak zwięźle zapisywać informacje

Podstawowe pojęcia. Teoria informacji

Wstęp do Informatyki

Przetwarzanie i transmisja danych multimedialnych. Wykład 3 Kodowanie Shannona Fano i Huffmana. Przemysław Sękalski.

Algorytmy i struktury danych. Co dziś? Tytułem przypomnienia metoda dziel i zwyciężaj. Wykład VIII Elementarne techniki algorytmiczne

mgr inż. Grzegorz Kraszewski SYSTEMY MULTIMEDIALNE wykład 4, strona 1. GOLOMBA I RICE'A

Algorytmy kompresji. Kodowanie Huffmana, kodowanie arytmetyczne

Modelowanie motywów łańcuchami Markowa wyższego rzędu

Algorytmy i Struktury Danych

Niech x 1,..., x n będzie ciągiem zdarzeń. ---

0 + 0 = 0, = 1, = 1, = 0.

Kodowanie i kompresja Tomasz Jurdziński Studia Wieczorowe Wykład Kody liniowe - kodowanie w oparciu o macierz parzystości

Teoria informacji i kodowania Ćwiczenia Sem. zimowy 2016/2017

Kwantyzacja wektorowa. Kodowanie różnicowe.

JAO - lematy o pompowaniu dla jezykow bezkontekstowy

Kodowanie predykcyjne

Kodowanie i kompresja Streszczenie Studia dzienne Wykład 6

Entropia Kodowanie. Podstawy kompresji. Algorytmy kompresji danych. Sebastian Deorowicz

Algorytmy i str ruktury danych. Metody algorytmiczne. Bartman Jacek

Kompresja danych Streszczenie Studia Dzienne Wykład 10,

Przetwarzanie i transmisja danych multimedialnych. Wykład 5 Kodowanie słownikowe. Przemysław Sękalski.

Matematyka dyskretna - 7.Drzewa

ZASADY PROGRAMOWANIA KOMPUTERÓW ZAP zima 2014/2015. Drzewa BST c.d., równoważenie drzew, kopce.

Kody blokowe Wykład 2, 10 III 2011

Teoria Informacji i Metody Kompresji Danych

Metody teorii gier. ALP520 - Wykład z Algorytmów Probabilistycznych p.2

teoria informacji Kanały komunikacyjne, kody korygujące Mariusz Różycki 25 sierpnia 2015

Kompresja danych - wprowadzenie. 1. Konieczno kompresji 2. Definicja, typy kompresji 3. Modelowanie 4. Podstawy teorii informacji 5.

Grafy (3): drzewa. Wykłady z matematyki dyskretnej dla informatyków i teleinformatyków. UTP Bydgoszcz

Podstawy Informatyki: Kody. Korekcja błędów.

Wykład 3. Złożoność i realizowalność algorytmów Elementarne struktury danych: stosy, kolejki, listy

Kodowanie transformacyjne. Plan 1. Zasada 2. Rodzaje transformacji 3. Standard JPEG

7a. Teoria drzew - kodowanie i dekodowanie

Joint Photographic Experts Group

Kodowanie Shannona-Fano

E: Rekonstrukcja ewolucji. Algorytmy filogenetyczne

Teoria informacji i kodowania Ćwiczenia Sem. zimowy 2016/2017

Wstęp do Programowania potok funkcyjny

ALGORYTMY I STRUKTURY DANYCH

Metody Kompilacji Wykład 3

Sortowanie. Bartman Jacek Algorytmy i struktury

Tadeusz Pankowski

7. CIĄGI. WYKŁAD 5. Przykłady :

Kodowanie i kompresja Streszczenie Studia Licencjackie Wykład 11,

Programowanie w Logice Gramatyki metamorficzne. Przemysław Kobylański na podstawie [CM2003] i [SS1994]

Podstawy kompresji danych

Sortowanie bąbelkowe

EGZAMIN MATURALNY Z INFORMATYKI

1 Działania na zbiorach

Drzewa BST i AVL. Drzewa poszukiwań binarnych (BST)

ZADANIE 1. Rozwiązanie:

Metoda Tablic Semantycznych

Algorytmy i struktury danych

Wykład 2. Drzewa zbalansowane AVL i 2-3-4

Matematyczne Podstawy Informatyki

Metoda graficzna może być stosowana w przypadku gdy model zawiera dwie zmienne decyzyjne. Metoda składa się z dwóch kroków (zobacz pierwszy wykład):

Algorytmy i. Wykład 5: Drzewa. Dr inż. Paweł Kasprowski

Kody Huffmana. Konrad Wypyski. 11 lutego 2006 roku

WSTĘP DO INFORMATYKI. Drzewa i struktury drzewiaste

PLAN WYKŁADU BAZY DANYCH INDEKSY - DEFINICJE. Indeksy jednopoziomowe Indeksy wielopoziomowe Indeksy z użyciem B-drzew i B + -drzew

ALGORYTMY I STRUKTURY DANYCH

Drzewa podstawowe poj

TEORETYCZNE PODSTAWY INFORMATYKI

Wstęp do programowania. Drzewa. Piotr Chrząstowski-Wachtel

Porządek symetryczny: right(x)

Temat 7. Dekodery, enkodery

Drzewa rozpinajace, zbiory rozłaczne, czas zamortyzowany

Temat: Algorytmy wyszukiwania wzorca w tekście

Digraf. 13 maja 2017

Według raportu ISO z 1988 roku algorytm JPEG składa się z następujących kroków: 0.5, = V i, j. /Q i, j

Zofia Kruczkiewicz, Algorytmu i struktury danych, Wykład 14, 1

Rekurencja. Dla rozwiązania danego problemu, algorytm wywołuje sam siebie przy rozwiązywaniu podobnych podproblemów. Przykład: silnia: n! = n(n-1)!

Ogólne wiadomości o drzewach

Twój wynik: 4 punktów na 6 możliwych do uzyskania (66,67 %).

Laboratorium ochrony danych

Transkrypt:

Nierówność Krafta-McMillana, Kodowanie Huffmana Kodowanie i kompresja informacji - Wykład 2 1 marca 2010

Test na jednoznaczna dekodowalność Kod a jest prefiksem kodu b jeśli b jest postaci ax. x nazywamy sufiksem b względem a.

Test na jednoznaczna dekodowalność Kod a jest prefiksem kodu b jeśli b jest postaci ax. x nazywamy sufiksem b względem a. Algorytm Tworzymy listę 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 procedurę 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).

Przykład Weźmy kod {0, 01, 11}.

Przykład Weźmy kod {0, 01, 11}. Kod 0 jest prefiksem 01. Innych par nie ma więc nowa lista ma postać {0, 01, 11, 1}.

Przykład Weźmy kod {0, 01, 11}. Kod 0 jest prefiksem 01. Innych par nie ma więc 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 więc lista się nie zmienia.

Przykład Weźmy kod {0, 01, 11}. Kod 0 jest prefiksem 01. Innych par nie ma więc 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 więc lista się nie zmienia. Kod jest więc jednoznacznie dekodowalny.

Przykład Weźmy kod {0, 01, 10}.

Przykład Weźmy kod {0, 01, 10}. Kod 0 jest prefiksem 01. Innych par nie ma więc nowa lista ma postać {0, 01, 10, 1}.

Przykład Weźmy kod {0, 01, 10}. Kod 0 jest prefiksem 01. Innych par nie ma więc 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.

Przykład Weźmy kod {0, 01, 10}. Kod 0 jest prefiksem 01. Innych par nie ma więc 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 więc jednoznacznie dekodowalny.

Kody prefiksowe Kod w którym żadne słowo kodowe nie jest prefiksem innego słowa kodowego.

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.

Nierówność Krafta-McMillana Niech C będzie kodem składajacym się z N słów o długościach l 1, l 2,..., l N. Jeżeli C jest jednoznacznie dekodowalny to K (C) = N 1 2 l i i=1 1.

Własności optymalnych kodów prefiksowych Symbolom występujacym częściej odpowiadaja krótsze słowa kodowe.

Własności optymalnych kodów prefiksowych Symbolom występujacym częściej odpowiadaja krótsze słowa kodowe. Dwa najrzadziej występujace symbole maja w kodzie optymalnym słowa kodowe tej samej długości.

Konstruowanie kodów Huffmana Kody dwóch najrzadziej występujacych symboli różnia się tylko na ostatniej pozycji.

Konstruowanie kodów Huffmana Kody dwóch najrzadziej występujacych symboli różnia się tylko na ostatniej pozycji. Algorytm rekurencyjny: rozważ dwa najrzadziej występujace 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.

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.

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.

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. A = {a, b, c, x}.

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. A = {a, b, c, x}. Rozważamy c i x: kod(c) = kod(y)0, kod(x) = kod(y)1 i P(y) = 0, 4.

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. A = {a, b, c, x}. Rozważamy c i x: kod(c) = kod(y)0, kod(x) = kod(y)1 i P(y) = 0, 4. A = {a, b, y}.

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. A = {a, b, c, x}. Rozważamy c i x: kod(c) = kod(y)0, kod(x) = kod(y)1 i P(y) = 0, 4. A = {a, b, y}. Rozważamy a i b: kod(a) = kod(z)0, kod(b) = kod(z)1 i P(z) = 0, 6.

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. A = {a, b, c, x}. Rozważamy c i x: kod(c) = kod(y)0, kod(x) = kod(y)1 i P(y) = 0, 4. A = {a, b, y}. Rozważamy a i b: kod(a) = kod(z)0, kod(b) = kod(z)1 i P(z) = 0, 6. A = {y, z}.

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. A = {a, b, c, x}. Rozważamy c i x: kod(c) = kod(y)0, kod(x) = kod(y)1 i P(y) = 0, 4. A = {a, b, y}. Rozważamy a i b: kod(a) = kod(z)0, kod(b) = kod(z)1 i P(z) = 0, 6. A = {y, z}. Rozważamy y i z: kod(y) = 0 i kod(z) = 1.

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. A = {a, b, c, x}. Rozważamy c i x: kod(c) = kod(y)0, kod(x) = kod(y)1 i P(y) = 0, 4. A = {a, b, y}. Rozważamy a i b: kod(a) = kod(z)0, kod(b) = kod(z)1 i P(z) = 0, 6. A = {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.

Własności kodów Huffmana Kod Huffmana jako drzewo - tworzenie takiego drzewa jako algorytm tworzenia kodów 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ęsto wiele kodów dla jednego źródła danych (ale wszystkie maja ta sama średnia długość kodu).

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ęsto wiele kodów dla jednego źródła danych (ale wszystkie maja ta sama średnia długość kodu). Wariancja kodu, redundancja kodu.

Optymalność kodów Huffmana Optymalny kod powinien spełniać następujace warunki: Dla każdych dwóch liter a i b takich, że P(a) P(b) zachodzi l b l a.

Optymalność kodów Huffmana Optymalny kod powinien spełniać następujace warunki: Dla każdych dwóch liter a i b takich, że P(a) P(b) zachodzi l b l a. Dwie litery o najmniejszych prawdopodobieństwach maja słowa kodowe o tej samej, maksymalnej długości.

Optymalność kodów Huffmana Optymalny kod powinien spełniać następujace warunki: Dla każdych dwóch liter a i b takich, że P(a) P(b) zachodzi l b l a. Dwie litery o najmniejszych prawdopodobieństwach maja słowa kodowe o tej samej, maksymalnej długości. Z każdego wierzchołka wewnętrznego drzewa odpowiadajacego kodowi optymalnemu powinny wychodzić oba poddrzewa.

Optymalność kodów Huffmana Optymalny kod powinien spełniać następujace warunki: Dla każdych dwóch liter a i b takich, że P(a) P(b) zachodzi l b l a. Dwie litery o najmniejszych prawdopodobieństwach maja słowa kodowe o tej samej, maksymalnej długości. Z każdego wierzchołka wewnętrznego drzewa odpowiadajacego kodowi optymalnemu powinny wychodzić oba poddrzewa. Jeśli połaczymy dwa liście majace wspólnego ojca i ten wierzchołek wewnętrzny potraktujemy jako liść to uzyskane drzewo jest kodem optymalnym dla nowego alfabetu jeśli pierwotne drzewo było optymalne.

Długość kodów Huffmana Dla źródła S spełniona jest nierówność H(S) l H(S) + 1 gdzie l - średnia długość kodu Huffmana dla źródła S.

Rozszerzone i niebinarne kody Huffmana Kody Huffmana możemy zastosować także do bloków symboli.

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.

Dynamiczne kody Huffmana Aby wykonać kodowanie Huffmana musimy znać prawdopodobieństwa (częstość występowania) liter.

Dynamiczne kody Huffmana Aby wykonać kodowanie Huffmana musimy znać prawdopodobieństwa (częstość występowania) liter. Co zrobić gdy dane napływaja na bieżaco i nie znamy statystyk?

Dynamiczne kody Huffmana Aby wykonać kodowanie Huffmana musimy znać prawdopodobieństwa (częstość występowania) liter. Co zrobić gdy dane napływaja na bieżaco i nie znamy statystyk? Kodować k + 1 symbol na podstawie statystyk k symboli.

Przygotowania Dla alfabetu wejściowego mamy kodowanie stałej długości (pomocnicze).

Przygotowania Dla alfabetu wejściowego mamy kodowanie stałej długości (pomocnicze). Dla kodu Huffmana tworzymy na bieżaco jego drzewo o następujacych własnościach:

Przygotowania Dla alfabetu wejściowego mamy kodowanie stałej długości (pomocnicze). Dla kodu Huffmana tworzymy na bieżaco jego drzewo o następujacych własnościach: Każdy liść odpowiada symbolowi i zawiera wagę - ilość dotychczasowych wystapień.

Przygotowania Dla alfabetu wejściowego mamy kodowanie stałej długości (pomocnicze). Dla kodu Huffmana tworzymy na bieżaco jego drzewo o następujacych własnościach: Każdy liść odpowiada symbolowi i zawiera wagę - ilość dotychczasowych wystapień. Wierzchołki wewnętrzne maja wagę będac a suma wag liści z poddrzew.

Przygotowania Dla alfabetu wejściowego mamy kodowanie stałej długości (pomocnicze). Dla kodu Huffmana tworzymy na bieżaco jego drzewo o następujacych własnościach: Każdy liść odpowiada symbolowi i zawiera wagę - ilość dotychczasowych wystapień. Wierzchołki wewnętrzne maja wagę będac a suma wag liści z poddrzew. Każdy wierzchołek drzewa ma unikalny numer x i. Numery te tworza porzadek zgodny z wagami wierzchołków (większa waga to większy numer wierzchołka). Dodatkowo rodzeństwo ma zawsze dwa kolejne numery.

Przygotowania Dla alfabetu wejściowego mamy kodowanie stałej długości (pomocnicze). Dla kodu Huffmana tworzymy na bieżaco jego drzewo o następujacych własnościach: Każdy liść odpowiada symbolowi i zawiera wagę - ilość dotychczasowych wystapień. Wierzchołki wewnętrzne maja wagę będac a suma wag liści z poddrzew. Każdy wierzchołek drzewa ma unikalny numer x i. Numery te tworza porzadek zgodny z wagami wierzchołków (większa waga to większy 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.

Opis algorytmu Pierwsze wystapienie symbolu a Wyślij kod NYT i kod stałej długości dla nowego symbolu.

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 wagę 1. Nadaj im odpowiednie numery.

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 wagę 1. Nadaj im odpowiednie numery. Zmodyfikuj drzewo dodajac 1 do wierzchołków wewnętrznych na ścieżce od a do korzenia i przebudowujac drzewo tak aby było zgodne z warunkami z poprzedniego slajdu.

Opis algorytmu Kolejne wystapienie symbolu a Znajdź liść a i wyślij odpowiadajacy mu kod.

Opis algorytmu Kolejne wystapienie symbolu a Znajdź liść a i wyślij odpowiadajacy mu kod. Zwiększ wagę a o 1.

Opis algorytmu Kolejne wystapienie symbolu a Znajdź liść a i wyślij odpowiadajacy mu kod. Zwiększ wagę a o 1. Zmodyfikuj drzewo dodajac 1 do wierzchołków wewnętrznych na ścieżce od a do korzenia i przebudowujac drzewo tak aby było zgodne z warunkami z poprzedniego slajdu.

Modyfikacja drzewa Zbiór wierzchołków o tej samej wadze nazywamy blokiem.

Modyfikacja drzewa Zbiór wierzchołków o tej samej wadze nazywamy blokiem. Jeśli pierwszy wierzchołek od dołu nie ma największego numeru w swoim bloku to zamieniamy go z tym o największym numerze odpowiednio przebudowujac drzewo z zachowaniem własności. Następnie aktualizujemy wagę i patrzymy dalej rekurencyjnie.

Modyfikacja drzewa Zbiór wierzchołków o tej samej wadze nazywamy blokiem. Jeśli pierwszy wierzchołek od dołu nie ma największego numeru w swoim bloku to zamieniamy go z tym o największym numerze odpowiednio przebudowujac drzewo z zachowaniem własności. Następnie aktualizujemy wagę i patrzymy dalej rekurencyjnie. Kończymy jak dojdziemy do korzenia.

Przykład Mamy cztery litery z 26. (W drzewie maksymalnie 51 wierzchołków.) a d r v 00001 00100 10010 10110

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

Przykład Pojawia się litera a.

Przykład Pojawia się litera a. Wysyłamy kod NYT (ε) i stały kod a: 00001.

Przykład Pojawia się litera a. Wysyłamy kod NYT (ε) i stały kod a: 00001. Modyfikujemy drzewo:

Przykład Pojawia się druga litera a.

Przykład Pojawia się druga litera a. Wysyłamy kod a: 1 (z drzewa lewe krawędzie to 0 a prawe to 1).

Przykład Pojawia się druga litera a. Wysyłamy kod a: 1 (z drzewa lewe krawędzie to 0 a prawe to 1). Modyfikujemy drzewo:

Przykład Pojawia się litera r.

Przykład Pojawia się litera r. Wysyłamy kod NYT (0) i stały kod r: 010010.

Przykład Pojawia się litera r. Wysyłamy kod NYT (0) i stały kod r: 010010. Modyfikujemy drzewo:

Przykład Pojawia się litera d.

Przykład Pojawia się litera d. Wysyłamy kod NYT (00) i stały kod d: 0000100.

Przykład Pojawia się litera d. Wysyłamy kod NYT (00) i stały kod d: 0000100. Modyfikujemy drzewo:

Przykład Pojawia się litera v.

Przykład Pojawia się litera v. Wysyłamy kod NYT (000) i stały kod v: 0010110.

Przykład Modyfikujemy drzewo:

Przykład Modyfikujemy drzewo:

Podsumowanie - własności Optymalność wśród kodów prefiksowych.

Podsumowanie - własności Optymalność wśród kodów prefiksowych. Kodowanie i dekodowanie w czasie liniowym (szybkie).

Podsumowanie - własności Optymalność wśród kodów prefiksowych. Kodowanie i dekodowanie w czasie liniowym (szybkie). Kody rozszerzone - kompromis między optymalnościa a wielkościa systemu.

Podsumowanie - własności Optymalność wśród kodów prefiksowych. Kodowanie i dekodowanie w czasie liniowym (szybkie). Kody rozszerzone - kompromis między optymalnościa a wielkościa systemu. Możliwość implementacji dynamicznej.

Podsumowanie - własności Optymalność wśród kodów prefiksowych. Kodowanie i dekodowanie w czasie liniowym (szybkie). Kody rozszerzone - kompromis między optymalnościa a wielkościa systemu. Możliwość implementacji dynamicznej. Zastosowanie: pkzip, lha, gzip, zoo, arj, fragmenty formatów JPEG i MPEG.