Teoria Informacji i Metody Kompresji Danych

Podobne dokumenty
Teoria Informacji i Metody Kompresji Danych

wiadomość komunikat - informacja Caius Julius Cesar Człowiek zasztyletowany przez senatorów na forum Romanum w Idy Marcowe roku DCCIX ab urbe condita

Teoria Informacji i Metody Kompresji Danych

Teoria informacji i kodowania Ćwiczenia

Teoria Informacji - wykład. Kodowanie wiadomości

Kodowanie i entropia

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

Elementy teorii informacji i kodowania

Kompresja bezstratna. Entropia. Kod Huffmana

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

Podstawowe pojęcia. Teoria informacji

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

Kodowanie i kompresja Streszczenie Studia dzienne Wykład 9,

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

Temat: Algorytm kompresji plików metodą Huffmana

Nierówność Krafta-McMillana, Kodowanie Huffmana

Kompresja danych kodowanie Huffmana. Dariusz Sobczuk

Kompresja Kodowanie arytmetyczne. Dariusz Sobczuk

Modulacja i kodowanie. Labolatorium. Kodowanie źródłowe Kod Huffman a

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

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

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

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

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

Algorytmy kompresji. Kodowanie Huffmana, kodowanie arytmetyczne

Definicja. Jeśli. wtedy

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

Kodowanie informacji

Kody Tunstalla. Kodowanie arytmetyczne

Algorytmy kodowania entropijnego

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

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

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

Materiały wykładowe (fragmenty)

0-0000, , , itd

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

Przetwarzanie i transmisja danych multimedialnych. Wykład 2 Podstawy kompresji. Przemysław Sękalski.

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

EGZAMIN MATURALNY Z INFORMATYKI 17 MAJA 2016 POZIOM PODSTAWOWY. Godzina rozpoczęcia: 14:00 CZĘŚĆ I WYBRANE: Czas pracy: 75 minut

Kodowanie i kompresja Streszczenie Studia Licencjackie Wykład 11,

Robert Susmaga. Instytut Informatyki ul. Piotrowo 2 Poznań

Kody blokowe Wykład 1, 3 III 2011

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

REPREZENTACJA LICZBY, BŁĘDY, ALGORYTMY W OBLICZENIACH

ARYTMETYKA BINARNA. Dziesiątkowy system pozycyjny nie jest jedynym sposobem kodowania liczb z jakim mamy na co dzień do czynienia.

Wstęp do informatyki- wykład 2

REPREZENTACJA LICZBY, BŁĘDY, ALGORYTMY W OBLICZENIACH

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

W11 Kody nadmiarowe, zastosowania w transmisji danych

Kody blokowe Wykład 2, 10 III 2011

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

Definicje. Algorytm to:

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

Micha Strzelecki Metody przetwarzania i analizy obrazów biomedycznych (2)

Wybrane metody kompresji obrazów

Entropia to wielkość określająca liczbę bitów informacji zawartej w danej wiadomości lub źródle. Spełnia ona trzy naturalne warunki: I(s) jest

ZESPÓŁ LABORATORIÓW TELEMATYKI TRANSPORTU ZAKŁAD TELEKOMUNIKACJI W TRANSPORCIE WYDZIAŁ TRANSPORTU POLITECHNIKI WARSZAWSKIEJ

AKD Metody słownikowe

Matematyka dyskretna

Analiza matematyczna i algebra liniowa Wprowadzenie Ciągi liczbowe

Teoria Informacji i Metody Kompresji Danych

Kompresja danych DKDA (7)

Kodowanie Shannona-Fano

Joint Photographic Experts Group

Algorytmy ewolucyjne NAZEWNICTWO

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

Systemy liczbowe. 1. Przedstawić w postaci sumy wag poszczególnych cyfr liczbę rzeczywistą R = (10).

Języki i metodyka programowania. Reprezentacja danych w systemach komputerowych

Kodowanie informacji. Kody liczbowe

Kodowanie i kompresja Streszczenie Studia dzienne Wykład 12,

prawda symbol WIEDZA DANE komunikat fałsz liczba INFORMACJA (nie tyko w informatyce) kod znak wiadomość ENTROPIA forma przekaz

Wstęp do Informatyki

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

Techniki multimedialne

Algorytmy i struktury danych

O oszczędnym dziennikarzu, czyli czym jest

Podręcznik. Wzór Shannona

2 Kryptografia: algorytmy symetryczne

Materiały wykładowe (fragmenty)

Algorytmy i struktury danych. wykład 8

PRZEWODNIK PO PRZEDMIOCIE

Matematyka dyskretna. Andrzej Łachwa, UJ, /14

WYRAŻENIA ALGEBRAICZNE

Podstawy kompresji danych

Kwantyzacja wektorowa. Kodowanie różnicowe.

Sieci Komputerowe Mechanizmy kontroli błędów w sieciach

Zastosowanie kompresji w kryptografii Piotr Piotrowski

WST P DO TEORII INFORMACJI I KODOWANIA. Grzegorz Szkibiel. Wiosna 2013/14

Sławomir Kulesza. Projektowanie automatów synchronicznych

Kodowanie informacji. Przygotował: Ryszard Kijanka

Logika Matematyczna (1)

Opis przedmiotu. Karta przedmiotu - Podstawy telekomunikacji Katalog ECTS Politechniki Warszawskiej

Teoria przetwarzania A/C i C/A.

Cechy formatu PNG Budowa bloku danych Bloki standardowe PNG Filtrowanie danych przed kompresją Wyświetlanie progresywne (Adam 7)

Obliczenia inspirowane Naturą

Matematyczne Podstawy Informatyki

Przetwarzanie obrazu cyfrowego

urządzenia: awaria układów ochronnych, spowodowanie awarii oprogramowania

Krótka wycieczka do wnętrza komputera

Podstawy Automatyki. Wykład 9 - Podstawy matematyczne automatyki procesów dyskretnych. dr inż. Jakub Możaryn. Instytut Automatyki i Robotyki

Transkrypt:

Teoria Informacji i Metody Kompresji Danych 1

Materiały wykładowe (fragmenty) 2

Robert Susmaga Instytut Informatyki ul. Piotrowo 2 Poznań kontakt mail owy Robert.Susmaga@CS.PUT.Poznan.PL kontakt osobisty Centrum Wykładowe, blok informatyki, pok. 7 3

Wyłączenie odpowiedzialności Prezentowane materiały, będące dodatkiem pomocniczym do wykładów, z konieczności fragmentarycznym i niedopracowanym, należy wykorzystywać z pełną świadomością faktu, że mogą nie być pozbawione przypadkowych błędów, braków, wypaczeń i przeinaczeń :-) Autor

... 5

Bardzo długa dygresja Multimedialny słownik PWN wyrazy obce pleonazm -mu, -mie, lm -my, mrz jęz. «wyrażenie składające się z wyrazów to samo lub prawie to samo znaczących, którego użycie najczęściej oceniane jest jako błąd, np. cofać się w tył, wracać z powrotem; tautologia, tautologizm» pleonastyczny <gr. pleonasmós> 6

Bardzo długa dygresja Wikipedia Pleonazm [...] [...] pełny komplet akwen wodny cofać się do tyłu demokracja ludowa kontynuować dalej okres czasu spadać w dół zabić na śmierć fakt autentyczny w miesiącu maju [...] [...] Celowo zastosowane pleonazmy (niebędące błędami) mogą posłużyć do konstrukcji figur retorycznych (np. najbielszy odcień bieli). https://pl.wikipedia.org/wiki/pleonazm 7

Bardzo długa dygresja Matematyka (np. na PP)... po obustronnym* podzieleniu równania przez x po obustronnym* zlogarytmowaniu równania... * dla wnikliwych: jednostronnie też można podzielić/zlogarytmować/..., ale odradzam! 8

Bardzo długa dygresja Multimedialny słownik PWN wyrazy obce redundancja -cji, ż, blm «cecha komunikatu zawierającego więcej informacji niż jest to niezbędne do przekazania jego treści» redundancyjny <ang. redundance, z p.-łac. redundantia powódź, nadmiar (zwłaszcza wody)> 9

Bardzo długa dygresja Redundancja w (Polskim) Radiu Redundancja zapewnia precyzję. Dlatego w tekstach urzędowych pojawia się wyrażenie "miasto stołeczne Warszawa" - o urokach "świętej Dundzi", jak językoznawcy nazywają redundancję, rozmawiali Agata Hącia i prof. Radosław Pawelec. [...] O zjawisku redundancji mówimy wtedy, gdy komunikat zawiera więcej informacji, niż jest to niezbędne do przekazania jego treści. Przykładami takiej nadmiarowości są wyrażenia: "spadać w dół", "cofnąć się do tyłu" czy "miesiąc lipiec". Posługiwanie się tego typu sformułowaniami z reguły uważane jest za niezręczność językową. Istnieje jednak duża liczba przypadków, w których redundancja odgrywa bardzo ważną i pozytywną rolę. https://www.polskieradio.pl/8/2830/artykul/1106508/

Bardzo długa dygresja Redundancja w Wikipedii Inżynieria W celu zmniejszenia prawdopodobieństwa załamania pracy systemu stosuje się zdublowanie krytycznych elementów systemu. [...] Nadmiarowość danych w bazach danych Bazy danych są zwykle normalizowane, czyli doprowadzane do postaci bez nadmiarowości. Komunikacja Redundancja w komunikacji umożliwia definiowanie nadmiarowych tras komunikacyjnych, które mogą być używane wzajemnie zamiennie [...] https://pl.wikipedia.org/wiki/redundancja

Bardzo długa dygresja Redundancja w Wikipedii Programowanie W programowaniu często można się spotkać z pojęciem nadmiarowego kodu (ang. redundant code). [...] tak zwany kod zombie, który znajduje się w programie, ale nigdy nie jest wykonywany; tak zwany kod zdublowany - zawarty wielokrotnie taki sam fragment kodu, pełniący tę samą funkcję (lub bardzo zbliżony), a dający się zredukować [...]. Język Zarówno mowa jak pismo zawierają nadmiarowe informacje. Człowiek jest dzięki temu w stanie zrozumieć częściowo zniszczone napisy oraz niewyraźną mowę. Dodatkowo nadmiarowość bywa stosowana do podkreślenia znaczenia. Niecelowa nadmiarowość, jak okres czasu czy miesiąc lipiec, jest uważana za niezręczność językową (zobacz też pleonazm, tautologia). https://pl.wikipedia.org/wiki/redundancja

Bardzo długa dygresja Redundancja w Wikipedii Nadmiarowość informacji w teorii informacji W teorii informacji redundancja to ilość informacji przekraczająca wymagane do rozwiązania problemu minimum. Bardziej formalnie liczba bitów w wiadomości minus liczba bitów faktycznej informacji. Celowa redundancja danych jest stosowana w celu ułatwienia odtworzenia danych po ich częściowej utracie czy uszkodzeniu lub też do wykrycia takiego uszkodzenia (CRC, Suma kontrolna). [...] Redundancja ma zastosowanie głównie w przypadku bardzo ważnych, strategicznych dla danego systemu informacji. Szczególnie często mamy do czynienia z redundancją danych w systemach telekomunikacyjnych, gdzie niezawodność przesyłania odgrywa kluczową rolę podczas transmisji. [...] Usuwanie nieprzydatnej redundancji to kompresja danych. Paradoksalnie, wiele programów kompresujących może dodawać niewielkie informacje nadmiarowe, pozwalające wykryć uszkodzenie skompresowanych danych (sumy kontrolne). https://pl.wikipedia.org/wiki/redundancja

... 14

Pojęcia wstępne Multimedialny słownik PWN wyrazy obce kompresja -sji, ż, blm 1. «proces, którego celem jest nadanie czemuś, np. plikowi komputerowemu lub powietrzu w sprężarce, mniejszej wielkości lub objętości» 2. telekom. «przekształcenie sygnału w taki sposób, aby wzmocnienie sygnałów o mniejszej amplitudzie było większe, stosowane w celu zmniejszenia wpływu zakłóceń» <ang. compression, z łac. compressio ściśnięcie > uwaga: operacją odwrotną do kompresji jest dekompresja 15

Pojęcia wstępne Kompresja danych dlaczego (i kiedy) to działa (intuicja) /za chwilę.../ najprostsze (i mniej proste) metody /zasadniczo pomijamy!/ bardziej złożone metody /za dłuższą chwilę.../... poniżej: kompresja jako kodowanie (teoria informacji!

Pojęcia wstępne Kompresja danych intuicja jeżeli w danych odkryjemy taką regularność, której opis zajmuje mniej miejsca niż same dane, to możemy zastąpić te dane opisem regularności that s all, folks! trywialny przykład dane: 123123123123123 regularność: pięciokrotne powtórzenie frazy 123 zapis regularności 5x123 rachunek zysków/strat straty: konieczność de-/kompresowania, nieczytelność wersji pośredniej zyski: l( 123123123123123 ) / l( 5x123 ) = 15/5 = 3-krotne zmniejszenie rozmiaru

Pojęcia wstępne Kompresja danych intuicja jeżeli w danych odkryjemy taką regularność, której opis zajmuje mniej miejsca niż same dane, to możemy zastąpić te dane opisem regularności that s all, folks! w praktyce mechanizmy poszukiwania regularności potrafią być bardzo złożone sposoby zapisu regularności potrafią być bardzo zróżnicowane

... 19

Pojęcia wstępne Idea kanału informacyjnego/transmisyjnego dane: najprostszy przypadek alfabet wejściowy Z alfabet wyjściowy Z ogólniejszy przypadek alfabet wejściowy Z { } (gdzie Z) alfabet wyjściowy Z { } {?} (gdzie Z i? Z)

Pojęcia wstępne Idea kanału informacyjnego/transmisyjnego uwaga na kanały synchroniczne i asynchroniczne!!! kanał informacyjny może być modelowany jako funkcja f: Z Z funkcja f: Z { } Z { } {?} relacja r Z Z relacja r Z { } Z { } {?}... funkcja f: 2 Z 2 Z funkcja f: 2 Z { } 2 Z { } {?} relacja r 2 Z 2 Z relacja r 2 Z { } 2 Z { } {?}...

Pojęcia wstępne Idea kanału informacyjnego/transmisyjnego bezszumowe y = f(x), gdzie f(x) jest bijekcją po odebraniu y możliwe jest więc określenie x = f 1 (y) szumowe y = f(x, ), gdzie jest składnikiem losowym nawet jeżeli f(x, ) jest bijekcją, to po nadaniu x i odebraniu y możliwe jest jedynie określenie p(x i y) dla każdego x i, co w szczególnym przypadku pozwala na określenie x i, co może być: jednoznaczne / niejednoznaczne właściwe / niewłaściwe

Pojęcia wstępne Idea kanału informacyjnego/transmisyjnego J. Chojcan, J. Rutkowski: Zbiór zadań z teorii informacji i kodowania, Wydawnictwo Politechniki Śląskiej, Gliwice 2001

Kanały i kody Kanał transmisyjny wejście dane: T 0 nadawanie środek reprezentacja alternatywna: nad(t 0 ) odbieranie wyjście dane: T 1 = odb(nad(t 0 )) Przykład alfabet Morse a K = {, }

Kanały i kody Kanał transmisyjny wejście dane: T 0 nadawanie środek reprezentacja alternatywna: nad(t 0 ) odbieranie wyjście dane: T 1 = odb(nad(t 0 )) Potencjalne zadania teorii informacji badanie relacji pomiędzy T 0 a T 1 sytuacja idealna: T 0 = T 1 sytuacja zadowalająca: T 0 T 1 sytuacja niezadowalająca: T 0 T 1 przykład: informacja głosowa dla podróżnych nadawana przez obsługę pociągu

Kanały i kody Kanał transmisyjny wejście dane: T 0 nadawanie środek reprezentacja alternatywna: nad(t 0 ) odbieranie wyjście dane: T 1 = odb(nad(t 0 )) Potencjalne zadania teorii informacji badanie relacji pomiędzy T 0 a T 1 ; w praktyce badamy funkcję odb(nad(t)) sugerujemy/proponujemy zmiany argumentu T, np. realizowane jako f(t), w taki sposób, aby minimalizować różnicę pomiędzy odb(nad(f(t))) a f(t) intuicja : jeżeli np. proces nadawania/odbierania często przekręca znak x, ale nie przekręca równie często znaku y, to możemy zapisywać x z użyciem znaku y (np. jako yy ) czyli: sugerujemy kodowanie, które jest adekwatne do warunków transmisji f(t) kod(t) jest funkcją kodującą

Kanały i kody Kanał kodowania wejście dane: T 0 kodowanie środek reprezentacja kodowa: kod(t 0 ) dekodowanie wyjście dane: T 1 = dek(kod(t 0 ))

Kanały i kody Kanał transmisyjny z kodowaniem wejście dane: T 0 kodowanie nadawanie środek reprezentacja alternatywna: nad(kod(t 0 )) odbieranie dekodowanie wyjście dane: T 1 = dek(odb(nad(kod(t 0 )))) sytuacja idealna: T 0 = T 1 (nawet wtedy, gdy T 1 odb(nad(t 0 ))) sytuacja zadowalająca: T 0 T 1 (nawet wtedy, gdy T 1 odb(nad(t 0 )))...

Kanały i kody Różne wersje kodowania przesyłanie: cel uodpornienie na zakłócenia!... szyfrowanie: cel ukrycie treści!... kompresowanie: cel zmniejszenie objętości! praktycznie odwracalna odwracalna w pełni / bezstratna odwracalna w przybliżeniu / stratna (praktycznie nieodwracalna) (funkcje skrótu / funkcje haszujące )

Kanały i kody Kanał kompresowania bezstratnego wejście dane: T 0 kompresowanie środek reprezentacja skompresowana: kbs(t 0 ) dekompresowanie wyjście dane: T 1 = dek(kbs(t 0 )) Potencjalne zadania teorii badanie relacji pomiędzy T 0 a T 1 ; w praktyce sugerujemy/proponujemy funkcje kbs(t), które minimalizują rozmiar kbs(t) przy zachowaniu dek(kbs(t)) = T

Kanały i kody Kanał kompresowania stratnego wejście dane: T 0 kompresowanie środek reprezentacja skompresowana: kst(t 0 ) dekompresowanie wyjście dane: T 1 = dek(kst(t 0 )) Potencjalne zadania teorii badanie relacji pomiędzy T 0 a T 1 ; w praktyce sugerujemy/proponujemy funkcje kst(t), które minimalizują rozmiar kst(t) przy zachowaniu dek(kst(t)) T w praktyce: do porównywania dek(kbs(t)) T stosuje się kolejne, specjalizowane funkcje

Kanały i kody Kompresja stratna a bezstratna w praktyce: bardzo rozbudowane działy (ale stratna: bardziej) największe zainteresowanie: kompresja stratna! dlatego na tym wykładzie: tylko kompresja bezstratna!

... 33

Kody (Pewna) Klasyfikacja kodów wszystkie jednoznaczne dekodowalne» bezprzedrostkowe

Kody Lojalne ostrzeżenie: w branży panuje pewien mętlik przyczyny: wielka liczba rozmaitych klasyfikacji niespójności terminologiczne (synonimy) kody jednoznaczne = kody nieosobliwe kody dekodowalne = kody jednoznacznie dekodowalne kody bezprzecinkowe = kody bezprzedrostkowe = = kody przedrostkowe = kody prefiksowe = = kody natychmiastowe...

Kody Kodowanie (formalnie) dane są alfabet (zbiór) symboli kodowanych A = {a, b, c,...} słownik słów kodowanych (zbiór ciągów symboli z A) S 2 A alfabet (zbiór) symboli kodujących Z = {x, y, z,...} słownik kodów (słów kodowych (zbiór ciągów symboli z Z )) K 2 Z» w bardzo prostym przypadku: K = Z (jednoznakowe słowa kodowe) kodowanie: funkcja f: A K w ogólności: funkcja f: S K

Kody (Pewna) Klasyfikacja kodów jednoznaczne definicja:... dekodowalne definicja:... bezprzedrostkowe definicja:...

Kody Kody binarne Z = {0, 1} ponieważ Z = 2, gdy A > 2 zachodzi konieczność użycia wieloznakowych słów kodowych

Kody Kody (nie)jednoznaczne, (nie)dekodowalne,... (przykłady) A = {a, b, c}, Z = {0, 1} jednoznaczny: nie K 1 : a: 0, b: 0, c: 1 01... = ac/bc? jednoznaczny: tak, ale dekodowalny: nie K 2 : a: 0, b: 1, c: 10 10... = ba/c? dekodowalny: tak, ale bezprzedrostkowy: nie K 3 : a: 0, b: 01, c: 011 01... = b/c?

Kody Pytanie: jak zagwarantować jednoznaczne identyfikowanie słów kodowych w ciągu wyjściowym? Odpowiedź: oddzielać je od siebie wyróżnionym znakiem (przecinkiem, spacją,...), wprowadzonym właśnie w tym celu tzw. kody przecinkowe

Kody Problem (szczególnie bolesny w kontekście kompresji): wydłużenie kodowania (mniejsze lub większe) Tymczasem: kody powinny ( średnio ) być krótkie! oczywiście średnia ta powinna także być odpowiednio rozumiana/zdefiniowana SDK = (1/n) i=1..n l i średnia długość kodowania SWDK = i=1..n w i l i średnia ważona długość kodowania w praktyce: w i = p i (wagi kodów: prawdopodobieństwa ich występowania)

Kody Pytanie: czy istnieją bezprzecinkowe kody gwarantujące jednoznaczne identyfikowanie słów kodowych w ciągu wyjściowym? Odpowiedź: tak! kody bezprzecinkowe = kody bezprzedrostkowe =...

Kody Kody (nie)jednoznaczne, (nie)dekodowalne,... (przykłady) A = {a, b, c}, Z = {0, 1} jednoznaczny: nie K 1 : a: 0, b: 0, c: 1 01... = ac/bc? jednoznaczny: tak, ale dekodowalny: nie K 2 : a: 0, b: 1, c: 10 10... = ba/c? dekodowalny: tak, ale bezprzedrostkowy: nie K 3 : a: 0, b: 01, c: 011 01... = b/c? bezprzedrostkowy: tak (bezprzedrostkowy) K 4 : a: 0, b: 10, c: 11 10 = b

Kody Metody weryfikacji cech kodów jednoznaczności dekodowalności bezprzedrostkowości...

Kody Więcej o zbiorach kodów odpowiedniość zbiorów kodów i drzew dla każdego zbioru K kodów rzędu n nad alfabetem Z istnieje drzewo Z -arne o głębokości n takie, że każdemu elementowi K można przypisać (różny od korzenia) wierzchołek drzewa dla każdego drzewa m-arnego o głębokości n istnieje zbiór K kodów rzędu n nad alfabetem {1, 2,..., m} taki, że każdemu (różnemu od korzenia) wierzchołkowi drzewa można przypisać element K krótko: elementy K siedzą zawsze na (jakichś) drzewach niektóre w liściach, inne w rozwidleniach (ale nigdy w korzeniu!)

Kody 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1

Kody K 1 0 1 a, b c 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1

Kody K 1 0 1 a, b c

Kody K 2 0 1 a b 0 1 0 1 0 1 0 1 0 1 0 1 c 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1

Kody K 2 0 1 a b 0 1 0 1 c

Kody K 2 0 1 a b c 0

Kody K 3 0 1 a 0 1 0 1 b 0 1 0 1 0 1 0 1 c 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1

Kody K 3 0 1 a 0 1 0 1 b 0 1 0 1 0 1 0 1 c

Kody K 3 0 a 1 b 1 c

Kody K 4 0 1 a 0 1 0 1 b c 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1

Kody K 4 0 1 a 0 1 0 1 b c

Kody K 4 0 1 a b 0 1 c

Kody Kody przedrostkowe/bezprzedrostkowe niech x = prefix(y) dla x,y K, x y, oznacza, że x jest przedrostkiem y prefix = przedrostek np. dla y = 0101 0 = prefix(0101), 01 = prefix(0101), 010 = prefix(0101) 1 prefix(0101), 10 prefix(0101), 100 prefix(0101) 11 prefix(0101), 101 prefix(0101) 110 prefix(0101) 111 prefix(0101) zbior K kodów nazywamy przedrostkowym, gdy x,y K,x y x = prefix(y) zbior K kodów nazywamy bezprzedrostkowym, gdy nie jest kodem przedrostkowym

Kody Kody przedrostkowe/bezprzedrostkowe ilustracja drzewowa przedrostkowości: jakiś x siedzi między korzeniem a jakimś y ilustracja drzewowa zbioru kodów bezprzedrostkowych: elementy kodu bezprzedrostkowego siedzą w liściach drzewa

Kody K 4 0 1 a 0 1 0 1 b c 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1

A przy okazji... pamiętacie? Analiza matematyczna a struktury danych szereg geometryczny-(1/2,1/2) a drzewo binarne................................................

Kody Analiza matematyczna a struktury danych szereg geometryczny-(1/2,1/2) a drzewo binarne................................................

Kody K 4 0 1 a 0 1 0 1 b c

Kody K 4 0 1 a 0 1 0 1 b c

Kody Analiza matematyczna a struktury danych szereg geometryczny-(1/2,1/2) a drzewo binarne

Kody a b c

Kody b c a?

Kody a? 0 1 a? 0 1 0 1 a? b c

Kody K 4 0 1 a b 0 1 c

Kody Nierówność Krafta jeżeli K jest kodem bezprzedrostkowym, to x K 2 l(x) 1 gdzie l(x) rozmiar kodu (długość ciągu) x nierówność ta została na bardzo różne sposoby przeanalizowana, skutkując wieloma ważnymi wynikami (twierdzenia Krafta-McMillana) w szczególności: zachodzi twierdzenie odwrotne jeżeli liczby 2 l 1,..., 2 l n spełniają nierówność Krafta, to istnieje kod bezprzedrostkowy o n elementach, których długościami są l 1,..., l n

Kody Nierówność Krafta jeżeli kod bezprzedrostkowy K spełnia x K 2 l(x) = 1 gdzie l(x) rozmiar kodu (długość ciągu) x to jest tzw. kodem optymalnym

Kody 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1

Kody 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 1 0 1 0 1 0 1 0 1

Kody 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1

Kody 0 1 0 1 0 1? 0 1 0 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1

Kody Twierdzenia Krafta-McMillana pozwalają odpowiadać na to pytanie na podstawie skromniejszych danych, tzn. bez drzewa! jedynymi danymi są długości kodów (które to długości próbujemy minimalizować /aby minimalizować SWDK/)

Kody Przed nami: różne algorytmy poszukujące kodów minimalizujących SWDK, czyli... forma kompresji danych!

... 78

Kolejna dygresja... Multimedialny słownik PWN wyrazy obce algorytm -mu, -mie, lm -my, mrz «ściśle określony ciąg czynności, których wykonanie prowadzi do rozwiązania jakiegoś zadania, zwykle zapisywany formalnie, np. w postaci programów komputerowych» <fr. algorithme, zam. algorisme (-rithme wg gr. arithmós liczba, logarytm), hiszp. daw. algorizme, z ar. Al-Huwārizmī, przydomek arabskiego matematyka Muhameda ibn Musa> 79

Kolejna dygresja... (Dla fanów logarytmów) słowa logarytm i algorytm to anagramy! także po angielsku: logarithm, algorithm niemiecku: Logarithmus, Algorithmus... 80

... 81

Pojęcia wstępne Współczynnik kompresji = 1 N y /N x gdzie dla N x > 0: liczba elementów w ciągu źródłowym N y > 0: liczba elementów w ciągu wynikowym N y < N x : > 0 (kompresja pozytywna) N y = N x : = 0 (brak zmian) N y > N x : < 0 (kompresja negatywna)

Pojęcia wstępne Efektywność kodowania H / SWDK 100% H: entropia danych SWDK: średnia ważona długość kodowania

... 84

Algorytmy Algorytm Shannona arytmetyczny Algorytm Shannona-Fano symboliczny (konstruowanie drzewa) Algorytm Huffmana symboliczny (konstruowanie drzewa)

Notacja Notacja para: (element wartość) element: para: (symbol wartość) para: (lista-par wartość)

Algorytm Shannona Opis definicje w i : wagi (w i > 0) p i : P i : dec(p i ): bin(p i ): dec(p i,6): l i : l i = log 2 (p i ) cyfry kodu: procedura...

Algorytm Shannona Przykład dane wejściowe alfabet: (A B C D E) wagi: (0,5 0,4 0,3 0,2 0,1) uwaga: wagi nie stanowią rozkładu prawdopodobieństwa! (nie wpływa to w żaden sposób na działanie tego algorytmu)

Algorytm Shannona Przykład dane operacyjne symbole: A B C D E indeksy: 1 2 3 4 5 w i : 0,5 0,4 0,3 0,2 0,1 p i : 5/15 4/15 3/15 2/15 1/15 P i : 0 5/15 9/15 12/15 14/15 (15/15) przetwarzanie dec(p i ): 0,(0) 0,(3) 0,6(0) 0,8(0) 0,9(3) bin(p i ): 0,(0) 0,(01) 0,(1001) 0,(1100) 0,(1110) dec(p i,6): 0,00000 0,01010 0,10011 0,11001 0,11101 l i : 2 2 3 3 4 cyfry kodu: 0,00000 0,01010 0,10011 0,11001 0,11101 kod: 00 01 100 110 1110

Algorytm Shannona Przykład wynikowe kody A: 00 B: 01 C: 100 D: 110 E: 1110

Algorytm Shannona Przykład analiza entropia danych indeksy: 1 2 3 4 5 p i : 5/15 4/15 3/15 2/15 1/15 log(p i ): ~1.585 ~1.907 ~2.322 ~2.907 ~3.907 p log(p i ): ~0,528 ~0,509 ~0,464 ~0,388 ~0,261 H(p i ) = i=1..n p i log(p i ) = ~2,15 [bit] średnia ważona długości kodu indeksy: 1 2 3 4 5 p i : 5/15 4/15 3/15 2/15 1/15 l i : 2 2 3 3 4 p i l i : 10/15 8/15 9/15 6/15 4/15 SWDK = i=1..n p i l i = 37/15 = ~2,46 [bit] efektywność kodowania E = H(p i ) / SWDK 100% = ~ 2,15/2,46 100% = ~ 87,13%

Algorytm Shannona Uwagi niedeterministyczny

Algorytm Shannona-Fano Opis definicje... procedura...

Algorytm Shannona-Fano Przykład dane wejściowe alfabet: (A B C D E) wagi: (0,5 0,4 0,3 0,2 0,1) uwaga: wagi nie stanowią rozkładu prawdopodobieństwa! (nie wpływa to w żaden sposób na działanie tego algorytmu) dane operacyjne: {(A 0,5) (B 0,4) (C 0,3) (D 0,2) (E 0,1)}:1,5 las początkowy /drzewa zdegenerowane/

Algorytm Shannona-Fano Przykład dane operacyjne {(A 0,5) (B 0,4) (C 0,3) (D 0,2) (E 0,1)}:1,5

Algorytm Shannona-Fano Przykład dane operacyjne {(A 0,5) (B 0,4) (C 0,3) (D 0,2) (E 0,1)}:1,5 przetwarzanie {(A 0,5) (B 0,4) (C 0,3) (D 0,2) (E 0,1)}:1,5

Algorytm Shannona-Fano Przykład dane operacyjne {(A 0,5) (B 0,4) (C 0,3) (D 0,2) (E 0,1)}:1,5 przetwarzanie {(A 0,5) (B 0,4) (C 0,3) (D 0,2) (E 0,1)}:1,5 {}:0,0 / {(A 0,5) (B 0,4) (C 0,3) (D 0,2) (E 0,1)}:1,5 {(A 0,5)}:0,5 / {(B 0,4) (C 0,3) (D 0,2) (E 0,1)}:1,0 {(A 0,5) (B:0,4)}:0,9 / {(C 0,3) (D 0,2) (E 0,1)}:0,6 {(A 0,5) (B 0,4) (C:0,3)}:1,2 / {(D 0,2) (E 0,1)}:0,3 {(A 0,5) (B 0,4) (C 0,3) (D:0,2)}:1,4 / {(E 0,1)}:0,1 {(A 0,5) (B 0,4) (C 0,3) (D 0,2) (E 0,1)}:1,5 / {}:0,0

Algorytm Shannona-Fano Przykład dane operacyjne {(A 0,5) (B 0,4) (C 0,3) (D 0,2) (E 0,1)}:1,5 przetwarzanie {(A 0,5) (B 0,4) (C 0,3) (D 0,2) (E 0,1)}:1,5 {}:0,0 / {(A 0,5) (B 0,4) (C 0,3) (D 0,2) (E 0,1)}:1,5 0,0 1,5 = 1,5 {(A 0,5)}:0,5 / {(B 0,4) (C 0,3) (D 0,2) (E 0,1)}:1,0 0,5 1,0 = 0,5 {(A 0,5) (B:0,4)}:0,9 / {(C 0,3) (D 0,2) (E 0,1)}:0,6 0,9 0,6 = 0,3 {(A 0,5) (B 0,4) (C:0,3)}:1,2 / {(D 0,2) (E 0,1)}:0,3 1,2 0,3 = 0,9 {(A 0,5) (B 0,4) (C 0,3) (D:0,2)}:1,4 / {(E 0,1)}:0,1 1,4 0,1 = 1,3 {(A 0,5) (B 0,4) (C 0,3) (D 0,2) (E 0,1)}:1,5 / {}:0,0 1,5 0,0 = 1,5

Algorytm Shannona-Fano Przykład dane operacyjne {(A 0,5) (B 0,4) (C 0,3) (D 0,2) (E 0,1)}:1,5 przetwarzanie {(A 0,5) (B 0,4) (C 0,3) (D 0,2) (E 0,1)}:1,5 {(A 0,5)}:0,5 / {(B 0,4) (C 0,3) (D 0,2) (E 0,1)}:1,0 0,5 1,0 = 0,5 {(A 0,5) (B:0,4)}:0,9 / {(C 0,3) (D 0,2) (E 0,1)}:0,6 0,9 0,6 = 0,3 {(A 0,5) (B 0,4) (C:0,3)}:1,2 / {(D 0,2) (E 0,1)}:0,3 1,2 0,3 = 0,9 {(A 0,5) (B 0,4) (C 0,3) (D:0,2)}:1,4 / {(E 0,1)}:0,1 1,4 0,1 = 1,3

Algorytm Shannona-Fano Przykład dane operacyjne {(A 0,5) (B 0,4) (C 0,3) (D 0,2) (E 0,1)}:1,5 przetwarzanie {(A 0,5) (B 0,4) (C 0,3) (D 0,2) (E 0,1)}:1,5 {(A 0,5)}:0,5 / {(B 0,4) (C 0,3) (D 0,2) (E 0,1)}:1,0 0,5 1,0 = 0,5 {(A 0,5) (B:0,4)}:0,9 / {(C 0,3) (D 0,2) (E 0,1)}:0,6 0,9 0,6 = 0,3 {(A 0,5) (B 0,4) (C:0,3)}:1,2 / {(D 0,2) (E 0,1)}:0,3 1,2 0,3 = 0,9 {(A 0,5) (B 0,4) (C 0,3) (D:0,2)}:1,4 / {(E 0,1)}:0,1 1,4 0,1 = 1,3

Algorytm Shannona-Fano Przykład dane operacyjne {(A 0,5) (B 0,4) (C 0,3) (D 0,2) (E 0,1)}:1,5 {(A 0,5) (B:0,4)}:0,9 {(C 0,3) (D 0,2) (E 0,1)}:0,6

Algorytm Shannona-Fano Przykład dane operacyjne {(A 0,5) (B 0,4) (C 0,3) (D 0,2) (E 0,1)}:1,5 {(A 0,5) (B:0,4)}:0,9 {(C 0,3) (D 0,2) (E 0,1)}:0,6 przetwarzanie {(A 0,5) (B:0,4)}:0,9

Algorytm Shannona-Fano Przykład dane operacyjne {(A 0,5) (B 0,4) (C 0,3) (D 0,2) (E 0,1)}:1,5 {(A 0,5) (B:0,4)}:0,9 {(C 0,3) (D 0,2) (E 0,1)}:0,6 przetwarzanie {(A 0,5) (B:0,4)}:0,9 {(A 0,5)}:0,5 / {(B:0,4)}:0,4 0,5 0,4 = 0,1

Algorytm Shannona-Fano Przykład dane operacyjne {(A 0,5) (B 0,4) (C 0,3) (D 0,2) (E 0,1)}:1,5 {(A 0,5) (B:0,4)}:0,9 {(C 0,3) (D 0,2) (E 0,1)}:0,6 przetwarzanie {(A 0,5) (B:0,4)}:0,9 {(A 0,5)}:0,5 / {(B:0,4)}:0,4 0,5 0,4 = 0,1

Algorytm Shannona-Fano Przykład dane operacyjne {(A 0,5) (B 0,4) (C 0,3) (D 0,2) (E 0,1)}:1,5 {(A 0,5) (B:0,4)}:0,9» {(A 0,5)}:0,5» {(B:0,4)}:0,4 {(C 0,3) (D 0,2) (E 0,1)}:0,6

Algorytm Shannona-Fano Przykład dane operacyjne {(A 0,5) (B 0,4) (C 0,3) (D 0,2) (E 0,1)}:1,5 {(A 0,5) (B:0,4)}:0,9 przetwarzanie» {(A 0,5)}:0,5» {(B:0,4)}:0,4 {(C 0,3) (D 0,2) (E 0,1)}:0,6 {(C 0,3) (D 0,2) (E 0,1)}:0,6

Algorytm Shannona-Fano Przykład dane operacyjne {(A 0,5) (B 0,4) (C 0,3) (D 0,2) (E 0,1)}:1,5 {(A 0,5) (B:0,4)}:0,9 przetwarzanie» {(A 0,5)}:0,5» {(B:0,4)}:0,4 {(C 0,3) (D 0,2) (E 0,1)}:0,6 {(C 0,3) (D 0,2) (E 0,1)}:0,6 {(C 0,3)}:0,3 / {(D 0,2) (E 0,1)}:0,3 0,3 0,3 = 0,0 {(C 0,3) (D 0,2)}:0,5 / {(E 0,1)}:0,1 0,5 0,1 = 0,4

Algorytm Shannona-Fano Przykład dane operacyjne {(A 0,5) (B 0,4) (C 0,3) (D 0,2) (E 0,1)}:1,5 {(A 0,5) (B:0,4)}:0,9 przetwarzanie» {(A 0,5)}:0,5» {(B:0,4)}:0,4 {(C 0,3) (D 0,2) (E 0,1)}:0,6 {(C 0,3) (D 0,2) (E 0,1)}:0,6 {(C 0,3)}:0,3 / {(D 0,2) (E 0,1)}:0,3 0,3 0,3 = 0,0 {(C 0,3) (D 0,2)}:0,5 / {(E 0,1)}:0,1 0,5 0,1 = 0,4

Algorytm Shannona-Fano Przykład dane operacyjne {(A 0,5) (B 0,4) (C 0,3) (D 0,2) (E 0,1)}:1,5 {(A 0,5) (B:0,4)}:0,9» {(A 0,5)}:0,5» {(B:0,4)}:0,4 {(C 0,3) (D 0,2) (E 0,1)}:0,6» {(C 0,3)}:0,3» {(D 0,2) (E 0,1)}:0,3

Algorytm Shannona-Fano Przykład dane operacyjne {(A 0,5) (B 0,4) (C 0,3) (D 0,2) (E 0,1)}:1,5 {(A 0,5) (B:0,4)}:0,9 przetwarzanie» {(A 0,5)}:0,5» {(B:0,4)}:0,4 {(C 0,3) (D 0,2) (E 0,1)}:0,6» {(C 0,3)}:0,3» {(D 0,2) (E 0,1)}:0,3 {(D 0,2) (E 0,1)}:0,3

Algorytm Shannona-Fano Przykład dane operacyjne {(A 0,5) (B 0,4) (C 0,3) (D 0,2) (E 0,1)}:1,5 {(A 0,5) (B:0,4)}:0,9 przetwarzanie» {(A 0,5)}:0,5» {(B:0,4)}:0,4 {(C 0,3) (D 0,2) (E 0,1)}:0,6» {(C 0,3)}:0,3» {(D 0,2) (E 0,1)}:0,3 {(D 0,2) (E 0,1)}:0,3 {(D 0,2)}:0,2 / {(E 0,1)}:0,1 0,2 0,1 = 0,1

Algorytm Shannona-Fano Przykład dane operacyjne {(A 0,5) (B 0,4) (C 0,3) (D 0,2) (E 0,1)}:1,5 {(A 0,5) (B:0,4)}:0,9 przetwarzanie» {(A 0,5)}:0,5» {(B:0,4)}:0,4 {(C 0,3) (D 0,2) (E 0,1)}:0,6» {(C 0,3)}:0,3» {(D 0,2) (E 0,1)}:0,3 {(D 0,2) (E 0,1)}:0,3 {(D 0,2)}:0,2 / {(E 0,1)}:0,1 0,2 0,1 = 0,1

Algorytm Shannona-Fano Przykład dane operacyjne {(A 0,5) (B 0,4) (C 0,3) (D 0,2) (E 0,1)}:1,5 {(A 0,5) (B:0,4)}:0,9» {(A 0,5)}:0,5» {(B:0,4)}:0,4 {(C 0,3) (D 0,2) (E 0,1)}:0,6» {(C 0,3)}:0,3» {(D 0,2) (E 0,1)}:0,3 {(D 0,2)}:0,2 {(E 0,1)}:0,1

Algorytm Shannona-Fano Przykład dane operacyjne {(A 0,5) (B 0,4) (C 0,3) (D 0,2) (E 0,1)}:1,5 {(A 0,5) (B:0,4)}:0,9 przetwarzanie:» {(A 0,5)}:0,5» {(B:0,4)}:0,4 {(C 0,3) (D 0,2) (E 0,1)}:0,6 koniec!» {(C 0,3)}:0,3» {(D 0,2) (E 0,1)}:0,3 {(D 0,2)}:0,2 {(E 0,1)}:0,1

Algorytm Shannona-Fano Przykład wynikowe drzewo {(A 0,5) (B 0,4) (C 0,3) (D 0,2) (E 0,1)}:1,5 {(A 0,5) (B:0,4)}:0,9» {(A 0,5)}:0,5» {(B:0,4)}:0,4 {(C 0,3) (D 0,2) (E 0,1)}:0,6» {(C 0,3)}:0,3» {(D 0,2) (E 0,1)}:0,3 {(D 0,2)}:0,2 {(E 0,1)}:0,1

Algorytm Shannona-Fano Przykład wynikowe kody? {(A 0,5) (B 0,4) (C 0,3) (D 0,2) (E 0,1)}:1,5 {(A 0,5) (B:0,4)}:0,9» {(A 0,5)}:0,5» {(B:0,4)}:0,4 {(C 0,3) (D 0,2) (E 0,1)}:0,6» {(C 0,3)}:0,3» {(D 0,2) (E 0,1)}:0,3 {(D 0,2)}:0,2 {(E 0,1)}:0,1

Algorytm Shannona-Fano Przykład wynikowe kody? {(A 0,5) (B 0,4) (C 0,3) (D 0,2) (E 0,1)}:1,5 0: {(A 0,5) (B:0,4)}:0,9» 0: {(A 0,5)}:0,5» 1: {(B:0,4)}:0,4 1: {(C 0,3) (D 0,2) (E 0,1)}:0,6» 0: {(C 0,3)}:0,3» 1: {(D 0,2) (E 0,1)}:0,3 0: {(D 0,2)}:0,2 1: {(E 0,1)}:0,1

Algorytm Shannona-Fano Przykład wynikowe kody {(A 0,5) (B 0,4) (C 0,3) (D 0,2) (E 0,1)}:1,5 0: {(A 0,5) (B:0,4)}:0,9» 0: {(A 0,5)}:0,5 A: 00» 1: {(B:0,4)}:0,4 B: 01 1: {(C 0,3) (D 0,2) (E 0,1)}:0,6» 0: {(C 0,3)}:0,3 C: 10» 1: {(D 0,2) (E 0,1)}:0,3 0: {(D 0,2)}:0,2 D: 110 1: {(E 0,1)}:0,1 E: 111

Algorytm Shannona-Fano Przykład wynikowe kody A: 00 B: 01 C: 10 D: 110 E: 111

Algorytm Shannona-Fano Przykład analiza entropia danych indeksy: 1 2 3 4 5 p i : 5/15 4/15 3/15 2/15 1/15 log(p i ): ~1.585 ~1.907 ~2.322 ~2.907 ~3.907 p log(p i ): ~0,528 ~0,509 ~0,464 ~0,388 ~0,261 H(p i ) = i=1..n p i log(p i ) = ~2,15 [bit] średnia ważona długości kodu indeksy: 1 2 3 4 5 p i : 5/15 4/15 3/15 2/15 1/15 l i : 2 2 2 3 3 p i l i : 10/15 8/15 6/15 6/15 3/15 SWDK = i=1..n p i l i = 33/15 = ~2,20 [bit] efektywność kodowania E = H(p i ) / SWDK 100% = ~ 2,15/2,20 100% = ~ 97,73%

Algorytm Shannona-Fano Uwagi niedeterministyczny lepszy od algorytmu Shannona

Algorytm Huffmana Opis definicje... procedura...

Algorytm Huffmana Przykład dane wejściowe alfabet: (A B C D E) wagi: (0,5 0,4 0,3 0,2 0,1) uwaga: wagi nie stanowią rozkładu prawdopodobieństwa! (nie wpływa to w żaden sposób na działanie tego algorytmu) dane operacyjne: {(A 0,5) (B 0,4) (C 0,3) (D 0,2) (E 0,1)} las początkowy /drzewa zdegenerowane/ (dalej: w zapisie kolumnowym, tzn. (A 0,5) (B 0,4) ) (C 0,3) (D 0,2) (E 0,1)

Algorytm Huffmana Przykład dane operacyjne (A 0,5) (B 0,4) (C 0,3) (D 0,2) (E 0,1)

Algorytm Huffmana Przykład dane operacyjne (A 0,5) (B 0,4) (C 0,3) (D 0,2) (E 0,1) przetwarzanie (D 0,2) (E 0,1)

Algorytm Huffmana Przykład dane operacyjne (A 0,5) (B 0,4) (C 0,3) (D 0,2) (E 0,1) przetwarzanie ({(D 0,2) (E 0,1)} 0,3) (D 0,2) (E 0,1)

Algorytm Huffmana Przykład dane operacyjne (A 0,5) (B 0,4) (C 0,3) (D 0,2) (E 0,1) przetwarzanie ({(D 0,2) (E 0,1)} 0,3) (D 0,2) (E 0,1)

Algorytm Huffmana Przykład dane operacyjne (A 0,5) (B 0,4) (C 0,3) ({(D 0,2) (E 0,1)} 0,3) (D 0,2) (E 0,1)

Algorytm Huffmana Przykład dane operacyjne (A 0,5) (B 0,4) (C 0,3) ({(D 0,2) (E 0,1)} 0,3) (D 0,2) (E 0,1) przetwarzanie (C 0,3) ({(D 0,2) (E 0,1)} 0,3) (D 0,2) (E 0,1)

Algorytm Huffmana Przykład dane operacyjne (A 0,5) (B 0,4) (C 0,3) ({(D 0,2) (E 0,1)} 0,3) (D 0,2) (E 0,1) przetwarzanie ({(C 0,3) (D 0,2) (E 0,1)} 0,6) (C 0,3) ({(D 0,2) (E 0,1)} 0,3)» (D 0,2)» (E 0,1)

Algorytm Huffmana Przykład dane operacyjne (A 0,5) (B 0,4) (C 0,3) ({(D 0,2) (E 0,1)} 0,3) (D 0,2) (E 0,1) przetwarzanie ({(C 0,3) (D 0,2) (E 0,1)} 0,6) (C 0,3) ({(D 0,2) (E 0,1)} 0,3)» (D 0,2)» (E 0,1)

Algorytm Huffmana Przykład dane operacyjne ({(C 0,3) (D 0,2) (E 0,1)} 0,6) (C 0,3) ({(D 0,2) (E 0,1)} 0,3) (A 0,5) (B 0,4)» (D 0,2)» (E 0,1)

Algorytm Huffmana Przykład dane operacyjne ({(C 0,3) (D 0,2) (E 0,1)} 0,6) (C 0,3) ({(D 0,2) (E 0,1)} 0,3) (A 0,5) (B 0,4) przetwarzanie (A 0,5) (B 0,4)» (D 0,2)» (E 0,1)

Algorytm Huffmana Przykład dane operacyjne ({(C 0,3) (D 0,2) (E 0,1)} 0,6) (C 0,3) ({(D 0,2) (E 0,1)} 0,3) (A 0,5) (B 0,4) przetwarzanie» (D 0,2)» (E 0,1) ({(A 0,5) (B 0,4)} 0,9) (A 0,5) (B 0,4)

Algorytm Huffmana Przykład dane operacyjne ({(C 0,3) (D 0,2) (E 0,1)} 0,6) (C 0,3) ({(D 0,2) (E 0,1)} 0,3) (A 0,5) (B 0,4) przetwarzanie» (D 0,2)» (E 0,1) ({(A 0,5) (B 0,4)} 0,9) (A 0,5) (B 0,4)

Algorytm Huffmana Przykład dane operacyjne ({(A 0,5) (B 0,4)} 0,9) (A 0,5) (B 0,4) ({(C 0,3) (D 0,2) (E 0,1)} 0,6) (C 0,3) ({(D 0,2) (E 0,1)} 0,3)» (D 0,2)» (E 0,1)

Algorytm Huffmana Przykład dane operacyjne ({(A 0,5) (B 0,4)} 0,9) (A 0,5) (B 0,4) ({(C 0,3) (D 0,2) (E 0,1)} 0,6) (C 0,3) ({(D 0,2) (E 0,1)} 0,3) przetwarzanie» (D 0,2)» (E 0,1) ({(A 0,5) (B 0,4)} 0,9) (A 0,5) (B 0,4) ({(C 0,3) (D 0,2) (E 0,1)} 0,6) (C 0,3) ({(D 0,2) (E 0,1)} 0,3)» (D 0,2)» (E 0,1)

Algorytm Huffmana Przykład dane operacyjne ({(A 0,5) (B 0,4)} 0,9) (A 0,5) (B 0,4) ({(C 0,3) (D 0,2) (E 0,1)} 0,6) (C 0,3) ({(D 0,2) (E 0,1)} 0,3) przetwarzanie» (D 0,2)» (E 0,1) ({(A 0,5) (B 0,4) (D 0,3) (D 0,2) (E 0,1)} 1,5) ({(A 0,5) (B 0,4)} 0,9)» (A 0,5)» (B 0,4) ({(C 0,3) (D 0,2) (E 0,1)} 0,6)» (C 0,3)» ({(D 0,2) (E 0,1)} 0,3) (D 0,2) (E 0,1)

Algorytm Huffmana Przykład dane operacyjne ({(A 0,5) (B 0,4)} 0,9) (A 0,5) (B 0,4) ({(C 0,3) (D 0,2) (E 0,1)} 0,6) (C 0,3) ({(D 0,2) (E 0,1)} 0,3) przetwarzanie» (D 0,2)» (E 0,1) ({(A 0,5) (B 0,4) (D 0,3) (D 0,2) (E 0,1)} 1,5) ({(A 0,5) (B 0,4)} 0,9)» (A 0,5)» (B 0,4) ({(C 0,3) (D 0,2) (E 0,1)} 0,6)» (C 0,3)» ({(D 0,2) (E 0,1)} 0,3) (D 0,2) (E 0,1)

Algorytm Huffmana Przykład dane operacyjne ({(A 0,5) (B 0,4) (D 0,3) (D 0,2) (E 0,1)} 1,5) ({(A 0,5) (B 0,4)} 0,9)» (A 0,5)» (B 0,4) ({(C 0,3) (D 0,2) (E 0,1)} 0,6)» (C 0,3)» ({(D 0,2) (E 0,1)} 0,3) (D 0,2) (E 0,1)

Algorytm Huffmana Przykład dane operacyjne ({(A 0,5) (B 0,4) (D 0,3) (D 0,2) (E 0,1)} 1,5) ({(A 0,5) (B 0,4)} 0,9) przetwarzanie» (A 0,5)» (B 0,4) ({(C 0,3) (D 0,2) (E 0,1)} 0,6) koniec!» (C 0,3)» ({(D 0,2) (E 0,1)} 0,3) (D 0,2) (E 0,1)

Algorytm Huffmana Przykład wynikowe drzewo ({(A 0,5) (B 0,4) (D 0,3) (D 0,2) (E 0,1)} 1,5) ({(A 0,5) (B 0,4)} 0,9)» (A 0,5)» (B 0,4) ({(C 0,3) (D 0,2) (E 0,1)} 0,6)» (C 0,3)» ({(D 0,2) (E 0,1)} 0,3) (D 0,2) (E 0,1)

Algorytm Huffmana Przykład wynikowe kody? ({(A 0,5) (B 0,4) (D 0,3) (D 0,2) (E 0,1)} 1,5) ({(A 0,5) (B 0,4)} 0,9)» (A 0,5)» (B 0,4) ({(C 0,3) (D 0,2) (E 0,1)} 0,6)» (C 0,3)» ({(D 0,2) (E 0,1)} 0,3) (D 0,2) (E 0,1)

Algorytm Huffmana Przykład wynikowe kody? ({(A 0,5) (B 0,4) (D 0,3) (D 0,2) (E 0,1)} 1,5) 0: ({(A 0,5) (B 0,4)} 0,9)» 0: (A 0,5)» 1: (B 0,4) 1: ({(C 0,3) (D 0,2) (E 0,1)} 0,6)» 0: (C 0,3)» 1: ({(D 0,2) (E 0,1)} 0,3) 0: (D 0,2) 1: (E 0,1)

Algorytm Huffmana Przykład wynikowe kody? ({(A 0,5) (B 0,4) (D 0,3) (D 0,2) (E 0,1)} 1,5) 0: ({(A 0,5) (B 0,4)} 0,9)» 0: (A 0,5) A: 00» 1: (B 0,4) B: 01 1: ({(C 0,3) (D 0,2) (E 0,1)} 0,6)» 0: (C 0,3) C: 10» 1: ({(D 0,2) (E 0,1)} 0,3) 0: (D 0,2) D: 110 1: (E 0,1) E: 111

Algorytm Huffmana Przykład wynikowe kody A: 00 B: 01 C: 10 D: 110 E: 111

Algorytm Huffmana Przykład analiza entropia danych indeksy: 1 2 3 4 5 p i : 5/15 4/15 3/15 2/15 1/15 log(p i ): ~1.585 ~1.907 ~2.322 ~2.907 ~3.907 p log(p i ): ~0,528 ~0,509 ~0,464 ~0,388 ~0,261 H(p i ) = i=1..n p i log(p i ) = ~2,15 [bit] średnia ważona długości kodu indeksy: 1 2 3 4 5 p i : 5/15 4/15 3/15 2/15 1/15 l i : 2 2 2 3 3 p i l i : 10/15 8/15 6/15 6/15 3/15 SWDK = i=1..n p i l i = 33/15 = ~2,20 [bit] efektywność kodowania E = H(p i ) / SWDK 100% = ~ 2,15/2,20 100% = ~ 97,73%

Algorytm Huffmana Uwagi niedeterministyczny lepszy od algorytmu Shannona-Fano

Algorytmy Algorytm Shannona-Fano a algorytm Huffmana podobieństwa: konstruowanie drzewa w oparciu o wagi różnice: Shanon-Fano: top-down Huffman: bottom-up

... 150