LZ77: Porovnání verzí

Smazaný obsah Přidaný obsah
odkaz na Eliasovo gama kódování
ToOb (diskuse | příspěvky)
Řádek 15:
 
=== Rozlišení literálu a reference ===
Dekompresní algoritmus potřebuje určitým způsobem rozlišit, zda data, které se v daném okamžiku pokouší dekomprimovat reprezentují literál nebo referenci na předchozí výskyt.
Dekompresní algoritmus potřebuje určitým způsobem rozlišit, zda data, které se v daném okamžiku pokouší dekomprimovat reprezentují literál nebo referenci na předchozí výskyt.</br>Jedním ze způsobů, jak to zajistit, je přidat před každý literál nebo referenci jeden bit, určující jak mají být následující data interpretována. Tento způsob je sice velmi jednoduchý nicméně má tu nevýhodu, že je každý literál prodloužen o jeden bit, čímž se zvětšuje délka zkomprimovaných dat.</b>Dalším způsobem je před každou skupinu literálů přidat speciální kód určující počet následujících literálů. Takto vložený kód samozřejmě prodlouží komprimovaná data o svoji délku. Vzhledem k tomu, že v komprimovaných datech jsou krátké skupiny literálů velmi časté, musí se tento speciální kód vkládat do komprimovaných dat také velmi často. Výsledky pro tuto metodu jsou podobné jako pro metodu s vloženým bitem.
 
Jedním ze způsobů, jak to zajistit, je přidat před každý literál nebo referenci jeden bit, určující jak mají být následující data interpretována. Tento způsob je sice velmi jednoduchý nicméně má tu nevýhodu, že je každý literál prodloužen o jeden bit, čímž se zvětšuje délka zkomprimovaných dat.
=== Velikost okna a kódování vzdálenosti====
 
Dekompresní algoritmus potřebuje určitým způsobem rozlišit, zda data, které se v daném okamžiku pokouší dekomprimovat reprezentují literál nebo referenci na předchozí výskyt.</br>Jedním ze způsobů, jak to zajistit, je přidat před každý literál nebo referenci jeden bit, určující jak mají být následující data interpretována. Tento způsob je sice velmi jednoduchý nicméně má tu nevýhodu, že je každý literál prodloužen o jeden bit, čímž se zvětšuje délka zkomprimovaných dat.</b>Dalším způsobem je před každou skupinu literálů přidat speciální kód určující počet následujících literálů. Takto vložený kód samozřejmě prodlouží komprimovaná data o svoji délku. Vzhledem k tomu, že v komprimovaných datech jsou krátké skupiny literálů velmi časté, musí se tento speciální kód vkládat do komprimovaných dat také velmi často. Výsledky pro tuto metodu jsou podobné jako pro metodu s vloženým bitem.
 
=== Velikost okna a kódování vzdálenosti= ===
Kompresní algoritmus má k dispozici určité "okno" ve kterém vidí posledních N znaků a právě na znaky viditelné v tomto okně odkazuje. Obecně platí, že čím větší okno, tím je větší šance na nalezení odkazu. Na druhou stranu, čím větší okno, tím více bitů je třeba k zakódování vzdálenosti odkazu od okamžité polohy v datech. Možným řešením je zavést několik možných délek pro zakodóvání offsetu.