200 likes | 369 Views
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.
E N D
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 - závislá na rychlosti vyhledávání fráze ve slovníku. • Kladen důraz na účelné využití paměti. • Vyhovuje - uložení frází ve stromové struktuře.
Stromová struktura slovníku • Zřetězením znaků od kořene k jednotlivým uzlům stromu získáme všechny fráze. Kořen d 3 c 2 a 0 b 1 c 6 d 12 b 4 a 8 a 5 d 7 a 9 a 11 d 10
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 • V každém uzlu (vyjma kořenového) jen dva ukazatele. • Prvního následníka • Sousední uzel d 3 c 2 a 0 b 1 c 6 d 12 b 4 a 8 a 5 d 7 a 9 a 11 d 10
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 Nový slovník 11ti bit. 12ti bit. 256 9ti bit. 256 10ti bit.
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 .