2.4. Slovníkové metody

Základním principem slovníkových metod komprese je vyhledávání shodných, opakujících se řetězců ve vstupním souboru. Těmto řetězcům jsou pak přidělovány kódy, které se ukládají (často s využitím dalších kompresních metod) na výstup.

Algoritmus označovaný jako LZW je pojmenovaný podle svých objevitelů A. Lempela, J. Ziva a Terryho A. Welche, jenž původní algoritmus LZ77 modifikoval. Jedná se o bezeztrátovou komprimační metodu vhodnou pro kompresi textových i binárních souborů. Různé modifikace metody LZW se používají v běžných komprimačních programech jako WinZIP ve Windows nebo compress v Unixu, ale také ve formátech určených pro počítačovou grafiku jako GIF, TIFF nebo PostScript. Tento algoritmus pracuje se slovníkem, který se adaptivně přizpůsobuje k´dovaným datům. Během komprese se dynamicky vytváří slovník, který lze při dekompresi na základě přijímaných dat obnovit a není tedy třeba jej ke komprimovaným datům přidávat. Výhody algoritmu LZW jsou jednoduchá implementace, rychlá komprese a dekomprese (vhodná zejména pro časově kritické aplikace), malé nároky na paměť a možnost kontinuálního vysílání zkomprimovaných dat bez nutnosti čekání na dokončení komprese datového bloku - např. při posílání modemem.

Jinou variantou je metoda LZ77-deflate, implementovan8 v programech zip, gzip, pkzip apod. Tato metoda kombinuje slovníkový algoritmus LZ77 s Huffmanovým kódováním. Zdrojový soubor je komprimován po blocích, přičemž opakující se řetězce jsou charakterizovány pozicí svého prvního výskutu v bloku a délkou. Pozice i délka mohou být kódovány Huffmanovou metodou, přičemž lze využít fixních kódovacích tabulek definovaných ve specifikaci metody a není třeba je vkládat do bloku komprimovaných dat pro potřebu dekomprese.