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.ppiiiiH(p)H(p)+1H(p)=ipilog2pi

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/MM2kln2

1+lnln2ln2ln20.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 / 2pp1/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 + k2qq+k2q1q2q+k1q+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/2qZ.

Örnek vermek gerekirse, Oq=7.

A+B=128,A2+B/2128,maxAZA 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=765226.57627.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)=(526.5+767.5)/128=7.09375(520.5760.5)/1280.99436QD(PQ)=pilogpiqi+(1pi)log1pi1qi


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.log2pi
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=21/221B.
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(1x)/2k+132k
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(21/2)1/(22)7.5+(11/(2(2)))5.802(121.5)7+21.58=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.