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?