7
ハフマンをコーディングしてください!
さもなければ、彼はあなたの家を吹き飛ばして吹き飛ばします! それは完全に無関係でした。この挑戦は実際にハフマンコーディングについてです。その要点は、特定のテキスト内の文字の頻度を利用して、その表現を短くすることです。言い換えれば、私たちのアルファベットがa通り抜けているzとしましょう。27文字です。5ビットには32文字分のスペースがあるため、それぞれを5ビットで一意にエンコードできます。ただし、多くの状況(英語や一般的な言語など)では、一部の文字は他の文字よりも頻繁に出現します。頻度の高い文字にはより少ないビットを使用し、頻度の低い文字には(おそらく)より多くのビットを使用できます。正しく実行すると、ビット数が全体的に節約され、元のテキストを一意に再構築できます。 「この質問はハフマンコーディングに関するものです」を例に取りましょう。このテキストの長さは37文字で、通常は37 * 8 = 296ビットですが、各文字に5ビットしか使用しない場合は37 * 5 = 185ビットのみです。心に留めておきます。 以下に、各文字とテキスト内のそれらの頻度の(ソート)テーブルを、頻度の高い順に並べています(_はスペースを表します)。 _ 5 i 4 n 3 o 3 s 3 t 3 u 3 a 2 f 2 h 2 b 1 c 1 d 1 e 1 g 1 m 1 q 1 関連する最適なコーディングは次のとおりです。 _ 101 i …