Büyük olasılık harfleri olmadığında Huffman kodu ne kadar iyi?


21

Bir olasılık dağılımı için Huffman kod en az ağırlıklı ortalama kod sözcüğü uzunluğuna sahip önek kodu , uzunluğu inci codword. Huffman kodunun sembol başına ortalama uzunluğunun ve arasında olduğu bilinen bir teoremdir , burada Shannon entropisidir. olasılık dağılımının.p∑piℓiℓiiH(p)H(p)+1H(p)=−∑ipilog2⁡pi

Ortalama uzunluğun Shannon entropisini neredeyse 1'e geçtiği kanonik kötü örnek, entropinin neredeyse 0 olduğu ve ortalama kod sözcüğü uzunluğunun 1 olduğu gibi bir olasılık dağılımıdır entropi ve neredeyse olan codeword uzunluğu arasında bir boşluk .{.999,.001}1

Peki, olasılık dağılımındaki en büyük olasılık üzerinde bir sınır varsa ne olur? Örneğin, tüm olasılıkların değerinden daha az olduğunu varsayalım . Bu durumda bulabileceğim en büyük boşluk , entropinin 1'den biraz daha fazla olduğu ve ortalama kod sözcüğü uzunluğunun 1.5'ten biraz daha az olduğu, gibi bir olasılık dağılımı içindir boşluk yaklaşıyor . Yapabileceğin en iyi şey bu mu? Bu dava için kesinlikle 1'den daha az olan boşluğa bir üst sınır verebilir misiniz?12{.499,.499,.002}0.5

Şimdi, tüm olasılıkların çok küçük olduğu durumu düşünelim. Her biri olasılık olan harfleri üzerinde bir olasılık dağılımı seçtiğinizi varsayalım . Bu durumda, en büyük boşluk seçerseniz oluşur . Burada, civarında bir boşluk elde Tüm olasılıkların küçük olduğu durumlarda yapabileceğiniz en iyi şey bu mu?M1/MM≈2kln⁡2

1+ln⁡ln⁡2−ln⁡2ln⁡2≈0.08607.

Bu soru, bu TCS Stackexchange sorusundan ilham aldı .

Yanıtlar:


19

Bahsettiğiniz sorunu tam olarak inceleyen birçok makale var. Serinin ilki, Gallager, "Huffman Tarafından Bir Temada Çeşitlemeler", IEEE-IT, cilt. 24, 1978, sayfa 668-674. Bir Huffman kodunun ortalama kod sözcüğü uzunluğu ile entropi (bu miktar "artıklık" olarak adlandırılır) arasındaki farkın her zaman kesinlikle (= olasılık dağılımındaki en büyük olasılık) daha düşük olduğunu ve eğer ise, azdır . Daha iyi sınırlar olduğu biliniyor, bunları Gallager'ın eserini alıntılayan sayısız makalede bulabilirsiniz.p ≥ 1 / 2 P + 0.086 p < 1 / 2pp≥1/2p+0.086p<1/2


2
Optimal sınır, Manstetten tarafından bulundu , Huffman kodlarının fazlalığı üzerine Tight sınırları .
— Yuval Filmus

2

sınırına bakılırsa , farklı bir soru sormak istediğine inanıyorum ... ya da "ortalama" yı nasıl alacağını belirtmedin. Yani ikisine de cevap vereceğim. Cevap her iki soruya da hayır.H(p)≤…≤H(p)+1

Öncelikle, kod kelimeleri üzerinden tek tip bir dağılım kullanarak ortalama kod uzunluğunu tanımlarsanız ve herhangi bir öğenin olasılığı üzerine üst sınır olarak alırsanız , uzunluk kodunu düşünün, burada kod kelimelerinin uzunluğu , kalan uzunluğu . Bu kod tarafından mükemmel şekilde kodlanan dağıtım için, ortalama uzunluk değerine yaklaşır , eğer bir elementin olasılığı için daha düşük bir bağınız yoksa, entropi . q + k 2 q - 1 q 2 q + k - 1 q + k q + k q + k2−qq+k2q−1q2q+k−1q+kq+kq+k2

Şimdi Huffman kodunu kodlamak için kullanıldığında ortalama kod sözcüğü uzunluğu anlamına gelen "ortalama uzunluğu" düşünelim . Burada sınır sıkıdır ve bunu sınırda gerçekleştiren bir örnek dağılım, her elemanın için olasılığıyla gerçekleştiği bir dağılımdır(Nihai öğeye artık olasılık atanır, ancak asimptotik olarak hiçbir fark yaratmaz).2 q ± 1 / 2 q ∈ Z .p2q±1/2q∈Z.

Örnek vermek gerekirse, Oq=7.

A+B=128,A2+B/2≤128,maxA∈ZA verir . Dağılımımız olasılıkla element , olasılıkla öğeden oluşuyor ve bir element artıkları alıyor.52 2 - 6,5 76 2 - 7,5A=52,B=76522−6.5762−7.5

Daha sonra , Huffman kodu entropi kaybına . (Bu arada, entropi kaybının, Huffman kodunu veya için rasgele kodlama yapıp yapmadığına dair bir adı vardır : Kullback-Liebler ayrışması Kullanarak birkaç gün önce keşfettim, Wikipedia'da Chernoff'un sınırlarını görebildiğin gibi çift taraflı daha dar Chernoff sınırlarına yol açıyor.)H(X)=(52⋅6.5+76⋅7.5)/128=7.09375(52⋅0.5−76⋅0.5)/128≈0.99436QD(P‖Q)=∑pilog⁡piqi+∑(1−pi)log⁡1−pi1−qi


1
Bu ikinci örnekten biraz şaşırdım. 128 kod sözcüğünüz varsa, ortalama kelime uzunluğu 7 olan (aslında, tüm kelime uzunlukları 7 olan) bir kod vardır; bu, entropinin 7.09375 olduğu ifadesine aykırıdır. Huffman kodunun ortalama uzunluğu . Bu dağılımın entropisi (ortalama ve ortalama değil) ve Huffman kodunun ortalama uzunluğu 7'dir. 0.12 civarında, bu benim örneğimden biraz daha iyi görünüyor, ama 1'e yakın değil.−log2⁡pi
— Peter Shor

Ve gerçekten de haklısın. Olasılık dağılımında beklenen kod sözcüğü uzunluğunu sormayı planladım . p
— Peter Shor

Hata! vs hakkında yanlış hesapladım . Hala daha küçük girişleri alt satıra zorlamak için biraz az olmasını istiyoruz, ancak gibi şey . Bu,ABA2+B/22kA+2B=2kA=2−1/22−1B.
— Carl,

Aslında bu olurdu ... ama bu denklem sisteminin olumlu bir çözümü yok - her şeyi tam sayı güçleri olmaya zorlayamıyoruz gibi görünüyor . Öyleyse, ve yerine Huffman kodunun yarısı için örneğin ve geri kalanlar için, girişi ...2A+B221/2(1+x)/2k(1−x)/2k+13∗2k
— Carl

Yani, bunu deneyin (optimal değil - sanırım nasıl aşağı ya da yukarı doğru karar verdiğinize bağlı). olasılık ile girdiler ve olasılığının girişleri entropi vardır . Bunun yerine bu değişiklik olasılık içeren girişleri ve olasılık içeren girişleri . Bu dağılımın entropisi olup, 6.4023'ü verirken, Huffman kodunun entropisi tekdüze altında 7.5'dir veYani yanlış hesaplanmadım (ve sık sık yaptığım), bu yaklaşık bir boşluk verir641/1281281/2567.5641/12821281/256(2−1/2)1/(22)∗7.5+(1−1/(2(2)))∗5.802(1−2−1.5)∗7+2−1.5∗8=7.3535.0.95 .
— Carl,
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.