ハフマン符号化の手順は以下のとおりです。
符号化されたデータの復号方法は、前節で説明しましたように符号化されたビット列にしたがってハフマン木を根からたどり、葉にたどり着いたところでその葉に対応する記号に逆変換します。 このためハフマン符号化では圧縮後のデータにハフマン木を追加保存しておく必要があり、そのぶんが圧縮後データのオーバーヘッドになります。
例として、「aabbccccddddeeeeeeeeffff」という元データを前節の手順に従って符号化してみましょう。
1110 | 1110 | 1111 | 1111 | 100 | 100 | 100 | 100 | 101 | 101 | 101 | 101 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 110 | 110 | 110 | 110 |
a | a | b | b | c | c | c | c | d | d | d | d | e | e | e | e | e | e | e | e | f | f | f | f |
圧縮率= | 60 ─── 24×8 | = | 60 ── 192 | =0.3125(31.25%) |
平均符号長= | 60 ── 24 | =2.5ビット |
符号化されたビット列「111011101111111110010010010010110110110100000000110110110110」を復号するのは、6.で完成されたハフマン木を利用すれば比較的簡単ですので、説明は省略します。 一度、自分で実際に復号してみてください。(^_-)