Merhabalar, bu yazımızda veri sıkıştırma nedir, nasıl veri sıkıştırılır, veri sıkıştırma yöntemleri nelerdir bunlardan bahsedeceğiz.
Öncelikle anlaşılması gereken kavramları verelim.
Veri sıkıştırma: Alan gereksinimini azaktmak için , zaman ve bant genişliği gereksiniminden faydalanmak amacıyla kullanılır. Genel olarak bakıldığında iki çeşit sıkıştırma tekniği bulunmaktadır. Kayıplı sıkıştırma ve kayıpsız sıkıştırma yöntemi.
-Kayıplı Sıkıştırma Yöntemi
Sıkıştırma işlemi sırasında bazı verilerin kabedilir ve geri elde edilemez. Örnek verecek olursak film formatı dönüşümlerini verebiliriz. Ya da saydam katmanlı bir png dosyasının boyutundan kazanmak amacıyla yapılan jpeg dönüşümü bu tip dönüşüme bir örnektir. Genellikle ses ve görüntü dosyalarının sıkıştırma işleminde bu tip ile karşılaşırız.
-Kayıpsız Sıkıştırma Yöntemi
Bu tip sıkıştırma yönteminde orjinal dosyaya tam olarak geri dönüş mümkündür. Dosyanın orjinalinde herhangi kayıp yaşanmaz. Örnek olarak TXT dosyası verilebilir. Bu tip sıkıştırma yöntemi ses ve görüntü dosyalarında da kullanılır ancak sıkıştırma oranı kayıpsız sıkıştırma kadar yüksek olmayacağından dolayı dosya boyutunde büyük bir değişim olmaz.
Bu sıkıştırma yöntemleri için bir çok algortima bulunmaktadır. Bu durumlardan birine örnek vermek için en kolay anlaşılacak örnek olan Kayıpsız sıkıştırma yönteminden “Huffman” sıkıştırma yöntemini inceleyelim.
Huffman Algoritması
Karakter bazlı bir sıkıştırma tekniğidir. Bir kayıpsız sıkıştırma türüdür. Renksiz ve özelliksiz (txt) karakterlerden oluşan dosyaların sıkıştırılması için kullanılır. İki farklı çeşidi vardır. Sabit Uzunluklu Kodlama ve Değişken Uzunluklu Dodlama.Sabit uzunluklu kodlama yapılırken Full Binary Tree oluşumu engellenir.Biz Değişken uzunluklu kodlama ile örnek çözeceğiz.
Temel Kurallar
•Sıkıştırma için verilen bitler başka bir değerin ön eki ( prefix ) olmayacak.
Örnek: N harfi için belirlenen değer 10 ise; E değeri için belirlenen değer 100 olamaz.
•Değişken uzunluklu kodlamada kurallı bir ağaç oluşmu sağlanır.
•Okuma yapılırken tablodaki en küçük bite göre işlem yapılır.
Algoritma
Adım1:Her bir karakter için frekanslar hesaplanır küçükten büyüğe doğru sıralanır.
Adım2:En küçük frekansa sahip iki değer ve frekansları toplanarak yeni bir sembol oluşturulur.
Adım3:Ağaçtaki her düğüm oluşana kadar ikinci adım tekrarlanır.
Adım4: Kök düğümden başlanarak; sol düğümlere 0, sağ düğümlere 1 değeri verilir.
Genel olarak algoritmanın işleyişi yukarıdaki gibidir. Konu hakkındaki görüş ve yorumlarınzı aşağıdan iletebilirsiniz.
Teşekkürler!