Zkusím, co je na tom možná neintuitivního. Jak při kompresi, tak při dekompresi, se vytváří slovník z toho co bylo, BEZ OHLEDU na fakt, zda je to prospěšné či není.
- Takže přijde "T" - to už je ve slovníku, to je základní písmeno.
- Přijde "R" - podíváme do slovníku zda máme "TR", nemáme, takže na výstup musíme dát stále ještě jen čisté "R" (to už je ve slovníku, to je základní písmeno). A do interního slovníku, pro tento soubor a tuto kompresi, přidáme "TR", pokud bychom ho MOŽNÁ NĚKDY PŘÍŠTĚ během této (de)komprese uviděli, můžeme použít jako unikátní zakódované slovo.
Důsledky:
- První výskyt "TR" ještě není zakódovaně přímo, ale jako jednotlivá písmena, takže žádná úspora při prvním výskytu.
- Pokud se dané slovo (sekvence) vyskytuje jen jednou, nebo málo často, akorát nám zabírá místo ve slovníku (a unikátní kód) naprosto zbytečně.
- Proto to dobře funguje na delší běžný psaný text (opakující se stejná slova, sekvence), delší zdrojáky a podobně, méně kvalitně pak na binární věci.
- Interní slovník se po každé jednotlivé kompresi (každém jednom souboru) zahodí a jinde využívaný není. Některé kompresní programy to mají jinak, slovníky mohou zachovávat přes více souborů (má to výhody i nevýhody), ale v ZIP se slovník zahazuje a vždy vytváří znovu.