Kompresní algoritmus LZW

Download Report

Transcript Kompresní algoritmus LZW

Kompresní algoritmus LZW

Dokumentografické informační systémy

Cíl

 Co je LZW algoritmus a jak pracuje.

Osnova

      Historie slovníkové komprese.

Co je LZW?

Algoritmus LZW komprese.

Algoritmus LZW dekomprese.

Praktická implementace.

Výsledky testů.

Histrorie slovníkové komprese

 Autoři: Ziv, Lempel  1977 základní princip  Vyvinuty algoritmy ozn. LZ77  Programy - PKZip, Zip, ARJ, Gzip  1978 odlišný přístup  Vyvinuty algoritmy ozn. LZ78  Programy - compress v Unixu, GIF, V.42 bis

  

Co je LZW?

Algoritmus pro kompresi textů.

Založen na

slovníkové metodě komprese

třídy LZ78.

Semiadaptivní komprese.

Algoritmus komprese

   Postupné

čtení dokumentu D

.

Při čtení sestavován

slovník frází

.

 Na počátku obsaženy fráze délky 1.

Současné vytváření výstupního zkomprimovaného souboru.

Kroky komprese

  Prohledáván slovník frází.

 Nalezení nejdelší fráze shodné s textem na vstupu.

 Pořadové číslo fráze uloženo do výstupního souboru.

 Nalezená fráze odebrána ze vstupu Vytváření nové fráze.

 = právě použitá fráze + znak na vstupu

Co to znamená

  Znak na vstupu  je prvním znakem fráze použitém v příštím kroku.

Nová fráze  se vytváří vždy ze dvou po sobě použitých Fráze kroku m První znak fráze kroku m+1 Nová fráze kroku m+1

Výsledek

 Opakováním kroků algoritmu, dokud není přečten celý vstupní soubor, je vytvářen výstupní zkomprimovaný soubor. Tento soubor obsahuje pořadová čísla frází ve slovníku.

Algoritmus dekomprese

 Probíhá obdobně jako komprese -

vytváří se slovník stejných frází

 Na počátku jsou ve slovníku jen fráze délky 1.

Kroky dekomprese

   Přečtení čísla fráze ze vstupního souboru. Odpovídající fráze je uložena do výstupního souboru.

Vytvoření nové fráze a její začlenění do slovníku.  = fráze z předposledního kroku + první znak z posledního kroku.

Fráze kroku m První znak fráze kroku m+1 Nová fráze kroku m+1

  Začlenění fráze do slovníku je oproti kompresi o krok zpožděno.

Pokud první znak fráze je shodný s prvním znakem fráze použité v předchozím kroku, fráze při dekompresi zatím ve slovníku neexistuje. Na základě toho lze doplnit chybějící frázi.

Použitá fráze Znak na vstupu Nová fráze

Praktická implementace

   Rychlost komprese rychlosti vyhledávání fráze ve slovníku.

závislá na Kladen důraz na účelné využití paměti.

Vyhovuje -

uložení frází ve stromové struktuře.

Stromová struktura slovníku

a 0 b 4 c 6 d 12 Kořen b 1 c 2 d 3 a 5 d 7 a 8 a 9 d 10 a 11  Zřetězením znaků od kořene k jednotlivým uzlům stromu získáme všechny fráze.

Realizace stromu

  Pomocí ukazatelů nevýhodné spotřeba místa, rychlost.

Efektivnější tabulka - použití indexů tabulky.

 Nevýhodné - vysoká arita uzlu následníků stromu.

Binarizace n-árního stromu

Kořen a 0 b 1 c 2 d 3 b 4 c 6 d 12 a 5 d 7 a 8 a 9 a 11 d 10  V každém uzlu (vyjma kořenového) jen dva ukazatele.

 Prvního následníka  Sousední uzel

  

Obvyklá implementace LZW

Na vstupu 256 možných znaků.

 Na počátku vždy slovník inicializován hodnotami 0-255.

Omezený rozsah slovníku obvykle 4096 frází.

 Je li slovník vyčerpán, slovník se zruší a znovu inicializuje.

 Informace o novém slovníku uložena do výstupního souboru.

Konec komprese uložen do výstupního souboru.

Uložení čísla fráze do výstupního souboru

  Číslo fráze ukládáno pomocí 12 bit  K vyjádření čísel 0 - 4095 je zapotřebí 12 bitů Dokonalejší způsob  0 511 uloženo do 9 bitů  512 1023 uloženo do 10 bitů  1024 2047 uloženo do 11 bitů  2048 4095 uloženo do 12 bitů Nový slovník 256 9ti bit.

10ti bit. 11ti bit. 12ti bit.

Nový slovník 256

Závěrečný test komprese

 Úspěšnost komprese  8KB textového souboru - 55%  12KB JPEG zvětšen o 34%  11KB GIF zvětšen o 28%  55KB HTML - 53%

Děkuji Vám za pozornost.

 Informace o této prezentaci naleznete na:

http://home.vsb.cz/pn

.