私はハフマン アルゴリズムを介して圧縮の 2 つの異なるシナリオを手動で解決しようとしています。それぞれのシナリオで(symbol, frequency)
、アイテムとしてタプルを含む順序付けられたキューから開始し、辞書を作成しようとします。
step 0:
[c:3] [b:4] [a:5]
step 1:
[a:5] [7]
[c:3] [b:4]
step 2:
[12]
[a:5] [7]
[c:3] [b:4]
左が 0 で右が 1 であると考えると、辞書として次のようになります。
a -> 0
b -> 11
c -> 10
これまでのところ、すべてが正しく見えます。しかし、代わりに、最初のキューが次のようなものであると仮定しましょう。
step 0:
[c:1] [b:2] [a:4]
step 1:
[3] [a:4]
[c:1] [b:2]
step 2:
[7]
[3] [a:4]
[c:1] [b:2]
次の辞書が得られます。
a -> 1
b -> 01
c -> 00
これは正しくないようです (a
との両方b
が等しい)。
私は何を間違っていますか?ツリーのルートで枝の 1 つが実際に葉であるのを確認し、その方向を 1 の方向として選択することもできますif
が、これは私にはきれいに見えません。私は何かが欠けているに違いないと思いますか?