2

ハフマンを使用して、文字列内の固定長コードに必要な文字あたりのビット数をどのように決定しますか?文字列内のさまざまな文字の数を、その数を2進数で表すよりも数えると、固定長になると思いましたが、機能しません。たとえば、「letty lotto like lots of lolly」という文字列では、引用符を除いて10個の異なる文字があります(10 = 0101(4ビット)なので、すべての文字を4ビットで表すことができると思いました)。 fの周波数は1で、4ではなく11111(5ビット)としてエンコードされます。

4

1 に答える 1

4

50個の「A」、35個の「B」、15個の「C」の文字列があるとします。

固定長エンコーディングでは、2ビットを使用してその文字列の各文字を表すことができます。合計100文字あるため、この方法を使用すると、圧縮された文字列の長さは200ビットになります。

または、可変長エンコード方式を使用することもできます。文字のビット数を可変にすると、「A」を1ビット(「0」)、「B」を2ビット(「10」)、「C」を2ビット(「11」)で表すことができます。 )。この方法では、文字列内の最も一般的な情報の表現に必要なビット数が少ないため、圧縮された文字列の長さは150ビットになります。

ハフマン符号化とは、具体的には、各文字の出現回数を使用して可変長符号化方式を構築する方法を指します。

あなたが説明している固定長アルゴリズムは、ハフマン符号化とは完全に別のものです。固定長コードを使用してテキストを圧縮することが目標である場合は、各文字を表すビット数を計算する方法が機能します。

于 2011-11-07T14:53:33.593 に答える