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

Podobne dokumenty
Kompresja Kodowanie arytmetyczne. Dariusz Sobczuk

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

Definicja. Jeśli. wtedy

Kompresja danych kodowanie Huffmana. Dariusz Sobczuk

Elementy teorii informacji i kodowania

Kodowanie i entropia

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

Temat: Algorytm kompresji plików metodą Huffmana

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

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

Kodowanie i kompresja Streszczenie Studia dzienne Wykład 9,

Kompresja bezstratna. Entropia. Kod Huffmana

Podstawowe pojęcia. Teoria informacji

Teoria Informacji - wykład. Kodowanie wiadomości

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

Teoria informacji i kodowania Ćwiczenia

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

Kodowanie informacji

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

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

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

Algorytmy kodowania entropijnego

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

Kody Tunstalla. Kodowanie arytmetyczne

Nierówność Krafta-McMillana, Kodowanie Huffmana

Podstawy kompresji danych

1.1. Pozycyjne systemy liczbowe

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

Podstawowe operacje arytmetyczne i logiczne dla liczb binarnych

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

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

Metody numeryczne Technika obliczeniowa i symulacyjna Sem. 2, EiT, 2014/2015

Technologie Informacyjne

Algorytmy kompresji. Kodowanie Huffmana, kodowanie arytmetyczne

Kodowanie informacji. Przygotował: Ryszard Kijanka

Teoria Informacji i Metody Kompresji Danych

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

ZADANIE 1. Rozwiązanie:

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

Kodowanie predykcyjne

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

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

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

Kodowanie i kompresja Streszczenie Studia Licencjackie Wykład 11,

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

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

Wstęp do Informatyki

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

dr inż. Jacek Naruniec

Statystyka i eksploracja danych

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

Dla człowieka naturalnym sposobem liczenia jest korzystanie z systemu dziesiętnego, dla komputera natomiast korzystanie z zapisu dwójkowego

Kwantyzacja wektorowa. Kodowanie różnicowe.

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

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

Spacery losowe generowanie realizacji procesu losowego

12. Wprowadzenie Sygnały techniki cyfrowej Systemy liczbowe. Matematyka: Elektronika:

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

Ćwiczenie nr 4: Kodowanie arytmetyczne, range coder

Algorytmy i złożoności Wykład 5. Haszowanie (hashowanie, mieszanie)

Techniki multimedialne

Stan wysoki (H) i stan niski (L)

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

Wstęp do programowania. Reprezentacje liczb. Liczby naturalne, całkowite i rzeczywiste w układzie binarnym

Matematyka dyskretna

Kompresja danych DKDA (7)

0-0000, , , itd

Kodowanie informacji. Kody liczbowe

Wykład I: Kodowanie liczb w systemach binarnych. Studia Podyplomowe INFORMATYKA Podstawy Informatyki

PODSTAWY INFORMATYKI. Informatyka? - definicja

Metody numeryczne I. Janusz Szwabiński. Metody numeryczne I (C) 2004 Janusz Szwabiński p.1/61

Algorytmy i struktury danych

Wprowadzenie do informatyki - ć wiczenia

Kodowanie Shannona-Fano

MODELOWANIE RZECZYWISTOŚCI

Pracownia Komputerowa wyk ad VII

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

Podstawy Informatyki. Inżynieria Ciepła, I rok. Wykład 5 Liczby w komputerze

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

Arytmetyka komputera

Wielkości liczbowe. Wykład z Podstaw Informatyki dla I roku BO. Piotr Mika

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

Systemy liczenia. 333= 3*100+3*10+3*1

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

Kodowanie i kompresja Streszczenie Studia dzienne Wykład 6

Arytmetyka liczb binarnych

Wstęp do sieci neuronowych, wykład 11 Łańcuchy Markova

Wielkości liczbowe. Wykład z Podstaw Informatyki. Piotr Mika

Maksymalne powtórzenia w tekstach i zerowa intensywność entropii

Zestaw 3. - Zapis liczb binarnych ze znakiem 1

Elementy modelowania matematycznego

Wprowadzenie. Algorytmy kompresji danych. Sebastian Deorowicz. Politechnika Śląska. Sebastian Deorowicz (PŚl) Wprowadzenie / 60

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

Podstawy Informatyki

Teoretyczne Podstawy Informatyki

Pracownia Komputerowa wykład VI

Wstęp do Techniki Cyfrowej... Teoria automatów

Optymalizacja ciągła

SCHEMAT ROZWIĄZANIA ZADANIA OPTYMALIZACJI PRZY POMOCY ALGORYTMU GENETYCZNEGO

Transkrypt:

Algorytmy kompresji danych 2007 02 27

Plan wykładu 1 Modelowanie i kodowanie 2

Modelowanie i kodowanie Plan wykładu 1 Modelowanie i kodowanie 2

Modelowanie i kodowanie definicja stowarzyszona ze zbiorem m niezależnych zdarzeń A = {a 1,..., a m } i ze zbiorem prawdopodobieństw ich zajścia P = {p(a 1 ),..., p(a m )} jest definiowana jako: Intuicja H(A) = m m p(a i )I (a i ) = p(a i ) log p(a i ) i=1 Innymi słowy entropia jest to średnia autoinformacja związana z eksperymentem losowym polegającym na wygenerowaniu symbolu przy założonych prawdopodobieństwach wygenerowania symboli z alfabetu i=1

Modelowanie i kodowanie definicja stowarzyszona ze zbiorem m niezależnych zdarzeń A = {a 1,..., a m } i ze zbiorem prawdopodobieństw ich zajścia P = {p(a 1 ),..., p(a m )} jest definiowana jako: Intuicja H(A) = m m p(a i )I (a i ) = p(a i ) log p(a i ) i=1 Innymi słowy entropia jest to średnia autoinformacja związana z eksperymentem losowym polegającym na wygenerowaniu symbolu przy założonych prawdopodobieństwach wygenerowania symboli z alfabetu i=1

Modelowanie i kodowanie eksperymentu 1 Eksperyment Generowanie przez źródło symboli a i ze zbioru A eksperymentu wyrażona w bitach jest miarą określającą średnią liczbę symboli binarnych potrzebnych do zakodowania ciągu utworzonego z symboli kolejno wygenerowanych przez źródło Wynik Shannona Najlepszym wynikiem jaki można uzyskać stosując kompresję bezstratną jest zakodowanie sekwencji symboli tak, aby średnia liczba bitów przypadająca na symbol była równa entropii źródła 1 w wykładzie na podstawie K. Sayood, Kompresja danych. Wprowadzenie i A. Drozdek, Wprowadzenie do kompresji danych

Modelowanie i kodowanie eksperymentu 1 Eksperyment Generowanie przez źródło symboli a i ze zbioru A eksperymentu wyrażona w bitach jest miarą określającą średnią liczbę symboli binarnych potrzebnych do zakodowania ciągu utworzonego z symboli kolejno wygenerowanych przez źródło Wynik Shannona Najlepszym wynikiem jaki można uzyskać stosując kompresję bezstratną jest zakodowanie sekwencji symboli tak, aby średnia liczba bitów przypadająca na symbol była równa entropii źródła 1 w wykładzie na podstawie K. Sayood, Kompresja danych. Wprowadzenie i A. Drozdek, Wprowadzenie do kompresji danych

Modelowanie i kodowanie eksperymentu 1 Eksperyment Generowanie przez źródło symboli a i ze zbioru A eksperymentu wyrażona w bitach jest miarą określającą średnią liczbę symboli binarnych potrzebnych do zakodowania ciągu utworzonego z symboli kolejno wygenerowanych przez źródło Wynik Shannona Najlepszym wynikiem jaki można uzyskać stosując kompresję bezstratną jest zakodowanie sekwencji symboli tak, aby średnia liczba bitów przypadająca na symbol była równa entropii źródła 1 w wykładzie na podstawie K. Sayood, Kompresja danych. Wprowadzenie i A. Drozdek, Wprowadzenie do kompresji danych

Modelowanie i kodowanie źródła definicja źródła S generującego ciąg symboli x 1, x 2,..., x n należących do alfabetu A = {1, 2,..., m} wynosi: gdzie 1 H(S) = lim n n G n, m m m G n = P(x 1 = i 1, x 2 = i 2,..., x n = i n ) i 1 =1 i 2 =1 i n=1 log P(x 1 = i 1, x 2 = i 2,... x n = i n )

Modelowanie i kodowanie źródła szczególne przypadki Rozkład identyczny i niezależny Jeśli wszystkie elementy sekwencji mają rozkład identyczny i niezależny, to: G n = n m P(x 1 = i 1 ) log P(x 1 = i 1 ) i 1 =1 Mamy wtedy tzw. entropię pierwszego rzędu źródła: H(S) = m P(x 1 = i 1 ) log P(x 1 = i 1 ) i 1 =1

Modelowanie i kodowanie źródła co o niej wiemy? Dla większości źródeł rozkład symboli nie jest identyczny i niezależny entropia pierwszego rzędu nie jest więc dobrą miarą entropii źródła W rzeczywistości entropia fizycznego źródła nie jest znana

Modelowanie i kodowanie źródła co o niej wiemy? Dla większości źródeł rozkład symboli nie jest identyczny i niezależny entropia pierwszego rzędu nie jest więc dobrą miarą entropii źródła W rzeczywistości entropia fizycznego źródła nie jest znana

Modelowanie i kodowanie źródła przykład Sekwencja 1, 1, 2, 3, 4, 5, 6, 5, 6, 7, 8, 8, 9, 8, 9, 10 pierwszego rzędu p(1) = p(5) = p(6) = p(9) = 2/16 p(2) = p(3) = p(4) = p(7) = p(10) = 1/16 p(8) = 3/16 H = 10 i=1 p(i) log p(i) = 3, 20 bit

Modelowanie i kodowanie źródła przykład Sekwencja 1, 1, 2, 3, 4, 5, 6, 5, 6, 7, 8, 8, 9, 8, 9, 10 pierwszego rzędu p(1) = p(5) = p(6) = p(9) = 2/16 p(2) = p(3) = p(4) = p(7) = p(10) = 1/16 p(8) = 3/16 H = 10 i=1 p(i) log p(i) = 3, 20 bit

Modelowanie i kodowanie źródła przykład Założenie Pomiędzy symboli istnieje korelacja Usuwanie korelacji Zastępujemy wartość symboli różnicą pomiędzy nimi: 1, 1, 2, 3, 4, 5, 6, 5, 6, 7, 8, 8, 9, 8, 9, 10 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1

Modelowanie i kodowanie źródła przykład Założenie Pomiędzy symboli istnieje korelacja Usuwanie korelacji Zastępujemy wartość symboli różnicą pomiędzy nimi: 1, 1, 2, 3, 4, 5, 6, 5, 6, 7, 8, 8, 9, 8, 9, 10 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1

Modelowanie i kodowanie źródła przykład po usunięciu korelacji p( 1) = 2/16 p(0) = 2/16 p(1) = 12/16 1 H = p(i) log p(i) = 1, 06 bit i= 1

Modelowanie i kodowanie Czym jest model? Modelem ciągu nazywamy założenia dotyczące korelacji pomiędzy kolejnymi symbolami

Modelowanie i kodowanie Plan wykładu 1 Modelowanie i kodowanie 2

Modelowanie i kodowanie Współczesny paradygmat kompresji: modelowanie kodowanie Modelowanie Uaktualnienie modelu Modelowanie Uaktualnienie modelu Sekwencja wejściowa Sekwencja skompresowana Dekodowanie Sekwencja wyjściowa

Modelowanie i kodowanie Modelowanie i kodowanie Modelowanie Pierwszy etap kompresji Wydobywanie informacji o redundancji występującej w danych i opisywanie jej za pomocą modelu Drugi etap kompresji opisu modelu oraz informacji o tym jak dane odbiegają od niego

Modelowanie i kodowanie Modelowanie i kodowanie Modelowanie Pierwszy etap kompresji Wydobywanie informacji o redundancji występującej w danych i opisywanie jej za pomocą modelu Drugi etap kompresji opisu modelu oraz informacji o tym jak dane odbiegają od niego

Modelowanie i kodowanie Modelowanie Analiza danych pod kątem wyszukania informacji nadmiarowej (redundantnej) Istnieje wiele metod modelowania danych Modelowanie oparte jest zawsze na jakimś założonym wcześniej modelu źródła, które wygenerowało dane

Modelowanie i kodowanie Modele źródła danych Modele fizyczne np. modele powstawania mowy użyteczne w kompresji próbek mowy Modele probabilistyczne Modele Markowa oparte na założeniu, że prawdopodobieństwo wygenerowania symbolu zależy od symboli, które wystąpiły poprzednio Modele drzew kontekstu uogólnienie modelu Markowa

Modelowanie i kodowanie Model niewiedzy Założenie Nic nie wiemy o źródle i zakładamy, że każdy symbol jest generowany z jednakowym prawdopodobieństwem Ile jest wart ten model? Niewiele, bo nie pozwala on na uzyskanie jakiejkolwiek kompresji, tym niemniej może się tak zdarzyć, że opisuje on źródło dokładnie

Modelowanie i kodowanie Model niewiedzy Założenie Nic nie wiemy o źródle i zakładamy, że każdy symbol jest generowany z jednakowym prawdopodobieństwem Ile jest wart ten model? Niewiele, bo nie pozwala on na uzyskanie jakiejkolwiek kompresji, tym niemniej może się tak zdarzyć, że opisuje on źródło dokładnie

Modelowanie i kodowanie Model probabilistyczny Założenia Dla każdego symbolu znamy prawdopodobieństwo jego występowania Zakładamy przy tym, że to prawdopodobieństwo nie zależy w żaden sposób od poprzednio wygenerowanych symboli Ile jest wart ten model? Jeśli prawdopodobieństwa wygenerowanie symboli są niezależne, to model jest bardzo dobry i pozwala na konstrukcję całkiem wydajnych kodów

Modelowanie i kodowanie Model probabilistyczny Założenia Dla każdego symbolu znamy prawdopodobieństwo jego występowania Zakładamy przy tym, że to prawdopodobieństwo nie zależy w żaden sposób od poprzednio wygenerowanych symboli Ile jest wart ten model? Jeśli prawdopodobieństwa wygenerowanie symboli są niezależne, to model jest bardzo dobry i pozwala na konstrukcję całkiem wydajnych kodów

Modelowanie i kodowanie Dyskretny łańcuch Markowa Ciąg {x n } nazywamy dyskretnym łańcuchem Markowa rzędu k jeśli: P(x n x n 1,..., x n k ) = P(x n x n 1,..., x n k,...) Intuicja Wiedza o ostatnich k symbolach jest równoważna wiedzy o całej historii procesu

Modelowanie i kodowanie Dyskretny łańcuch Markowa Ciąg {x n } nazywamy dyskretnym łańcuchem Markowa rzędu k jeśli: P(x n x n 1,..., x n k ) = P(x n x n 1,..., x n k,...) Intuicja Wiedza o ostatnich k symbolach jest równoważna wiedzy o całej historii procesu

Modelowanie i kodowanie Model Markowa Wartości przyjmowane przez ciąg x n 1,..., x n k są nazywane stanami procesu Liczba stanów Dla alfabetu rozmiaru m liczba stanów wynosi m k Najczęstszy model Model Markowa pierwszego rzędu: P(x n x n 1 ) = P(x n x n 1, x n 2,...)

Modelowanie i kodowanie Model Markowa Wartości przyjmowane przez ciąg x n 1,..., x n k są nazywane stanami procesu Liczba stanów Dla alfabetu rozmiaru m liczba stanów wynosi m k Najczęstszy model Model Markowa pierwszego rzędu: P(x n x n 1 ) = P(x n x n 1, x n 2,...)

Modelowanie i kodowanie Model Markowa Wartości przyjmowane przez ciąg x n 1,..., x n k są nazywane stanami procesu Liczba stanów Dla alfabetu rozmiaru m liczba stanów wynosi m k Najczęstszy model Model Markowa pierwszego rzędu: P(x n x n 1 ) = P(x n x n 1, x n 2,...)

Modelowanie i kodowanie Andriej Andriejewicz Markow (1856 1922) Internet: http://www-groups.dcs.st-and.ac.uk/ ~history/mathematicians/markov.html Ważne daty 1906 Pierwsze prace dotyczące dyskretnych łańcuchów Markowa

Modelowanie i kodowanie Modele Markowa w kompresji tekstów Szczególnie użyteczne ze względu na to, że w tekście kolejne litery zależą od poprzednich Litery występujące na pozycjach bezpośrednio poprzedzających pozycję bieżącą nazywane są kontekstem, w którym występuje bieżąca litera Shannon oszacował w 1951 roku entropię tekstu angielskiego opierając się na: kontekstach o długości 2 na ok. 3.1 bit/znak przewidywaniach ludzi na 0.6 1.3 bit/znak Współczesne modele szacują entropię tekstu angielskiego na ok. 1.45 bit/znak

Modelowanie i kodowanie Modele Markowa w kompresji tekstów Szczególnie użyteczne ze względu na to, że w tekście kolejne litery zależą od poprzednich Litery występujące na pozycjach bezpośrednio poprzedzających pozycję bieżącą nazywane są kontekstem, w którym występuje bieżąca litera Shannon oszacował w 1951 roku entropię tekstu angielskiego opierając się na: kontekstach o długości 2 na ok. 3.1 bit/znak przewidywaniach ludzi na 0.6 1.3 bit/znak Współczesne modele szacują entropię tekstu angielskiego na ok. 1.45 bit/znak

Modelowanie i kodowanie Modele Markowa w kompresji tekstów Szczególnie użyteczne ze względu na to, że w tekście kolejne litery zależą od poprzednich Litery występujące na pozycjach bezpośrednio poprzedzających pozycję bieżącą nazywane są kontekstem, w którym występuje bieżąca litera Shannon oszacował w 1951 roku entropię tekstu angielskiego opierając się na: kontekstach o długości 2 na ok. 3.1 bit/znak przewidywaniach ludzi na 0.6 1.3 bit/znak Współczesne modele szacują entropię tekstu angielskiego na ok. 1.45 bit/znak

Modelowanie i kodowanie Modele Markowa w kompresji tekstów Szczególnie użyteczne ze względu na to, że w tekście kolejne litery zależą od poprzednich Litery występujące na pozycjach bezpośrednio poprzedzających pozycję bieżącą nazywane są kontekstem, w którym występuje bieżąca litera Shannon oszacował w 1951 roku entropię tekstu angielskiego opierając się na: kontekstach o długości 2 na ok. 3.1 bit/znak przewidywaniach ludzi na 0.6 1.3 bit/znak Współczesne modele szacują entropię tekstu angielskiego na ok. 1.45 bit/znak

Modelowanie i kodowanie Metody kodowania wykorzystują informację znalezioną w etapie modelowania Istnieje kilka metod kodowania Metody kodowania oparte są na podstawach matematycznych

Plan wykładu 1 Modelowanie i kodowanie 2

Kody założenia Założenia Istnieje źródło z alfabetem A = {a 1,..., a m } i prawdopodobieństwami wystąpienia symboli P = {p 1,..., p m } Symbolom a i odpowiadają słowa kodu należące do zbioru słów kodu C = {c 1,..., c m } Rozkład prawdopodobieństw występowania symboli jest identyczny i niezależny

Kody założenia i definicje Kodem nazywamy odwzorowanie z A na C, tj. przypisanie słowa kodu c i każdemu symbolowi a i Cel kompresji Zredukowanie do minimum oczekiwanego (średniego) kosztu: L śr = m p i l i, i=1 gdzie l i jest długością słowa kodu c i kodującego symbol a i

Kody założenia i definicje Kodem nazywamy odwzorowanie z A na C, tj. przypisanie słowa kodu c i każdemu symbolowi a i Cel kompresji Zredukowanie do minimum oczekiwanego (średniego) kosztu: L śr = m p i l i, i=1 gdzie l i jest długością słowa kodu c i kodującego symbol a i

Kody definicja Efektywność kodowania określamy jako: H L śr 100%

Kody definicje Kod nazywamy jednoznacznie dekodowalnym, jeśli istnieje tylko jeden sposób podziału ciągu słów kodu c i1, c i2,..., c ik na oddzielne słowa kodu Kod jest przedrostkowy, jeśli nie możemy otrzymać żadnego słowa kodu z innego słowa kodu przez dodanie do niego zer lub jedynek (innymi słowy, żadne słowo kodu nie jest przedrostkiem innego słowa kodu)

Kody definicje Kod nazywamy jednoznacznie dekodowalnym, jeśli istnieje tylko jeden sposób podziału ciągu słów kodu c i1, c i2,..., c ik na oddzielne słowa kodu Kod jest przedrostkowy, jeśli nie możemy otrzymać żadnego słowa kodu z innego słowa kodu przez dodanie do niego zer lub jedynek (innymi słowy, żadne słowo kodu nie jest przedrostkiem innego słowa kodu)

Kody definicje Kodem optymalnym nazywamy kod, dla którego liczba L śr jest najmniejsza spośród wszystkich kodów dla danego rozkładu prawdopodobieństwa P Uwaga Może istnieć wiele takich kodów

Kody definicje Kodem optymalnym nazywamy kod, dla którego liczba L śr jest najmniejsza spośród wszystkich kodów dla danego rozkładu prawdopodobieństwa P Uwaga Może istnieć wiele takich kodów

Nierówność Krafta Twierdzenie Mając dane liczby k 1, k 2,... k n możliwe jest skonstruowanie kodu prefiksowego jednoznacznie dekodowalnego: C = [c 1, c 2,..., c n ], w którym k i = c i wtedy i tylko wtedy, gdy: n 2 k i 1 i=1

Plan wykładu 1 Modelowanie i kodowanie 2

Przykładowa sekwencja do zakodowania Jakżeż ja się uspokoję Pełne strachu oczy moje, Pełne grozy myśli moje, Pełne trwogi serce moje, Pełne drżenia piersi moje Jakżeż ja się uspokoję...

model niewiedzy Założenia Każdy symbol odpowiada jednemu znakowi Prawdopodobieństwo wystąpienia każdego symbolu jednakowe Zastosowany kod Przyjmujemy kod ASCII rozszerzony o polskie litery, czyli ISO 8859-2

Model niewiedzy entropia Symboli jest 256, a prawdopodobieństwo wystąpienia każdego z nich wynosi 1/256 sekwencji wynosi: 255 H(P) = P(a i ) log 2 P(a i ) = i=0 255 i=0 1 256 log 2 1 = 8.00 bit 256

Model niewiedzy kod Prawdopodobieństwo wystąpienia każdego z 256 symboli jest identyczne i wynosi 1/256 Każdemu symbolowi przypisujemy kod o długości log 2 1/256 = 8 bit Średnia długość kodu: 255 E(C, P ) = P (a i ) c(a i ) = 8.00 bit i=0

Model bardziej złożony W sekwencji występuje 30 symboli (litery, spacja, znaki interpunkcyjne, znak nowego wiersza) dla 30 symboli o jednakowym prawdopodobieństwie wystąpienia: H(P) = 29 i=0 1 30 log 1 2 4.91 bit 30

Model bardziej złożony kod W sekwencji występuje 30 symboli, więc stosujemy kod 5-bitowy pozwalający na reprezentowanie 32 symboli Średnia długość kodu: E(C, P ) = 31 i=0 P (a i ) C(a i ) = 5.00 bit

Model bardziej złożony dodatkowe koszty Konieczność przekazania do dekodera informacji o tym, które symbole występują w sekwencji Wymaga to 31 bajtów, co daje średnią na symbol sekwencji wejściowej: 31 8 bit 1.62 bit/symbol 153 symboli Łączna średnia długość kodu: 5.00 bit + 1.62 bit = 6.62 bit

Częstość występowania symboli w sekwencji Symbol L. wystąpień a 6 c 3 d 1 e 18 ę 4 g 2 h 1 i 7 j 10 k 4 l 1 ł 4 m 5 n 5 o 11 Symbol L. wystąpień p 7 r 6 s 7 ś 1 t 2 u 3 w 1 y 3 z 2 ż 5, 3. 3 2 spacja 20 nw 6

Model uwzględniający częstość występowania symboli w sekwencji Uwzględniając fakt, że różne symbole występują z różnym prawdopodobieństwem otrzymujemy entropię: H(P) = 29 i=0 P(a i ) log 2 P(a i ) 4.45 bit

Model wykorzystujący wiedzę o częstości występowania symboli Wykorzystujemy więcej wiedzy dwa najczęstsze symbole otrzymują kody o długości 4 bit Średnia długość kodu: E(C, P ) = 29 i=0 P (a i ) C(a i ) = 4.75 bit

Przykładowy kod Symbol L. wystąpień Kod a 6 00100 c 3 00101 d 1 00110 e 18 0000 ę 4 00111 g 2 01000 h 1 01001 i 7 01010 j 10 01011 k 4 01100 l 1 01101 ł 4 01110 m 5 01111 n 5 10000 o 11 10001 Symbol L. wystąpień Kod p 7 10010 r 6 10011 s 7 10100 ś 1 10101 t 2 10110 u 3 10111 w 1 11000 y 3 11001 z 2 11010 ż 5 11011, 3 11100. 3 11101 2 11110 spacja 20 0001 nw 6 11111

Dodatkowe koszty Konieczność przesłania do dekodera informacji o tym, które symbole występują w tekście i jak często Wymaga to 31 bajtów i 30 razy po 5 bitów

Dokładność modelu Dokładniejszy model: możliwość przypisania kodów minimalizujących średnią długość kodu konieczność przekazania do dekodera większej ilości informacji opisujących model Rozmiar opisu modelu bardziej istotny dla krótkich sekwencji

Plan wykładu 1 Modelowanie i kodowanie 2

Kod statyczny nie korzysta w żaden sposób z informacji o prawdopodobieństwie występowania symboli w kodowanej sekwencji

cechy Zalety Bardzo szybkie kodowanie dzięki prostocie konstrukcji kodów i ich regularności Brak potrzeby przesyłania informacji o budowie kodu do dekodera Wady Zwykle słaby współczynnik kompresji Możliwa ekspansja danych jeśli rozkład prawdopodobieństwa występowania symboli nie pasuje do założonego przy konstrukcji kodu

Kod unarny definicja Kod unarny (kod α Eliasa) reprezentujący liczbę x składa się z x 1 bitów 1, po których następuje pojedynczy bit 0

Kod unarny (kod α Eliasa) Symbol Kod 1 0 2 10 3 110 4 1110 5 11110 6 111110 7 1111110 8 11111110 9 111111110 10 1111111110 11 11111111110 12 111111111110 13 1111111111110 14 11111111111110 15 111111111111110 16 1111111111111110

Kod unarny cechy Cechy Długość x bitów Bardzo prosta budowa Długie kody dla większości symboli powodują, że kompresja jest bardzo słaba, a często otrzymuje się ekspansję Zastosowania Sytuacje, w których najwcześniejsze symbole w alfabecie występują o wiele częściej niż symbole dalsze Część składowa innych kodów

Kod binarny (kod β Eliasa) definicja Kod binarny (β Eliasa) reprezentujący liczbę x jest naturalną binarną reprezentacją liczby x z pominięciem wiodących zer

Kod binarny (kod β Eliasa) Symbol Kod 1 1 2 10 3 11 4 100 5 101 6 110 7 111 8 1000 9 1001 10 1010 11 1011 12 1100 13 1101 14 1110 15 1110 16 10000

Kod binarny (kod β Eliasa) cechy Cechy Bardzo prosta budowa Kod nie jest jednoznacznie dekodowalny, ponieważ nie jest znana jego długość Długość log 2 x + 1 bitów Zastosowania Część składowa innych kodów

Kody złożone Składowe Powstają z połączenia w różny sposób innych kodów Zaprojektowane pod kątem różnych rozkładów prawdopodobieństwa występowania symboli Konstrukcja Pierwsza część kodu pełni rolę selektora zakresu Druga część kodu opisuje liczby z zakresu wybranego przez wartość będącą selektorem

Kod γ Eliasa definicja Kod γ Eliasa reprezentujący liczbę x jest złożeniem kodu α dla liczby log 2 x + 1 i kodu β dla liczby x bez wiodącego bitu 1 Interpretacja Druga część kodu reprezentuje samą liczbę, podczas gdy pierwsza część opisuje długość kodu binarnego

Kod γ Eliasa Symbol Kod 1 0 2 100 3 101 4 11000 5 11001 6 11010 7 11011 8 1110000 9 1110001 10 1110010 11 1110011 12 1110100 13 1110101 14 1110110 15 1110111 16 111100000

Kod γ Eliasa cechy Cechy Długość Prosta budowa Stosunkowo dobry współczynnik kompresji dla danych, w których prawdopodobieństwo występowania symboli maleje dla kolejnych symboli alfabetu 1 + 2 log 2 x bitów Zastosowania Prawdopodobieństwo występowania symboli maleje dla kolejnych symboli alfabetu

Kod δ Eliasa definicja Kod δ Eliasa reprezentujący liczbę x jest złożeniem kodu γ dla liczby log 2 x + 1 i kodu β dla liczby x bez wiodącego bitu 1 Interpretacja Druga część kodu reprezentuje samą liczbę, podczas gdy pierwsza część opisuje długość kodu binarnego

Kod δ Eliasa Symbol Kod 1 0 2 1000 3 1001 4 10100 5 10101 6 10110 7 10111 8 11000000 9 11000001 10 11000010 11 11000011 12 11000100 13 11000101 14 11000110 15 11000111 16 110010000

Kod δ Eliasa cechy Cechy Długość Nieco bardziej skomplikowana budowa niż poprzednie kody Dla x > 15 kod δ Eliasa nie dłuższy niż kod γ Eliasa log 2 x + log 2 log 2 x + O(log log log x) bitów Zastosowania Prawdopodobieństwo występowania symboli maleje dla kolejnych symboli alfabetu

Peter Elias (1923 2001) Internet: http://web.mit.edu/newsoffice/2001/ elias.html Ważne daty 1955 Kody korekcyjne do transmisji w zaszumionym kanale 1975 Kody ogólnego przeznaczenia

Liczby Fibonacciego Liczby Fibonacciego definiuje następująca zależność rekurencyjna: F 1 = 1 F 2 = 1 F n = F n 1 + F n 2 Stosunek kolejnych liczb F k+1 lim = ϕ = 1 + 5 k F k 2 1.618

Liczby Fibonacciego Liczby Fibonacciego definiuje następująca zależność rekurencyjna: F 1 = 1 F 2 = 1 F n = F n 1 + F n 2 Stosunek kolejnych liczb F k+1 lim = ϕ = 1 + 5 k F k 2 1.618

Liczby Fibonacciego reprezentacja Zeckendorfa Twierdzenie Każda liczba całkowita dodatnia może być zapisana jako suma liczb różnych liczb Fibonacciego Reprezentacja Zeckendorfa to zapis binarny liczby, w którym każdy bit odpowiada jednej liczbie Fibonacciego. Wartość bitu równa 1 oznacza, że dana liczba Fibonacciego wchodzi do sumy. Pomijana jest w reprezentacji liczba F 1 Przykład reprezentacji Zeckendorfa 16 = 1 13+0 8+0 5+1 3+0 2+0 1 Z(16) = 100100 20 = 1 13+0 8+1 5+0 3+1 2+0 1 Z(20) = 101010

Liczby Fibonacciego reprezentacja Zeckendorfa Twierdzenie Każda liczba całkowita dodatnia może być zapisana jako suma liczb różnych liczb Fibonacciego Reprezentacja Zeckendorfa to zapis binarny liczby, w którym każdy bit odpowiada jednej liczbie Fibonacciego. Wartość bitu równa 1 oznacza, że dana liczba Fibonacciego wchodzi do sumy. Pomijana jest w reprezentacji liczba F 1 Przykład reprezentacji Zeckendorfa 16 = 1 13+0 8+0 5+1 3+0 2+0 1 Z(16) = 100100 20 = 1 13+0 8+1 5+0 3+1 2+0 1 Z(20) = 101010

Liczby Fibonacciego reprezentacja Zeckendorfa Twierdzenie Każda liczba całkowita dodatnia może być zapisana jako suma liczb różnych liczb Fibonacciego Reprezentacja Zeckendorfa to zapis binarny liczby, w którym każdy bit odpowiada jednej liczbie Fibonacciego. Wartość bitu równa 1 oznacza, że dana liczba Fibonacciego wchodzi do sumy. Pomijana jest w reprezentacji liczba F 1 Przykład reprezentacji Zeckendorfa 16 = 1 13+0 8+0 5+1 3+0 2+0 1 Z(16) = 100100 20 = 1 13+0 8+1 5+0 3+1 2+0 1 Z(20) = 101010

Liczby Fibonacciego odwrócona reprezentacja Zeckendorfa Odwrócona reprezentacja Zeckendorfa W trakcie kodowania wygodniejsza jest reprezentacja, w której najmniej znaczący bit znajduje się na początku Przykłady odwróconej reprezentacji Zeckendorfa Z(16) = 100100 F (16) = 001001 Z(20) = 101010 F (20) = 010101

Liczby Fibonacciego odwrócona reprezentacja Zeckendorfa Odwrócona reprezentacja Zeckendorfa W trakcie kodowania wygodniejsza jest reprezentacja, w której najmniej znaczący bit znajduje się na początku Przykłady odwróconej reprezentacji Zeckendorfa Z(16) = 100100 F (16) = 001001 Z(20) = 101010 F (20) = 010101

Odwrócona reprezentacja Zeckendorfa cechy Wniosek Każdą dodatnią liczbę całkowitą można przedstawić w odwróconej reprezentacji Zeckendorfa w taki sposób, aby nie zawierała dwóch następujących po sobie jedynek Dowód Załóżmy, że w reprezentacji Zeckendorfa dwa kolejne bity mają wartość 1. Oznacza to, że do sumy brane są dwie kolejne liczby Fibonacciego. Na podstawie definicji można takie dwa bity zamienić na jeden starszy bit, ponieważ odpowiada on liczbie Fibonacciego będącej sumą dwóch młodszych liczb

Odwrócona reprezentacja Zeckendorfa cechy Wniosek Każdą dodatnią liczbę całkowitą można przedstawić w odwróconej reprezentacji Zeckendorfa w taki sposób, aby nie zawierała dwóch następujących po sobie jedynek Dowód Załóżmy, że w reprezentacji Zeckendorfa dwa kolejne bity mają wartość 1. Oznacza to, że do sumy brane są dwie kolejne liczby Fibonacciego. Na podstawie definicji można takie dwa bity zamienić na jeden starszy bit, ponieważ odpowiada on liczbie Fibonacciego będącej sumą dwóch młodszych liczb

Kod Fraenkela Kleina C 1 definicja Kod Fraenkela Kleina C 1 tworzymy łącząc odwróconą reprezentację Zeckendorfa z bitem 1 Interpretacja W odwróconej reprezentacji Zeckendorfa nie występują bezpośrednio po sobie dwa bity 1 Ostatnim bitem jest 1 Dodając za ostatnim bitem 1 tworzymy znacznik końca kodu

Kod Fraenkela Kleina C 1 definicja Kod Fraenkela Kleina C 1 tworzymy łącząc odwróconą reprezentację Zeckendorfa z bitem 1 Interpretacja W odwróconej reprezentacji Zeckendorfa nie występują bezpośrednio po sobie dwa bity 1 Ostatnim bitem jest 1 Dodając za ostatnim bitem 1 tworzymy znacznik końca kodu

Kod Fraenkela Kleina C 1 przykład Symbol Kod 1 11 2 011 3 0011 4 1011 5 00011 6 10011 7 01011 8 000011 9 100011 10 010011 11 001011 12 101011 13 0000011 14 1000011 15 0100011 16 0010011

Kod Fraenkela Kleina C 2 definicja Kod Fraenkela Kleina C 2 tworzymy łącząc bity 10 z odwróconą reprezentacją Zeckendorfa liczby pomniejszonej o 1 Liczba 1 jest reprezentowana jako 1 (wyjątek) Interpretacja Pierwszy i ostatni bit jest równy 1 Dwie następujące po sobie jedynki umożliwiają wyznaczenie granic między kodami

Kod Fraenkela Kleina C 2 definicja Kod Fraenkela Kleina C 2 tworzymy łącząc bity 10 z odwróconą reprezentacją Zeckendorfa liczby pomniejszonej o 1 Liczba 1 jest reprezentowana jako 1 (wyjątek) Interpretacja Pierwszy i ostatni bit jest równy 1 Dwie następujące po sobie jedynki umożliwiają wyznaczenie granic między kodami

Kod Fraenkela Kleina C 2 przykład Symbol Kod 1 1 2 101 3 1001 4 10001 5 10101 6 100001 7 101001 8 100101 9 1000001 10 1010001 11 1001001 12 1000101 13 1010101 14 10000001 15 10100001 16 10010001

Kod Fibonacciego cechy Zalety Prosta budowa Stosunkowo dobry współczynnik kompresji dla danych, w których prawdopodobieństwo występowania symboli maleje dla kolejnych symboli alfabetu Wady Nieco trudniejszy w obliczaniu niż wcześniejsze kody

Inne kody statyczne Inne kody Fraenkela Kleina oraz Apostolico Fraenkela oparte o liczby Fibonacciego (także liczby Fibonacciego wyższych rzędów) interpolacyjne Kody Golomba Kody Rice a Kody Goldbacha Kody Wheelera

Plan wykładu 1 Modelowanie i kodowanie 2

Kod semi-statyczny jest to kod statyczny zbudowany na podstawie prawdopodobieństwa występowania symboli w kodowanej sekwencji, która została wcześniej przeanalizowana

cechy Zalety Lepszy współczynnik kompresji dzięki dostosowaniu kodu do rozkładu prawdopodobieństwa występowania symboli Możliwość zastosowania kodów statycznych, w których najczęstsze symbole otrzymują najkrótsze kody (reorganizacja alfabetu) Wady Wolniejsze działanie (konieczność wcześniejszego przeanalizowania sekwencji) Konieczność przekazania kodu do dekodera

Koniec Zadanie do domu po co tyle rodzajów kodów?