podstawy kompresji - algorytmy kompresji danychsun.aei.polsl.pl/~akd/wyklady/wyk02.pdf ·...

101
Entropia Kodowanie Podstawy kompresji Algorytmy kompresji danych Sebastian Deorowicz 2007–02–27 Sebastian Deorowicz Podstawy kompresji

Upload: others

Post on 25-Aug-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Podstawy kompresji - Algorytmy kompresji danychsun.aei.polsl.pl/~akd/wyklady/wyk02.pdf · Wydobywanie informacji o redundancji występującej w danych i opisywanie jej za pomocą

EntropiaKodowanie

Podstawy kompresjiAlgorytmy kompresji danych

Sebastian Deorowicz

2007–02–27

Sebastian Deorowicz Podstawy kompresji

Page 2: Podstawy kompresji - Algorytmy kompresji danychsun.aei.polsl.pl/~akd/wyklady/wyk02.pdf · Wydobywanie informacji o redundancji występującej w danych i opisywanie jej za pomocą

EntropiaKodowanie

Plan wykładu

1 EntropiaDefinicjaModelowanie i kodowanie

2 KodowanieDefinicjeProste sposoby kodowaniaKody statyczneKody semi-statyczne

Sebastian Deorowicz Podstawy kompresji

Page 3: Podstawy kompresji - Algorytmy kompresji danychsun.aei.polsl.pl/~akd/wyklady/wyk02.pdf · Wydobywanie informacji o redundancji występującej w danych i opisywanie jej za pomocą

EntropiaKodowanie

DefinicjaModelowanie i kodowanie

Plan wykładu

1 EntropiaDefinicjaModelowanie i kodowanie

2 KodowanieDefinicjeProste sposoby kodowaniaKody statyczneKody semi-statyczne

Sebastian Deorowicz Podstawy kompresji

Page 4: Podstawy kompresji - Algorytmy kompresji danychsun.aei.polsl.pl/~akd/wyklady/wyk02.pdf · Wydobywanie informacji o redundancji występującej w danych i opisywanie jej za pomocą

EntropiaKodowanie

DefinicjaModelowanie i kodowanie

Entropia — definicja

Definicja

Entropia stowarzyszona ze zbiorem m niezależnych zdarzeńA = {a1, . . . , am} i ze zbiorem prawdopodobieństw ichzajścia P = {p(a1), . . . , p(am)} jest definiowana jako:

H(A) =m∑i=1

p(ai )I (ai ) = −m∑i=1

p(ai ) log p(ai )

Intuicja

Innymi słowy entropia jest to średnia autoinformacja związanaz eksperymentem losowym polegającym na wygenerowaniusymbolu przy założonych prawdopodobieństwach wygenerowaniasymboli z alfabetu

Sebastian Deorowicz Podstawy kompresji

Page 5: Podstawy kompresji - Algorytmy kompresji danychsun.aei.polsl.pl/~akd/wyklady/wyk02.pdf · Wydobywanie informacji o redundancji występującej w danych i opisywanie jej za pomocą

EntropiaKodowanie

DefinicjaModelowanie i kodowanie

Entropia — definicja

Definicja

Entropia stowarzyszona ze zbiorem m niezależnych zdarzeńA = {a1, . . . , am} i ze zbiorem prawdopodobieństw ichzajścia P = {p(a1), . . . , p(am)} jest definiowana jako:

H(A) =m∑i=1

p(ai )I (ai ) = −m∑i=1

p(ai ) log p(ai )

Intuicja

Innymi słowy entropia jest to średnia autoinformacja związanaz eksperymentem losowym polegającym na wygenerowaniusymbolu przy założonych prawdopodobieństwach wygenerowaniasymboli z alfabetu

Sebastian Deorowicz Podstawy kompresji

Page 6: Podstawy kompresji - Algorytmy kompresji danychsun.aei.polsl.pl/~akd/wyklady/wyk02.pdf · Wydobywanie informacji o redundancji występującej w danych i opisywanie jej za pomocą

EntropiaKodowanie

DefinicjaModelowanie i kodowanie

Entropia eksperymentu1

Eksperyment

Generowanie przez źródło symboli ai ze zbioru A

Entropia eksperymentu

Entropia wyrażona w bitach jest miarą określającą średnią liczbęsymboli binarnych potrzebnych do zakodowania ciągu utworzonegoz 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 średnialiczba bitów przypadająca na symbol była równa entropii źródła1Definicje w wykładzie na podstawie K. Sayood, Kompresja danych. Wprowadzenie

i A. Drozdek, Wprowadzenie do kompresji danychSebastian Deorowicz Podstawy kompresji

Page 7: Podstawy kompresji - Algorytmy kompresji danychsun.aei.polsl.pl/~akd/wyklady/wyk02.pdf · Wydobywanie informacji o redundancji występującej w danych i opisywanie jej za pomocą

EntropiaKodowanie

DefinicjaModelowanie i kodowanie

Entropia eksperymentu1

Eksperyment

Generowanie przez źródło symboli ai ze zbioru A

Entropia eksperymentu

Entropia wyrażona w bitach jest miarą określającą średnią liczbęsymboli binarnych potrzebnych do zakodowania ciągu utworzonegoz 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 średnialiczba bitów przypadająca na symbol była równa entropii źródła1Definicje w wykładzie na podstawie K. Sayood, Kompresja danych. Wprowadzenie

i A. Drozdek, Wprowadzenie do kompresji danychSebastian Deorowicz Podstawy kompresji

Page 8: Podstawy kompresji - Algorytmy kompresji danychsun.aei.polsl.pl/~akd/wyklady/wyk02.pdf · Wydobywanie informacji o redundancji występującej w danych i opisywanie jej za pomocą

EntropiaKodowanie

DefinicjaModelowanie i kodowanie

Entropia eksperymentu1

Eksperyment

Generowanie przez źródło symboli ai ze zbioru A

Entropia eksperymentu

Entropia wyrażona w bitach jest miarą określającą średnią liczbęsymboli binarnych potrzebnych do zakodowania ciągu utworzonegoz 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 średnialiczba bitów przypadająca na symbol była równa entropii źródła1Definicje w wykładzie na podstawie K. Sayood, Kompresja danych. Wprowadzenie

i A. Drozdek, Wprowadzenie do kompresji danychSebastian Deorowicz Podstawy kompresji

Page 9: Podstawy kompresji - Algorytmy kompresji danychsun.aei.polsl.pl/~akd/wyklady/wyk02.pdf · Wydobywanie informacji o redundancji występującej w danych i opisywanie jej za pomocą

EntropiaKodowanie

DefinicjaModelowanie i kodowanie

Entropia źródła — definicja

Definicja

Entropia źródła S generującego ciąg symboli x1, x2, . . . , xnnależących do alfabetu A = {1, 2, . . . ,m} wynosi:

H(S) = limn→∞1nGn,

gdzie

Gn = −m∑i1=1

m∑i2=1

· · ·m∑in=1

P(x1 = i1, x2 = i2, . . . , xn = in)×

× logP(x1 = i1, x2 = i2, . . . xn = in)

Sebastian Deorowicz Podstawy kompresji

Page 10: Podstawy kompresji - Algorytmy kompresji danychsun.aei.polsl.pl/~akd/wyklady/wyk02.pdf · Wydobywanie informacji o redundancji występującej w danych i opisywanie jej za pomocą

EntropiaKodowanie

DefinicjaModelowanie i kodowanie

Entropia źródła — szczególne przypadki

Rozkład identyczny i niezależny

Jeśli wszystkie elementy sekwencji mają rozkład identycznyi niezależny, to:

Gn = −nm∑i1=1

P(x1 = i1) logP(x1 = i1)

Mamy wtedy tzw. entropię pierwszego rzędu źródła:

H(S) = −m∑i1=1

P(x1 = i1) logP(x1 = i1)

Sebastian Deorowicz Podstawy kompresji

Page 11: Podstawy kompresji - Algorytmy kompresji danychsun.aei.polsl.pl/~akd/wyklady/wyk02.pdf · Wydobywanie informacji o redundancji występującej w danych i opisywanie jej za pomocą

EntropiaKodowanie

DefinicjaModelowanie i kodowanie

Entropia źródła — co o niej wiemy?

Dla większości źródeł rozkład symboli nie jest identycznyi 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

Sebastian Deorowicz Podstawy kompresji

Page 12: Podstawy kompresji - Algorytmy kompresji danychsun.aei.polsl.pl/~akd/wyklady/wyk02.pdf · Wydobywanie informacji o redundancji występującej w danych i opisywanie jej za pomocą

EntropiaKodowanie

DefinicjaModelowanie i kodowanie

Entropia źródła — co o niej wiemy?

Dla większości źródeł rozkład symboli nie jest identycznyi 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

Sebastian Deorowicz Podstawy kompresji

Page 13: Podstawy kompresji - Algorytmy kompresji danychsun.aei.polsl.pl/~akd/wyklady/wyk02.pdf · Wydobywanie informacji o redundancji występującej w danych i opisywanie jej za pomocą

EntropiaKodowanie

DefinicjaModelowanie i kodowanie

Entropia źródła — przykład

Sekwencja

1, 1, 2, 3, 4, 5, 6, 5, 6, 7, 8, 8, 9, 8, 9, 10

Entropia 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

Sebastian Deorowicz Podstawy kompresji

Page 14: Podstawy kompresji - Algorytmy kompresji danychsun.aei.polsl.pl/~akd/wyklady/wyk02.pdf · Wydobywanie informacji o redundancji występującej w danych i opisywanie jej za pomocą

EntropiaKodowanie

DefinicjaModelowanie i kodowanie

Entropia źródła — przykład

Sekwencja

1, 1, 2, 3, 4, 5, 6, 5, 6, 7, 8, 8, 9, 8, 9, 10

Entropia 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

Sebastian Deorowicz Podstawy kompresji

Page 15: Podstawy kompresji - Algorytmy kompresji danychsun.aei.polsl.pl/~akd/wyklady/wyk02.pdf · Wydobywanie informacji o redundancji występującej w danych i opisywanie jej za pomocą

EntropiaKodowanie

DefinicjaModelowanie i kodowanie

Entropia ź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

Sebastian Deorowicz Podstawy kompresji

Page 16: Podstawy kompresji - Algorytmy kompresji danychsun.aei.polsl.pl/~akd/wyklady/wyk02.pdf · Wydobywanie informacji o redundancji występującej w danych i opisywanie jej za pomocą

EntropiaKodowanie

DefinicjaModelowanie i kodowanie

Entropia ź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

Sebastian Deorowicz Podstawy kompresji

Page 17: Podstawy kompresji - Algorytmy kompresji danychsun.aei.polsl.pl/~akd/wyklady/wyk02.pdf · Wydobywanie informacji o redundancji występującej w danych i opisywanie jej za pomocą

EntropiaKodowanie

DefinicjaModelowanie i kodowanie

Entropia źródła — przykład

Entropia po usunięciu korelacji

p(−1) = 2/16 p(0) = 2/16 p(1) = 12/16

H = −1∑i=−1p(i) log p(i) = 1, 06 bit

Sebastian Deorowicz Podstawy kompresji

Page 18: Podstawy kompresji - Algorytmy kompresji danychsun.aei.polsl.pl/~akd/wyklady/wyk02.pdf · Wydobywanie informacji o redundancji występującej w danych i opisywanie jej za pomocą

EntropiaKodowanie

DefinicjaModelowanie i kodowanie

Czym jest model?

Definicja

Modelem ciągu nazywamy założenia dotyczące korelacji pomiędzykolejnymi symbolami

Sebastian Deorowicz Podstawy kompresji

Page 19: Podstawy kompresji - Algorytmy kompresji danychsun.aei.polsl.pl/~akd/wyklady/wyk02.pdf · Wydobywanie informacji o redundancji występującej w danych i opisywanie jej za pomocą

EntropiaKodowanie

DefinicjaModelowanie i kodowanie

Plan wykładu

1 EntropiaDefinicjaModelowanie i kodowanie

2 KodowanieDefinicjeProste sposoby kodowaniaKody statyczneKody semi-statyczne

Sebastian Deorowicz Podstawy kompresji

Page 20: Podstawy kompresji - Algorytmy kompresji danychsun.aei.polsl.pl/~akd/wyklady/wyk02.pdf · Wydobywanie informacji o redundancji występującej w danych i opisywanie jej za pomocą

EntropiaKodowanie

DefinicjaModelowanie i kodowanie

Współczesny paradygmat kompresji:modelowanie–kodowanie

Kodowanie Dekodowanie

Modelowanie Modelowanie

Sekwencjawejściowa

Sekwencjaskompresowana

Sekwencjawyjściowa

Uaktualnieniemodelu

Uaktualnieniemodelu

Sebastian Deorowicz Podstawy kompresji

Page 21: Podstawy kompresji - Algorytmy kompresji danychsun.aei.polsl.pl/~akd/wyklady/wyk02.pdf · Wydobywanie informacji o redundancji występującej w danych i opisywanie jej za pomocą

EntropiaKodowanie

DefinicjaModelowanie i kodowanie

Modelowanie i kodowanie

Modelowanie

Pierwszy etap kompresji

Wydobywanie informacji o redundancji występującej w danychi opisywanie jej za pomocą modelu

Kodowanie

Drugi etap kompresji

Kodowanie opisu modelu oraz informacji o tym jak daneodbiegają od niego

Sebastian Deorowicz Podstawy kompresji

Page 22: Podstawy kompresji - Algorytmy kompresji danychsun.aei.polsl.pl/~akd/wyklady/wyk02.pdf · Wydobywanie informacji o redundancji występującej w danych i opisywanie jej za pomocą

EntropiaKodowanie

DefinicjaModelowanie i kodowanie

Modelowanie i kodowanie

Modelowanie

Pierwszy etap kompresji

Wydobywanie informacji o redundancji występującej w danychi opisywanie jej za pomocą modelu

Kodowanie

Drugi etap kompresji

Kodowanie opisu modelu oraz informacji o tym jak daneodbiegają od niego

Sebastian Deorowicz Podstawy kompresji

Page 23: Podstawy kompresji - Algorytmy kompresji danychsun.aei.polsl.pl/~akd/wyklady/wyk02.pdf · Wydobywanie informacji o redundancji występującej w danych i opisywanie jej za pomocą

EntropiaKodowanie

DefinicjaModelowanie 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żonymwcześniej modelu źródła, które wygenerowało dane

Sebastian Deorowicz Podstawy kompresji

Page 24: Podstawy kompresji - Algorytmy kompresji danychsun.aei.polsl.pl/~akd/wyklady/wyk02.pdf · Wydobywanie informacji o redundancji występującej w danych i opisywanie jej za pomocą

EntropiaKodowanie

DefinicjaModelowanie i kodowanie

Modele źródła danych

Modele fizyczne — np. modele powstawania mowy użytecznew kompresji próbek mowy

Modele probabilistyczne

Modele Markowa — oparte na założeniu,że prawdopodobieństwo wygenerowania symbolu zależyod symboli, które wystąpiły poprzednio

Modele drzew kontekstu — uogólnienie modelu Markowa

Sebastian Deorowicz Podstawy kompresji

Page 25: Podstawy kompresji - Algorytmy kompresji danychsun.aei.polsl.pl/~akd/wyklady/wyk02.pdf · Wydobywanie informacji o redundancji występującej w danych i opisywanie jej za pomocą

EntropiaKodowanie

DefinicjaModelowanie i kodowanie

Model niewiedzy

Założenie

Nic nie wiemy o źródle i zakładamy, że każdy symbol jestgenerowany 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

Sebastian Deorowicz Podstawy kompresji

Page 26: Podstawy kompresji - Algorytmy kompresji danychsun.aei.polsl.pl/~akd/wyklady/wyk02.pdf · Wydobywanie informacji o redundancji występującej w danych i opisywanie jej za pomocą

EntropiaKodowanie

DefinicjaModelowanie i kodowanie

Model niewiedzy

Założenie

Nic nie wiemy o źródle i zakładamy, że każdy symbol jestgenerowany 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

Sebastian Deorowicz Podstawy kompresji

Page 27: Podstawy kompresji - Algorytmy kompresji danychsun.aei.polsl.pl/~akd/wyklady/wyk02.pdf · Wydobywanie informacji o redundancji występującej w danych i opisywanie jej za pomocą

EntropiaKodowanie

DefinicjaModelowanie i kodowanie

Model probabilistyczny

Założenia

Dla każdego symbolu znamy prawdopodobieństwo jegowystępowania

Zakładamy przy tym, że to prawdopodobieństwo nie zależyw ż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łkiemwydajnych kodów

Sebastian Deorowicz Podstawy kompresji

Page 28: Podstawy kompresji - Algorytmy kompresji danychsun.aei.polsl.pl/~akd/wyklady/wyk02.pdf · Wydobywanie informacji o redundancji występującej w danych i opisywanie jej za pomocą

EntropiaKodowanie

DefinicjaModelowanie i kodowanie

Model probabilistyczny

Założenia

Dla każdego symbolu znamy prawdopodobieństwo jegowystępowania

Zakładamy przy tym, że to prawdopodobieństwo nie zależyw ż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łkiemwydajnych kodów

Sebastian Deorowicz Podstawy kompresji

Page 29: Podstawy kompresji - Algorytmy kompresji danychsun.aei.polsl.pl/~akd/wyklady/wyk02.pdf · Wydobywanie informacji o redundancji występującej w danych i opisywanie jej za pomocą

EntropiaKodowanie

DefinicjaModelowanie i kodowanie

Dyskretny łańcuch Markowa

Definicja

Ciąg {xn} nazywamy dyskretnym łańcuchem Markowa rzędu k jeśli:

P(xn|xn−1, . . . , xn−k) = P(xn|xn−1, . . . , xn−k , . . .)

Intuicja

Wiedza o ostatnich k symbolach jest równoważna wiedzy o całejhistorii procesu

Sebastian Deorowicz Podstawy kompresji

Page 30: Podstawy kompresji - Algorytmy kompresji danychsun.aei.polsl.pl/~akd/wyklady/wyk02.pdf · Wydobywanie informacji o redundancji występującej w danych i opisywanie jej za pomocą

EntropiaKodowanie

DefinicjaModelowanie i kodowanie

Dyskretny łańcuch Markowa

Definicja

Ciąg {xn} nazywamy dyskretnym łańcuchem Markowa rzędu k jeśli:

P(xn|xn−1, . . . , xn−k) = P(xn|xn−1, . . . , xn−k , . . .)

Intuicja

Wiedza o ostatnich k symbolach jest równoważna wiedzy o całejhistorii procesu

Sebastian Deorowicz Podstawy kompresji

Page 31: Podstawy kompresji - Algorytmy kompresji danychsun.aei.polsl.pl/~akd/wyklady/wyk02.pdf · Wydobywanie informacji o redundancji występującej w danych i opisywanie jej za pomocą

EntropiaKodowanie

DefinicjaModelowanie i kodowanie

Model Markowa

Definicja

Wartości przyjmowane przez ciąg xn−1, . . . , xn−k są nazywanestanami procesu

Liczba stanów

Dla alfabetu rozmiaru m liczba stanów wynosi mk

Najczęstszy model

Model Markowa pierwszego rzędu:

P(xn|xn−1) = P(xn|xn−1, xn−2, . . .)

Sebastian Deorowicz Podstawy kompresji

Page 32: Podstawy kompresji - Algorytmy kompresji danychsun.aei.polsl.pl/~akd/wyklady/wyk02.pdf · Wydobywanie informacji o redundancji występującej w danych i opisywanie jej za pomocą

EntropiaKodowanie

DefinicjaModelowanie i kodowanie

Model Markowa

Definicja

Wartości przyjmowane przez ciąg xn−1, . . . , xn−k są nazywanestanami procesu

Liczba stanów

Dla alfabetu rozmiaru m liczba stanów wynosi mk

Najczęstszy model

Model Markowa pierwszego rzędu:

P(xn|xn−1) = P(xn|xn−1, xn−2, . . .)

Sebastian Deorowicz Podstawy kompresji

Page 33: Podstawy kompresji - Algorytmy kompresji danychsun.aei.polsl.pl/~akd/wyklady/wyk02.pdf · Wydobywanie informacji o redundancji występującej w danych i opisywanie jej za pomocą

EntropiaKodowanie

DefinicjaModelowanie i kodowanie

Model Markowa

Definicja

Wartości przyjmowane przez ciąg xn−1, . . . , xn−k są nazywanestanami procesu

Liczba stanów

Dla alfabetu rozmiaru m liczba stanów wynosi mk

Najczęstszy model

Model Markowa pierwszego rzędu:

P(xn|xn−1) = P(xn|xn−1, xn−2, . . .)

Sebastian Deorowicz Podstawy kompresji

Page 34: Podstawy kompresji - Algorytmy kompresji danychsun.aei.polsl.pl/~akd/wyklady/wyk02.pdf · Wydobywanie informacji o redundancji występującej w danych i opisywanie jej za pomocą

EntropiaKodowanie

DefinicjaModelowanie i kodowanie

Andriej Andriejewicz Markow (1856–1922)

Internet:http://www-groups.dcs.st-and.ac.uk/~history/Mathematicians/Markov.html

Ważne daty1906 – Pierwsze prace dotyczącedyskretnych łańcuchów Markowa

Sebastian Deorowicz Podstawy kompresji

Page 35: Podstawy kompresji - Algorytmy kompresji danychsun.aei.polsl.pl/~akd/wyklady/wyk02.pdf · Wydobywanie informacji o redundancji występującej w danych i opisywanie jej za pomocą

EntropiaKodowanie

DefinicjaModelowanie i kodowanie

Modele Markowa w kompresji tekstów

Szczególnie użyteczne ze względu na to, że w tekście kolejnelitery zależą od poprzednich

Litery występujące na pozycjach bezpośredniopoprzedzających pozycję bieżącą nazywane są kontekstem,w którym występuje bieżąca literaShannon oszacował w 1951 roku entropię tekstu angielskiegoopierając się na:kontekstach o długości 2 na ok. 3.1 bit/znakprzewidywaniach ludzi na 0.6–1.3 bit/znak

Współczesne modele szacują entropię tekstu angielskiegona ok. 1.45 bit/znak

Sebastian Deorowicz Podstawy kompresji

Page 36: Podstawy kompresji - Algorytmy kompresji danychsun.aei.polsl.pl/~akd/wyklady/wyk02.pdf · Wydobywanie informacji o redundancji występującej w danych i opisywanie jej za pomocą

EntropiaKodowanie

DefinicjaModelowanie i kodowanie

Modele Markowa w kompresji tekstów

Szczególnie użyteczne ze względu na to, że w tekście kolejnelitery zależą od poprzednich

Litery występujące na pozycjach bezpośredniopoprzedzających pozycję bieżącą nazywane są kontekstem,w którym występuje bieżąca literaShannon oszacował w 1951 roku entropię tekstu angielskiegoopierając się na:kontekstach o długości 2 na ok. 3.1 bit/znakprzewidywaniach ludzi na 0.6–1.3 bit/znak

Współczesne modele szacują entropię tekstu angielskiegona ok. 1.45 bit/znak

Sebastian Deorowicz Podstawy kompresji

Page 37: Podstawy kompresji - Algorytmy kompresji danychsun.aei.polsl.pl/~akd/wyklady/wyk02.pdf · Wydobywanie informacji o redundancji występującej w danych i opisywanie jej za pomocą

EntropiaKodowanie

DefinicjaModelowanie i kodowanie

Modele Markowa w kompresji tekstów

Szczególnie użyteczne ze względu na to, że w tekście kolejnelitery zależą od poprzednich

Litery występujące na pozycjach bezpośredniopoprzedzających pozycję bieżącą nazywane są kontekstem,w którym występuje bieżąca literaShannon oszacował w 1951 roku entropię tekstu angielskiegoopierając się na:kontekstach o długości 2 na ok. 3.1 bit/znakprzewidywaniach ludzi na 0.6–1.3 bit/znak

Współczesne modele szacują entropię tekstu angielskiegona ok. 1.45 bit/znak

Sebastian Deorowicz Podstawy kompresji

Page 38: Podstawy kompresji - Algorytmy kompresji danychsun.aei.polsl.pl/~akd/wyklady/wyk02.pdf · Wydobywanie informacji o redundancji występującej w danych i opisywanie jej za pomocą

EntropiaKodowanie

DefinicjaModelowanie i kodowanie

Modele Markowa w kompresji tekstów

Szczególnie użyteczne ze względu na to, że w tekście kolejnelitery zależą od poprzednich

Litery występujące na pozycjach bezpośredniopoprzedzających pozycję bieżącą nazywane są kontekstem,w którym występuje bieżąca literaShannon oszacował w 1951 roku entropię tekstu angielskiegoopierając się na:kontekstach o długości 2 na ok. 3.1 bit/znakprzewidywaniach ludzi na 0.6–1.3 bit/znak

Współczesne modele szacują entropię tekstu angielskiegona ok. 1.45 bit/znak

Sebastian Deorowicz Podstawy kompresji

Page 39: Podstawy kompresji - Algorytmy kompresji danychsun.aei.polsl.pl/~akd/wyklady/wyk02.pdf · Wydobywanie informacji o redundancji występującej w danych i opisywanie jej za pomocą

EntropiaKodowanie

DefinicjaModelowanie i kodowanie

Kodowanie

Metody kodowania wykorzystują informację znalezionąw etapie modelowania

Istnieje kilka metod kodowania

Metody kodowania oparte są na podstawach matematycznych

Sebastian Deorowicz Podstawy kompresji

Page 40: Podstawy kompresji - Algorytmy kompresji danychsun.aei.polsl.pl/~akd/wyklady/wyk02.pdf · Wydobywanie informacji o redundancji występującej w danych i opisywanie jej za pomocą

EntropiaKodowanie

DefinicjeProste sposoby kodowaniaKody statyczneKody semi-statyczne

Plan wykładu

1 EntropiaDefinicjaModelowanie i kodowanie

2 KodowanieDefinicjeProste sposoby kodowaniaKody statyczneKody semi-statyczne

Sebastian Deorowicz Podstawy kompresji

Page 41: Podstawy kompresji - Algorytmy kompresji danychsun.aei.polsl.pl/~akd/wyklady/wyk02.pdf · Wydobywanie informacji o redundancji występującej w danych i opisywanie jej za pomocą

EntropiaKodowanie

DefinicjeProste sposoby kodowaniaKody statyczneKody semi-statyczne

Kody — założenia

Założenia

Istnieje źródło z alfabetem A = {a1, . . . , am}i prawdopodobieństwami wystąpieniasymboli P = {p1, . . . , pm}Symbolom ai odpowiadają słowa kodu należące do zbiorusłów kodu C = {c1, . . . , cm}Rozkład prawdopodobieństw występowania symboli jestidentyczny i niezależny

Sebastian Deorowicz Podstawy kompresji

Page 42: Podstawy kompresji - Algorytmy kompresji danychsun.aei.polsl.pl/~akd/wyklady/wyk02.pdf · Wydobywanie informacji o redundancji występującej w danych i opisywanie jej za pomocą

EntropiaKodowanie

DefinicjeProste sposoby kodowaniaKody statyczneKody semi-statyczne

Kody — założenia i definicje

Definicja

Kodem nazywamy odwzorowanie z A na C , tj. przypisanie słowakodu ci każdemu symbolowi ai

Cel kompresji

Zredukowanie do minimum oczekiwanego (średniego) kosztu:

Lśr =m∑i=1

pi li ,

gdzie li jest długością słowa kodu ci kodującego symbol ai

Sebastian Deorowicz Podstawy kompresji

Page 43: Podstawy kompresji - Algorytmy kompresji danychsun.aei.polsl.pl/~akd/wyklady/wyk02.pdf · Wydobywanie informacji o redundancji występującej w danych i opisywanie jej za pomocą

EntropiaKodowanie

DefinicjeProste sposoby kodowaniaKody statyczneKody semi-statyczne

Kody — założenia i definicje

Definicja

Kodem nazywamy odwzorowanie z A na C , tj. przypisanie słowakodu ci każdemu symbolowi ai

Cel kompresji

Zredukowanie do minimum oczekiwanego (średniego) kosztu:

Lśr =m∑i=1

pi li ,

gdzie li jest długością słowa kodu ci kodującego symbol ai

Sebastian Deorowicz Podstawy kompresji

Page 44: Podstawy kompresji - Algorytmy kompresji danychsun.aei.polsl.pl/~akd/wyklady/wyk02.pdf · Wydobywanie informacji o redundancji występującej w danych i opisywanie jej za pomocą

EntropiaKodowanie

DefinicjeProste sposoby kodowaniaKody statyczneKody semi-statyczne

Kody — definicja

Definicja

Efektywność kodowania określamy jako:

HLśr× 100%

Sebastian Deorowicz Podstawy kompresji

Page 45: Podstawy kompresji - Algorytmy kompresji danychsun.aei.polsl.pl/~akd/wyklady/wyk02.pdf · Wydobywanie informacji o redundancji występującej w danych i opisywanie jej za pomocą

EntropiaKodowanie

DefinicjeProste sposoby kodowaniaKody statyczneKody semi-statyczne

Kody — definicje

Definicja

Kod nazywamy jednoznacznie dekodowalnym, jeśli istnieje tylkojeden sposób podziału ciągu słów kodu ci1 , ci2 , . . . , cik na oddzielnesłowa kodu

Definicja

Kod jest przedrostkowy, jeśli nie możemy otrzymać żadnego słowakodu z innego słowa kodu przez dodanie do niego zer lub jedynek(innymi słowy, żadne słowo kodu nie jest przedrostkiem innegosłowa kodu)

Sebastian Deorowicz Podstawy kompresji

Page 46: Podstawy kompresji - Algorytmy kompresji danychsun.aei.polsl.pl/~akd/wyklady/wyk02.pdf · Wydobywanie informacji o redundancji występującej w danych i opisywanie jej za pomocą

EntropiaKodowanie

DefinicjeProste sposoby kodowaniaKody statyczneKody semi-statyczne

Kody — definicje

Definicja

Kod nazywamy jednoznacznie dekodowalnym, jeśli istnieje tylkojeden sposób podziału ciągu słów kodu ci1 , ci2 , . . . , cik na oddzielnesłowa kodu

Definicja

Kod jest przedrostkowy, jeśli nie możemy otrzymać żadnego słowakodu z innego słowa kodu przez dodanie do niego zer lub jedynek(innymi słowy, żadne słowo kodu nie jest przedrostkiem innegosłowa kodu)

Sebastian Deorowicz Podstawy kompresji

Page 47: Podstawy kompresji - Algorytmy kompresji danychsun.aei.polsl.pl/~akd/wyklady/wyk02.pdf · Wydobywanie informacji o redundancji występującej w danych i opisywanie jej za pomocą

EntropiaKodowanie

DefinicjeProste sposoby kodowaniaKody statyczneKody semi-statyczne

Kody — definicje

Definicja

Kodem optymalnym nazywamy kod, dla którego liczba Lśr jestnajmniejsza spośród wszystkich kodów dla danego rozkładuprawdopodobieństwa P

Uwaga

Może istnieć wiele takich kodów

Sebastian Deorowicz Podstawy kompresji

Page 48: Podstawy kompresji - Algorytmy kompresji danychsun.aei.polsl.pl/~akd/wyklady/wyk02.pdf · Wydobywanie informacji o redundancji występującej w danych i opisywanie jej za pomocą

EntropiaKodowanie

DefinicjeProste sposoby kodowaniaKody statyczneKody semi-statyczne

Kody — definicje

Definicja

Kodem optymalnym nazywamy kod, dla którego liczba Lśr jestnajmniejsza spośród wszystkich kodów dla danego rozkładuprawdopodobieństwa P

Uwaga

Może istnieć wiele takich kodów

Sebastian Deorowicz Podstawy kompresji

Page 49: Podstawy kompresji - Algorytmy kompresji danychsun.aei.polsl.pl/~akd/wyklady/wyk02.pdf · Wydobywanie informacji o redundancji występującej w danych i opisywanie jej za pomocą

EntropiaKodowanie

DefinicjeProste sposoby kodowaniaKody statyczneKody semi-statyczne

Nierówność Krafta

Twierdzenie

Mając dane liczby k1, k2, . . . kn możliwe jest skonstruowanie koduprefiksowego jednoznacznie dekodowalnego: C = [c1, c2, . . . , cn],w którym ki = |ci | wtedy i tylko wtedy, gdy:

n∑i=1

2−ki ¬ 1

Sebastian Deorowicz Podstawy kompresji

Page 50: Podstawy kompresji - Algorytmy kompresji danychsun.aei.polsl.pl/~akd/wyklady/wyk02.pdf · Wydobywanie informacji o redundancji występującej w danych i opisywanie jej za pomocą

EntropiaKodowanie

DefinicjeProste sposoby kodowaniaKody statyczneKody semi-statyczne

Plan wykładu

1 EntropiaDefinicjaModelowanie i kodowanie

2 KodowanieDefinicjeProste sposoby kodowaniaKody statyczneKody semi-statyczne

Sebastian Deorowicz Podstawy kompresji

Page 51: Podstawy kompresji - Algorytmy kompresji danychsun.aei.polsl.pl/~akd/wyklady/wyk02.pdf · Wydobywanie informacji o redundancji występującej w danych i opisywanie jej za pomocą

EntropiaKodowanie

DefinicjeProste sposoby kodowaniaKody statyczneKody semi-statyczne

Kodowanie

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ę. . .

Sebastian Deorowicz Podstawy kompresji

Page 52: Podstawy kompresji - Algorytmy kompresji danychsun.aei.polsl.pl/~akd/wyklady/wyk02.pdf · Wydobywanie informacji o redundancji występującej w danych i opisywanie jej za pomocą

EntropiaKodowanie

DefinicjeProste sposoby kodowaniaKody statyczneKody semi-statyczne

Kodowanie — 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”, czyliISO 8859-2

Sebastian Deorowicz Podstawy kompresji

Page 53: Podstawy kompresji - Algorytmy kompresji danychsun.aei.polsl.pl/~akd/wyklady/wyk02.pdf · Wydobywanie informacji o redundancji występującej w danych i opisywanie jej za pomocą

EntropiaKodowanie

DefinicjeProste sposoby kodowaniaKody statyczneKody semi-statyczne

Model niewiedzy — entropia

Symboli jest 256, a prawdopodobieństwo wystąpienia każdegoz nich wynosi 1/256

Entropia sekwencji wynosi:

H(P) = −255∑i=0

P(ai ) log2 P(ai ) = −255∑i=0

1256log2

1256

= 8.00 bit

Sebastian Deorowicz Podstawy kompresji

Page 54: Podstawy kompresji - Algorytmy kompresji danychsun.aei.polsl.pl/~akd/wyklady/wyk02.pdf · Wydobywanie informacji o redundancji występującej w danych i opisywanie jej za pomocą

EntropiaKodowanie

DefinicjeProste sposoby kodowaniaKody statyczneKody semi-statyczne

Model niewiedzy — kod

Prawdopodobieństwo wystąpienia każdego z 256 symboli jestidentyczne i wynosi 1/256

Każdemu symbolowi przypisujemy kod o długości− log2 1/256 = 8 bit

Średnia długość kodu:

E (C ,P ′) = −255∑i=0

P ′(ai )|c(ai )| = 8.00 bit

Sebastian Deorowicz Podstawy kompresji

Page 55: Podstawy kompresji - Algorytmy kompresji danychsun.aei.polsl.pl/~akd/wyklady/wyk02.pdf · Wydobywanie informacji o redundancji występującej w danych i opisywanie jej za pomocą

EntropiaKodowanie

DefinicjeProste sposoby kodowaniaKody statyczneKody semi-statyczne

Model bardziej złożony

W sekwencji występuje 30 symboli (litery, spacja, znakiinterpunkcyjne, znak nowego wiersza)

Entropia dla 30 symboli o jednakowym prawdopodobieństwiewystąpienia:

H(P) = −29∑i=0

130log2130≈ 4.91 bit

Sebastian Deorowicz Podstawy kompresji

Page 56: Podstawy kompresji - Algorytmy kompresji danychsun.aei.polsl.pl/~akd/wyklady/wyk02.pdf · Wydobywanie informacji o redundancji występującej w danych i opisywanie jej za pomocą

EntropiaKodowanie

DefinicjeProste sposoby kodowaniaKody statyczneKody semi-statyczne

Model bardziej złożony — kod

W sekwencji występuje 30 symboli, więc stosujemy kod5-bitowy pozwalający na reprezentowanie 32 symboli

Średnia długość kodu:

E (C ,P ′) = −31∑i=0

P ′(ai )|C (ai )| = 5.00 bit

Sebastian Deorowicz Podstawy kompresji

Page 57: Podstawy kompresji - Algorytmy kompresji danychsun.aei.polsl.pl/~akd/wyklady/wyk02.pdf · Wydobywanie informacji o redundancji występującej w danych i opisywanie jej za pomocą

EntropiaKodowanie

DefinicjeProste sposoby kodowaniaKody statyczneKody semi-statyczne

Model bardziej złożony — dodatkowe koszty

Konieczność przekazania do dekodera informacji o tym, któresymbole występują w sekwencji

Wymaga to 31 bajtów, co daje średnią na symbol sekwencjiwejściowej:

31× 8 bit153 symboli

≈ 1.62 bit/symbol

Łączna średnia długość kodu:

5.00 bit+ 1.62 bit = 6.62 bit

Sebastian Deorowicz Podstawy kompresji

Page 58: Podstawy kompresji - Algorytmy kompresji danychsun.aei.polsl.pl/~akd/wyklady/wyk02.pdf · Wydobywanie informacji o redundancji występującej w danych i opisywanie jej za pomocą

EntropiaKodowanie

DefinicjeProste sposoby kodowaniaKody statyczneKody semi-statyczne

Częstość występowania symboli w sekwencji

Symbol L. wystąpieńa 6c 3d 1e 18ę 4g 2h 1i 7j 10k 4l 1ł 4m 5n 5o 11

Symbol L. wystąpieńp 7r 6s 7ś 1t 2u 3w 1y 3z 2ż 5, 3. 3— 2

〈spacja〉 20〈nw〉 6

Sebastian Deorowicz Podstawy kompresji

Page 59: Podstawy kompresji - Algorytmy kompresji danychsun.aei.polsl.pl/~akd/wyklady/wyk02.pdf · Wydobywanie informacji o redundancji występującej w danych i opisywanie jej za pomocą

EntropiaKodowanie

DefinicjeProste sposoby kodowaniaKody statyczneKody semi-statyczne

Model uwzględniający częstość występowania symboliw sekwencji

Uwzględniając fakt, że różne symbole występują z różnymprawdopodobieństwem otrzymujemy entropię:

H(P) = −29∑i=0

P(ai ) log2 P(ai ) ≈ 4.45 bit

Sebastian Deorowicz Podstawy kompresji

Page 60: Podstawy kompresji - Algorytmy kompresji danychsun.aei.polsl.pl/~akd/wyklady/wyk02.pdf · Wydobywanie informacji o redundancji występującej w danych i opisywanie jej za pomocą

EntropiaKodowanie

DefinicjeProste sposoby kodowaniaKody statyczneKody semi-statyczne

Model wykorzystujący wiedzę o częstości występowaniasymboli

Wykorzystujemy więcej wiedzy — dwa najczęstsze symboleotrzymują kody o długości 4 bit

Średnia długość kodu:

E (C ,P ′) = −29∑i=0

P ′(ai )|C (ai )| = 4.75 bit

Sebastian Deorowicz Podstawy kompresji

Page 61: Podstawy kompresji - Algorytmy kompresji danychsun.aei.polsl.pl/~akd/wyklady/wyk02.pdf · Wydobywanie informacji o redundancji występującej w danych i opisywanie jej za pomocą

EntropiaKodowanie

DefinicjeProste sposoby kodowaniaKody statyczneKody semi-statyczne

Przykładowy kod

Symbol L. wystąpień Koda 6 00100c 3 00101d 1 00110e 18 0000ę 4 00111g 2 01000h 1 01001i 7 01010j 10 01011k 4 01100l 1 01101ł 4 01110m 5 01111n 5 10000o 11 10001

Symbol L. wystąpień Kodp 7 10010r 6 10011s 7 10100ś 1 10101t 2 10110u 3 10111w 1 11000y 3 11001z 2 11010ż 5 11011, 3 11100. 3 11101— 2 11110

〈spacja〉 20 0001〈nw〉 6 11111

Sebastian Deorowicz Podstawy kompresji

Page 62: Podstawy kompresji - Algorytmy kompresji danychsun.aei.polsl.pl/~akd/wyklady/wyk02.pdf · Wydobywanie informacji o redundancji występującej w danych i opisywanie jej za pomocą

EntropiaKodowanie

DefinicjeProste sposoby kodowaniaKody statyczneKody semi-statyczne

Dodatkowe koszty

Konieczność przesłania do dekodera informacji o tym, któresymbole występują w tekście i jak często

Wymaga to 31 bajtów i 30 razy po 5 bitów

Sebastian Deorowicz Podstawy kompresji

Page 63: Podstawy kompresji - Algorytmy kompresji danychsun.aei.polsl.pl/~akd/wyklady/wyk02.pdf · Wydobywanie informacji o redundancji występującej w danych i opisywanie jej za pomocą

EntropiaKodowanie

DefinicjeProste sposoby kodowaniaKody statyczneKody semi-statyczne

Dokładność modelu

Dokładniejszy model:możliwość przypisania kodów minimalizujących średnią długośćkodukonieczność przekazania do dekodera większej ilości informacjiopisujących model

Rozmiar opisu modelu bardziej istotny dla krótkich sekwencji

Sebastian Deorowicz Podstawy kompresji

Page 64: Podstawy kompresji - Algorytmy kompresji danychsun.aei.polsl.pl/~akd/wyklady/wyk02.pdf · Wydobywanie informacji o redundancji występującej w danych i opisywanie jej za pomocą

EntropiaKodowanie

DefinicjeProste sposoby kodowaniaKody statyczneKody semi-statyczne

Plan wykładu

1 EntropiaDefinicjaModelowanie i kodowanie

2 KodowanieDefinicjeProste sposoby kodowaniaKody statyczneKody semi-statyczne

Sebastian Deorowicz Podstawy kompresji

Page 65: Podstawy kompresji - Algorytmy kompresji danychsun.aei.polsl.pl/~akd/wyklady/wyk02.pdf · Wydobywanie informacji o redundancji występującej w danych i opisywanie jej za pomocą

EntropiaKodowanie

DefinicjeProste sposoby kodowaniaKody statyczneKody semi-statyczne

Kody statyczne

Definicja

Kod statyczny nie korzysta w żaden sposób z informacjio prawdopodobieństwie występowania symboli w kodowanejsekwencji

Sebastian Deorowicz Podstawy kompresji

Page 66: Podstawy kompresji - Algorytmy kompresji danychsun.aei.polsl.pl/~akd/wyklady/wyk02.pdf · Wydobywanie informacji o redundancji występującej w danych i opisywanie jej za pomocą

EntropiaKodowanie

DefinicjeProste sposoby kodowaniaKody statyczneKody semi-statyczne

Kody statyczne — cechy

Zalety

Bardzo szybkie kodowaniedzięki prostocie konstrukcjikodów i ich regularności

Brak potrzeby przesyłaniainformacji o budowie kodudo dekodera

Wady

Zwykle słaby współczynnikkompresji

Możliwa ekspansja danychjeśli rozkładprawdopodobieństwawystępowania symboli niepasuje do założonego przykonstrukcji kodu

Sebastian Deorowicz Podstawy kompresji

Page 67: Podstawy kompresji - Algorytmy kompresji danychsun.aei.polsl.pl/~akd/wyklady/wyk02.pdf · Wydobywanie informacji o redundancji występującej w danych i opisywanie jej za pomocą

EntropiaKodowanie

DefinicjeProste sposoby kodowaniaKody statyczneKody semi-statyczne

Kod unarny — definicja

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

Sebastian Deorowicz Podstawy kompresji

Page 68: Podstawy kompresji - Algorytmy kompresji danychsun.aei.polsl.pl/~akd/wyklady/wyk02.pdf · Wydobywanie informacji o redundancji występującej w danych i opisywanie jej za pomocą

EntropiaKodowanie

DefinicjeProste sposoby kodowaniaKody statyczneKody semi-statyczne

Kod unarny (kod α Eliasa)

Symbol Kod1 02 103 1104 11105 111106 1111107 11111108 111111109 11111111010 111111111011 1111111111012 11111111111013 111111111111014 1111111111111015 11111111111111016 1111111111111110

Sebastian Deorowicz Podstawy kompresji

Page 69: Podstawy kompresji - Algorytmy kompresji danychsun.aei.polsl.pl/~akd/wyklady/wyk02.pdf · Wydobywanie informacji o redundancji występującej w danych i opisywanie jej za pomocą

EntropiaKodowanie

DefinicjeProste sposoby kodowaniaKody statyczneKody semi-statyczne

Kod unarny — cechy

Cechy

Bardzo prosta budowa

Długie kody dla większości symboli powodują, że kompresjajest bardzo słaba, a często otrzymuje się ekspansję

Długość

x bitów

Zastosowania

Sytuacje, w których najwcześniejsze symbole w alfabeciewystępują o wiele częściej niż symbole dalsze

Część składowa innych kodów

Sebastian Deorowicz Podstawy kompresji

Page 70: Podstawy kompresji - Algorytmy kompresji danychsun.aei.polsl.pl/~akd/wyklady/wyk02.pdf · Wydobywanie informacji o redundancji występującej w danych i opisywanie jej za pomocą

EntropiaKodowanie

DefinicjeProste sposoby kodowaniaKody statyczneKody semi-statyczne

Kod binarny (kod β Eliasa) — definicja

Definicja

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

Sebastian Deorowicz Podstawy kompresji

Page 71: Podstawy kompresji - Algorytmy kompresji danychsun.aei.polsl.pl/~akd/wyklady/wyk02.pdf · Wydobywanie informacji o redundancji występującej w danych i opisywanie jej za pomocą

EntropiaKodowanie

DefinicjeProste sposoby kodowaniaKody statyczneKody semi-statyczne

Kod binarny (kod β Eliasa)

Symbol Kod1 12 103 114 1005 1016 1107 1118 10009 100110 101011 101112 110013 110114 111015 111016 10000

Sebastian Deorowicz Podstawy kompresji

Page 72: Podstawy kompresji - Algorytmy kompresji danychsun.aei.polsl.pl/~akd/wyklady/wyk02.pdf · Wydobywanie informacji o redundancji występującej w danych i opisywanie jej za pomocą

EntropiaKodowanie

DefinicjeProste sposoby kodowaniaKody statyczneKody semi-statyczne

Kod binarny (kod β Eliasa) — cechy

Cechy

Bardzo prosta budowa

Kod nie jest jednoznacznie dekodowalny, ponieważ nie jestznana jego długość

Długość

blog2 xc+ 1 bitów

Zastosowania

Część składowa innych kodów

Sebastian Deorowicz Podstawy kompresji

Page 73: Podstawy kompresji - Algorytmy kompresji danychsun.aei.polsl.pl/~akd/wyklady/wyk02.pdf · Wydobywanie informacji o redundancji występującej w danych i opisywanie jej za pomocą

EntropiaKodowanie

DefinicjeProste sposoby kodowaniaKody statyczneKody semi-statyczne

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ówprawdopodobieństwa występowania symboli

Konstrukcja

Pierwsza część kodu pełni rolę „selektora” zakresu

Druga część kodu opisuje liczby z zakresu wybranego przezwartość będącą selektorem

Sebastian Deorowicz Podstawy kompresji

Page 74: Podstawy kompresji - Algorytmy kompresji danychsun.aei.polsl.pl/~akd/wyklady/wyk02.pdf · Wydobywanie informacji o redundancji występującej w danych i opisywanie jej za pomocą

EntropiaKodowanie

DefinicjeProste sposoby kodowaniaKody statyczneKody semi-statyczne

Kod γ Eliasa — definicja

Definicja

Kod γ Eliasa reprezentujący liczbę x jest złożeniem kodu α dlaliczby blog2 xc+ 1 i kodu β dla liczby x bez wiodącego bitu 1

Interpretacja

Druga część kodu reprezentuje samą liczbę, podczas gdy pierwszaczęść opisuje długość kodu binarnego

Sebastian Deorowicz Podstawy kompresji

Page 75: Podstawy kompresji - Algorytmy kompresji danychsun.aei.polsl.pl/~akd/wyklady/wyk02.pdf · Wydobywanie informacji o redundancji występującej w danych i opisywanie jej za pomocą

EntropiaKodowanie

DefinicjeProste sposoby kodowaniaKody statyczneKody semi-statyczne

Kod γ Eliasa

Symbol Kod1 02 1003 1014 110005 110016 110107 110118 11100009 111000110 111001011 111001112 111010013 111010114 111011015 111011116 111100000

Sebastian Deorowicz Podstawy kompresji

Page 76: Podstawy kompresji - Algorytmy kompresji danychsun.aei.polsl.pl/~akd/wyklady/wyk02.pdf · Wydobywanie informacji o redundancji występującej w danych i opisywanie jej za pomocą

EntropiaKodowanie

DefinicjeProste sposoby kodowaniaKody statyczneKody semi-statyczne

Kod γ Eliasa — cechy

Cechy

Prosta budowa

Stosunkowo dobry współczynnik kompresji dla danych,w których prawdopodobieństwo występowania symboli malejedla kolejnych symboli alfabetu

Długość

1+ 2blog2 xc bitów

Zastosowania

Prawdopodobieństwo występowania symboli maleje dla kolejnychsymboli alfabetu

Sebastian Deorowicz Podstawy kompresji

Page 77: Podstawy kompresji - Algorytmy kompresji danychsun.aei.polsl.pl/~akd/wyklady/wyk02.pdf · Wydobywanie informacji o redundancji występującej w danych i opisywanie jej za pomocą

EntropiaKodowanie

DefinicjeProste sposoby kodowaniaKody statyczneKody semi-statyczne

Kod δ Eliasa — definicja

Definicja

Kod δ Eliasa reprezentujący liczbę x jest złożeniem kodu γdla liczby blog2 xc+ 1 i kodu β dla liczby x bez wiodącego bitu 1

Interpretacja

Druga część kodu reprezentuje samą liczbę, podczas gdy pierwszaczęść opisuje długość kodu binarnego

Sebastian Deorowicz Podstawy kompresji

Page 78: Podstawy kompresji - Algorytmy kompresji danychsun.aei.polsl.pl/~akd/wyklady/wyk02.pdf · Wydobywanie informacji o redundancji występującej w danych i opisywanie jej za pomocą

EntropiaKodowanie

DefinicjeProste sposoby kodowaniaKody statyczneKody semi-statyczne

Kod δ Eliasa

Symbol Kod1 02 10003 10014 101005 101016 101107 101118 110000009 1100000110 1100001011 1100001112 1100010013 1100010114 1100011015 1100011116 110010000

Sebastian Deorowicz Podstawy kompresji

Page 79: Podstawy kompresji - Algorytmy kompresji danychsun.aei.polsl.pl/~akd/wyklady/wyk02.pdf · Wydobywanie informacji o redundancji występującej w danych i opisywanie jej za pomocą

EntropiaKodowanie

DefinicjeProste sposoby kodowaniaKody statyczneKody semi-statyczne

Kod δ Eliasa — cechy

Cechy

Nieco bardziej skomplikowana budowa niż poprzednie kody

Dla x > 15 kod δ Eliasa nie dłuższy niż kod γ Eliasa

Długość

log2 x + log2 log2 x + O(log log log x) bitów

Zastosowania

Prawdopodobieństwo występowania symboli maleje dla kolejnychsymboli alfabetu

Sebastian Deorowicz Podstawy kompresji

Page 80: Podstawy kompresji - Algorytmy kompresji danychsun.aei.polsl.pl/~akd/wyklady/wyk02.pdf · Wydobywanie informacji o redundancji występującej w danych i opisywanie jej za pomocą

EntropiaKodowanie

DefinicjeProste sposoby kodowaniaKody statyczneKody semi-statyczne

Peter Elias (1923–2001)

Internet:http://web.mit.edu/newsoffice/2001/elias.html

Ważne daty1955 – Kody korekcyjnedo transmisji w zaszumionym kanale1975 – Kody ogólnego przeznaczenia

Sebastian Deorowicz Podstawy kompresji

Page 81: Podstawy kompresji - Algorytmy kompresji danychsun.aei.polsl.pl/~akd/wyklady/wyk02.pdf · Wydobywanie informacji o redundancji występującej w danych i opisywanie jej za pomocą

EntropiaKodowanie

DefinicjeProste sposoby kodowaniaKody statyczneKody semi-statyczne

Liczby Fibonacciego

Definicja

Liczby Fibonacciego definiuje następująca zależność rekurencyjna:

F1 = 1

F2 = 1

Fn = Fn−1 + Fn−2

Stosunek kolejnych liczb

limk→∞

Fk+1Fk

= ϕ =1+√5

2≈ 1.618

Sebastian Deorowicz Podstawy kompresji

Page 82: Podstawy kompresji - Algorytmy kompresji danychsun.aei.polsl.pl/~akd/wyklady/wyk02.pdf · Wydobywanie informacji o redundancji występującej w danych i opisywanie jej za pomocą

EntropiaKodowanie

DefinicjeProste sposoby kodowaniaKody statyczneKody semi-statyczne

Liczby Fibonacciego

Definicja

Liczby Fibonacciego definiuje następująca zależność rekurencyjna:

F1 = 1

F2 = 1

Fn = Fn−1 + Fn−2

Stosunek kolejnych liczb

limk→∞

Fk+1Fk

= ϕ =1+√5

2≈ 1.618

Sebastian Deorowicz Podstawy kompresji

Page 83: Podstawy kompresji - Algorytmy kompresji danychsun.aei.polsl.pl/~akd/wyklady/wyk02.pdf · Wydobywanie informacji o redundancji występującej w danych i opisywanie jej za pomocą

EntropiaKodowanie

DefinicjeProste sposoby kodowaniaKody statyczneKody semi-statyczne

Liczby Fibonacciego — reprezentacja Zeckendorfa

Twierdzenie

Każda liczba całkowita dodatnia może być zapisana jako sumaliczb różnych liczb Fibonacciego

Definicja

Reprezentacja Zeckendorfa to zapis binarny liczby, w którym każdybit odpowiada jednej liczbie Fibonacciego. Wartość bitu równa 1oznacza, że dana liczba Fibonacciego wchodzi do sumy. Pomijanajest w reprezentacji liczba F1

Przykład reprezentacji Zeckendorfa

16 = 1×13+0×8+0×5+1×3+0×2+0×1 −→ Z (16) = 10010020 = 1×13+0×8+1×5+0×3+1×2+0×1 −→ Z (20) = 101010

Sebastian Deorowicz Podstawy kompresji

Page 84: Podstawy kompresji - Algorytmy kompresji danychsun.aei.polsl.pl/~akd/wyklady/wyk02.pdf · Wydobywanie informacji o redundancji występującej w danych i opisywanie jej za pomocą

EntropiaKodowanie

DefinicjeProste sposoby kodowaniaKody statyczneKody semi-statyczne

Liczby Fibonacciego — reprezentacja Zeckendorfa

Twierdzenie

Każda liczba całkowita dodatnia może być zapisana jako sumaliczb różnych liczb Fibonacciego

Definicja

Reprezentacja Zeckendorfa to zapis binarny liczby, w którym każdybit odpowiada jednej liczbie Fibonacciego. Wartość bitu równa 1oznacza, że dana liczba Fibonacciego wchodzi do sumy. Pomijanajest w reprezentacji liczba F1

Przykład reprezentacji Zeckendorfa

16 = 1×13+0×8+0×5+1×3+0×2+0×1 −→ Z (16) = 10010020 = 1×13+0×8+1×5+0×3+1×2+0×1 −→ Z (20) = 101010

Sebastian Deorowicz Podstawy kompresji

Page 85: Podstawy kompresji - Algorytmy kompresji danychsun.aei.polsl.pl/~akd/wyklady/wyk02.pdf · Wydobywanie informacji o redundancji występującej w danych i opisywanie jej za pomocą

EntropiaKodowanie

DefinicjeProste sposoby kodowaniaKody statyczneKody semi-statyczne

Liczby Fibonacciego — reprezentacja Zeckendorfa

Twierdzenie

Każda liczba całkowita dodatnia może być zapisana jako sumaliczb różnych liczb Fibonacciego

Definicja

Reprezentacja Zeckendorfa to zapis binarny liczby, w którym każdybit odpowiada jednej liczbie Fibonacciego. Wartość bitu równa 1oznacza, że dana liczba Fibonacciego wchodzi do sumy. Pomijanajest w reprezentacji liczba F1

Przykład reprezentacji Zeckendorfa

16 = 1×13+0×8+0×5+1×3+0×2+0×1 −→ Z (16) = 10010020 = 1×13+0×8+1×5+0×3+1×2+0×1 −→ Z (20) = 101010

Sebastian Deorowicz Podstawy kompresji

Page 86: Podstawy kompresji - Algorytmy kompresji danychsun.aei.polsl.pl/~akd/wyklady/wyk02.pdf · Wydobywanie informacji o redundancji występującej w danych i opisywanie jej za pomocą

EntropiaKodowanie

DefinicjeProste sposoby kodowaniaKody statyczneKody semi-statyczne

Liczby Fibonacciego — odwrócona reprezentacjaZeckendorfa

Odwrócona reprezentacja Zeckendorfa

W trakcie kodowania wygodniejsza jest reprezentacja, w którejnajmniej 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

Sebastian Deorowicz Podstawy kompresji

Page 87: Podstawy kompresji - Algorytmy kompresji danychsun.aei.polsl.pl/~akd/wyklady/wyk02.pdf · Wydobywanie informacji o redundancji występującej w danych i opisywanie jej za pomocą

EntropiaKodowanie

DefinicjeProste sposoby kodowaniaKody statyczneKody semi-statyczne

Liczby Fibonacciego — odwrócona reprezentacjaZeckendorfa

Odwrócona reprezentacja Zeckendorfa

W trakcie kodowania wygodniejsza jest reprezentacja, w którejnajmniej 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

Sebastian Deorowicz Podstawy kompresji

Page 88: Podstawy kompresji - Algorytmy kompresji danychsun.aei.polsl.pl/~akd/wyklady/wyk02.pdf · Wydobywanie informacji o redundancji występującej w danych i opisywanie jej za pomocą

EntropiaKodowanie

DefinicjeProste sposoby kodowaniaKody statyczneKody semi-statyczne

Odwrócona reprezentacja Zeckendorfa — cechy

Wniosek

Każdą dodatnią liczbę całkowitą można przedstawić w odwróconejreprezentacji Zeckendorfa w taki sposób, aby nie zawierała dwóchnastę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 liczbyFibonacciego. Na podstawie definicji można takie dwa bityzamienić na jeden starszy bit, ponieważ odpowiada on liczbieFibonacciego będącej sumą dwóch młodszych liczb

Sebastian Deorowicz Podstawy kompresji

Page 89: Podstawy kompresji - Algorytmy kompresji danychsun.aei.polsl.pl/~akd/wyklady/wyk02.pdf · Wydobywanie informacji o redundancji występującej w danych i opisywanie jej za pomocą

EntropiaKodowanie

DefinicjeProste sposoby kodowaniaKody statyczneKody semi-statyczne

Odwrócona reprezentacja Zeckendorfa — cechy

Wniosek

Każdą dodatnią liczbę całkowitą można przedstawić w odwróconejreprezentacji Zeckendorfa w taki sposób, aby nie zawierała dwóchnastę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 liczbyFibonacciego. Na podstawie definicji można takie dwa bityzamienić na jeden starszy bit, ponieważ odpowiada on liczbieFibonacciego będącej sumą dwóch młodszych liczb

Sebastian Deorowicz Podstawy kompresji

Page 90: Podstawy kompresji - Algorytmy kompresji danychsun.aei.polsl.pl/~akd/wyklady/wyk02.pdf · Wydobywanie informacji o redundancji występującej w danych i opisywanie jej za pomocą

EntropiaKodowanie

DefinicjeProste sposoby kodowaniaKody statyczneKody semi-statyczne

Kod Fraenkela–Kleina C1 — definicja

Definicja

Kod Fraenkela–Kleina C1 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

Sebastian Deorowicz Podstawy kompresji

Page 91: Podstawy kompresji - Algorytmy kompresji danychsun.aei.polsl.pl/~akd/wyklady/wyk02.pdf · Wydobywanie informacji o redundancji występującej w danych i opisywanie jej za pomocą

EntropiaKodowanie

DefinicjeProste sposoby kodowaniaKody statyczneKody semi-statyczne

Kod Fraenkela–Kleina C1 — definicja

Definicja

Kod Fraenkela–Kleina C1 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

Sebastian Deorowicz Podstawy kompresji

Page 92: Podstawy kompresji - Algorytmy kompresji danychsun.aei.polsl.pl/~akd/wyklady/wyk02.pdf · Wydobywanie informacji o redundancji występującej w danych i opisywanie jej za pomocą

EntropiaKodowanie

DefinicjeProste sposoby kodowaniaKody statyczneKody semi-statyczne

Kod Fraenkela–Kleina C1 — przykład

Symbol Kod1 112 0113 00114 10115 000116 100117 010118 0000119 10001110 01001111 00101112 10101113 000001114 100001115 010001116 0010011

Sebastian Deorowicz Podstawy kompresji

Page 93: Podstawy kompresji - Algorytmy kompresji danychsun.aei.polsl.pl/~akd/wyklady/wyk02.pdf · Wydobywanie informacji o redundancji występującej w danych i opisywanie jej za pomocą

EntropiaKodowanie

DefinicjeProste sposoby kodowaniaKody statyczneKody semi-statyczne

Kod Fraenkela–Kleina C2 — definicja

Definicja

Kod Fraenkela–Kleina C2 tworzymy łącząc bity 10 z odwróconąreprezentacją Zeckendorfa liczby pomniejszonej o 1Liczba 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ą wyznaczeniegranic między kodami

Sebastian Deorowicz Podstawy kompresji

Page 94: Podstawy kompresji - Algorytmy kompresji danychsun.aei.polsl.pl/~akd/wyklady/wyk02.pdf · Wydobywanie informacji o redundancji występującej w danych i opisywanie jej za pomocą

EntropiaKodowanie

DefinicjeProste sposoby kodowaniaKody statyczneKody semi-statyczne

Kod Fraenkela–Kleina C2 — definicja

Definicja

Kod Fraenkela–Kleina C2 tworzymy łącząc bity 10 z odwróconąreprezentacją Zeckendorfa liczby pomniejszonej o 1Liczba 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ą wyznaczeniegranic między kodami

Sebastian Deorowicz Podstawy kompresji

Page 95: Podstawy kompresji - Algorytmy kompresji danychsun.aei.polsl.pl/~akd/wyklady/wyk02.pdf · Wydobywanie informacji o redundancji występującej w danych i opisywanie jej za pomocą

EntropiaKodowanie

DefinicjeProste sposoby kodowaniaKody statyczneKody semi-statyczne

Kod Fraenkela–Kleina C2 — przykład

Symbol Kod1 12 1013 10014 100015 101016 1000017 1010018 1001019 100000110 101000111 100100112 100010113 101010114 1000000115 1010000116 10010001

Sebastian Deorowicz Podstawy kompresji

Page 96: Podstawy kompresji - Algorytmy kompresji danychsun.aei.polsl.pl/~akd/wyklady/wyk02.pdf · Wydobywanie informacji o redundancji występującej w danych i opisywanie jej za pomocą

EntropiaKodowanie

DefinicjeProste sposoby kodowaniaKody statyczneKody semi-statyczne

Kod Fibonacciego — cechy

Zalety

Prosta budowa

Stosunkowo dobrywspółczynnik kompresji dladanych, w którychprawdopodobieństwowystępowania symbolimaleje dla kolejnych symbolialfabetu

Wady

Nieco trudniejszyw obliczaniu niżwcześniejsze kody

Sebastian Deorowicz Podstawy kompresji

Page 97: Podstawy kompresji - Algorytmy kompresji danychsun.aei.polsl.pl/~akd/wyklady/wyk02.pdf · Wydobywanie informacji o redundancji występującej w danych i opisywanie jej za pomocą

EntropiaKodowanie

DefinicjeProste sposoby kodowaniaKody statyczneKody semi-statyczne

Inne kody statyczne

Inne kody Fraenkela–Kleina oraz Apostolico–Fraenkela oparteo liczby Fibonacciego (także liczby Fibonacciego wyższychrzędów)

Kodowanie interpolacyjne

Kody Golomba

Kody Rice’a

Kody Goldbacha

Kody Wheelera

Sebastian Deorowicz Podstawy kompresji

Page 98: Podstawy kompresji - Algorytmy kompresji danychsun.aei.polsl.pl/~akd/wyklady/wyk02.pdf · Wydobywanie informacji o redundancji występującej w danych i opisywanie jej za pomocą

EntropiaKodowanie

DefinicjeProste sposoby kodowaniaKody statyczneKody semi-statyczne

Plan wykładu

1 EntropiaDefinicjaModelowanie i kodowanie

2 KodowanieDefinicjeProste sposoby kodowaniaKody statyczneKody semi-statyczne

Sebastian Deorowicz Podstawy kompresji

Page 99: Podstawy kompresji - Algorytmy kompresji danychsun.aei.polsl.pl/~akd/wyklady/wyk02.pdf · Wydobywanie informacji o redundancji występującej w danych i opisywanie jej za pomocą

EntropiaKodowanie

DefinicjeProste sposoby kodowaniaKody statyczneKody semi-statyczne

Kody semi-statyczne

Definicja

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

Sebastian Deorowicz Podstawy kompresji

Page 100: Podstawy kompresji - Algorytmy kompresji danychsun.aei.polsl.pl/~akd/wyklady/wyk02.pdf · Wydobywanie informacji o redundancji występującej w danych i opisywanie jej za pomocą

EntropiaKodowanie

DefinicjeProste sposoby kodowaniaKody statyczneKody semi-statyczne

Kody semi-statyczne — cechy

Zalety

Lepszy współczynnikkompresji dziękidostosowaniu kodudo rozkładuprawdopodobieństwawystępowania symboli

Możliwość zastosowaniakodów statycznych,w których najczęstszesymbole otrzymująnajkrótsze kody(reorganizacja alfabetu)

Wady

Wolniejsze działanie(konieczność wcześniejszegoprzeanalizowania sekwencji)

Konieczność przekazaniakodu do dekodera

Sebastian Deorowicz Podstawy kompresji

Page 101: Podstawy kompresji - Algorytmy kompresji danychsun.aei.polsl.pl/~akd/wyklady/wyk02.pdf · Wydobywanie informacji o redundancji występującej w danych i opisywanie jej za pomocą

EntropiaKodowanie

DefinicjeProste sposoby kodowaniaKody statyczneKody semi-statyczne

Koniec

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

Sebastian Deorowicz Podstawy kompresji