0

ASCIIのみを使用して圧縮の基本を学ぼうとしています。

小文字の文字列のメールを送信している場合。ファイルに、n それぞれが 8 ビットの拡張 ASCII コードとして格納されている文字がある場合、8n ビットが必要です。しかし、圧縮の基本原則によれば、重要でない情報は破棄します。そのため、小文字の文字列をコード化するためにすべての ASCII コードは必要ありません。それらは 26 文字しか使用しません。5 ビット コードワード (25 = 32 > 26) だけで独自のコードを作成し、このコーディング スキームを使用してファイルをコーディングし、受信した電子メールをデコードします。

The size has decreased by 8n - 5n = 3n, i.e. a 37.5% reduction.

しかし、電子メールが小文字 (26)、大文字、および余分なm文字で構成されており、それらを効率的に保存する必要がある場合はどうでしょうか?

4

1 に答える 1

2

確率が等しいn個のシンボルがある場合、log2(n)ビットを使用して各シンボルをコーディングできます。これは、log2(n)が小数である場合でも、算術コーディングまたはレンジコーディングを使用して当てはまります。ハフマン(シンボルあたりの固定ビット数)コーディングに制限すると、log2(n)に近づくことができますが、平均してシンボルあたりのビット数はわずかです。

たとえば、算術符号化を使用して、シンボルあたり3.322ビットに非常に近い10個のシンボル(10進数など)をエンコードできます。ハフマン符号化を使用すると、6つのシンボルを3ビットでコーディングし、4つのシンボルを4ビットでコーディングできます(シンボルあたり平均3.4ビット)。

シフトアップおよびシフトダウン操作の使用は、英語のテキストでは小文字と大文字の文字列が含まれることが予想されるため、有益な場合があります。今、あなたは高次モデルと不均等な度数分布の両方に入っています。

于 2012-08-15T01:35:41.730 に答える