大きな確率の文字がない場合、ハフマンコードはどれくらい良いですか?


21

確率分布のためのハフマン符号p最小加重平均符号語長を有する接頭コードである∑piℓi、ここでℓiの長さでありi番目codword。ハフマン符号のシンボルあたりの平均長は、H(p)と間であることがよく知られている定理ですH(p)+1。ここで、H(p)=−∑ipilog2⁡piは、確率分布のシャノンエントロピーです。

平均長がシャノンエントロピーをほぼ1超える標準的な悪い例は、ような確率分布{.999,.001}で、エントロピーはほぼ0で、平均コードワード長は1です。これによりギャップが生じます。エントロピーとほぼコードワード長の間1。

しかし、確率分布の最大確率に限界があるとどうなりますか?たとえば、すべての確率が1未満であるとします12。この場合に見つけることができる最大のギャップは、エントロピーが1よりわずかに大きく、平均コードワード長が1.5よりわずかに小さいなどの確率分布の場合です。0.5。これはあなたができる最善ですか?この場合、厳密に1未満のギャップの上限を指定できますか?{.499,.499,.002}0.5

ここで、すべての確率が非常に小さい場合を考えてみましょう。それぞれが確率1 / Mを持つM文字にわたる確率分布を選択するとします。あなたが選択した場合この場合、最大のギャップが発生したM ≈ 2 K LN 2を。ここでは、約1 + ln ln 2 − ln 2のギャップがあります。 1/MM≈2kln⁡2

1+ln⁡ln⁡2−ln⁡2ln⁡2≈0.08607.
これは、すべての確率が小さい状況でできる最善の方法ですか?

この質問は、このTCS Stackexchange質問に触発されました。

回答:


19

あなたが言及した問題を正確に研究している論文がたくさんあります。シリーズの最初の記事は、Gallagerによる論文、「Variations on a Theme by Huffman」、IEEE-IT、vol。24、1978、pp。668-674。彼は、ハフマン符号の平均符号語長とエントロピー(彼はその量「冗長性」と呼ぶ)との差が厳密未満常にあることを証明場合に、(=確率分布における最大確率) P ≥ 1 / 2、それ未満であるP + 0.086場合、P < 1 / 2。より良い境界は知られており、Gallagerの仕事を引用した多数の論文で見つけることができます。pp≥1/2p+0.086p<1/2


2
Manstettenにより、ハフマン符号の冗長性の厳密な境界が最適な境界が見つかりました。
— ユヴァルフィルマス

2

判断すると束縛、私はあなたが別の質問をすることを目的と信じて...またはあなたがちょうどあなたが「平均」を取る方法を指定しませんでした。だから私は両方に答えます。両方の質問に対する答えはノーです。H(p)≤…≤H(p)+1

もし符号語にわたって均一な分布を用いて、平均符号長を定義した場合、まず、テイク上方いずれかの要素の確率に結合されるように、次に長のコード考慮Q + K 2つのQ - 1つのコードワードは長有するQを残りの2 q + k − 1の長さはq + kです。このコードで完全にエンコードされた分布の場合、1つの要素の確率の下限もなければ、平均長さはq + kに近づきますが、エントロピーは2−qq+k2q−1q2q+k−1q+kq+k。q+k2

ここで、ハフマン符号を使用してをコーディングする場合の平均コードワード長を意味する「平均長」を考えてみましょう。ここで、結合はタイトであり、そして制限でそれを達成する例示的分布は、各要素が確率で起こるものである2 Q ± 1 / 2のためのq ∈ Z。(最後の要素には残りの確率が割り当てられますが、漸近的には違いはありません)。p2q±1/2q∈Z.

たとえば、考えます。その後、q=7.

A=52、B=76522 - 6.5 762 - 7.5A+B=128,A2+B/2≤128,maxA∈ZAA=52,B=76522−6.5762−7.5

次に、ですが、ハフマンコードはエントロピー損失をます。(ちなみに、エントロピー損失には名前がありますに対してハフマン符号化を行っても、任意の符号化を行っても、Kullback-Liebler発散。これを使用して、数日前に発見しました。WikipediaのChernoff境界で見ることができるように、より厳密な両面Chernoff境界につながります。)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
私はこの2番目の例にやや困惑しています。128個のコードワードがある場合、平均ワード長7(実際、すべてのワード長は7)のコードがあります。これは、エントロピーが7.09375であるというステートメントと矛盾します。この分布のエントロピー(平均ではなく加重平均を取ることで得られる)は6.88ですが、ハフマンコードの平均長は7です。これにより、かなり良く私の例よりもあるように思われ、0.12の周りではなく、1に近い−log2⁡pi
— ピーター・ショア

そして確かに、あなたは正しい。確率分布下で予想されるコードワード長について質問するつもりでした。p
— ピーターショー

おっと、 vsについて間違って計算しまし。我々はまだたい弱のような、何か、下の行に、より少ないエントリを強制します。これにより、ABA2+B/22kA+2B=2kA=2−1/22−1B.
— カール

実際にはますが、この連立方程式には正の解がありません。すべてを整数倍に強制することはできないようです。したがって、および代わりに、ハフマンコードの半分、およびを考慮することができます残りについては、エントリを与えます...2A+B221/2(1+x)/2k(1−x)/2k+13∗2k
— カール

したがって、これを試してください(最適ではありません-切り捨てまたは切り捨ての決定方法によって異なります)。確率でエントリおよび確率エントリ、エントロピー有する。代わりにそれを変更しの確率でエントリおよび確率エントリ。この分布のエントロピーはあり、6.4023となりますが、ハフマンコードのエントロピーは均一で7.5です。だから、私が間違って計算しない限り(そして、私は頻繁に行う)、これは約のギャップを与えます641/1281281/2567.5641/12821281/256(2−1/2)(1−2 − 1.5)∗7+2 − 1.5 ∗8=7.3535 0.951/(22)∗7.5+(1−1/(2(2)))∗5.802(1−2−1.5)∗7+2−1.5∗8=7.3535.0.95。
— カール
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.