Kompresní algoritmus LZW Dokumentografické informační systémy
Cíl n Co je LZW algoritmus a jak pracuje.
Osnova n Historie slovníkové komprese. n Co je LZW? n Algoritmus LZW komprese. n Algoritmus LZW dekomprese. n Praktická implementace. n Výsledky testů.
Histrorie slovníkové komprese n Autoři: Ziv, Lempel u základní princip F Vyvinuty algoritmy ozn. LZ77 F Programy - PKZip, Zip, ARJ, Gzip u odlišný přístup F Vyvinuty algoritmy ozn. LZ78 F Programy - compress v Unixu, GIF, V.42 bis
Co je LZW? n Algoritmus pro kompresi textů. n Založen na slovníkové metodě komprese třídy LZ78. n Semiadaptivní komprese.
Algoritmus komprese n Postupné čtení dokumentu D. n Při čtení sestavován slovník frází. u Na počátku obsaženy fráze délky 1. n Současné vytváření výstupního zkomprimovaného souboru.
Kroky komprese n Prohledáván slovník frází. u Nalezení nejdelší fráze shodné s textem na vstupu. u Pořadové číslo fráze uloženo do výstupního souboru. u Nalezená fráze odebrána ze vstupu n Vytváření nové fráze. u = právě použitá fráze + znak na vstupu
Co to znamená n Znak na vstupu u je prvním znakem fráze použitém v příštím kroku. n Nová fráze u 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 n 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 n Probíhá obdobně jako komprese - vytváří se slovník stejných frází u Na počátku jsou ve slovníku jen fráze délky 1.
Kroky dekomprese n Přečtení čísla fráze ze vstupního souboru. n Odpovídající fráze je uložena do výstupního souboru. n Vytvoření nové fráze a její začlenění do slovníku. u = 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
n Začlenění fráze do slovníku je oproti kompresi o krok zpožděno. n 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 n Rychlost komprese - závislá na rychlosti vyhledávání fráze ve slovníku. n Kladen důraz na účelné využití paměti. n Vyhovuje - uložení frází ve stromové struktuře.
Stromová struktura slovníku Kořen a 0 b 4 c 6d 12 d 10 a 9 a 5 b 1 d 7 c 2 a 11 a 8 d 3 n Zřetězením znaků od kořene k jednotlivým uzlům stromu získáme všechny fráze.
Realizace stromu n Pomocí ukazatelů nevýhodné - spotřeba místa, rychlost. n Efektivnější tabulka - použití indexů tabulky. u Nevýhodné - vysoká arita uzlu následníků stromu.
Binarizace n-árního stromu Kořen a 0 b 4 c 6d 12 d 10 a 9 a 5 b 1 d 7 c 2 a 11 a 8 d 3 n V každém uzlu (vyjma kořenového) jen dva ukazatele. u Prvního následníka u Sousední uzel
Obvyklá implementace LZW n Na vstupu možných znaků. u Na počátku vždy slovník inicializován hodnotami n Omezený rozsah slovníku - obvykle 4096 frází. u Je-li slovník vyčerpán, slovník se zruší a znovu inicializuje. F Informace o novém slovníku uložena do výstupního souboru. n Konec komprese uložen do výstupního souboru.
Uložení čísla fráze do výstupního souboru n Číslo fráze ukládáno pomocí 12 bit u K vyjádření čísel je zapotřebí 12 bitů n Dokonalejší způsob u uloženo do 9 bitů u uloženo do 10 bitů u uloženo do 11 bitů u uloženo do 12 bitů Nový slovník 256 9ti bit. Nový slovník ti bit. 11ti bit.12ti bit.
Závěrečný test komprese n Úspěšnost komprese u 8KB textového souboru - 55% u 12KB JPEG - zvětšen o 34% u 11KB GIF - zvětšen o 28% u 55KB HTML - 53%
Děkuji Vám za pozornost. n Informace o této prezentaci naleznete na: