Sunteți pe pagina 1din 3

Algoritmul Lempel Ziv

Algoritmul de compresie Lempel Ziv este de tipul variabil bloc. Sunt mai multe
versiuni ale acestui algoritm, iar n cele ce urmeaz vor fi prezentate dou versiuni ale
sale. ntr-una dintre cele mai cunoscute versiuni codorul mparte irul simbolurilor
generate de surs n subiruri de lungime variabil, dar fr s depeasc o lungime
maxim impus.
Subirurile sunt memorate n dicionarul codorului, n ordinea n care au fost
create, fiecrui subir corespunzndu-i un pointer. Un nou subir (intrare n dicionar) se
creeaz cutnd n dicionar cel mai lung subir care este identic cu nceputul datelor
care ateapt s fie codate (subir rdcin) i apoi adugnd la acest subir urmtorul
simbol de date, numit simbol de inovare.
Decodorul alctuiete un dicionar identic, pe baza pointerului primit, care
corespunde unui subir, deja existent n dicionar i a simbolului de inovare. Fiecare
nou subir este astfel transmis prin pointerul corespunztor subirului rdcin i
simbolul de inovare.
Dicionarul se iniializeaz cu subirurile formate dintr-un singur simbol. n
principiu dicionarul tinde s devin din ce n ce mai mare i, n mod corespunztor, i
pointerul tinde s devin mai lung. Este necesar o procedur, folosit att de codor ct
i de decodor, pentru a elimina din dicionar irurile rar folosite.
Tabelele 8.1 i 8.2 prezint exemple de aplicare a algoritmului pentru un ir de
simboluri binare (00101100010111010101) i pentru un ir de simboluri dintr-un
alfabet cu patru simboluri distincte (notate a, b, c i d: aabddacbccabc) i
reprezentate n binar prin 00,01, 10 i 11.

Desigur, un pointer de numai patru bii limiteaz dicionarul la numai 16 cuvinte


(subiruri). n practic, pentru ca algoritmul s devin performant, se va folosi un
dicionar mult mai voluminos.
Un dicionar cu 2n subiruri va necesita cuvinte de cod de lungime n + 1 pentru
un alfabet al sursei binar, n + 2 pentru un alfabet cu patru simboluri distincte sau n + 8
pentru un alfabet cu 28 simboluri distincte (cazul codului de 8 elemente pentru
reprezentarea caracterelor).
n general este nevoie ca lungimea cuvintelor de cod s fie egal cu n plus
numrul de simboluri binare necesare pentru reprezentarea simbolului de inovare, adic
pentru reprezentarea simbolurilor distincte ale alfabetului sursei.
La nceputul procesului de codare, cnd subirurile care se introduc n dicionar
sunt de lungime mic, algoritmul nu este eficient, dar pe msur ce se avanseaz n
procesul de codare subirurile devin mai lungi i compresia devine mai eficient. Atunci
cnd dicionarul, finit, este plin, este necesar ca intrrile mai vechi, care nu mai sunt
folosite, s fie eliminate.

Varianta Miller Wegman a algoritmului Lempel Ziv elimin acest


dezavantaj al transmiterii simbolului de inovare n forma necodat, amnnd
specificarea sa la iteraia urmtoare, fiind primul simbol al subirului urmtor transmis i
fiind astfel transmis ntr-o form codat. Un nou subir introdus n dicionar se formeaz
din subirul transmis anterior, la care se adaug primul simbol (ca simbol de inovare) al
actualului ir transmis (codat) i recepionat. Aceast variant este exemplificat, n
tabelele 8.3 i 8.4, folosind aceleai mesaje considerate mai sus.

S-ar putea să vă placă și