: ハフマン符号とエントロピー
: ハフマン符号
: 目的
例として、AGTGCGAAAGAGGTAACACG の20文字からなるメッセージを
符号化しよう。ちなみに各文字に2ビットを割り当てる単純な符号化を
すると、全体で 20×2 = 40 ビット必要になる。
- 文字の出現頻度(もしくは確率)を調べ、大きい順に並べる。
- 一番小さいものどうしをくっつけ、頻度(もしくは確率)を合計する。
- これを繰り返す。
頻度 |
文字 |
8 |
A |
12 |
7 |
G |
|
5 |
3 |
C |
|
|
2 |
T |
- できあがった表を左から右に見て行き、二つに分かれるところで上を《0》
下を《1》とする。
頻度 |
文字 |
8 《0》 |
A |
12 |
7 《0》 |
G |
《1》 |
5 |
3 《0》 |
C |
|
《1》 |
2 《1》 |
T |
- 数字を左から読んで行くとそれがハフマン符号。
つまり、A=0, G=10, C=110, T=111
こうして作ったハフマン符号を使って、元のメッセージを符号化すると
全部で bit となる
。
ちなみに自分でノートで作業する際は表よりも、ツリーで表した方が
書きやすいかもしれない(図2)。
: ハフマン符号とエントロピー
: ハフマン符号
: 目的
Hiroyuki Kobayashi
平成25年12月23日