English· Español· Deutsch· Nederlands· Français· 日本語· ქართული· 繁體中文· 简体中文· Português· Русский· العربية· हिन्दी· Italiano· 한국어· Polski· Svenska· Türkçe· Українська· Tiếng Việt· Bahasa Indonesia

un

ゲスト
1 / ?

木としてのコード

接頭辞フリーコードは二進木にマップされます。根はデコーディングの開始を表し、左の枝は0ビット、右の枝は1ビットを表し、葉は完全なコードワードを表します。

幾何学的制約:すべての葉は根から葉へのパスを終了させます。葉は子孫を持つことができません(そうすると、そのコードワードは子孫のコードワードの接頭辞になり、接頭辞フリー性に違反します)。

Prefix-Free Decoding Tree

これはクラフト不等式に幾何学的解釈を与えます:

深さdの各葉は、全木容量の2^(−d)の割合を「占有」します。 深さDの完全二進木の全容量は1です。接頭辞フリーコードはさまざまな深さの葉を使用します。クラフト和は全占有率を測定します。

クラフト和 = 1:完全コード(すべてのパスが葉で終わる — 完全なパッキング)。

クラフト和 < 1:不完全コード(一部の木容量は未使用 — より多くの記号を追加できます)。

クラフト和 > 1:接頭辞フリーコードでは不可能(一部のパスが葉を共有する必要があります)。

より深い葉 = より長いコード = より少ない容量

深さ1の葉は、木容量の半分を使用します(2^(−1) = 0.5)。

深さ3の葉は8分の1を使用します(2^(−3) = 0.125)。

短いコードワードを木の高い位置に配置すると、そのすべての子孫が使用されるのをブロックします。1つの短いコードを多くの潜在的な長いコードと交換します。

接頭辞フリー木の構築

長さl = {1, 2, 3, 3, 3}の5つの記号を考えます。クラフト和 = 2^(−1) + 2^(−2) + 3·2^(−3) = 0.5 + 0.25 + 0.375 = 1.125 > 1。

これは1を超えています:これらの長さは接頭辞フリーコードと互換性がありません。少なくとも1つの長さは増加する必要があります。

修正:l_1を1から2に変更します。新しい長さ {2, 2, 3, 3, 3}:クラフト = 2·2^(−2) + 3·2^(−3) = 0.5 + 0.375 = 0.875 < 1。有効ですが、不完全です。

修正:l_1を2から2に変更し、l_2 = 3を追加して残りの容量を使用します。クラフト = 0.875;残り = 0.125 = 2^(−3):もう1つの深さ3の葉のための余地があります。

6記号のソースはコード長l = {1, 2, 3, 3, 4, 4}を提案しています。クラフト和を計算してください。それが1を超える場合、すべての長さを≥1に保ちながらクラフト≤1にするための最小調整(1つの長さを最小量変更)を見つけてください。あなたの作業を示してください。

エントロピーがコード長に界を設定する理由

クラフト不等式はコード構造を制約します(長さは木に収まる必要があります)。シャノンのエントロピーはコード効率を制約します(平均長は理論的下界に勝つことができません)。

最適なコード長。 確率p_iを持つ記号の場合、理想的なコード長はlog₂(1/p_i)です。珍しい記号は長いコードに値し、頻繁な記号は短いコードに値します。これはクラフト等式を反映しています:l_i = log₂(1/p_i)の場合、2^(−l_i) = p_iです。

しかし、log₂(1/p_i)はめったに整数ではありません。⌈log₂(1/p_i)⌉に切り上げるとハフマン長が得られ、H ≤ L < H + 1を満たします。

幾何学的読取。 各記号を二進木上の深さl_iの点としてプロットします。クラフト和は全葉カバレッジを測定します。エントロピーは、確率によって加重された加重平均深さを測定します。シャノンの定理:確率加重平均深さ ≥ 確率加重情報含有量。

エントロピー界の検証

実例:記号{A, B, C, D}に対してp = [1/2, 1/4, 1/8, 1/8]。

最適長:l_A = log₂(2) = 1、l_B = log₂(4) = 2、l_C = log₂(8) = 3、l_D = log₂(8) = 3。

これらはすべて整数です — 完全一致。ハフマンコード:A=0、B=10、C=110、D=111。

L = 0.5·1 + 0.25·2 + 0.125·3 + 0.125·3 = 0.5 + 0.5 + 0.375 + 0.375 = 1.75。

H = 0.5·1 + 0.25·2 + 0.125·3 + 0.125·3 = 1.75。L = H正確に:最適コード。

p = [1/2, 1/4, 1/8, 1/8]について、クラフト不等式を検証し、Hを計算し、与えられたコード{A=0, B=10, C=110, D=111}についてLを計算し、L = Hを確認してください。次に、2^(−l_i) = p_i(各記号について)という意味で、これらの長さが「理想的」である理由を1文で説明してください。

完全な実例

完全なパイプライン:確率が与えられたとき、エントロピーを計算し、コードが界を満たすことを確認します。

ソース:p(A)=0.5、p(B)=0.25、p(C)=0.125、p(D)=0.125。

H = 1.75ビット(上記で計算)。

単純なブロックコード:4記号 → 各2ビット → L = 2.0。エントロピーのオーバーヘッド:2.0 − 1.75 = 0.25ビット/記号 = 12.5%の浪費。

可変長コードは固定長コードと比較して12.5%を節約します。大きなメッセージの場合、これは実質的です。

英語のエントロピーレート。 シャノンは、5ビットのASCIIコードを使用しているにもかかわらず、書き言葉の英語のエントロピーを1文字あたり約1.0〜1.3ビットと推定しました。その4:1の比率は、自然言語の膨大な冗長性を反映しています — 一般的な文字が集まり、単語が繰り返され、文法はシーケンスを制約します。

圧縮はエントロピーに勝つことができません

圧縮率:H / (ブロックコード長)。この例:1.75/2.0 = 0.875 — 87.5%の効率。

さらに圧縮できますか?コンテキストを使用することでのみ:記号のペアまたは3つ組を一緒にエンコードする場合、統計的依存により結合エントロピーH(X、Y)は2·H(X)未満である場合があります。これは無音声符号化定理をn-gramに拡張したものです。

ソースZは8個の等確率記号(i=1..8についてp_i = 1/8)を持っています。H(Z)を計算してください。各記号の最適なコード長は何ですか?これは、[1/2, 1/4, 1/8, 1/8]ソースと比較して、ユニフォームソースをどれだけ圧縮できるかについて何を言っていますか?