sıkıştır | aç | analiz et

> lz77 | sliding | window <

// LZ77 – kayan pencere ve sözlük referanslarıyla sıkıştırma

0 karakter
0 karakter

>> özellikler

[DICTIONARY]

Sözlük kodlama

Tekrarlanan desenleri ofset ve uzunluk referanslarıyla temsil eder.

[SLIDING]

Kayan pencere

En uzun eşleşmeyi bulmak için hareketli bir pencere kullanır.

[FOUNDATION]

Temel algoritma

ZIP, GZIP, DEFLATE ve PNG gibi modern sıkıştırma biçimlerinin temelini oluşturur.

>> teknik bilgiler

LZ77 nasıl çalışır?

LZ77, son görülen verilerden oluşan kayan bir pencere tutar. Her konum için algoritma, pencerede en uzun eşleşen alt diziyi arar. Eşleşme bulunduğunda (ofset, uzunluk, sonraki karakter) referansı çıkışa yazılır. Eşleşme yoksa (0,0,karakter) biçiminde literal üretilir. Böylece tekrar eden desenler kısa referanslarla değiştirilerek kayıpsız sıkıştırma elde edilir.

LZ77 örneği

Text: "ABCABCABC"
Window=4, Lookahead=4

Position 0: 'A' - no match
  → (0,0,A)

Position 1: 'B' - no match
  → (0,0,B)

Position 2: 'C' - no match
  → (0,0,C)

Position 3: 'ABC' - matches at offset 3
  → (3,3,A)

Position 7: 'BC' - matches at offset 3
  → (3,2,)

Output: (0,0,A)(0,0,B)(0,0,C)(3,3,A)(3,2,)

Neden LZ77 kullanmalısınız?

  • Kayıpsız veri sıkıştırma
  • Veri formatı hakkında ön bilgi gerektirmez
  • Veri desenlerine uyum sağlar
  • Göreceli olarak basit bir implementasyon
  • Birçok modern sıkıştırma algoritmasının temeli

>> sık sorulan sorular

LZ77 nedir?

LZ77, Abraham Lempel ve Jacob Ziv tarafından 1977'de yayınlanan evrensel bir kayıpsız veri sıkıştırma algoritmasıdır. Sıkıştırılmamış veri akışında daha önce görülen parçalara referanslar kullanarak tekrar eden bölümleri değiştirir.

Kayan pencere nasıl çalışır?

Kayan pencere, işlenmiş verileri tutan bir arama tamponu ve sıkıştırılacak verileri içeren bir lookahead tamponundan oluşur. Algoritma, arama tamponunda lookahead'in başlangıcıyla en uzun eşleşmeyi arar ve ardından referans veya literal üretir.

LZ77 ve modern sıkıştırma yöntemleri?

LZ77, birçok modern sıkıştırma şemasının temelini oluşturur. ZIP ve GZIP'te kullanılan DEFLATE, LZ77'yi Huffman kodlamasıyla birleştirir. LZSS, LZ77'deki fazlalığı azaltırken LZ78 ve LZW sözlüğü farklı bir şekilde inşa eder ancak benzer prensiplere dayanır.

Önerilen pencere boyutları nelerdir?

Genel veriler için tipik pencere boyutları 32–64 KB aralığındadır. Daha büyük pencereler daha fazla eşleşme bulur ancak daha fazla bellek ve süre gerektirir. DEFLATE 32 KB pencere kullanır. Lookahead tamponu genellikle 256–512 bayttır. En iyi boyut, verilerinizdeki tekrar desenlerine bağlıdır.