0

いくつかの周波数からハフマン コードを作成しようとしています。私はそれを行う方法を知っていますが、どちらの側(左または右?)にどの要素を配置するかという混乱が1つだけあります。

つまり、ハフマン木について私が考えていることは- (1) まず、すべての頻度を降順で並べ替えます。(2)最小の2つを取り、それらをマージします。** しかし、2 つの周波数のどちらが右に入り、どちらが左になるのかわかりません**。右側には「0」があり、右側には「1」があることがわかっています。しかし、どちらの周波数を右または左に保持するかはわかりません。何に基づいてそれを行うのですか?

4

2 に答える 2

0

私はあなたの質問を正確に理解していないので、ハフマン エンコーディングの簡単な例を示します。

A: 0.5
B: 0.1
C: 0.2
D: 0.15
E: 0.05

頻度の降順に並べると、次のようになります。

A: 0.5
C: 0.2
D: 0.15
B: 0.1
E: 0.05

次に、下の 2 つを結合します。

A: 0.5
C: 0.2
D: 0.15
B+E: 0.15

完全な二分木ができるまでこれを続けます。この例では: A = 0, C = 10, D = 110, B = 1110, E = 11110 デコンプレッサがそれを読み取る方法を知っている限り、ツリーを 0 または 1 で続行することを選択しても問題ありません。

于 2013-09-07T21:39:14.700 に答える
0

子ノードを左または右に配置できますが、これはソリューション全体にとって重要ではありません。これらの値 0 と 1 ではなく、長さだけが表示されます。

于 2013-09-07T22:00:05.060 に答える