> huffman | en iyi | kodlar <
// Huffman kodlama - en iyi öneksiz sıkıştırma algoritması
>> özellikler
En iyi kodlar
Verilen frekanslar için mümkün olan en kısa ortalama kod uzunluğunu üretir.
Öneksiz
Hiçbir kod, başka bir kodun ön eki değildir; bu da tek anlamlı çözmeyi sağlar.
Frekans tabanlı
Daha sık görülen karakterler otomatik olarak daha kısa kodlar alır.
>> teknik bilgiler
Huffman kodlama nasıl çalışır?
Huffman kodlama, bir ikili ağacı aşağıdan yukarıya doğru inşa eder. Karakter frekanslarından başlayarak, en düşük frekansa sahip iki düğümü tekrar tekrar bir üst düğümde birleştirir ve yalnızca kök kalana kadar devam eder. Sol dallar '0', sağ dallar '1' anlamına gelir. Daha sık görülen karakterler köke daha yakın konumlanır ve daha kısa kodlar alır; böylece verilen frekans dağılımı için en iyi sıkıştırma elde edilir.
Huffman kodlama örneği
Text: "AABBBCCCC"
Frequencies:
A: 2
B: 3
C: 4
Tree Building:
1. Combine A(2) + B(3) = AB(5)
2. Combine C(4) + AB(5) = Root(9)
Tree:
Root(9)
/ \
C(4) AB(5)
/ \
A(2) B(3)
Codes:
C: 0
A: 10
B: 11
Encoded: 10 10 11 11 11 0 0 0 0
= 1010111111 0000
Neden Huffman kodlama kullanmalısınız?
- Teorik entropi sınırına yakın sıkıştırma oranı
- Göreceli olarak basit uygulama
- ZIP/JPEG sıkıştırmasının temel bileşeni
- Kayıpsız sıkıştırma, veri kaybı yok
- Gerçek sistemlerde kanıtlanmış verimlilik
>> sıkça sorulan sorular
Huffman kodlama nedir?
Huffman kodlama, 1952'de David A. Huffman tarafından önerilen, en iyi öneksiz sıkıştırma algoritmasıdır. Karakterlere, ortaya çıkma sıklıklarına göre değişken uzunluklu bit dizileri atar; daha sık görülen karakterlere daha kısa kodlar vererek ortalama kod uzunluğunu en aza indirir.
Neden "öneksiz" olarak adlandırılır?
Hiçbir kod başka bir kodun başında yer almadığında kod kümesi öneksiz (prefix-free) olarak adlandırılır. Örneğin, 'A' karakteri '01' şeklinde kodlanıyorsa başka hiçbir karakterin kodu '01' ile başlayamaz. Bu özellik, ek ayırıcılar olmadan bit akışını soldan sağa okuyarak tek anlamlı biçimde çözmeyi mümkün kılar.
Huffman kodlama ne kadar etkilidir?
Belirli bir frekans dağılımı için Huffman kodlama, teorik entropi sınırından genellikle 1 bitten daha az sapmayla en iyi sıkıştırmayı sağlar. İngilizce metinler için çoğu zaman %60–70 civarında sıkıştırma elde edilir ve karakter frekanslarının çok farklı olduğu durumlarda özellikle etkilidir.
Huffman kodlama nerede kullanılır?
Huffman kodlama, JPEG görüntü sıkıştırmasında, ZIP arşivlerinde (DEFLATE'te LZ77 ile birlikte), MP3 ses formatında ve birçok başka biçimde kullanılır. Genellikle diğer algoritmalarla birlikte kullanılır; örneğin JPEG, DCT ve niceleme sonrasında Huffman’ı uygular, ZIP ise LZ77’den sonra Huffman aşamasını kullanır.