Kodowanie i entropia

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

Elementy teorii informacji i kodowania

Podstawowe pojęcia. Teoria informacji

Teoria Informacji - wykład. Kodowanie wiadomości

Teoria informacji i kodowania Ćwiczenia

Kompresja bezstratna. Entropia. Kod Huffmana

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

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

Kodowanie i kompresja Streszczenie Studia dzienne Wykład 9,

Temat: Algorytm kompresji plików metodą Huffmana

Kody Tunstalla. Kodowanie arytmetyczne

Nierówność Krafta-McMillana, Kodowanie Huffmana

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

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

Definicja. Jeśli. wtedy

Kodowanie informacji

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

0-0000, , , itd

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

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

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

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

Kompresja Kodowanie arytmetyczne. Dariusz Sobczuk

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

Matematyka dyskretna

Kompresja danych kodowanie Huffmana. Dariusz Sobczuk

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

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

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

Algorytmy kodowania entropijnego

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

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

1. Synteza automatów Moore a i Mealy realizujących zadane przekształcenie 2. Transformacja automatu Moore a w automat Mealy i odwrotnie

Kodowanie i kompresja Streszczenie Studia Licencjackie Wykład 11,

ZADANIE 1. Rozwiązanie:

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

Kwantyzacja wektorowa. Kodowanie różnicowe.

Algorytmy kompresji. Kodowanie Huffmana, kodowanie arytmetyczne

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

Kodowanie informacji. Przygotował: Ryszard Kijanka

Joint Photographic Experts Group

Kodowanie Shannona-Fano

Podstawy kompresji danych

Teoria Informacji i Metody Kompresji Danych

JAO - lematy o pompowaniu dla jezykow bezkontekstowy

Wielokryteriowa optymalizacja liniowa

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

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

Kodowanie i kompresja Streszczenie Studia dzienne Wykład 6

Kody blokowe Wykład 2, 10 III 2011

020 Liczby rzeczywiste

Programowanie liniowe

Symbol, alfabet, łańcuch

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

Notatki z Podstaw kodowania i kryptografii. switch486 WIZ : PWr na podstawie folii z wykładu i ćwiczeń dr inż. E. Kukli Złożone W Systemie L A TEX

Przepustowość kanału, odczytywanie wiadomości z kanału, poprawa wydajności kanału.

Zasada indukcji matematycznej

domykanie relacji, relacja równoważności, rozkłady zbiorów

Arytmetyka komputera

Wykład 2 Zmienne losowe i ich rozkłady

Teoria Informacji i Metody Kompresji Danych

Kody splotowe. Zastosowanie

Entropia w układach dynamicznych Środowiskowe Studia Doktoranckie z Nauk Matematycznych Uniwersytet Jagielloński, Kraków, marzec-kwiecień 2013

A i. i=1. i=1. i=1. i=1. W dalszej części skryptu będziemy mieli najczęściej do czynienia z miarami określonymi na rodzinach, które są σ - algebrami.

Definicja odwzorowania ciągłego i niektóre przykłady

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

Struktury formalne, czyli elementy Teorii Modeli

Wykład z równań różnicowych

RACHUNEK PRAWDOPODOBIEŃSTWA - POJĘCIA WSTĘPNE MATERIAŁY POMOCNICZE - TEORIA

O oszczędnym dziennikarzu, czyli czym jest

19 marzec, Łańcuchy Markowa z czasem dyskretnym. Procesy Stochastyczne, wykład 6, T. Byczkowski, Procesy Stochastyczne, PPT, Matematyka MAP1136

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

LOGIKA I TEORIA ZBIORÓW

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

1 Automaty niedeterministyczne

Algebrą nazywamy strukturę A = (A, {F i : i I }), gdzie A jest zbiorem zwanym uniwersum algebry, zaś F i : A F i

Wprowadzenie do informatyki i użytkowania komputerów. Kodowanie informacji System komputerowy

Grupy. Permutacje 1. (G2) istnieje element jednostkowy (lub neutralny), tzn. taki element e G, że dla dowolnego a G zachodzi.

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

Dane, informacja, programy. Kodowanie danych, kompresja stratna i bezstratna

Wstęp do Informatyki

Drzewa spinające MST dla grafów ważonych Maksymalne drzewo spinające Drzewo Steinera. Wykład 6. Drzewa cz. II

Matematyka dyskretna

Zmienne losowe i ich rozkłady. Momenty zmiennych losowych. Wrocław, 10 października 2014

Część wspólna (przekrój) A B składa się z wszystkich elementów, które należą jednocześnie do zbioru A i do zbioru B:

IX. Rachunek różniczkowy funkcji wielu zmiennych. 1. Funkcja dwóch i trzech zmiennych - pojęcia podstawowe. - funkcja dwóch zmiennych,

Teoria liczb. Magdalena Lemańska. Magdalena Lemańska,

1 Zbiory. 1.1 Kiedy {a} = {b, c}? (tzn. podać warunki na a, b i c) 1.2 Udowodnić, że A {A} A =.

Kompresja danych DKDA (7)

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

1 WPROWADZENIE 1. Agata Pilitowska. parzysta. 3. Znaleźć odległość kodu kontroli parzystości nad ciałem GF (q).

VIII. Zastosowanie rachunku różniczkowego do badania funkcji. 1. Twierdzenia o wartości średniej. Monotoniczność funkcji.

Liczby zespolone. x + 2 = 0.

Laboratorium ochrony danych

10110 =

Dlaczego nie wystarczają liczby wymierne

Techniki multimedialne

Przykładami ciągów, które Czytelnik dobrze zna (a jeśli nie, to niniejszym poznaje), jest ciąg arytmetyczny:

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

Transkrypt:

Kodowanie i entropia Marek Śmieja Teoria informacji 1 / 34

Kod S - alfabet źródłowy mocy m (np. litery, cyfry, znaki interpunkcyjne), A = {a 1,..., a n } - alfabet kodowy (symbole), Chcemy przesłać tekst napisany w alfabecie źródłowym, ale nasz kanał informacyjny pozwala tylko na przesłanie symboli z A, Chcemy każdy element z S wyrazić za pomocą słów z A (niepuste słowa skończonej długości) Funkcja kodująca Funkcją kodującą (kodowaniem) nazywamy dowolną funkcję φ : S A. 2 / 34

Cele Kodowanie może mieć różne cele: Zmniejszenie objętości danych kompresja Zapewnienie odporności na błędy kody korekcyjne Zapewnienie poufności danych kryptografia 3 / 34

Kompresja Kompresja bezstratna z postaci skompresowanej można (zawsze) odtworzyć postać danych identyczną z oryginałem. Kompresja stratna z postaci skompresowanej nie zawsze można otrzymać oryginalną postać lepszy współczynnik kompresji drobne różnice niezauważalne dla niektórych zmysłów (wysokie częstotliwości próbkowanie, sąsiednie piksele obrazka) może być niebezpieczne dla pewnych zastosowań np. medycznych 4 / 34

Kodowanie nieosobliwe Przykład: S = {a, b, c, d}, A = {0, 1}, φ : S A φ(a) = 1, φ(b) = 10, φ(c) = 01, φ(d) = 1. Funkcja - każdy symbol z S musi mieć zdefiniowany kod, Nie jest iniekcją - kody różnych symboli nie muszą być różnie (jak dekodować?), Kodowanie nieosobliwe Kodowanie jest nieosobliwe jeśli funkcja kodująca jest iniekcją: φ(s 1 ) φ(s 2 ), jeśli s 1 s 2. 5 / 34

Kodowanie nieosobliwe jednoznacznie dekodowalne S = {a, b, c}, A = {0, 1}, φ : S A φ(a) = 1, φ(b) = 0, φ(c) = 10, Jest nieosobliwe Jak odkodować: 1101? aaba czy może aca? Iniektywna funkcja jest odwracalna, ale nie zapewnia to jednoznaczności dekodowania! 6 / 34

Kod Morse a Kod jednoznacznie dekodowalny - był powszechnie używany w telekomunikacji radiowej, obecnie używany przez radioamatorów S - litery alfabetu angielskiego A = {, }, gdzie - krótki sygnał, - - długi sygnał Kody to ciągi złożone z długich i krótkich sygnałów Dekodowanie: krótki odstęp czasowy pomiędzy literami, a dłuższy między wyrazami Jest to symbol specjalny rozdzielający kody. Czyli tak naprawdę A jest 4-elementowy a nie dwu. Nieefektywne, zobaczymy jak sprytniej zapewnić jednoznaczną dekodowalność:) 7 / 34

Kody stałej długości Każdy symbol ma kod tej samej długości l Przykład: ASCII Dekodowanie: czytamy porcję l symboli, patrzymy w słownik i odkodowujemy 8 / 34

Jednoznaczna dekodowalność Rozszerzenie kodu Rozszerzeniem kodu nazywamy odwzorowanie φ : S A dane wzorem: φ(s 1 s 2... s k ) := φ(s 1 )φ(s 2 )... φ(s k ) Jednoznaczna dekodowalność Kod jest jednoznacznie dekodowalny jeśli jego rozszerzenie jest nieosobliwe Innymi słowy, kod jest jednoznacznie dekodowalny jeśli istnieje tylko jeden możliwy ciąg liter produkujący go. Ćwiecznie: Jak przeprowadzić test na jednoznaczną dekodowalność? 9 / 34

Kod prefiksowy Kod Morse a jest jednoznacznie dekodowalny dzięki wykorzystaniu symboli specjalnych rozdzielających kody. Inny sposób polega na takiej konstrukcji kodu, aby jednoznaczność byłą zapewniona bez użycia separatorów. Kod przedrostkowy Kod nazywamy przedrostkowym (prefiksowym) jeśli żadne ze słów kodujących nie jest przedrostkiem innego. Jest jednoznacznie dekodowalny. 10 / 34

Przykład S = {a, b, c}, A = {0, 1}, φ : S A φ(a) = 1, φ(b) = 01, φ(c) = 00, Jak odkodować: 001011 0 - nie jest kodem 00 - c (ponadto żaden inny symbol nie ma kodu rozpoczynającego się od 00 ) 1 - a 0 - nie jest kodem 01 - b 1 - a 11 / 34

Podsumowanie Rysunek: Zależność pomiędzy kodowaniami (źródło: Cover and Thomas) Ćwiczenie: podać kodowania każdego z tych rodzajów 12 / 34

Transformacje danych Weźmy ciąg: 9, 11, 11, 11, 14, 13, 15, 17, 16, 17, 20, 21 Mamy 9 symboli. Do zapisu jednego potrzebujemy 4 = log 2 9 bitów Użyjmy następującej transformacji: Wówczas ˆx n ma postać: ˆx n = n + 8, e n = x n ˆx n 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20 My kodujmy błędy e n, czyli ciąg: 0, 1, 0, 1, 1, 1, 0, 1, 1 1, 1, 1 Potrzebujemy teraz tylko 2 bity na liczbę Dlaczego? Dane spełniają w przybliżeniu pewną regułę 13 / 34

Transformacje danych Weźmy ciąg: 27, 28, 29, 28, 26, 27, 29, 28, 30, 32, 34, 36, 38 Do zapamiętania go potrzebujemy 4 bity na każdą liczbę Każda wartość w ciągu jest bliska poprzedniej. Użyjmy następującej transformacji: e n = x n x n 1, e 1 = x 1 Wówczas e n ma postać: 27, 1, 1, 1, 2, 1, 2, 1, 2, 2, 2, 2, 2 Teraz ciąg jest prostszy do zakodowania 14 / 34

Kod o zadanej długości Pytanie: Mamy dany alfabet i chcemy zrealizować kod jednoznacznie dekodowalny o zadanych długościach. Kiedy nam się to uda? Nierówność Krafta Alfabet źródłowy S o m elementach da się zakodować słowami prefiksowymi z alfabetu kodowego A o n elementach o długościach l 1,..., l m jeśli m n l i 1. i=1 Odwrotnie, jeśli liczby l 1,..., l m spełniają nierówność Krafta, to istnieje kod prefiksowy o tych długościach. My będziemy prawie zawsze przyjmować n = 2 dla prostoty, chociaż da się robić ogólniej. 15 / 34

Przykład 0 1 00 01 10 11 000 001 010 011 100 101 110 111 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111 - Nierówność Krafta- ok - Dekodowalność - ok - Prefiksowy - ok 16 / 34

Przykład 0 1 00 01 10 11 000 001 010 011 100 101 110 111 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111 - Nierówność Krafta- nie - Dekodowalność - nie - Prefiksowy - nie 17 / 34

Przykład 0 1 00 01 10 11 000 001 010 011 100 101 110 111 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111 - Nierówność Krafta- tak - Dekodowalność - tak - Prefiksowy - tak 18 / 34

Przykład 0 1 00 01 10 11 000 001 010 011 100 101 110 111 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111 - Nierówność Krafta- ok - Dekodowalność - ok - Prefiksowy - ok 19 / 34

Przykład 0 1 00 01 10 11 000 001 010 011 100 101 110 111 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111 - Nierówność Krafta- ok - Dekodowalność - ok - Prefiksowy - nie, ale skoro nierówność zachodzi to można znaleźć inny kod prefiksowy o tych długościach 20 / 34

Przykład 0 1 00 01 10 11 000 001 010 011 100 101 110 111 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111 - Nierówność Krafta- ok - Dekodowalność - nie - Prefiksowy - nie, ale można znaleźć jakiś prefiksowy o tych długościach 21 / 34

Dowód 1 Zakładamy, że mamy kody prefiksowe o długościach l 1,..., l m. Pokażemy, że zachodzi nierówność Krafta. Kod prefiksowy można reprezentować jako ścieżki do liści w drzewie (0-w lewo, 1 w prawo dla sytuacji binarnej). Węzły wewnętrzne nie są kodami (rysunek) Najdłuższy kod ma długość l max i leży na poziomie l max w drzewie. Kod leżący na poziomie l i ma n lmax l i potomków na poziomie l max. Jako, że mamy drzewo to zbiory potomków dla węzłów na tym samym poziomie są rozłączne. Łączna ilość potomków na poziomie l max nie może być większa niż maksymalna ilość węzłów na tym poziomie czyli n lmax. Stąd: n l max l i n lmax co daje n l i 1 22 / 34

Dowód 2 Odwrotnie zakładamy, że mamy dane długości kodów spełniających nierówność Krafta. Mamy pokazać, że istnieje kod prefiksowy o tych długościach. Konstruujemy pełne drzewo binarne. Zakładamy, że l 1 l 2... l n = l max Dla kolejnych długości tworzymy kody biorąc kolejne ścieżki w drzewie (od lewej - rysunek) - daję to kod prefiksowy. Dla każdego kodu usuwamy potomków odpowiadającego węzła, tak aby kod był w liściu. Ilość usuniętych potomków to: n lmax l1,..., n lmax ln. Zliczamy usunięte liście w drzewie: i nlmax l i n lmax Zatem liści nam nie zabraknie o ile spełniona będzie nierówność Krafta Jako że założyliśmy jej prawdziwość, to procedura jest wykonalna 23 / 34

Przykład konstrukcji Mamy dane długości 1, 2, 3, 3. Można sprawdzić, że spełniają nierówność Krafta. Chodzimy po drzewie od lewej i tworzymy kody (od najkrótszego do najdłuższego) 24 / 34

Rozszerzenie Ćwiczenie: Nierówność Krafta można pokazać w przypadku kodów jednoznacznie dekodowalnych (twierdzenie McMillan). Czyli kody jednoznacznie dekodowalne mają analogiczne ograniczenia jak i prefiksowe. Dlatego zawężamy się w naszych rozważaniach do kodów prefiksowych. 25 / 34

Pytanie: a co jeśli nierówność Krafta jest spełniona silnie, tzn. n l i < 1 Jeśli prawdopodobieństwa symboli p i spełniają n l i = p i, to wówczas możemy osiągnąć równość. W przeciwnym razie niekoniecznie (będzie wynikało z końcowego twierdzenia). 26 / 34

Przykład 0 1 00 01 10 11 000 001 010 011 100 101 110 111 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111 2 2 + 3 2 3 + 4 2 4 = 14 16 < 1 27 / 34

Przykład 0 1 00 01 10 11 000 001 010 011 100 101 110 111 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111 Optymalny kod (dostajemy 1 w nierówności Krafta) 28 / 34

Długość kodu Załóżmy, że symbole z S generowane są z określonymi prawdopodobieństwami p i = p(s i ) Ponadto, zakładamy brak pamięci, czyli że generowany symbol nie zależy od żadnego z poprzednich Chcielibyśmy stworzyć kod, który jest możliwie krótki (efektywny) Interesująca nas długość to statystyczna długość słowa: L(l 1,..., l n ) = E(length(φ)) := i p i l i, gdzie l i = length(s i ) 29 / 34

Przykład S = {a, b, c}, A = {0, 1}, P = {1/2, 1/4, 1/4} φ 1 (a) = 0, φ 1 (b) = 10, φ 1 (c) = 11 L(φ 1 ) = 1 2 1 + 1 4 2 + 1 4 2 = 1 1 2 (optymalne) φ 2 (a) = 10, φ 2 (b) = 0, φ 2 (c) = 11 L(φ 2 ) = 1 2 2 + 1 4 1 + 1 4 2 = 1 3 4 Wniosek: częste symbole powinny być kodowane krótkimi kodami. 30 / 34

Cel Jak dobrać l i, aby zminimalizować wartość oczekiwaną długości słowa? Nierówność Krafta daje nam dopuszczalne zakresy l i. Mamy problem minimalizacji przy zadanym warunku. Problem minimalizacyjny Znaleźć minimum L(l 1,..., l n ) := i p i l i przy warunku n l i 1 i 31 / 34

Minimalizajca zakładamy, że l i > 0 rzeczywiste minimalizujemy na brzegu tj. i n l i = 1 wykorzystujemy metodę współczynników Lagrange a: J(l 1,..., l n ) = p i l i λ( i n l i 1) Szukamy minimum: J = p i λn l i ln(n) = 0 l i Dostajemy: n l i = p i λln(n) Wrzucamy to do warunku na λ: n l i = 1 λln(n) = 1 i Wyliczamy λ i wracamy do poprzedniego co daje: n l i = p i, czyli l i = log n p i 32 / 34

Uwagi Dopuściliśmy długości l i niecałkowite. W praktyce, długości są całkowite. Definiujemy całkowite długości l i = log n p i Kod o takich długościach to kodowanie Shannona. Z twierdzenia wynikja, że optymalny kod ma średnią długość nie mniejszą niż wartość i p i( log p i ). Jeśli p i = n k i dla pewnego k, to wówczas log n p i = k i log n n = k i = log n n k i = log n p i i osiągamy minimum 33 / 34

Entropia Kluczowa dla nas sytuacja to kodowanie binarne A = {0, 1}, choć można definiować to dla dowolnego A. Definicja Entropia określa minimalną statystyczną długość kodowania. Niech X = {x 1,..., x n } będzie dyskretną przestrzenią probabilistyczną, gdzie p i = p(x i ) jest prawdopodobieństwem otrzymania x i. Wtedy entropia X (rozkładu p 1,..., p n na X ) wyraża się wzorem: h(x ) = h(p 1,..., p n ) = i p i ( log 2 p i ). Będziemy pisać zamiennie h(zbiór) = h(rozkład pr.) = h(zmienna los) 34 / 34