ハフマン符号:頻度で木を組む

出やすい文字を短い符号に ── 「最小2頻度を併合」をステップ実行すると木が下から育ち、平均符号長がエントロピーに迫ります。

各文字の出現頻度(スライダーで偏りを調整。0 にすると除外)
22
12
8
5
残りノード数
平均符号長 L
エントロピー H(下限)
固定長との比較
頻度(高いほど出やすい=短くしたい)
ハフマン木(下の葉から併合して育つ。左=0/右=1)
符号表(木が完成すると確定。頻度が高い文字ほど短い)
すべての文字を同じビット数(固定長)で表すのは無駄です ── よく出る文字を短く、めったに出ない文字を長くすれば、全体は縮みます。
ハフマン符号は、これを最適に行う手順です。やることは1つだけ: いま頻度が最小の2つを取り出して足し合わせ、1つの親ノードにまとめる。これをノードが1つ(根)になるまで繰り返します。
すると、頻度の低い文字ほど根から深い葉になり、長い符号が割り当たります。スライダーで頻度の偏りを変え、平均符号長 L が理論下限のエントロピー H にどこまで迫るかを見てください。

いま何が起きている?

ここがポイント