Seberapa baik kode Huffman ketika tidak ada huruf probabilitas besar?

21

Kode Huffman untuk distribusi probabilitas adalah kode awalan dengan panjang codeword rata-rata tertimbang minimum , di mana adalah panjang dari kata sandi ke- . Ini adalah teorema yang terkenal bahwa panjang rata-rata per simbol kode Huffman adalah antara dan , di mana adalah entropi Shannon dari distribusi probabilitas.ppiiiiH(p)H(p)+1H(p)=ipilog2pi

Contoh buruk kanonik, di mana panjang rata-rata melebihi entropi Shannon hampir 1, adalah distribusi probabilitas seperti , di mana entropi hampir 0, dan panjang rata-rata kode kata adalah 1. Ini memberikan celah antara entropi dan panjang kode sandi hampir .{.999,.001}1

Tetapi apa yang terjadi ketika ada batasan pada probabilitas terbesar dalam distribusi probabilitas? Misalkan, misalnya, bahwa semua probabilitas kurang dari . Kesenjangan terbesar yang dapat saya temukan dalam kasus ini adalah untuk distribusi probabilitas seperti , di mana entropi sedikit lebih dari 1 dan panjang rata-rata codeword sedikit kurang dari 1,5, memberikan gap mendekati . Apakah ini yang terbaik yang dapat Anda lakukan? Bisakah Anda memberi batas atas pada celah yang benar-benar kurang dari 1 untuk kasus ini?12{.499,.499,.002}0.5

Sekarang, mari kita perhatikan kasus di mana semua probabilitas sangat kecil. Misalkan Anda memilih distribusi probabilitas atas huruf, masing-masing memiliki probabilitas . Dalam hal ini, kesenjangan terbesar terjadi jika Anda memilih . Di sini, Anda mendapatkan celah sekitar Apakah ini yang terbaik yang dapat Anda lakukan dalam situasi di mana semua probabilitas kecil?M1/MM2kln2

1+lnln2ln2ln20.08607.

Pertanyaan ini terinspirasi oleh pertanyaan TCS Stackexchange ini .

Peter Shor
sumber

Jawaban:

19

Ada banyak makalah yang mempelajari persis masalah yang Anda sebutkan. Yang pertama dalam seri ini adalah makalah oleh Gallager, "Variasi pada Tema oleh Huffman", IEEE-IT, vol. 24, 1978, hlm. 668-674. Dia membuktikan bahwa perbedaan antara panjang kata sandi rata-rata kode Huffman dan entropi (ia menyebut kuantitas "redundansi") selalu benar-benar kurang dari (= probabilitas terbesar dalam distribusi probabilitas), dalam kasus , dan kurang dari , jika . Batas yang lebih baik diketahui, Anda dapat menemukannya di banyak makalah yang mengutip karya Gallager.p 1 / 2 p + 0,086 p < 1 / 2pp1/2p+0.086p<1/2

Ugo
sumber
2
Batas optimal telah ditemukan oleh Manstetten, Batas ketat pada redundansi kode Huffman .
Yuval Filmus
2

Dilihat oleh terikat, saya yakin Anda bermaksud untuk mengajukan pertanyaan yang berbeda ... atau Anda hanya tidak menentukan bagaimana Anda mengambil "rata-rata". Jadi saya akan menjawab keduanya. Jawabannya adalah tidak untuk kedua pertanyaan itu.H(p)H(p)+1

Pertama, jika Anda menentukan panjang kode rata-rata menggunakan distribusi yang seragam di atas kata-kata kode dan menganggap sebagai batas atas pada probabilitas salah satu elemen, maka pertimbangkan kode panjang q + k di mana 2 q - 1 kata kode memiliki panjang q dan sisanya 2 q + k - 1 memiliki panjang q + k . Untuk distribusi yang dikodekan dengan sempurna oleh kode ini, panjang rata-rata mendekati q + k , kecuali jika Anda juga memiliki batas yang lebih rendah untuk probabilitas satu elemen, sedangkan entropinya adalah2qq+k2q1q2q+k1q+kq+k .q+k2

Sekarang mari kita perhatikan "panjang rata-rata" yang berarti panjang codeword rata-rata ketika kode Huffman digunakan untuk kode untuk . Di sini, terikat ketat, dan distribusi contoh mencapai dalam batas adalah satu di mana setiap elemen terjadi dengan probabilitas 2 q ± 1 / 2 untuk q Z . (Elemen terakhir diberikan probabilitas sisa, tetapi tidak akan membuat perbedaan asimptotik).p2q±1/2qZ.

Sebagai contoh, pertimbangkan Laluq=7.

menghasilkanA=52,B=76. Distribusi kami memiliki52elemen dengan probabilitas2 - 6.5 ,76dengan probabilitas2 - 7.5 , dan satu elemen mendapatkan sisanya.A+B=128,A2+B/2128,maxAZAA=52,B=765226.57627.5

Kemudian , sedangkan kode Raih Huffman ( 52 0,5 - 76 0,5 ) / 128 0,99436 kehilangan entropi. (Kebetulan, kerugian entropi memiliki nama, apakah Anda melakukan pengkodean Huffman atau pengkodean sewenang-wenang untuk Q : K divergensi Kullback-Liebler D ( P Q ) = p iH(X)=(526.5+767.5)/128=7.09375(520.5760.5)/1280.99436Q . Menggunakannya, saya menemukan beberapa hari yang lalu, mengarah ke batas Chernoff dua sisi yang lebih ketat, seperti yang dapat Anda lihat di Wikipedia untuk batas Chernoff.)D(PQ)=pilogpiqi+(1pi)log1pi1qi

Carl
sumber
1
log2pi
p
ABA2+B/22kA+2B=2kA=21/221B.
2A+B221/2(1+x)/2k(1x)/2k+132k
641/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