Huffman Encoding her zaman optimal mi?


9

Kodlama gereksinimi olması önek ücretsiz nedeniyle tam olmak zorunda ağacına büyük ağaçların sonuçlanır. Sabit uzunlukta kodlanmamış veri depolamanın verileri kodlamaktan daha verimli olacağı bir eşik var mı?


Genel olarak 'hayır'. Ortalama bir veri için, her karakterin frekansı> 1 ve sabit uzunluklu kodlar yerine Huffman Kodlaması kullanmanın iyi olacağı anlamına gelir

@arunmoezhi Lütfen yukarıda verdiğim örneği ele alabilir misiniz? Her karakterin frekansı 1'den fazladır, ancak sabit uzunluk daha uygundur.

Bu örnek ilginç. Ancak böyle bir senaryoyu frekans yerine her karakterin olasılıklarıyla sağlayabilir ve tüm karakterlerin olasılıklarının 1'e

@arunmoezhi Karakterlerin olasılıklarını dahil ettim ve 1'e kadar

Yanıtlar:


4

H(A)Bu problemin entropisi 1.998. Bu sorun için hem Huffman kodlaması hem de sabit uzunluklu kodlama, ort 2. Ve FYI, Huffman Encoding kullanarak aldığınız kodlama yanlış. Huffman Encoding ayrıca bu sorun için sabit uzunluğa benzer kodlar üretir. Açgözlü bir yaklaşım kullanır. Yani abir kod almaz 0ama onun yerine alır 00. Huffman Kodlamasını kullanarak oluşturduğunuz ağaç üzerinde yeniden çalışın. Alacağınız ağaç:resim açıklamasını buraya girin


Teşekkür ederim. Huffman Encoding'in her zaman sabit uzunluktan daha uygun olduğuna dair bir kanıt sunabilir misiniz, yoksa en azından beni birine yönlendirin mi?

1
Sen başvurabilirsiniz Introduction to Algorithmstarafından CLRS. Üzerinde konuştuğunuz bölümde greedy algorithmsresmi bir kanıt elde edebilirsiniz Huffman algorithm. Bu uzun bir kanıt ve okumak için sabır gerekiyor.

8

Huffman kodlaması, nüfus dağılımını iki olasılık gücüyle yaklaşık olarak tahmin eder. Gerçek dağılım iki olasılıktan oluşan güçlerden oluşuyorsa (ve giriş sembolleri tamamen ilişkisizse), Huffman kodlaması en uygunudur. Değilse, aralık kodlamasıyla daha iyisini yapabilirsiniz. Bununla birlikte, girişteki belirli sembollere belirli bit kümeleri atayan tüm kodlamalar arasında en uygunudur.


"Nüfus dağılımına yaklaşır" ile ne demek istiyorsun?

3
Varsayımsal olarak gönderilebilecek teorik bir mesaj dağılımı vardır. İdeal olarak, her mesaj, olasılık günlüğüyle orantılı bir şekilde kodlanmalıdır, ancak Huffman kodları, dolaylı olarak ikisinin gücü olan olasılıklara karşılık gelen tam sayı bir bit sayısı olduğu için kodlanmalıdır. Dolayısıyla bir yaklaşım. Shannons Kodlama Teoremine bakın.

8

Evet, her zaman en uygunudur.

Hayır, sabit uzunluklu kodlanmamış verileri kullanmak için daha az yer kullanacağı bir eşik yoktur.

Web'de birkaç kanıt buldum, ancak Wikipedia makalesinde Huffman kodlamasında yeterli tartışma var .

Bu aynı zamanda daha yüksek sıkıştırma sağlayan diğer teknikleri de kapsar (Huffman kodunun en uygun olduğu alanın dışında çalışma).

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.