AKD Metody słownikowe Algorytmy kompresji danych Sebastian Deorowicz 2009 03 19 Sebastian Deorowicz () AKD Metody słownikowe 2009 03 19 1 / 38
Plan wykładu 1 Istota metod słownikowych 2 Algorytm Ziva Lempela 1977 i pochodne LZ77 LZSS Inne wersje 3 Algorytm Ziva Lempela 1978 i pochodne LZ78 LZW Inne wersje 4 Ogólny schemat kompresji oparty na LZ Co po LZ Huffman, kodowanie arytmetyczne Zastosowania LZ-ów Ciekawostki Sebastian Deorowicz () AKD Metody słownikowe 2009 03 19 2 / 38
Obserwacje dotyczące rzeczywistych sekwencji Obserwacje Uwaga Źródło danych często generuje ciągi symboli wielokrotnie się powtarzające (np. słowa w tekstach) Niektóre ciągi symboli powtarzają się częściej Powtarzające się ciągi symboli często występują blisko siebie (np. nazwa miasta w książce może często się powtarzać w jednym rozdziale, ale niekoniecznie musi występować w innych rozdziałach) Obserwacje mają charakter czysto empiryczny i trudno je opisać za pomocą jakiegoś modelu źródła danych Sebastian Deorowicz () AKD Metody słownikowe 2009 03 19 3 / 38
Obserwacje dotyczące rzeczywistych sekwencji Obserwacje Uwaga Źródło danych często generuje ciągi symboli wielokrotnie się powtarzające (np. słowa w tekstach) Niektóre ciągi symboli powtarzają się częściej Powtarzające się ciągi symboli często występują blisko siebie (np. nazwa miasta w książce może często się powtarzać w jednym rozdziale, ale niekoniecznie musi występować w innych rozdziałach) Obserwacje mają charakter czysto empiryczny i trudno je opisać za pomocą jakiegoś modelu źródła danych Sebastian Deorowicz () AKD Metody słownikowe 2009 03 19 3 / 38
Idea metod słownikowych Idea Zamiast zapisywać powtarzające się ciągi symboli (np. słowa) można zapisywać krótsze kody opisujące jak dawno temu dany ciąg symboli już wystąpił Im dłuższe powtórzenie tym lepiej Powtórzenia krótkie i bardzo odległe można zignorować bo ich opis zajmie dużo miejsca Sebastian Deorowicz () AKD Metody słownikowe 2009 03 19 4 / 38
Plan wykładu 1 Istota metod słownikowych 2 Algorytm Ziva Lempela 1977 i pochodne LZ77 LZSS Inne wersje 3 Algorytm Ziva Lempela 1978 i pochodne LZ78 LZW Inne wersje 4 Ogólny schemat kompresji oparty na LZ Co po LZ Huffman, kodowanie arytmetyczne Zastosowania LZ-ów Ciekawostki Sebastian Deorowicz () AKD Metody słownikowe 2009 03 19 5 / 38
Abraham Lempel (1936 ) Internet: http://www.hpl.hp.com/about/bios/ abraham_lempel.html Najważniejsze osiągnięcia 1977 1978 przełomowe prace z kompresji danych razem z Zivem Inne informacje Urodzony w Polsce, we Lwowie Do 2007 dyrektor laboratoriów HP w Izraelu Sebastian Deorowicz () AKD Metody słownikowe 2009 03 19 6 / 38
Jacob Ziv (1931 ) Najważniejsze osiągnięcia 1977 1978 przełomowe prace z kompresji danych razem z Lempelem Internet: http://viterbi.usc.edu/news/events/ viterbi_lecture/ziv.htm Inne informacje 1955 1959 pracownik izraelskiego ministerstwa obrony 1968 1970 pracownik laboratoriów Bella 1970 dziś pracownik Technion (Israel Institute of Technology) Sebastian Deorowicz () AKD Metody słownikowe 2009 03 19 7 / 38
LZ77 idea Idea algorytmu 1 Wyszukaj w zakodowanym już fragmencie sekwencji najdłuższego dopasowania (identycznego fragmentu) do fragmentu zaczynającego się na bieżącej pozycji 2 Zakoduj opis dopasowania jako trójkę offset, length, letter, gdzie: offset odległość od bieżącej pozycji, na której znaleziono najdłuższe dopasowanie length długość dopasowania letter litera znajdująca się za dopasowanym fragmentem 3 Przesuń się w kodowanej sekwencji o length + 1 bajtów Sebastian Deorowicz () AKD Metody słownikowe 2009 03 19 8 / 38
LZ77 dalej niż idea Jak daleko szukać dopasowań? Im dalej tym dłuższe dopasowania zapewne znajdziemy, ale tym też więcej miejsca zajmie zapis pola offset nawet jeśli dopasowanie było blisko Kompromis: nie dalej niż 32KB wstecz (przesuwające się okno) Jak długich szukać dopasowań? Im dłuższych dopasowań będziemy szukać, tym więcej miejsca zajmie zapis pola length nawet jeśli dopasowanie było krótkie Kompromis: nie dłuższych dopasowań niż 256 znaków Sebastian Deorowicz () AKD Metody słownikowe 2009 03 19 9 / 38
LZ77 dalej niż idea Jak daleko szukać dopasowań? Im dalej tym dłuższe dopasowania zapewne znajdziemy, ale tym też więcej miejsca zajmie zapis pola offset nawet jeśli dopasowanie było blisko Kompromis: nie dalej niż 32KB wstecz (przesuwające się okno) Jak długich szukać dopasowań? Im dłuższych dopasowań będziemy szukać, tym więcej miejsca zajmie zapis pola length nawet jeśli dopasowanie było krótkie Kompromis: nie dłuższych dopasowań niż 256 znaków Sebastian Deorowicz () AKD Metody słownikowe 2009 03 19 9 / 38
LZ77 przykład kodowania a b r a c a d a b r a d a b r a c a Sebastian Deorowicz () AKD Metody słownikowe 2009 03 19 10 / 38
LZ77 przykład kodowania a a a a a a a a a b r a c a d a b r a d a b r a c a Sebastian Deorowicz () AKD Metody słownikowe 2009 03 19 10 / 38
LZ77 przykład kodowania a a a a a a a a a b r a c a d a b r a d a b r a c a Sebastian Deorowicz () AKD Metody słownikowe 2009 03 19 10 / 38
LZ77 przykład kodowania a a a a a a a a a b r a c a d a b r a d a b r a c a 1 1 b Sebastian Deorowicz () AKD Metody słownikowe 2009 03 19 10 / 38
LZ77 przykład kodowania a a a a a a a a a b r a c a d a b r a d a b r a c a 1 1 b Sebastian Deorowicz () AKD Metody słownikowe 2009 03 19 10 / 38
LZ77 przykład kodowania a a a a a a a a a b r a c a d a b r a d a b r a c a 1 1 b 0 0 r Sebastian Deorowicz () AKD Metody słownikowe 2009 03 19 10 / 38
LZ77 przykład kodowania a a a a a a a a a b r a c a d a b r a d a b r a c a 1 1 b 0 0 r Sebastian Deorowicz () AKD Metody słownikowe 2009 03 19 10 / 38
LZ77 przykład kodowania a a a a a a a a a b r a c a d a b r a d a b r a c a 1 1 b 0 0 r 3 1 c Sebastian Deorowicz () AKD Metody słownikowe 2009 03 19 10 / 38
LZ77 przykład kodowania a a a a a a a a a b r a c a d a b r a d a b r a c a 1 1 b 0 0 r 3 1 c Sebastian Deorowicz () AKD Metody słownikowe 2009 03 19 10 / 38
LZ77 przykład kodowania a a a a a a a a a b r a c a d a b r a d a b r a c a 1 1 b 0 0 r 3 1 c 2 1 d Sebastian Deorowicz () AKD Metody słownikowe 2009 03 19 10 / 38
LZ77 przykład kodowania a a a a a a a a a b r a c a d a b r a d a b r a c a 1 1 b 0 0 r 3 1 c 2 1 d Sebastian Deorowicz () AKD Metody słownikowe 2009 03 19 10 / 38
LZ77 przykład kodowania a a a a a a a a a b r a c a d a b r a d a b r a c a 1 1 b 0 0 r 3 1 c 2 1 d 7 4 d Sebastian Deorowicz () AKD Metody słownikowe 2009 03 19 10 / 38
LZ77 przykład kodowania a a a a a a a a a b r a c a d a b r a d a b r a c a 1 1 b 0 0 r 3 1 c 2 1 d 7 4 d Sebastian Deorowicz () AKD Metody słownikowe 2009 03 19 10 / 38
LZ77 przykład kodowania a a a a a a a a a b r a c a d a b r a d a b r a c a 1 1 b 0 0 r 3 1 c 2 1 d 7 4 d 5 4 c Sebastian Deorowicz () AKD Metody słownikowe 2009 03 19 10 / 38
LZ77 przykład kodowania a a a a a a a a a b r a c a d a b r a d a b r a c a 1 1 b 0 0 r 3 1 c 2 1 d 7 4 d 5 4 c Sebastian Deorowicz () AKD Metody słownikowe 2009 03 19 10 / 38
LZ77 przykład kodowania a b r a c a d a b r a d a b r a c a 1 1 b 0 0 r 3 1 c 2 1 d 7 4 d 5 4 c 2 1 Sebastian Deorowicz () AKD Metody słownikowe 2009 03 19 10 / 38
LZ77 przykład dekodowania Sebastian Deorowicz () AKD Metody słownikowe 2009 03 19 11 / 38
LZ77 przykład dekodowania a a a a a a a a Sebastian Deorowicz () AKD Metody słownikowe 2009 03 19 11 / 38
LZ77 przykład dekodowania 1 1 b a a a a a a a a Sebastian Deorowicz () AKD Metody słownikowe 2009 03 19 11 / 38
LZ77 przykład dekodowania 1 1 b a a a a a a a a a b Sebastian Deorowicz () AKD Metody słownikowe 2009 03 19 11 / 38
LZ77 przykład dekodowania 1 1 b 0 0 r a a a a a a a a a b Sebastian Deorowicz () AKD Metody słownikowe 2009 03 19 11 / 38
LZ77 przykład dekodowania 1 1 b 0 0 r a a a a a a a a a b r Sebastian Deorowicz () AKD Metody słownikowe 2009 03 19 11 / 38
LZ77 przykład dekodowania 1 1 b 0 0 r 3 1 c a a a a a a a a a b r Sebastian Deorowicz () AKD Metody słownikowe 2009 03 19 11 / 38
LZ77 przykład dekodowania 1 1 b 0 0 r 3 1 c a a a a a a a a a b r a c Sebastian Deorowicz () AKD Metody słownikowe 2009 03 19 11 / 38
LZ77 przykład dekodowania 1 1 b 0 0 r 3 1 c 2 1 d a a a a a a a a a b r a c Sebastian Deorowicz () AKD Metody słownikowe 2009 03 19 11 / 38
LZ77 przykład dekodowania 1 1 b 0 0 r 3 1 c 2 1 d a a a a a a a a a b r a c a d Sebastian Deorowicz () AKD Metody słownikowe 2009 03 19 11 / 38
LZ77 przykład dekodowania 1 1 b 0 0 r 3 1 c 2 1 d 7 4 d a a a a a a a a a b r a c a d Sebastian Deorowicz () AKD Metody słownikowe 2009 03 19 11 / 38
LZ77 przykład dekodowania 1 1 b 0 0 r 3 1 c 2 1 d 7 4 d a a a a a a a a a b r a c a d a b r a d Sebastian Deorowicz () AKD Metody słownikowe 2009 03 19 11 / 38
LZ77 przykład dekodowania 1 1 b 0 0 r 3 1 c 2 1 d 7 4 d 5 4 c a a a a a a a a a b r a c a d a b r a d Sebastian Deorowicz () AKD Metody słownikowe 2009 03 19 11 / 38
LZ77 przykład dekodowania 1 1 b 0 0 r 3 1 c 2 1 d 7 4 d 5 4 c a a a a a a a a a b r a c a d a b r a d a b r a c Sebastian Deorowicz () AKD Metody słownikowe 2009 03 19 11 / 38
LZ77 przykład dekodowania 1 1 b 0 0 r 3 1 c 2 1 d 7 4 d 5 4 c 2 1 a a a a a a a a a b r a c a d a b r a d a b r a c Sebastian Deorowicz () AKD Metody słownikowe 2009 03 19 11 / 38
LZ77 przykład dekodowania 1 1 b 0 0 r 3 1 c 2 1 d 7 4 d 5 4 c 2 1 a a a a a a a a a b r a c a d a b r a d a b r a c a Sebastian Deorowicz () AKD Metody słownikowe 2009 03 19 11 / 38
LZ77 przykład dekodowania 1 1 b 0 0 r 3 1 c 2 1 d 7 4 d 5 4 c 2 1 a b r a c a d a b r a d a b r a c a Sebastian Deorowicz () AKD Metody słownikowe 2009 03 19 11 / 38
LZ77 technicznie Jak zapisywać trójki? offset 15 bitów length 8 bitów letter 8 bitów Jak szukać dopasowań? Drzewo poszukiwań binarnych (Bell, 1986) Drzewo trie (Bell, 1986) Tablica mieszająca (Brent, 1987) Sebastian Deorowicz () AKD Metody słownikowe 2009 03 19 12 / 38
LZ77 technicznie tablica mieszająca, wyszukiwanie Tab. miesz.......... a b r d... z u c f... a b r a c d... a b r a d... a b r a c a Sebastian Deorowicz () AKD Metody słownikowe 2009 03 19 13 / 38
LZ77 technicznie tablica mieszająca, wyszukiwanie Tab. miesz.......... a b r d... z u c f... a b r a c d... a b r a d... a b r a c a Sebastian Deorowicz () AKD Metody słownikowe 2009 03 19 13 / 38
LZ77 technicznie tablica mieszająca, wyszukiwanie Tab. miesz.......... a b r d... z u c f... a b r a c d... a b r a d... a b r a c a Sebastian Deorowicz () AKD Metody słownikowe 2009 03 19 13 / 38
LZ77 technicznie tablica mieszająca, wyszukiwanie Tab. miesz.......... a b r d... z u c f... a b r a c d... a b r a d... a b r a c a Sebastian Deorowicz () AKD Metody słownikowe 2009 03 19 13 / 38
LZ77 technicznie tablica mieszająca, wyszukiwanie Tab. miesz.......... a b r d... z u c f... a b r a c d... a b r a d... a b r a c a Sebastian Deorowicz () AKD Metody słownikowe 2009 03 19 13 / 38
LZ77 technicznie tablica mieszająca, wyszukiwanie Tab. miesz.......... a b r d... z u c f... a b r a c d... a b r a d... a b r a c a Sebastian Deorowicz () AKD Metody słownikowe 2009 03 19 13 / 38
LZ77 technicznie tablica mieszająca, wyszukiwanie Tab. miesz.......... a b r d... z u c f... a b r a c d... a b r a d... a b r a c a Sebastian Deorowicz () AKD Metody słownikowe 2009 03 19 13 / 38
LZ77 technicznie tablica mieszająca, wyszukiwanie Tab. miesz.......... a b r d... z u c f... a b r a c d... a b r a d... a b r a c a Sebastian Deorowicz () AKD Metody słownikowe 2009 03 19 13 / 38
LZ77 technicznie tablica mieszająca Dodawanie wpisów do tablicy mieszającej Po zakodowaniu dopasowania długości length wszystkie pozycje zaczynające się na zakodowanych length + 1 symbolach są dodawane do tablicy mieszającej Usuwanie wpisów z tablicy mieszającej Po zakodowaniu length symboli należy wyrzucić z tablicy mieszającej te pozycje, które wysunęły się z okna, w którym wyszukujemy dopasowania Sebastian Deorowicz () AKD Metody słownikowe 2009 03 19 14 / 38
LZ77 technicznie tablica mieszająca Dodawanie wpisów do tablicy mieszającej Po zakodowaniu dopasowania długości length wszystkie pozycje zaczynające się na zakodowanych length + 1 symbolach są dodawane do tablicy mieszającej Usuwanie wpisów z tablicy mieszającej Po zakodowaniu length symboli należy wyrzucić z tablicy mieszającej te pozycje, które wysunęły się z okna, w którym wyszukujemy dopasowania Sebastian Deorowicz () AKD Metody słownikowe 2009 03 19 14 / 38
LZ77 główne wady Główne wady Opis krótkich dopasowań zajmuje dużo miejsca Wyszukiwanie dopasowań może być bardzo wolne trzeba dobrze to oprogramować Sebastian Deorowicz () AKD Metody słownikowe 2009 03 19 15 / 38
Plan wykładu 1 Istota metod słownikowych 2 Algorytm Ziva Lempela 1977 i pochodne LZ77 LZSS Inne wersje 3 Algorytm Ziva Lempela 1978 i pochodne LZ78 LZW Inne wersje 4 Ogólny schemat kompresji oparty na LZ Co po LZ Huffman, kodowanie arytmetyczne Zastosowania LZ-ów Ciekawostki Sebastian Deorowicz () AKD Metody słownikowe 2009 03 19 16 / 38
LZSS idea Idea algorytmu Zbyt krótkie (zwykle krótsze niż 3 znaki) dopasowania są ignorowane Stosujemy flagę bitową do określenia czy zapisujemy dopasowanie czy przesuwamy się tylko o 1 znak do przodu Jeśli nie ma dopasowania, to zapisujemy: 1, letter Jeśli jest dopasowanie, to opisujemy je: 0, offset, length Sebastian Deorowicz () AKD Metody słownikowe 2009 03 19 17 / 38
LZSS przykład kodowania a b r a c a d a b r a d a b r a c a Sebastian Deorowicz () AKD Metody słownikowe 2009 03 19 18 / 38
LZSS przykład kodowania a a a a a a a a a b r a c a d a b r a d a b r a c a Sebastian Deorowicz () AKD Metody słownikowe 2009 03 19 18 / 38
LZSS przykład kodowania a a a a a a a a a b r a c a d a b r a d a b r a c a Sebastian Deorowicz () AKD Metody słownikowe 2009 03 19 18 / 38
LZSS przykład kodowania a a a a a a a a a b r a c a d a b r a d a b r a c a 0 1 1 Sebastian Deorowicz () AKD Metody słownikowe 2009 03 19 18 / 38
LZSS przykład kodowania a a a a a a a a a b r a c a d a b r a d a b r a c a 0 1 1 Sebastian Deorowicz () AKD Metody słownikowe 2009 03 19 18 / 38
LZSS przykład kodowania a a a a a a a a a b r a c a d a b r a d a b r a c a 0 1 1 1 b Sebastian Deorowicz () AKD Metody słownikowe 2009 03 19 18 / 38
LZSS przykład kodowania a a a a a a a a a b r a c a d a b r a d a b r a c a 0 1 1 1 b Sebastian Deorowicz () AKD Metody słownikowe 2009 03 19 18 / 38
LZSS przykład kodowania a a a a a a a a a b r a c a d a b r a d a b r a c a 0 1 1 1 b 1 r Sebastian Deorowicz () AKD Metody słownikowe 2009 03 19 18 / 38
LZSS przykład kodowania a a a a a a a a a b r a c a d a b r a d a b r a c a 0 1 1 1 b 1 r Sebastian Deorowicz () AKD Metody słownikowe 2009 03 19 18 / 38
LZSS przykład kodowania a a a a a a a a a b r a c a d a b r a d a b r a c a 0 1 1 1 b 1 r 0 3 1 Sebastian Deorowicz () AKD Metody słownikowe 2009 03 19 18 / 38
LZSS przykład kodowania a a a a a a a a a b r a c a d a b r a d a b r a c a 0 1 1 1 b 1 r 0 3 1 Sebastian Deorowicz () AKD Metody słownikowe 2009 03 19 18 / 38
LZSS przykład kodowania a a a a a a a a a b r a c a d a b r a d a b r a c a 0 1 1 1 b 1 r 0 3 1 1 c Sebastian Deorowicz () AKD Metody słownikowe 2009 03 19 18 / 38
LZSS przykład kodowania a a a a a a a a a b r a c a d a b r a d a b r a c a 0 1 1 1 b 1 r 0 3 1 1 c Sebastian Deorowicz () AKD Metody słownikowe 2009 03 19 18 / 38
LZSS przykład kodowania a a a a a a a a a b r a c a d a b r a d a b r a c a 0 1 1 1 b 1 r 0 3 1 1 c 0 2 1 Sebastian Deorowicz () AKD Metody słownikowe 2009 03 19 18 / 38
LZSS przykład kodowania a a a a a a a a a b r a c a d a b r a d a b r a c a 0 1 1 1 b 1 r 0 3 1 1 c 0 2 1 Sebastian Deorowicz () AKD Metody słownikowe 2009 03 19 18 / 38
LZSS przykład kodowania a a a a a a a a a b r a c a d a b r a d a b r a c a 0 1 1 1 b 1 r 0 3 1 1 c 0 2 1 1 d Sebastian Deorowicz () AKD Metody słownikowe 2009 03 19 18 / 38
LZSS przykład kodowania a a a a a a a a a b r a c a d a b r a d a b r a c a 0 1 1 1 b 1 r 0 3 1 1 c 0 2 1 1 d Sebastian Deorowicz () AKD Metody słownikowe 2009 03 19 18 / 38
LZSS przykład kodowania a a a a a a a a a b r a c a d a b r a d a b r a c a 0 1 1 1 b 1 r 0 3 1 1 c 0 2 1 1 d 0 7 4 Sebastian Deorowicz () AKD Metody słownikowe 2009 03 19 18 / 38
LZSS przykład kodowania a a a a a a a a a b r a c a d a b r a d a b r a c a 0 1 1 1 b 1 r 0 3 1 1 c 0 2 1 1 d 0 7 4 Sebastian Deorowicz () AKD Metody słownikowe 2009 03 19 18 / 38
LZSS przykład kodowania a a a a a a a a a b r a c a d a b r a d a b r a c a 0 1 1 1 b 1 r 0 3 1 1 c 0 2 1 1 d 0 7 4 0 5 4 Sebastian Deorowicz () AKD Metody słownikowe 2009 03 19 18 / 38
LZSS przykład kodowania a a a a a a a a a b r a c a d a b r a d a b r a c a 0 1 1 1 b 1 r 0 3 1 1 c 0 2 1 1 d 0 7 4 0 5 4 Sebastian Deorowicz () AKD Metody słownikowe 2009 03 19 18 / 38
LZSS przykład kodowania a a a a a a a a a b r a c a d a b r a d a b r a c a 0 1 1 1 b 1 r 0 3 1 1 c 0 2 1 1 d 0 7 4 0 5 4 0 3 1 Sebastian Deorowicz () AKD Metody słownikowe 2009 03 19 18 / 38
LZSS przykład kodowania a a a a a a a a a b r a c a d a b r a d a b r a c a 0 1 1 1 b 1 r 0 3 1 1 c 0 2 1 1 d 0 7 4 0 5 4 0 3 1 Sebastian Deorowicz () AKD Metody słownikowe 2009 03 19 18 / 38
LZSS przykład kodowania a a a a a a a a a b r a c a d a b r a d a b r a c a 0 1 1 1 b 1 r 0 3 1 1 c 0 2 1 1 d 0 7 4 0 5 4 0 3 1 1 c Sebastian Deorowicz () AKD Metody słownikowe 2009 03 19 18 / 38
LZSS przykład kodowania a a a a a a a a a b r a c a d a b r a d a b r a c a 0 1 1 1 b 1 r 0 3 1 1 c 0 2 1 1 d 0 7 4 0 5 4 0 3 1 1 c Sebastian Deorowicz () AKD Metody słownikowe 2009 03 19 18 / 38
LZSS przykład kodowania a b r a c a d a b r a d a b r a c a 0 1 1 1 b 1 r 0 3 1 1 c 0 2 1 1 d 0 7 4 0 5 4 0 3 1 1 c 0 2 1 Sebastian Deorowicz () AKD Metody słownikowe 2009 03 19 18 / 38
Plan wykładu 1 Istota metod słownikowych 2 Algorytm Ziva Lempela 1977 i pochodne LZ77 LZSS Inne wersje 3 Algorytm Ziva Lempela 1978 i pochodne LZ78 LZW Inne wersje 4 Ogólny schemat kompresji oparty na LZ Co po LZ Huffman, kodowanie arytmetyczne Zastosowania LZ-ów Ciekawostki Sebastian Deorowicz () AKD Metody słownikowe 2009 03 19 19 / 38
LZ77 inne wersje Inne wersje 1 LZR brak ograniczenia długości przesunięcia; odległość kodowana za pomocą kodu ω Eliasa (Rodeh i inni, 1981) LZB wersja LZSS; dynamicznie dopasowywany do potrzeb rozmiar pola odległości; brak ograniczenia na długość dopasowania; długość dopasowania kodowana kodem γ Eliasa (Bell, 1987) LZH odległość i długość dopasowania kodowana kodem Huffmana (Brent, 1987) LZS algorytm opracowany na potrzeby programu Stacker (Stac Electronics,?) 1 Dane na podstawie T. Bell, I.H. Witten, J.G. Cleary, Modelling Text Compression, ACM Comp. Surv. 1989 Sebastian Deorowicz () AKD Metody słownikowe 2009 03 19 20 / 38
LZ77 inne wersje Inne wersje 1 LZR brak ograniczenia długości przesunięcia; odległość kodowana za pomocą kodu ω Eliasa (Rodeh i inni, 1981) LZB wersja LZSS; dynamicznie dopasowywany do potrzeb rozmiar pola odległości; brak ograniczenia na długość dopasowania; długość dopasowania kodowana kodem γ Eliasa (Bell, 1987) LZH odległość i długość dopasowania kodowana kodem Huffmana (Brent, 1987) LZS algorytm opracowany na potrzeby programu Stacker (Stac Electronics,?) 1 Dane na podstawie T. Bell, I.H. Witten, J.G. Cleary, Modelling Text Compression, ACM Comp. Surv. 1989 Sebastian Deorowicz () AKD Metody słownikowe 2009 03 19 20 / 38
LZ77 inne wersje Inne wersje 1 LZR brak ograniczenia długości przesunięcia; odległość kodowana za pomocą kodu ω Eliasa (Rodeh i inni, 1981) LZB wersja LZSS; dynamicznie dopasowywany do potrzeb rozmiar pola odległości; brak ograniczenia na długość dopasowania; długość dopasowania kodowana kodem γ Eliasa (Bell, 1987) LZH odległość i długość dopasowania kodowana kodem Huffmana (Brent, 1987) LZS algorytm opracowany na potrzeby programu Stacker (Stac Electronics,?) 1 Dane na podstawie T. Bell, I.H. Witten, J.G. Cleary, Modelling Text Compression, ACM Comp. Surv. 1989 Sebastian Deorowicz () AKD Metody słownikowe 2009 03 19 20 / 38
LZ77 inne wersje Inne wersje 1 LZR brak ograniczenia długości przesunięcia; odległość kodowana za pomocą kodu ω Eliasa (Rodeh i inni, 1981) LZB wersja LZSS; dynamicznie dopasowywany do potrzeb rozmiar pola odległości; brak ograniczenia na długość dopasowania; długość dopasowania kodowana kodem γ Eliasa (Bell, 1987) LZH odległość i długość dopasowania kodowana kodem Huffmana (Brent, 1987) LZS algorytm opracowany na potrzeby programu Stacker (Stac Electronics,?) 1 Dane na podstawie T. Bell, I.H. Witten, J.G. Cleary, Modelling Text Compression, ACM Comp. Surv. 1989 Sebastian Deorowicz () AKD Metody słownikowe 2009 03 19 20 / 38
Plan wykładu 1 Istota metod słownikowych 2 Algorytm Ziva Lempela 1977 i pochodne LZ77 LZSS Inne wersje 3 Algorytm Ziva Lempela 1978 i pochodne LZ78 LZW Inne wersje 4 Ogólny schemat kompresji oparty na LZ Co po LZ Huffman, kodowanie arytmetyczne Zastosowania LZ-ów Ciekawostki Sebastian Deorowicz () AKD Metody słownikowe 2009 03 19 21 / 38
LZ78 idea Idea algorytmu 1 Utrzymuj słownik zawierający niektóre fragmenty sekwencji do tej pory zakodowanej 2 Dla każdej pozycji w sekwencji wyszukaj w słowniku najdłuższy ciąg identyczny z bieżącym fragmentem sekwencji 3 Zakoduj opis dopasowania jako parę index, letter, gdzie: index index znalezionej pozycji w słowniku letter litera znajdująca się za dopasowanym fragmentem 4 Dodaj do słownika nową frazę składającą się ze znalezionej frazy i litery letter 5 Przesuń się w kodowanej sekwencji o zakodowaną liczbę bajtów Sebastian Deorowicz () AKD Metody słownikowe 2009 03 19 22 / 38
LZ78 dalej niż idea Jak duży słownik? Im większy tym dłuższe znajdziemy dopasowania, tym też więcej miejsca zajmie index Kompromis: słownik o maksymalnym rozmiarze 4096 pozycji Słownik się zapełnił i co dalej? Możliwość 1: Zamrozić słownik i niczego już nie dodawać Możliwość 2: Opróżnić słownik Sebastian Deorowicz () AKD Metody słownikowe 2009 03 19 23 / 38
LZ78 dalej niż idea Jak duży słownik? Im większy tym dłuższe znajdziemy dopasowania, tym też więcej miejsca zajmie index Kompromis: słownik o maksymalnym rozmiarze 4096 pozycji Słownik się zapełnił i co dalej? Możliwość 1: Zamrozić słownik i niczego już nie dodawać Możliwość 2: Opróżnić słownik Sebastian Deorowicz () AKD Metody słownikowe 2009 03 19 23 / 38
LZ78 technicznie Jak zapisywać pary? index tyle bitów ile potrzeba do zakodowania maksymalnego indeksu ze słownika letter 8 bitów Jak szukać dopasowań? Drzewo trie Tablica mieszająca Sebastian Deorowicz () AKD Metody słownikowe 2009 03 19 24 / 38
LZ78 technicznie Jak zapisywać pary? index tyle bitów ile potrzeba do zakodowania maksymalnego indeksu ze słownika letter 8 bitów Jak szukać dopasowań? Drzewo trie Tablica mieszająca Sebastian Deorowicz () AKD Metody słownikowe 2009 03 19 24 / 38
LZ78 przykład kodowania a b r a c a d a b r a d a b r a c a Słownik Sebastian Deorowicz () AKD Metody słownikowe 2009 03 19 25 / 38
LZ78 przykład kodowania a b r a c a d a b r a d a b r a c a Słownik Sebastian Deorowicz () AKD Metody słownikowe 2009 03 19 25 / 38
LZ78 przykład kodowania a b r a c a d a b r a d a b r a c a 0 a 1 a Słownik Sebastian Deorowicz () AKD Metody słownikowe 2009 03 19 25 / 38
LZ78 przykład kodowania a b r a c a d a b r a d a b r a c a 0 a 1 a Słownik Sebastian Deorowicz () AKD Metody słownikowe 2009 03 19 25 / 38
LZ78 przykład kodowania a b r a c a d a b r a d a b r a c a 0 a 0 b 1 a 2 b Słownik Sebastian Deorowicz () AKD Metody słownikowe 2009 03 19 25 / 38
LZ78 przykład kodowania a b r a c a d a b r a d a b r a c a 0 a 0 b 1 a 2 b Słownik Sebastian Deorowicz () AKD Metody słownikowe 2009 03 19 25 / 38
LZ78 przykład kodowania a b r a c a d a b r a d a b r a c a 0 a 0 b 0 r 1 a 2 b 3 r Słownik Sebastian Deorowicz () AKD Metody słownikowe 2009 03 19 25 / 38
LZ78 przykład kodowania a b r a c a d a b r a d a b r a c a 0 a 0 b 0 r 1 a 2 b 3 r Słownik Sebastian Deorowicz () AKD Metody słownikowe 2009 03 19 25 / 38
LZ78 przykład kodowania a b r a c a d a b r a d a b r a c a 0 a 0 b 0 r 1 c 1 a 2 b 3 r 4 ac Słownik Sebastian Deorowicz () AKD Metody słownikowe 2009 03 19 25 / 38
LZ78 przykład kodowania a b r a c a d a b r a d a b r a c a 0 a 0 b 0 r 1 c 1 a 2 b 3 r 4 ac Słownik Sebastian Deorowicz () AKD Metody słownikowe 2009 03 19 25 / 38
LZ78 przykład kodowania a b r a c a d a b r a d a b r a c a 0 a 0 b 0 r 1 c 1 d 1 a 2 b 3 r 4 ac 5 ad Słownik Sebastian Deorowicz () AKD Metody słownikowe 2009 03 19 25 / 38
LZ78 przykład kodowania a b r a c a d a b r a d a b r a c a 0 a 0 b 0 r 1 c 1 d 1 a 2 b 3 r 4 ac 5 ad Słownik Sebastian Deorowicz () AKD Metody słownikowe 2009 03 19 25 / 38
LZ78 przykład kodowania a b r a c a d a b r a d a b r a c a 0 a 0 b 0 r 1 c 1 d 1 b 1 a 2 b 3 r 4 ac 5 ad Słownik 6 ab Sebastian Deorowicz () AKD Metody słownikowe 2009 03 19 25 / 38
LZ78 przykład kodowania a b r a c a d a b r a d a b r a c a 0 a 0 b 0 r 1 c 1 d 1 b 1 a 2 b 3 r 4 ac 5 ad Słownik 6 ab Sebastian Deorowicz () AKD Metody słownikowe 2009 03 19 25 / 38
LZ78 przykład kodowania a b r a c a d a b r a d a b r a c a 0 a 0 b 0 r 1 c 1 d 1 b 3 a 1 a 2 b 3 r 4 ac 5 ad Słownik 6 ab 7 ra Sebastian Deorowicz () AKD Metody słownikowe 2009 03 19 25 / 38
LZ78 przykład kodowania a b r a c a d a b r a d a b r a c a 0 a 0 b 0 r 1 c 1 d 1 b 3 a 1 a 2 b 3 r 4 ac 5 ad Słownik 6 ab 7 ra Sebastian Deorowicz () AKD Metody słownikowe 2009 03 19 25 / 38
LZ78 przykład kodowania a b r a c a d a b r a d a b r a c a 0 a 0 b 0 r 1 c 1 d 1 b 3 a 0 d 1 a 2 b 3 r 4 ac 5 ad Słownik 6 ab 7 ra 8 d Sebastian Deorowicz () AKD Metody słownikowe 2009 03 19 25 / 38
LZ78 przykład kodowania a b r a c a d a b r a d a b r a c a 0 a 0 b 0 r 1 c 1 d 1 b 3 a 0 d 1 a 2 b 3 r 4 ac 5 ad Słownik 6 ab 7 ra 8 d Sebastian Deorowicz () AKD Metody słownikowe 2009 03 19 25 / 38
LZ78 przykład kodowania a b r a c a d a b r a d a b r a c a 0 a 0 b 0 r 1 c 1 d 1 b 3 a 0 d 6 r 1 a 2 b 3 r 4 ac 5 ad Słownik 6 ab 7 ra 8 d 9 abr Sebastian Deorowicz () AKD Metody słownikowe 2009 03 19 25 / 38
LZ78 przykład kodowania a b r a c a d a b r a d a b r a c a 0 a 0 b 0 r 1 c 1 d 1 b 3 a 0 d 6 r 1 a 2 b 3 r 4 ac 5 ad Słownik 6 ab 7 ra 8 d 9 abr Sebastian Deorowicz () AKD Metody słownikowe 2009 03 19 25 / 38
LZ78 przykład kodowania a b r a c a d a b r a d a b r a c a 0 a 0 b 0 r 1 c 1 d 1 b 3 a 0 d 6 r 4 a 1 a 2 b 3 r 4 ac 5 ad Słownik 6 ab 7 ra 8 d 9 abr 10 aca Sebastian Deorowicz () AKD Metody słownikowe 2009 03 19 25 / 38
LZ78 Główne wady Słownik rośnie szybko i bez ograniczeń trzeba go okresowo okrajać Długie dopasowania pojawiają się po długim czasie słownik preferuje krótkie dopasowania Sebastian Deorowicz () AKD Metody słownikowe 2009 03 19 26 / 38
Plan wykładu 1 Istota metod słownikowych 2 Algorytm Ziva Lempela 1977 i pochodne LZ77 LZSS Inne wersje 3 Algorytm Ziva Lempela 1978 i pochodne LZ78 LZW Inne wersje 4 Ogólny schemat kompresji oparty na LZ Co po LZ Huffman, kodowanie arytmetyczne Zastosowania LZ-ów Ciekawostki Sebastian Deorowicz () AKD Metody słownikowe 2009 03 19 27 / 38
LZW Idea ulepszenia Wszystkie symbole alfabetu dodane na początku do słownika Szukamy dopasowania tak jak w LZ78, ale kodujemy tylko index Nie kodujemy litery znajdującej się za znalezionym dopasowaniem! Zaczynamy wyszukiwanie następnego dopasowania od tej litery Dodajemy frazy do słownika jak w LZ78 Sebastian Deorowicz () AKD Metody słownikowe 2009 03 19 28 / 38
LZW przykład kodowania a b r a c a d a b r a d a b r a c a Słownik Sebastian Deorowicz () AKD Metody słownikowe 2009 03 19 29 / 38
LZW przykład kodowania a b r a c a d a b r a d a b r a c a 1 a 2 b 3 c 4 d 5 r Słownik Sebastian Deorowicz () AKD Metody słownikowe 2009 03 19 29 / 38
LZW przykład kodowania a b r a c a d a b r a d a b r a c a 1 a 2 b 3 c 4 d 5 r Słownik Sebastian Deorowicz () AKD Metody słownikowe 2009 03 19 29 / 38
LZW przykład kodowania a b r a c a d a b r a d a b r a c a 1 1 a 2 b 3 c 4 d 5 r 6 ab Słownik Sebastian Deorowicz () AKD Metody słownikowe 2009 03 19 29 / 38
LZW przykład kodowania a b r a c a d a b r a d a b r a c a 1 1 a 2 b 3 c 4 d 5 r 6 ab Słownik Sebastian Deorowicz () AKD Metody słownikowe 2009 03 19 29 / 38
LZW przykład kodowania a b r a c a d a b r a d a b r a c a 1 2 1 a 2 b 3 c 4 d 5 r 6 ab 7 br Słownik Sebastian Deorowicz () AKD Metody słownikowe 2009 03 19 29 / 38
LZW przykład kodowania a b r a c a d a b r a d a b r a c a 1 2 1 a 2 b 3 c 4 d 5 r 6 ab 7 br Słownik Sebastian Deorowicz () AKD Metody słownikowe 2009 03 19 29 / 38
LZW przykład kodowania a b r a c a d a b r a d a b r a c a 1 2 5 1 a 2 b 3 c 4 d 5 r 6 ab 7 br 8 ra Słownik Sebastian Deorowicz () AKD Metody słownikowe 2009 03 19 29 / 38
LZW przykład kodowania a b r a c a d a b r a d a b r a c a 1 2 5 1 a 2 b 3 c 4 d 5 r 6 ab 7 br 8 ra Słownik Sebastian Deorowicz () AKD Metody słownikowe 2009 03 19 29 / 38
LZW przykład kodowania a b r a c a d a b r a d a b r a c a 1 2 5 1 1 a 2 b 3 c 4 d 5 r 6 ab 7 br 8 ra 9 ac Słownik Sebastian Deorowicz () AKD Metody słownikowe 2009 03 19 29 / 38
LZW przykład kodowania a b r a c a d a b r a d a b r a c a 1 2 5 1 1 a 2 b 3 c 4 d 5 r 6 ab 7 br 8 ra 9 ac Słownik Sebastian Deorowicz () AKD Metody słownikowe 2009 03 19 29 / 38
LZW przykład kodowania a b r a c a d a b r a d a b r a c a 1 2 5 1 3 1 a 2 b 3 c 4 d 5 r 6 ab 7 br 8 ra 9 ac 10 ca Słownik Sebastian Deorowicz () AKD Metody słownikowe 2009 03 19 29 / 38
LZW przykład kodowania a b r a c a d a b r a d a b r a c a 1 2 5 1 3 1 a 2 b 3 c 4 d 5 r 6 ab 7 br 8 ra 9 ac 10 ca Słownik Sebastian Deorowicz () AKD Metody słownikowe 2009 03 19 29 / 38
LZW przykład kodowania a b r a c a d a b r a d a b r a c a 1 2 5 1 3 1 1 a 2 b 3 c 4 d 5 r 6 ab 7 br 8 ra 9 ac 10 ca Słownik 11 ad Sebastian Deorowicz () AKD Metody słownikowe 2009 03 19 29 / 38
LZW przykład kodowania a b r a c a d a b r a d a b r a c a 1 2 5 1 3 1 1 a 2 b 3 c 4 d 5 r 6 ab 7 br 8 ra 9 ac 10 ca Słownik 11 ad Sebastian Deorowicz () AKD Metody słownikowe 2009 03 19 29 / 38
LZW przykład kodowania a b r a c a d a b r a d a b r a c a 1 2 5 1 3 1 4 1 a 2 b 3 c 4 d 5 r 6 ab 7 br 8 ra 9 ac 10 ca Słownik 11 ad 12 da Sebastian Deorowicz () AKD Metody słownikowe 2009 03 19 29 / 38
LZW przykład kodowania a b r a c a d a b r a d a b r a c a 1 2 5 1 3 1 4 1 a 2 b 3 c 4 d 5 r 6 ab 7 br 8 ra 9 ac 10 ca Słownik 11 ad 12 da Sebastian Deorowicz () AKD Metody słownikowe 2009 03 19 29 / 38
LZW przykład kodowania a b r a c a d a b r a d a b r a c a 1 2 5 1 3 1 4 6 1 a 2 b 3 c 4 d 5 r 6 ab 7 br 8 ra 9 ac 10 ca Słownik 11 ad 12 da 13 abr Sebastian Deorowicz () AKD Metody słownikowe 2009 03 19 29 / 38
LZW przykład kodowania a b r a c a d a b r a d a b r a c a 1 2 5 1 3 1 4 6 1 a 2 b 3 c 4 d 5 r 6 ab 7 br 8 ra 9 ac 10 ca Słownik 11 ad 12 da 13 abr Sebastian Deorowicz () AKD Metody słownikowe 2009 03 19 29 / 38
LZW przykład kodowania a b r a c a d a b r a d a b r a c a 1 2 5 1 3 1 4 6 8 1 a 2 b 3 c 4 d 5 r 6 ab 7 br 8 ra 9 ac 10 ca Słownik 11 ad 12 da 13 abr 14 rad Sebastian Deorowicz () AKD Metody słownikowe 2009 03 19 29 / 38
LZW przykład kodowania a b r a c a d a b r a d a b r a c a 1 2 5 1 3 1 4 6 8 1 a 2 b 3 c 4 d 5 r 6 ab 7 br 8 ra 9 ac 10 ca Słownik 11 ad 12 da 13 abr 14 rad Sebastian Deorowicz () AKD Metody słownikowe 2009 03 19 29 / 38
LZW przykład kodowania a b r a c a d a b r a d a b r a c a 1 2 5 1 3 1 4 6 8 12 1 a 2 b 3 c 4 d 5 r 6 ab 7 br 8 ra 9 ac 10 ca Słownik 11 ad 12 da 13 abr 14 rad 15 dab Sebastian Deorowicz () AKD Metody słownikowe 2009 03 19 29 / 38
LZW przykład kodowania a b r a c a d a b r a d a b r a c a 1 2 5 1 3 1 4 6 8 12 1 a 2 b 3 c 4 d 5 r 6 ab 7 br 8 ra 9 ac 10 ca Słownik 11 ad 12 da 13 abr 14 rad 15 dab Sebastian Deorowicz () AKD Metody słownikowe 2009 03 19 29 / 38
LZW przykład kodowania a b r a c a d a b r a d a b r a c a 1 2 5 1 3 1 4 6 8 12 7 1 a 2 b 3 c 4 d 5 r 6 ab 7 br 8 ra 9 ac 10 ca Słownik 11 ad 12 da 13 abr 14 rad 15 dab 16 bra Sebastian Deorowicz () AKD Metody słownikowe 2009 03 19 29 / 38
LZW przykład kodowania a b r a c a d a b r a d a b r a c a 1 2 5 1 3 1 4 6 8 12 7 1 a 2 b 3 c 4 d 5 r 6 ab 7 br 8 ra 9 ac 10 ca Słownik 11 ad 12 da 13 abr 14 rad 15 dab 16 bra Sebastian Deorowicz () AKD Metody słownikowe 2009 03 19 29 / 38
LZW przykład kodowania a b r a c a d a b r a d a b r a c a 1 2 5 1 3 1 4 6 8 12 7 9 1 a 2 b 3 c 4 d 5 r 6 ab 7 br 8 ra 9 ac 10 ca Słownik 11 ad 12 da 13 abr 14 rad 15 dab 16 bra 17 aca Sebastian Deorowicz () AKD Metody słownikowe 2009 03 19 29 / 38
LZW przykład kodowania a b r a c a d a b r a d a b r a c a 1 2 5 1 3 1 4 6 8 12 7 9 1 a 2 b 3 c 4 d 5 r 6 ab 7 br 8 ra 9 ac 10 ca Słownik 11 ad 12 da 13 abr 14 rad 15 dab 16 bra 17 aca Sebastian Deorowicz () AKD Metody słownikowe 2009 03 19 29 / 38
LZW przykład kodowania a b r a c a d a b r a d a b r a c a 1 2 5 1 3 1 4 6 8 12 7 9 1 1 a 2 b 3 c 4 d 5 r 6 ab 7 br 8 ra 9 ac 10 ca Słownik 11 ad 12 da 13 abr 14 rad 15 dab 16 bra 17 aca Sebastian Deorowicz () AKD Metody słownikowe 2009 03 19 29 / 38
Plan wykładu 1 Istota metod słownikowych 2 Algorytm Ziva Lempela 1977 i pochodne LZ77 LZSS Inne wersje 3 Algorytm Ziva Lempela 1978 i pochodne LZ78 LZW Inne wersje 4 Ogólny schemat kompresji oparty na LZ Co po LZ Huffman, kodowanie arytmetyczne Zastosowania LZ-ów Ciekawostki Sebastian Deorowicz () AKD Metody słownikowe 2009 03 19 30 / 38
LZ78 inne wersje Inne wersje LZC rosnące rozmiary indeksów; maksymalny rozmiar indeksu to zwykle 16 bitów; czyszczenie słownika dopiero wtedy gdy jest on pełny i współczynnik kompresji spada; stosowany w UNIXowym compress (Thomas i inni, 1985) LZT wersja LZC; przy zapełnieniu słownika usuwane najdawniej użyte frazy; nieco efektywniejsze kodowanie indeksów (Tisher, 1987) LZMW wersja LZ78; do słownika dodawane frazy składające się z frazy w nim istniejącej i 2 (a nie 1 jak w LZ78) kolejnych symboli (Miller i Wegman, 1984) LZJ (Jakobsson, 1985) LZFG (Fiala i Greene, 1989) Sebastian Deorowicz () AKD Metody słownikowe 2009 03 19 31 / 38
LZ78 inne wersje Inne wersje LZC rosnące rozmiary indeksów; maksymalny rozmiar indeksu to zwykle 16 bitów; czyszczenie słownika dopiero wtedy gdy jest on pełny i współczynnik kompresji spada; stosowany w UNIXowym compress (Thomas i inni, 1985) LZT wersja LZC; przy zapełnieniu słownika usuwane najdawniej użyte frazy; nieco efektywniejsze kodowanie indeksów (Tisher, 1987) LZMW wersja LZ78; do słownika dodawane frazy składające się z frazy w nim istniejącej i 2 (a nie 1 jak w LZ78) kolejnych symboli (Miller i Wegman, 1984) LZJ (Jakobsson, 1985) LZFG (Fiala i Greene, 1989) Sebastian Deorowicz () AKD Metody słownikowe 2009 03 19 31 / 38
LZ78 inne wersje Inne wersje LZC rosnące rozmiary indeksów; maksymalny rozmiar indeksu to zwykle 16 bitów; czyszczenie słownika dopiero wtedy gdy jest on pełny i współczynnik kompresji spada; stosowany w UNIXowym compress (Thomas i inni, 1985) LZT wersja LZC; przy zapełnieniu słownika usuwane najdawniej użyte frazy; nieco efektywniejsze kodowanie indeksów (Tisher, 1987) LZMW wersja LZ78; do słownika dodawane frazy składające się z frazy w nim istniejącej i 2 (a nie 1 jak w LZ78) kolejnych symboli (Miller i Wegman, 1984) LZJ (Jakobsson, 1985) LZFG (Fiala i Greene, 1989) Sebastian Deorowicz () AKD Metody słownikowe 2009 03 19 31 / 38
LZ78 inne wersje Inne wersje LZC rosnące rozmiary indeksów; maksymalny rozmiar indeksu to zwykle 16 bitów; czyszczenie słownika dopiero wtedy gdy jest on pełny i współczynnik kompresji spada; stosowany w UNIXowym compress (Thomas i inni, 1985) LZT wersja LZC; przy zapełnieniu słownika usuwane najdawniej użyte frazy; nieco efektywniejsze kodowanie indeksów (Tisher, 1987) LZMW wersja LZ78; do słownika dodawane frazy składające się z frazy w nim istniejącej i 2 (a nie 1 jak w LZ78) kolejnych symboli (Miller i Wegman, 1984) LZJ (Jakobsson, 1985) LZFG (Fiala i Greene, 1989) Sebastian Deorowicz () AKD Metody słownikowe 2009 03 19 31 / 38
LZ78 inne wersje Inne wersje LZC rosnące rozmiary indeksów; maksymalny rozmiar indeksu to zwykle 16 bitów; czyszczenie słownika dopiero wtedy gdy jest on pełny i współczynnik kompresji spada; stosowany w UNIXowym compress (Thomas i inni, 1985) LZT wersja LZC; przy zapełnieniu słownika usuwane najdawniej użyte frazy; nieco efektywniejsze kodowanie indeksów (Tisher, 1987) LZMW wersja LZ78; do słownika dodawane frazy składające się z frazy w nim istniejącej i 2 (a nie 1 jak w LZ78) kolejnych symboli (Miller i Wegman, 1984) LZJ (Jakobsson, 1985) LZFG (Fiala i Greene, 1989) Sebastian Deorowicz () AKD Metody słownikowe 2009 03 19 31 / 38
Plan wykładu 1 Istota metod słownikowych 2 Algorytm Ziva Lempela 1977 i pochodne LZ77 LZSS Inne wersje 3 Algorytm Ziva Lempela 1978 i pochodne LZ78 LZW Inne wersje 4 Ogólny schemat kompresji oparty na LZ Co po LZ Huffman, kodowanie arytmetyczne Zastosowania LZ-ów Ciekawostki Sebastian Deorowicz () AKD Metody słownikowe 2009 03 19 32 / 38
Co po LZ-ach? Czy wyjście LZ-ów da się skompresować? Da się i to dość znacznie: 20 30% dla LZSS Jak kompresować wyjście LZSS idea Częstość występowania bitów znacznika nie jest równa Krótsze dopasowania są częstsze niż dłuższe Częściej dopasowania znajdują się w bliższej odległości niż w dalszej Sebastian Deorowicz () AKD Metody słownikowe 2009 03 19 33 / 38
Co po LZ-ach? Czy wyjście LZ-ów da się skompresować? Da się i to dość znacznie: 20 30% dla LZSS Jak kompresować wyjście LZSS idea Częstość występowania bitów znacznika nie jest równa Krótsze dopasowania są częstsze niż dłuższe Częściej dopasowania znajdują się w bliższej odległości niż w dalszej Sebastian Deorowicz () AKD Metody słownikowe 2009 03 19 33 / 38
Co po LZ-ach? Algorytm Deflate Używa metody LZSS LZSS jest kodowane Huffmanem Sebastian Deorowicz () AKD Metody słownikowe 2009 03 19 34 / 38
Plan wykładu 1 Istota metod słownikowych 2 Algorytm Ziva Lempela 1977 i pochodne LZ77 LZSS Inne wersje 3 Algorytm Ziva Lempela 1978 i pochodne LZ78 LZW Inne wersje 4 Ogólny schemat kompresji oparty na LZ Co po LZ Huffman, kodowanie arytmetyczne Zastosowania LZ-ów Ciekawostki Sebastian Deorowicz () AKD Metody słownikowe 2009 03 19 35 / 38
Algorytmy Ziva i Lempela Zastosowania LZMA program 7z LZSS programy pkzip, arj, biblioteka zlib LZW format GIF (uwaga: LZW był opatentowany!) Sebastian Deorowicz () AKD Metody słownikowe 2009 03 19 36 / 38
Plan wykładu 1 Istota metod słownikowych 2 Algorytm Ziva Lempela 1977 i pochodne LZ77 LZSS Inne wersje 3 Algorytm Ziva Lempela 1978 i pochodne LZ78 LZW Inne wersje 4 Ogólny schemat kompresji oparty na LZ Co po LZ Huffman, kodowanie arytmetyczne Zastosowania LZ-ów Ciekawostki Sebastian Deorowicz () AKD Metody słownikowe 2009 03 19 37 / 38
Oryginalne artykuły Ziva i Lempela LZ77 http://www.cs.duke.edu/courses/spring03/cps296.5/papers/ziv_lempel_1977_ universal_algorithm.pdf LZ78 http://www.cs.duke.edu/courses/spring03/cps296.5/papers/ziv_lempel_1978_ variable-rate.pdf Sebastian Deorowicz () AKD Metody słownikowe 2009 03 19 38 / 38