Kodowanie informacji. Instytut Informatyki UWr Studia wieczorowe. Wykład nr 2: rozszerzone i dynamiczne Huffmana

Podobne dokumenty
Kompresja bezstratna. Entropia. Kod Huffmana

Nierówność Krafta-McMillana, Kodowanie Huffmana

STANDARDOWE TECHNIKI KOMPRESJI SYGNAŁÓW

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

Zapis informacji, systemy pozycyjne 1. Literatura Jerzy Grębosz, Symfonia C++ standard. Harvey M. Deitl, Paul J. Deitl, Arkana C++. Programowanie.

Kodowanie informacji

Kody Tunstalla. Kodowanie arytmetyczne

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

SZTUCZNA INTELIGENCJA

Wprowadzenie do Sieci Neuronowych Sieci rekurencyjne

STATYSTYKA MATEMATYCZNA WYKŁAD 5 WERYFIKACJA HIPOTEZ NIEPARAMETRYCZNYCH

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

( ) ( ) 2. Zadanie 1. są niezależnymi zmiennymi losowymi o. oraz. rozkładach normalnych, przy czym EX. i σ są nieznane. 1 Niech X

Analiza danych OGÓLNY SCHEMAT. Dane treningowe (znana decyzja) Klasyfikator. Dane testowe (znana decyzja)

Kodowanie i kompresja Streszczenie Studia dzienne Wykład 9,

Kompresja Kodowanie arytmetyczne. Dariusz Sobczuk

Diagonalizacja macierzy kwadratowej

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

Temat: Algorytm kompresji plików metodą Huffmana

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

Projekt 6 6. ROZWIĄZYWANIE RÓWNAŃ NIELINIOWYCH CAŁKOWANIE NUMERYCZNE

Algorytmy kodowania entropijnego

p Z(G). (G : Z({x i })),

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

Zaawansowane metody numeryczne Komputerowa analiza zagadnień różniczkowych 1. Układy równań liniowych

Stanisław Cichocki Natalia Nehrebecka. Zajęcia 4

Założenia i obszar zastosowań. JPEG - algorytm kodowania obrazu. Geneza algorytmu KOMPRESJA OBRAZÓW STATYCZNYCH - ALGORYTM JPEG

Proces narodzin i śmierci

Teoria informacji i kodowania Ćwiczenia

Stanisław Cichocki. Natalia Nehrebecka. Wykład 6

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

Zaawansowane metody numeryczne

W praktyce często zdarza się, że wyniki obu prób możemy traktować jako. wyniki pomiarów na tym samym elemencie populacji np.

Stanisław Cichocki. Natalia Nehrebecka. Wykład 6

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

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

Natalia Nehrebecka. Zajęcia 4

0 0,2 0, p 0,1 0,2 0,5 0, p 0,3 0,1 0,2 0,4

Kodowanie informacji

BADANIA OPERACYJNE. Podejmowanie decyzji w warunkach niepewności. dr Adam Sojda

ALGEBRY HALLA DLA POSETÓW SKOŃCZONEGO TYPU PRINJEKTYWNEGO

Modele wieloczynnikowe. Modele wieloczynnikowe. Modele wieloczynnikowe ogólne. α β β β ε. Analiza i Zarządzanie Portfelem cz. 4.

WikiWS For Business Sharks

Zestaw zadań 4: Przestrzenie wektorowe i podprzestrzenie. Liniowa niezależność. Sumy i sumy proste podprzestrzeni.

Algorytmy kompresji. Kodowanie Huffmana, kodowanie arytmetyczne

) będą niezależnymi zmiennymi losowymi o tym samym rozkładzie normalnym z następującymi parametrami: nieznaną wartością 1 4

Kodowanie i kompresja Streszczenie Studia Licencjackie Wykład 11,

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

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

Stanisław Cichocki. Natalia Nehrebecka. Wykład 6

Teoria Informacji - wykład. Kodowanie wiadomości

5. OPTYMALIZACJA GRAFOWO-SIECIOWA

Stanisław Cichocki. Natalia Nehrebecka. Wykład 7

D Archiwum Prac Dyplomowych - Instrukcja dla studentów

Nieparametryczne Testy Istotności

Kompresja danych kodowanie Huffmana. Dariusz Sobczuk

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

0-0000, , , itd

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

Problemy jednoczesnego testowania wielu hipotez statystycznych i ich zastosowania w analizie mikromacierzy DNA

Kodowanie Shannona-Fano

Programowanie Równoległe i Rozproszone

Twierdzenie Bezouta i liczby zespolone Javier de Lucas. Rozwi azanie 2. Z twierdzenia dzielenia wielomianów, mamy, że

XXX OLIMPIADA FIZYCZNA ETAP III Zadanie doświadczalne

Laboratorium ochrony danych

MATEMATYKA POZIOM ROZSZERZONY Kryteria oceniania odpowiedzi. Arkusz A II. Strona 1 z 5

3. ŁUK ELEKTRYCZNY PRĄDU STAŁEGO I PRZEMIENNEGO

Natalia Nehrebecka. Wykład 2

Definicja. Jeśli. wtedy

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

termodynamika fenomenologiczna p, VT V, teoria kinetyczno-molekularna <v 2 > termodynamika statystyczna n(v) to jest długi czas, zachodzi

Pokazać, że wyżej zdefiniowana struktura algebraiczna jest przestrzenią wektorową nad ciałem

65120/ / / /200

Sprawozdanie powinno zawierać:

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

-Macierz gęstości: stany czyste i mieszane (przykłady) -równanie ruchu dla macierzy gęstości -granica klasyczna rozkładów kwantowych

Analiza danych. Analiza danych wielowymiarowych. Regresja liniowa. Dyskryminacja liniowa. PARA ZMIENNYCH LOSOWYCH

Komputer kwantowy Zasady funkcjonowania. Dr hab. inż. Krzysztof Giaro Politechnika Gdańska Wydział ETI

PODSTAWA WYMIARU ORAZ WYSOKOŚĆ EMERYTURY USTALANEJ NA DOTYCHCZASOWYCH ZASADACH

Weryfikacja hipotez dla wielu populacji

architektura komputerów w. 3 Arytmetyka komputerów


Model ASAD. ceny i płace mogą ulegać zmianom (w odróżnieniu od poprzednio omawianych modeli)

Rozpoznawanie kodów splotowych

Statystyka Inżynierska

Prawdopodobieństwo geometryczne

Kodowanie i entropia

5. Pochodna funkcji. lim. x c x c. (x c) = lim. g(c + h) g(c) = lim

Algorytmy kodowania predykcyjnego

Kompresja danych Streszczenie Studia Dzienne Wykład 10,

Odtworzenie wywodu metodą wstępującą (bottom up)

D Archiwum Prac Dyplomowych - Instrukcja dla opiekunów/promotorów/recenzentów

Rozkład dwupunktowy. Rozkład dwupunktowy. Rozkład dwupunktowy x i p i 0 1-p 1 p suma 1

KOMPRESJA OBRAZÓW STATYCZNYCH - ALGORYTM JPEG

Badanie współzależności dwóch cech ilościowych X i Y. Analiza korelacji prostej

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

Plan wykładu: Typowe dane. Jednoczynnikowa Analiza wariancji. Zasada: porównać zmienność pomiędzy i wewnątrz grup

Kodowanie predykcyjne

Wykład Turbina parowa kondensacyjna

STARE A NOWE KRAJE UE KONKURENCYJNOŚĆ POLSKIEGO EKSPORTU

Transkrypt:

Kodowane nformacj Instytut Informatyk UWr Studa weczorowe Wykład nr 2: rozszerzone dynamczne Huffmana

Kod Huffmana - nemłe przypadk... Nech alfabet składa sę z 2 lter: P(a)=1/16 P(b)=15/16 Mamy H(1/16, 15/16) = -1/16*log(1/16)-15/16*log(15/16) 0.34 Natomast algorytm Huffmana daje kod K: K(a)=0 K(b)=1 Czyl S(K) = 1/16*1+15/16*1 = 1... żadnej kompresj, prawe 3 razy gorzej od entrop...

Kod Huffmana - rozszerzamy... Dla rozkładu prawdopodobeńtw jak poprzedno: P(A)=1/16 P(B)=15/16 Wprowadźmy rozszerzony alfabet {AA, AB, BB, BA} Para P(para) Kod Huffm AA 1 / 256 100 AB 15 / 256 101 BB 225 / 256 0 BA 15 / 256 11 średna długość powyższego kodu Huffmana: S(H) = 1/256 * 3 + 15/256 * 3 +15/256 * 2 + 225/256*1 1.18 a entropa: H(1/256, 15/256, 15/256, 225/256) 0.68 Czyl już tylko necałe 2 razy gorzej od entrop.

Uogólnjmy rozszerzane... Uogólnamy (dla cągów nezależnych): Dany rozkład prawdopodobeństw P = { p 1,,p n } odpowadający symbolom a 1,,a n k-tym rozszerzenem P k rozkładu P nazywamy rozkład odpowadający wszystkm k-elementowym cągom symbol ze zboru { a 1,,a n } prawdopodobeństwo cągu a 1 a k w rozkładze P k to p 1 *p 2 * *p k Jak zmen sę entropa? rozkład prawdopodobeństwa orygnalnych symbol ne zmenł sę! A zatem zawartość nformacyjna danych równeż ne pownna ulec zmane!!!

Entropa dla rozszerzonego alfabetu Twerdzene Nech P k będze rozkładem prawdopodobeństw k-tego rozszerzena alfabetu z rozkładem P. Wówczas: Dowód: k = 1: oczywste H(P k ) = k H(P) Krok ndukcyjny: Załóżmy, że H(P k-1 ) = (k-1) H(P). Wówczas:

Dowód c.d. ( ) ) ( ) ( 1) ( log log ) ( ] log ) log( )] log( ) [log( ) log( ) ( 1 1 1 1 1 1 1 1 1 2 2 2 2 2 1 1 2 1 2 2 1 1 1 1 1 1,,,,,,,, P H k p P H k p p p P H p p p p p p p p p p p p p p p p p p p P H k k k k k k k k k k k k k = + = + = + = + = =

Rozszerzony alfabet c.d. Skoro H(P k ) = k H(P) to znaczy, że zgodne z ntucją lczba btów nformacj przypadających na jeden symbol rozszerzonego alfabetu jest k-krotne wększa od lczby btów nformacj na symbol orygnalnego alfabetu ale jeden symbol w P k odpowada k symbolom w P czyl lczba btów na orygnalny symbol ne zmena sę. A jak z jakoścą kodów Huffmana dla rozszerzonego alfabetu?

Jakość Huffmana dla rozszerzonego... Wnosek Średna długość kodu Huffmana dla rozszerzonego alfabetu z rozkładem P k odpowadająca przypadająca na jeden symbol alfabetu orygnalnego wynos co najwyżej H(P)+1/k. Dowód: Optymalność kodu Huffmana gwarantuje, że S( Huffman k ) H(P k ) + 1 gdze Huffman k to kod Huffmana dla prawdopodobeństw P k. A zatem na jeden symbol alfabetu orygnalnego przypada co najwyżej: btów. S( Huffman k ) / k (H(P k ) + 1) / k = H(P) + 1/k

Kompresja a wydajność Wnosek Używając rozszerzonych kodów Huffmana dla coraz wększych k osągamy kompresję coraz blższą entrop. Ale zwązane są z tym koszty: W k-tym rozszerzenu alfabetu o rozmarze n uzyskujemy alfabet rozmaru n k (wzrost wykładnczy!) Oznacza to wykładnczy wzrost czasu tworzena kodu...oraz wykładnczy wzrost pamęc potrzebnej na przechowywane (drzewa) kodu Ale czas kompresj/dekompresj pozostaje lnowy! W praktyce: Trzeba wybrać komproms mędzy kompresją a czasem/pamęcą Problem technczny: tekst mus meć długość podzelną przez k.

Skąd brać prawdopodobeństwa? Prawdopodobeństwa ustalone z góry, w oparcu o specyfkę danych: z góry znane koderow dekoderow (np. standard wdeo H.263) ale przestaje dzałać gdy zmen sę charakterystyka danych Wyznaczamy prawdopodobeństwa w oparcu o częstość występowana symbol w kodowanym tekśce: koneczne 2 przebeg: najperw zlczane częstośc, potem kodowane koneczne dołączene kodu lub częstośc do zakodowanych danych (dekoder ch ne zna!) Kodowane dynamczne: w każdym kroku korzystamy z częstośc w dotychczas zakodowanej częśc tekstu (znać ją będze też dekoder) wystarczy jeden przebeg ne trzeba dołączać kodu an prawdopodobeństw (pbb) do danych.

Dynamczne kody Huffmana... czyl wystarczy tylko raz polczyć do neskończonośc Idea: CEL: Przy kodowanu każdej ltery stosujemy kod Huffmana dla prawdopodobeństw opartych na częstoścach już zakodowanej częśc Prawdopodobeństwa te znane są równeż dekoderow: Przy odkodowywanu p-tej ltery znane są już ltery od perwszej do (p-1)-szej Po każdej lterze koneczne modyfkowane (drzewa) kodu ALE wystarczy jeden przebeg kodowanego plku! Przebudowa kodu po każdym kroku ne pownna być kosztowna!

Dynamczne kody Huffmana Ważne przy kodowanu modyfkujemy kod po zakodowanu symbolu przy dekodowanu modyfkujemy kod przed odkodowanem symbolu W ten sposób koder dekoder przy każdym symbolu używają tego samego drzewa kodu!

Dynamczne kody Huffmana Numerowane werzchołków drzewa: od dołu do góry od lewej do prawej 7 A 5 3 C D 1 2 6 B 4

Dynamczne kody Huffmana c.d. Wag werzchołków: waga lśca = lczba wystąpeń odpowadającego mu symbolu waga werzchołka wewnętrznego = suma wag lśc w jego poddrzewe 11 5 6 3 3 1 2

Nezmennk Drzewo kodu o n elementach spełnające ponższe warunk jest optymalne: Istneje numerowane wszystkch werzchołków v 1,,v 2n-1 take, że: w(v 1 ) w(v 2 ) w(v 2n-1 ), gdze w(x) to waga werzchołka x Numerowane v 1,,v 2n-1 jest: od dołu do góry w ramach pozomu: od lewej do prawej.

Incjalzacja Na początku (alfabet a 1,,a m ): drzewo kodu: złożone z jednego werzchołka NP (od ne przesłany ) o wadze 0 numerze 2m-1; UWAGI: werzchołek NP będze w drzewe symbolzować wszystke symbole, które jeszcze ne pojawły sę w tekśce numer 2m-1 dlatego, że będze 2m-1 werzchołków docelowo (m lśc) Wszystkch lterom przyporządkowujemy kody stałe, wykorzystywane tylko przy perwszym pojawenu sę danej ltery w tekśce:

Kody stałe Nech e r take, że m = 2 e + r 0 r < 2 e. Lterze a przyporządkowujemy kod stały: (e+1) -btowej reprezentacj lczby -1 gdy 1 2r e-btowej reprezentacj lczby -r-1 w przecwnym przypadku. Czyl Kod stały równy kodow o stałej długośc równej log m, gdy m jest potęgą dwójk Mała optymalzacja kodu o stałej długośc, gdy m ne jest potęgą dwójk: 2r symbol ma kod o długośc log m m - 2r symbol ma kod o długośc log m

Kody stałe - przykład Nech m = 10 (alfabet ma 10 symbol). Wtedy : 10 = 2 3 +2, czyl e = 3 r = 2 Inaczej: rysujemy drzewo o głębokośc e+1 staramy sę wykorzystać wolne lśce (dwa lśce na pozome e+1 odpowadają jednemu werzchołkow na pozome e) Ltera A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 Kod 0000 0001 0010 0011 010 011 100 101 110 111 FAKT: kod stały jest kodem prefksowym (ćw.)

Kodowane Dla kolejnego symbolu tekstu b: jeśl w drzewe kodu ne ma lśca o etykece b, kodujemy b jako: kod werzchołka NP a za nm kod stały odpowadający symbolow b Dodaj 2 dzec werzchołka NP (nech numer NP to p) lewe dzecko to nowy NP (numerze p-2, waga 0) prawe dzecko ma etyketę b (numer p-1, waga 1) Jeśl w drzewe kodu jest lść o etykece b: kodujemy b za pomocą odpowadającego mu w drzewe kodu słowa kodowego wykonaj aktualzację drzewa kodu!

Dekodowane Dopók ne ma końca zakodowanego plku: odkoduj słowo kodowe odpowadające lścow aktualnego drzewa kodu jeśl odkodowane słowo kodowe odpowada lterze alfabetu: zapsz ją. jeśl odkodowane słowo kodowe odpowada werzchołkow NP: odkoduj kolejną lterę według kodu stałego (e lub e+1 btów według drzewa kodu stałego): zapsz ją. Następne, dodaj 2 dzec werzchołka NP (o numerze p) lewe dzecko to nowy NP (numerze p-2, waga 0) prawe dzecko ma etyketę b (numer p-1, waga 1) wykonaj aktualzację drzewa kodu.

Aktualzacja drzewa kodu CEL - zachowane nezmennka: numerowane wszystkch werzchołków v 1,,v 2n-1 (od dołu do góry, od lewej do prawej) ma spełnać warunek: w(v 1 ) w(v 2 ) w(v 2n-1 ), gdze w(x) to waga werzchołka x Idea rozwązana: przechodzmy śceżkę od lśca odpowadającego ostatnemu symbolow zwększamy wag wszystkch werzchołków o 1 gdy zwększene wag zaburza powyższy nezmennk, zamenamy aktualny werzchołek z najwyżej położonym werzchołkem o takej samej wadze. Efekt: koszt proporcjonalny do długośc słowa kodowego a ne n log n...

Aktualzacja drzewa kodu c.d. Blok: zbór werzchołków o tej samej wadze. UWAGI: Jeśl numeracja v 1,,v 2n-1 spełna warunek w(v 1 ) w(v 2 ) w(v 2n-1 ), to wszystke werzchołk z jednego bloku tworzą spójny obszar w tej numeracj Jak reprezentujemy blok: lsta dwustronna w kolejnośc odpowadającej numeracj wszystkch werzchołków; dodatkowo wskaźnk na początk bloków.

Aktualzacja drzewa kodu c.d. Nech v to werzchołek odpowadający ostatno zakodowanemu bądź odkodowanemu symbolow: Dopók v jest różny od korzena: jeśl numer v ne jest najwększy w bloku do którego v należy: zameń v z werzchołkem w o najwększym numerze w bloku (o le w ne jest rodzcem v). UWAGI: zamenamy całe poddrzewa v w zamenają sę numeram ale numery pozostałych werzchołków ne zmenają sę zwększ wagę v o jeden: w(v) w(v)+1 v rodzc(v)

Przykład: dyn. Huffman Alfabet {A, B, C, D,..., J} 10 elementów. Tekst do zakodowana: A A B C D A D Ltera Kod Kody stałe: A 0000 Drzewo kodu: B 0001 C D E 0010 0011 010 0 NP F 011 G 100 H 101 I 110 J 111

Przykład c.d. Drzewo kodu: 21 A A B C D A D 0 NP OUTPUT: 0000 kod stały A UWAGA: kod werzchołka NP jest pusty!

Przykład c.d.: A A B C D A D Drzewo kodu: 21 1 0 1 19 20 NP A OUTPUT: 0000 kod stały A UWAGA: kod werzchołka NP jest pusty!

Przykład c.d.: A A B C D A D Drzewo kodu: 1 21 19 NP 0 1 A 20 OUTPUT: 00001

Przykład c.d.: A A B C D A D Drzewo kodu: 2 21 19 0 2 NP A 20 OUTPUT: 00001

Przykład c.d.: A A B C D A D Drzewo kodu: 2 21 19 0 2 NP A 20 OUTPUT: 0000 1 0 0001 kod NP kod stały B

Przykład c.d.: A A B C D A D Drzewo kodu: 2 21 17 19 0 2 0 0 NP B 18 A 20 OUTPUT: 0000 1 0 0001

Przykład c.d.: A A B C D A D Drzewo kodu: 3 21 17 19 1 2 0 1 NP B 18 A 20 OUTPUT: 0000 1 0 0001

Przykład c.d.: A A B C D A D Drzewo kodu: 3 21 17 19 1 2 0 1 NP B 18 A 20 OUTPUT: 0000 1 0 0001 00 0010 kod NP kod stały C

Przykład c.d.: A A B C D A D Drzewo kodu: 3 21 19 1 2 17 0 1 B 0 0 NP c 15 16 18 A 20 OUTPUT: 0000 1 0 0001 00 0010

Przykład c.d.: A A B C D A D Drzewo kodu: Popraw. śc. 19 4 2 2 17 1 1 B 0 1 NP c 15 16 21 18 A 20 OUTPUT: 0000 1 0 0001 00 0010

Przykład c.d.: A A B C D A D Drzewo kodu: Popraw. śc. 19 4 2 2 17 1 1 B 0 1 NP c 15 16 21 18 A 20 OUTPUT: 0000 1 0 0001 00 0010 000 0011 kod NP kod stały D

Przykład c.d.: A A B C D A D Drzewo kodu: 4 21 NP D 19 2 2 17 1 1 B 0 1 15 16 0 0 13 14 c 18 A 20 OUTPUT: 0000 1 0 0001 00 0010 000 0011

Przykład c.d.: A A B C D A D Drzewo kodu: 4 21 NP D 19 2 2 17 1 1 B 1 1 15 16 0 1 13 14 c 18 A 20 ZAMIANA! OUTPUT: 0000 1 0 0001 00 0010 000 0011

Przykład c.d.: A A B C D A D Drzewo kodu: 4 21 18 2 2 A 1 17 2 B 15 1 1 16 c NP 19 0 1 13 14 D 20 ZAMIANA! OUTPUT: 0000 1 0 0001 00 0010 000 0011

Przykład c.d.: A A B C D A D Drzewo kodu: 4 21 19 A 2 3 1 2 B 15 1 1 16 c NP 20 17 18 0 1 13 14 D OUTPUT: 0000 1 0 0001 00 0010 000 0011

Przykład c.d.: A A B C D A D Drzewo kodu: 5 21 19 A 2 3 1 2 B 15 1 1 16 c NP 20 17 18 0 1 13 14 D OUTPUT: 0000 1 0 0001 00 0010 000 0011

Przykład c.d.: A A B C D A D Drzewo kodu: 5 21 19 A 2 3 1 2 B 15 1 1 16 c NP 20 17 18 0 1 13 14 D OUTPUT: 0000 1 0 0001 00 0010 000 0011 0 Uwaga: A był kodowany jako 0000, 1 a na końcu jako 0.

Przykład c.d.: A A B C D A D Drzewo kodu: 6 21 19 A 3 3 1 2 B 15 1 1 16 c NP 20 17 18 0 1 13 14 D OUTPUT: 0000 1 0 0001 00 0010 000 0011 0

Przykład c.d.: A A B C D A D Drzewo kodu: 6 21 19 A 3 3 1 2 B 15 1 1 16 c NP 20 17 18 0 1 13 14 D OUTPUT: 0000 1 0 0001 00 0010 000 0011 0 1101

Przykład c.d.: A A B C D A D Drzewo kodu: 6 21 19 3 20 3 ZAMIANA! A 1 2 17 18 B 15 1 1 16 c 0 1 13 14 NP D OUTPUT: 0000 1 0 0001 00 0010 000 0011 0 1101

Przykład c.d.: A A B C D A D Drzewo kodu: 7 21 19 A 3 4 2 2 D 15 1 1 16 c NP 20 17 18 0 1 13 14 B OUTPUT: 0000 1 0 0001 00 0010 000 0011 0 1101

Dynamczny Huffman: struktury danych Tabela kodu stałego Bnarne drzewo kodu H. Wskaźnk na lśce dla każdej ltery 19 A Lsta dwustronna wg numeracj (oraz wskaźnk na początk bloków) CZAS: lnowy względem rozmaru kodu A B C D 3 7 4 2 2 D 15 1 1 16 c NP 20 21 17 18 0 1 13 14 B

Dynamczny Huffman: nezmennk? Chcemy pokazać, że algorytm modyfkacj drzewa kodu zachowuje własnośc: Numeracja w algorytme v 1,,v 2n-1 jest numeracją od dołu do góry od lewej do prawej Wag werzchołków spełnają warunek: w(v 1 ) w(v 2 ) w(v 2n-1 ) Szkc dowodu: Zamana z najwększym w bloku gwarantuje, że zanm zwększymy wagę werzchołka, wypchnemy go przed wszystke werzchołk, których waga stane sę mnejsza (czyl na początek jego bloku) Ale razem z werzchołkem przestawamy całe jego poddrzewo... co może zaburzyć numerację Jednak: wszystke werzchołk pomędzy dwoma zamenanym są lśćm (poza jednym przypadkem...)

Kodowane Huffmana: podsumowane Własnośc Optymalny wśród prefksowych Kodowane dekodowane w czase lnowym! Kody rozszerzone: komproms mędzy zasobam a kompresją Możlwość mplementacj jednoprzebegowej, dynamcznej: kompresja zblżona do kodu statycznego, dodatkowy czas lnowy Zastosowana: pkzip, lha, gz, zoo, arj. formaty JPEG MPEG (jako jeden z etapów, czasem zmodyfkowany) Eksperymenty Bezstratna kompresja obrazów: współczynnk 1,5 Kompresja tekstów w języku naturalnym: wsp. 2 Kompresja dźwęku: wsp. 1,5 (kodowane różnc)