次のストリームをハフマン コードでエンコードしようとしたときに、いくつかの問題が発生しました。コード化されたシステムが
A:0 B:10 C:110 D:111
シーケンス ABBADC は 010100111110 になります。受信時にこのビット ストリームをデコードするにはどうすればよいですか? コード化されたシステムは必要ですか?もしそうなら、どうすればこのテーブルを送ることができますか? そうでない場合、どのようにデコードすればよいですか?
次のストリームをハフマン コードでエンコードしようとしたときに、いくつかの問題が発生しました。コード化されたシステムが
A:0 B:10 C:110 D:111
シーケンス ABBADC は 010100111110 になります。受信時にこのビット ストリームをデコードするにはどうすればよいですか? コード化されたシステムは必要ですか?もしそうなら、どうすればこのテーブルを送ることができますか? そうでない場合、どのようにデコードすればよいですか?
ツリーを作成する必要があります
Start
/0 \1
| /0 \1
A | / \
B | |
C D
そして、2 進数に続く各ステップでそれに沿って移動します。葉を見つけるたびに 根に戻る
このテーブルは、ファイルの特別なヘッダー部分で送信するか、完全に個別に送信する必要があります
従来、ハフマン データの格納にはツリー データ構造が使用されていました。したがって、A、B、C、D を処理すると、バイナリ ツリーの構築に進みます。エンコーディングの値、つまり A、B、C、D はリーフに格納されます。ビット ストリームを受信すると、コードをデコードするために既に必要なツリーをトラバースするだけです。
ただし、あなたの場合、これらの 4 つの入力しかない場合は、ツリーよりもハッシュマップを使用することをお勧めします。これにより、ルックアップが容易になります。