2. TARİHÇE
* Abraham Lempel and Jacob Ziv
tarafından 1977-78 yılları arasında
yapılan çalışmanın ürünü olduğu için
LZ77 adı verilmiştir. [1]
* Algoritmaya kod adının
verilmesindeki neden birçok
varyasyonu arasından ayırt etmek.
* Sınırsız veri akışının (yani verinin
gerçek boyutu bilinmeden) daha az
yer kaplayacak şekilde kodlanmasını
sağlar.
* Kayıpsız bir sıkıştırma algoritmasıdır.
[1] J.Ziv and A.Lempel,“Compression of individual sequences by variable rate coding,“IEEETrans. InformationTheory, 1978.
3. Verinin ilk defa verimli şekilde aktarımının yolunu açması, günümüz
internetinin yaygınlaşmasındaki ivmeyi beraberinde getirdi
4. • Günümüzde duyduğumuz/kullandığımız birçok
sıkıştırma-kodlama algoritmasının temelinde yer
almakta:
zip, bzip, gzip,WinRAR, LZMA,LZO, LZ4,
JPEG, PNG, GIF …
1- LZ ile başlayanlar hemen hemen aynı algoritmayı farklı yöntemler kullanarak uyguluyorlar (ör: direk dönüşüm yerine
binary hale çevirip algoritmayı uygulamak yada verinin işleniş sıralamalarında değişiklik yapmak gibi)
2- Diğer algoritmalar (zip, JPEG vs) bu algoritma üzerine Huffman kodlaması gibi ek yöntemlere başvuruyorlar
9. Algoritma (Pseudo Code)
begin
görünümü gelen veri ile doldur
while (görünüm boş olmadığı sürece) do
begin
görünümün başındaki veriden arama tamponundaki en uzun
eşleşmeyi bul
i := arama tamponunda bulunan kaydın indeksi
j := eşleşme uzunluğu
X := eşleşen veriden hemen sonraki veri
çıktıyaAktar(i,j,X)
arama tamponunun başlangıç indeksini eşleşen veriden
sonrasına taşı
end
end
10. Örnek
Arama önbelleği Gelen veri
Satır
121110 9 8 7 6 5 4 3 2 1 0 1 2 3 4 5 6 7 8 9 … Çıktı
1 a a b b c a b c b b (0,0,a)
2 a a b b c a b c b b c (1,1,b)
3 a a b b c a b c b b c a c (1,1,c)
4 a a b b c a b c b b c a c b c (4,2,c)
5 a a b b c a b c b b c a c b c c a ∅ (6,4,c)
6 a a b b c a b c b b c a c b c c a ∅ (4,2,c)
7 b c a b c b b c a c b c c a ∅ (5,1,null)