2

私自身からの別の質問を含め、ハフマン コードに関する多くの質問があることは承知していますが、テキスト ファイルを実際にエンコードする最良の方法は何か疑問に思っています。解凍は些細なことのようです。ツリーをトラバースし、0 で左、1 で右に進み、文字を出力します。

とはいえ、圧縮はどのように行うのでしょうか。どういうわけか、文字のビット表現をツリーのノードに保存しますか? 遭遇するたびにキャラクターをツリーで検索し、手順をたどりますか?これがどのようにコーディングされているかは重要ですか?

これまでのところ、リーフ ノードにバイナリ値が関連付けられていないハフマン ツリーがあります。私の問題は、ツリー内の各文字にバイナリ値を割り当てることです。

ありがとう

4

1 に答える 1

0

文字ベースでファイルをエンコードする場合、問題はわかりません。シンボルのハッシュ テーブルを保持し、ツリーを構築して、必要な規則を使用してファイルの先頭に書き込みます。テキストに新しいアルファベットを適用します。PNG 画像の圧縮に使用されるDEFLATEで採用されているアプローチを見てみましょう。

編集

何が問題なのかははっきりしていません。

遭遇するたびにキャラクターをツリーで検索し、手順をたどりますか?

ツリーの各ノードは、一意のシンボルを表します。何も検索する必要はありません。ハフマン ツリーを構築できるのは、各シンボルの出現回数を既に計算している場合のみです。

では、ツリーを構築するためのアルゴリズムは既に開発されていますが、問題はバイナリ値をノードに割り当てる方法についてです。または、これらの値をどこに保存しますか? ツリー自体は自然にバイナリ値を表します。ツリーの構築中に実際にそれらを追跡できます。挿入操作でアイテムの「パス」を追跡し、その値をノード内に保存するか、そうでない場合はハッシュ テーブルを作成します。ノードエンティティを変更したい。

于 2011-04-16T19:55:37.697 に答える