2017-10-25 12 views
0

私はコンプレッサーを学び始めています。ジェネリックコンプレッサーの基本的な考え方は、辞書に類似のアイテムを導入して全体のサイズを減らすことです。言葉での例は次のようになります。等しい項目がない場合、コンプレッサーは機能しますか?

「私はoverflow.Iは、スタックオーバーフローで午前スタックにいる私は、スタックに オーバーフローしています私は、スタックオーバーフローで午前こんにちはスタックオーバーフローで午前私は です。。。。。私はスタックオーバーフローしています。スタックオーバーフローしています。 さようなら。

ので、辞書で、私たちは持っていると思います:

A: "私は、スタックオーバーフローにしています。"

AAAAHello.AAAABye.

全く同様の項目がない場合、コンプレッサは、サイズを小さくしますか?それとも類似のアイテムがないことさえ可能ですか?

答えて

1

はい、繰り返し文字列がなくても、周波数が不均一に表示されている限り、テキストを無損失で圧縮できます。例えば、可能な256バイトのうち36バイトしかメッセージで使用されない場合、そのサイズの65%に圧縮することができます。

もちろん、繰り返し文字列を使用することはできません。

+0

文字列は、コンプレッサーの仕組みを説明するための単なる「方法」です。だから私は要素を求めている。出来ますか?または、想像してみてください: "abcdefghijklmnopqrstuvwxyz"は圧縮できません。それが私が意味することです、より大きな「コンセプト」です。 –

+1

これらの26文字は、コード記述のオーバーヘッドのために、一般的なコンプレッサーによって圧縮される文字列が短すぎます。しかし、小文字のすべてのシーケンスを元のサイズの59%に圧縮する小文字用のコンプレッサーだけを書くことができます。小文字の長いシーケンス(例:繰り返される文字列を持たないいくつかのKバイトは、汎用コンプレッサでほぼ同程度に圧縮されます。 –

関連する問題