ハフマン符号化

H (H) コーディング原理

ハフマン符号化は、異なるプレフィックスを使用した可変語長符号化であり、異なる出現確率に従って最短の平均長の符号語を構築します。符号化の基本的な方法は、まずソース シンボルをスキャンし、各シンボルの確率をカウントし、確率に応じて異なる長さのコードワードを割り当て、ソース シンボルの平均長が最短になるように符号化テーブルを構築することです。 。

たとえば、ソース シンボルが u1、u2、u3 を持つ場合、対応する確率は P1=0.2、P2=0.2、P3=0.6 になります。

エンコードするときは、まず 2 つの最小確率のソース シンボルから始めて 3 つのシンボルを確率に従って小さいものから大きいものに並べ替え、ブランチの 1 つを 0 として選択し、もう 1 つのブランチを 1 として選択します。次に、エンコードされた 2 つのブランチの確率マージされて再度キューに入れられます。

上記のプロセスは、組み合わせた確率の合計が 1 になるまで繰り返されます。最後に、分岐で遭遇した 0 と 1 が逆順にソートされ、得られたコードがシンボルのハフマン コード ワードになります。

下図に示すように、u2のハフマン符号語は「01」であり、ハフマン符号化では各シンボルの符号語が記録され、表1に示すように符号語とソースシンボルの対応関係が符号表として記録されます。

ここに画像の説明を挿入
図 1. 元のハフマン コード

ただし、ハフマン符号化によって得られる結果は一意ではありません。確率統計では、2 つのソース シンボルの確率が等しい場合があり、その結果、キューイングの方法が一意ではなくなります。もう 1 つの理由は、符号化のプロセスで、およびマーキング、0、1 分岐の選択は固定されていないため、異なるエンコード結果が得られる可能性があります。しかし、一般に、出現確率の高い文字には短い符号語が割り当てられ、出現確率の低い文字には長い符号語が割り当てられるため、確率に従って符号語が割り当てられ、平均符号長が最短となり、目的を達成できます。データをロスレス圧縮します。

表 1. ハフマン符号化テーブル:
ここに画像の説明を挿入

おすすめ

転載: blog.csdn.net/q15516221118/article/details/131357887