AKD Metody słownikowe



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

Kodowanie informacji

LZ77 LZ78. Kompresja danych. Tomasz Jurdziński. Wykład 5: kodowanie słownikowe

Kodowanie Shannona-Fano

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

Wprowadzenie Algorytm ByteRun ByteRun - przykład Algorytm RLE Przykład działania RLE Algorytm LZW Przykład kompresji LZW

pobieramy pierwszą literę komunikatu i wypełniamy nią (wszystkie pozycje tą samą literą) bufor słownikowy.

Temat: Algorytm kompresji plików metodą Huffmana

Kompresja Kodowanie arytmetyczne. Dariusz Sobczuk

mgr inż. Grzegorz Kraszewski SYSTEMY MULTIMEDIALNE wykład 3, strona 1.

Podstawowe pojęcia. Teoria informacji

Kodowanie predykcyjne

INŻYNIERIA BEZPIECZEŃSTWA LABORATORIUM NR 2 ALGORYTM XOR ŁAMANIE ALGORYTMU XOR

Algorytmy i struktury danych

Tematy projektów Algorytmy Kompresji Danych (2006)

Cyfrowe przetwarzanie i kompresja danych. dr inż.. Wojciech Zając

Nierówność Krafta-McMillana, Kodowanie Huffmana

Kodowanie i kompresja Streszczenie Studia dzienne Wykład 9,

Teoria informacji i kodowania Ćwiczenia

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

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

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

Wygra Polska czy Brazylia, czyli o tym jak zwięźle zapisywać informacje

Kodowanie informacji

Kompresja bezstratna. Entropia. Kod Huffmana

Algorytmy i. Wykład 5: Drzewa. Dr inż. Paweł Kasprowski

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

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

Kodowanie transformacyjne. Plan 1. Zasada 2. Rodzaje transformacji 3. Standard JPEG

Zadania przykładowe do kolokwium z AA2

Kody Tunstalla. Kodowanie arytmetyczne

Ćwiczenie nr 4: Kodowanie arytmetyczne, range coder

Kwantyzacja wektorowa. Kodowanie różnicowe.

Wykład 5. Kompresja danych

ALGORYTMY BEZSTRATNEJ KOMPRESJI DANYCH

Wstęp Statyczne kody Huffmana Dynamiczne kody Huffmana Praktyka. Kodowanie Huffmana. Dawid Duda. 4 marca 2004

dr inż. Jarosław Forenc

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

Przetwarzanie obrazu cyfrowego

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

Algorytmy kompresji. Kodowanie Huffmana, kodowanie arytmetyczne

Zastosowanie kompresji w kryptografii Piotr Piotrowski

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

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

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

Hurtownie danych - przegląd technologii Robert Wrembel Politechnika Poznańska Instytut Informatyki

Metody kompresji i przechowywania obrazów

Algorytmy i struktury danych. Co dziś? Tytułem przypomnienia metoda dziel i zwyciężaj. Wykład VIII Elementarne techniki algorytmiczne

ZESZYTY ETI ZESPOŁU SZKÓŁ W TARNOBRZEGU Nr 1 Seria: Teleinformatyka 2013 KOMPRESJA BEZSTRATNA PLIKÓW ALGORYTM HUFFMANA

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

ZADANIE 1. Rozwiązanie:

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

Wykład VI. Programowanie. dr inż. Janusz Słupik. Gliwice, Wydział Matematyki Stosowanej Politechniki Śląskiej. c Copyright 2014 Janusz Słupik

3. Opracować program kodowania/dekodowania pliku tekstowego. Algorytm kodowania:

dr inż. Jacek Naruniec

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

Kompresja danych kodowanie Huffmana. Dariusz Sobczuk

ZESZYTY NAUKOWE NR 6(78) AKADEMII MORSKIEJ W SZCZECINIE

Krzysztof Leszczyński Adam Sosnowski Michał Winiarski. Projekt UCYF

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

Streszczenie Komputery do przechowywania rysunków, zdjęć i innych obrazów używają tylko liczb. Te zajęcia mają ukazać w jaki sposób to robią.

16MB - 2GB 2MB - 128MB

Kodowanie predykcyjne

KOMPRESJA STRATNA I BEZSTRATNA

Według raportu ISO z 1988 roku algorytm JPEG składa się z następujących kroków: 0.5, = V i, j. /Q i, j

Kodowanie i entropia

Kody Huffmana. Konrad Wypyski. 11 lutego 2006 roku

Algorytmy i struktury danych. wykład 8

Teoria Informacji i Metody Kompresji Danych

Cechy formatu PNG Budowa bloku danych Bloki standardowe PNG Filtrowanie danych przed kompresją Wyświetlanie progresywne (Adam 7)

Architektura komputerów Reprezentacja liczb. Kodowanie rozkazów.

Architektura komputerów

Techniki multimedialne

0-0000, , , itd

System plików JFS. 1 Najważniejsze informacje. Mateusz Zakrzewski. 18 stycznia JFS to skrót od Journalled File System.

Teoretyczne podstawy informatyki

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

Zadanie 1. Potęgi (14 pkt)

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

Hurtownie danych - przegląd technologii

Klasyfikacja metod kompresji

Podstawy Informatyki Maszyna Turinga

Technologie cyfrowe. Artur Kalinowski. Zakład Cząstek i Oddziaływań Fundamentalnych Pasteura 5, pokój 4.15 Artur.Kalinowski@fuw.edu.

Wstęp do Informatyki

Hurtownie danych - przegląd technologii

ZASTOSOWANIE METODY ZMNIEJSZONEJ CZĘSTOŚCI AKTUALIZACJI SŁOWNIKA W UNIWERSALNYM ALGORYTMIE KOMPRESJI LZW

ARCHITEKRURA KOMPUTERÓW Kodowanie liczb ze znakiem

Kompresja Stratna i Bezstratna Przegląd Najważniejszych Formatów Graficznych

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

Definicja. Jeśli. wtedy

Laboratorium 5: Tablice. Wyszukiwanie binarne

Algorytmy i struktury danych. Wykład 4 Tablice nieporządkowane i uporządkowane

Algorytmy kodowania entropijnego

Algorytmy i struktury danych. Drzewa: BST, kopce. Letnie Warsztaty Matematyczno-Informatyczne

KOMPRESJA OBRAZÓW STATYCZNYCH - ALGORYTM JPEG

Komunikacja człowiek-komputer

Arytmetyka komputera. Na podstawie podręcznika Urządzenia techniki komputerowej Tomasza Marciniuka. Opracował: Kamil Kowalski klasa III TI

Wyszukiwanie plików w systemie Windows

Paweł Gawrychowski Wyszukiwanie wzorca października / 31

ang. file) Pojęcie pliku (ang( Typy plików Atrybuty pliku Fragmentacja wewnętrzna w systemie plików Struktura pliku

Transkrypt:

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