Huffman sıkıştırması nedir?

Huffman kodlaması olarak da bilinir, sıkıştırılmakta olan dosyadaki bir sembolün ortaya çıkma sıklığına bağlı olarak dosyaların kayıpsız sıkıştırılması için bir algoritma. Huffman algoritması istatistiksel kodlamaya dayanmaktadır, bu da bir sembolün olasılığının temsilinin uzunluğu ile doğrudan bir ilgisi olduğu anlamına gelir. Bir sembolün ortaya çıkma olasılığı ne kadar yüksekse, bit boyutu gösterimi o kadar kısa olacaktır. Herhangi bir dosyada, belirli karakterler diğerlerinden daha fazla kullanılır. İkili gösterimi kullanarak, her bir karakteri temsil etmek için gereken bit sayısı, temsil edilmesi gereken karakterlerin sayısına bağlıdır. Bir bit kullanarak iki karakteri temsil edebiliriz, yani, 0 ilk karakteri ve 1 ikinci karakteri temsil eder. İki bit kullanarak dört karakteri temsil edebiliriz, vb.

Karakter başına yedi bit kullanan sabit uzunlukta bir kod olan ASCII kodunun aksine, Huffman sıkıştırması, daha sık kullanılan karakterler için daha küçük kodlar ve boyutunu azaltmak için daha az kullanılan karakterler için daha büyük kodlar atayan değişken uzunluklu bir kodlama sistemidir. dosyalar sıkıştırılır ve aktarılır.

Örneğin, aşağıdaki verileri içeren bir dosyada:

XXXXXXYYYYZZ

"X" frekansı 6, "Y" frekansı 4 ve "Z" frekansı 2'dir. Her karakter iki bitlik sabit uzunlukta bir kod kullanılarak temsil ediliyorsa, o zaman gerekli bit sayısı bu dosyayı sakla 24, yani (2 x 6) + (2x 4) + (2x 2) = 24.

Yukarıdaki veriler Huffman sıkıştırması kullanılarak sıkıştırılmış olsaydı, daha sık ortaya çıkan sayılar aşağıdakiler gibi daha küçük bitlerle temsil edilirdi:

0 koduna göre X (1 bit)
Y koduna göre 10 (2 bit)
Z koduna göre 11 (2 bit)

dolayısıyla dosyanın boyutu 18 olur, yani (1x 6) + (2 x 4) + (2 x 2) = 18.

Yukarıdaki örnekte, daha sık görülen karakterlere daha küçük kodlar atanır ve bu da son sıkıştırılmış dosyada daha az sayıda bit ile sonuçlanır.

Huffman sıkıştırması, keşfi David Huffman'ın adını almıştır.