1

次のストリームをハフマン コードでエンコードしようとしたときに、いくつかの問題が発生しました。コード化されたシステムが

A:0 B:10 C:110 D:111

シーケンス ABBADC は 010100111110 になります。受信時にこのビット ストリームをデコードするにはどうすればよいですか? コード化されたシステムは必要ですか?もしそうなら、どうすればこのテーブルを送ることができますか? そうでない場合、どのようにデコードすればよいですか?

4

3 に答える 3

1

ツリーを作成する必要があります

   Start
 /0    \1
 |    /0 \1 
 A   |   / \
     B   | |
         C D

そして、2 進数に続く各ステップでそれに沿って移動します。葉を見つけるたびに 根に戻る

このテーブルは、ファイルの特別なヘッダー部分で送信するか、完全に個別に送信する必要があります

于 2013-07-05T07:29:10.340 に答える
0

従来、ハフマン データの格納にはツリー データ構造が使用されていました。したがって、A、B、C、D を処理すると、バイナリ ツリーの構築に進みます。エンコーディングの値、つまり A、B、C、D はリーフに格納されます。ビット ストリームを受信すると、コードをデコードするために既に必要なツリーをトラバースするだけです。

ただし、あなたの場合、これらの 4 つの入力しかない場合は、ツリーよりもハッシュマップを使用することをお勧めします。これにより、ルックアップが容易になります。

于 2013-07-05T07:35:46.207 に答える