1-) VERİYAPILARI - SIKIŞTIRMA ALGORİTMALARI
1- Alan gereksinimini azaltmak için
2- Zaman ve bant genişliği gereksinimini azaltmak için
Sıkıştırma türleri;
Bilginin bir kısmı geri elde edilemez (MP3, JPEG, MPEG) Genellikle ses ve görüntü uygulamalarında kullanılır. Çok büyük ses ve görüntü dosyalarında çok iyi sıkıştırma yapar ve kullanıcı kalitedeki azalmayı fark etmez.
2- Kayıpsız Sıkıştırma
Orijinal dosyalar tekrar ve tam olarak elde edilir (D(C(X)))=X, burada C sıkıştırılan dosyayı, D ise açılan dosyayı ifade eder. .txt, .exe, .doc, .xls, .java, .cpp vs. gibi dosyalarda kullanılır. Ses ve görüntü dosyalarında da kullanılabilir ancak kayıplı sıkıştırma kadar yüksek sıkıştırma oranına sahip olmaz.
Kayıpsız sıkıştırma temel olarak üç algoritma altında toplanır
Değişken uzunlukta kodlama: Frekansa göre sıralanır ve her biri bir yaprağı temsil eder. En küçük iki değer bir atada toplanır ve geriye kalan yapraklar ile ata tekrar sıralanır.
adım1:
adım 2:
adım 3:
adım 4:
adım 5:
Toplam Çalışma süresi O(nlogn) olur.
ÖRNEK:
Veri setini ASCII kodu ile kodlanırsa, her karakter için 1 byte(8 bit)’lık alan gerektiğinden toplamda 155 byte(1240 bit)’a ihtiyaç olacaktı.
Huffman kodlaması ile bu sayı : 60x1 + 40x2 + 25x3 + 20x4 +10x4= 335 bittir. Görüldüğü gibi Huffman kodlaması ile 335/1240= %27’lik bir sıkıştırma oranı sağlanmaktadır. Bu kazanç, veri setindeki sembollerin frekansları arttıkça daha da artmaktadır