0と1の文字列をどれだけ圧縮できるかについて、既知の最大値はありますか?


38

ずいぶん前に、ある種の教授が将来、データをわずか2ビット(またはそのようなもの)に圧縮できると言っている新聞記事を読みました。

もちろんこれは正しくありません(そして、彼が正確に述べたことの私の記憶が正しくない可能性があります)。(技術的には可能であっても)0と1の文字列を2ビットだけに圧縮するのは実用的ではないことは理解できます。 'および' 10 'から選択)。

とにかく、これにより、何らかのスキームに従って0と1の任意の長さの文字列を圧縮することの実現可能性について考えるようになりました。この種の文字列について、文字列の長さ(0と1の比率はおそらく重要ではない)と最大圧縮の間に既知の関係がありますか?

言い換えると、0と1の文字列を圧縮できる最小の(可能な限り短い)長さを決定する方法はありますか?

(ここでは、現在技術的に可能なものではなく、数学的な最大圧縮に興味があります。)


7
また、「00」と「11」から選択できます。ただし、引数は同じです。これらを使用する場合、圧縮できる文字列は4つだけです。
RemcoGerlich

3
mathoverflow.net/q/160099/34859:ピジョンホールの原理に反して、圧縮できない文字列が常に無限に存在することをここで参照してください...使用されるアルゴリズムに関係なく(「質問
-ARi

4
圧縮は、データの構造に関する知識に依存します。ありましたチェスの移動圧縮についてのこの記事知識を追加することが増え圧縮がどのように役立つかを示しているが。
スペクトル

1
明確にすることができます:圧縮は、「損失のある」または「損失のない」(または、両方を使用する可能性のある「ハイブリッド」)にすることができます。「損失のない」圧縮方法のみを使用した最大圧縮について話しているのですか、それとも「損失のある」圧縮方法の使用も含めて(許可して)いますか。言い換えると、3つの可能性があると思います。「最大圧縮」を探します。(1)圧縮前とまったく同じようにデータ常に解凍できる必要があります。(2)データを解凍できる必要がありますが、一部の「損失」は許可されます(3)データを圧縮解除できる必要はありません。
ケビンフェガン

こんにちは@KevinFegan、この場合、オプション1である必要があります:「データは常に圧縮前とまったく同じように解凍できる必要があります」
-x457812

回答:


45

コルモゴロフの複雑さは、これを数学的に形式化するための1つのアプローチです。残念ながら、文字列のコルモゴロフ複雑度の計算は計算不可能な問題です。コルモゴロフの複雑さの近似も参照してください。

文字列自体ではなく、文字列のソースを分析すると、より良い結果を得ることができます。言い換えれば、多くの場合、ソースは確率的プロセスとしてモデル化され、何らかの分布に従って何らかの形で文字列をランダムに選択します。その分布のエントロピーは、数学的に可能な限り最高の圧縮を示します(いくつかの小さな加算定数まで)。


完全な圧縮が不可能であることについては、以下にも興味があるかもしれません。


ただし、圧縮はエントロピーを推定するための手法の1つです。圧縮とエントロピーは同じものの2つの側面になりますか?
ポールUszak

1
@PaulUszak、はい、それらは非常に密接に関連しています。たとえば、シャノンの定理を参照してください。ただし、コメントは投稿の改善/明確化を提案するためにのみ使用し、フォローアップの質問には使用しないでください。新しい質問をする場合は、ページの右上にある「質問する」リンクを使用します。
DW

35

Nログ2N

また、多くの場合、正確な再構築は気にしません。これは非可逆圧縮と呼ば、音楽とビデオの圧縮方法です。この場合、上記の下限は保持されませんが、他の下限を考え出すことができます。


1
@Veedracいいえ、あなたは私を正しく理解していました。引数(多かれ少なかれ)は、文字列のエンコードスキームでは、一部の文字列にlog 2 Nビットが必要であることを示しています。ここでのサイドチャネルは、圧縮解除手順です。Nログ2N
ユヴァルフィルマス

27

これは、任意のビット文字列をロスレスで圧縮できるシンプルなスキームで、最小の結果はわずか1ビットです。

文字列が、コンピューターのハードドライブに格納されているAAC形式でのベートーベンの第9交響曲、第4楽章の録音と同じ一致である場合、出力はシングルビット「0」です。

文字列がそれ以外の場合、出力は単一ビット「1」で、その後に元の文字列の同一のコピーが続きます。

このスキームは、1つの可能な入力を正確に1ビットに減らし、他のすべての入力の長さを増やします。一般的な原則があります:圧縮アルゴリズムが任意の入力文字列を圧縮文字列にマッピングでき、圧縮文字列を元の文字列にマップし直す一致する解凍アルゴリズムがあり、圧縮アルゴリズムが入力を短い文字列にマッピングする場合、次に、いくつかの入力文字列をより長い文字列にマップする必要があります。


2
答えを明確かつ明白にするよい仕事。これは、優れた圧縮アルゴリズムが行うことと似ていることに注意する価値があります-与えられた入力ドメインに対して、あまり一般的ではない入力を長くする代わりに、最も一般的に予想されるタイプの入力を短くします。
-JBentley

6

思いつくすべての圧縮スキームについて、それによって圧縮できないデータを生成することが可能です。そのため、圧縮方式が特定の種類のデータで非常に効率的であっても、一定の比率に一貫して圧縮されることはありません。

特定の圧縮アルゴリズムの非圧縮データの例を作成する方法は簡単です。あらゆる種類のデータを取得し、サイズが減少しなくなるまで圧縮アルゴリズムを繰り返し実行します。

したがって、ビット文字列の圧縮率は、実際には文字列の長さの関数ではなく、圧縮アルゴリズムに関連した複雑さの関数です。


ようこそ!これはロスレス圧縮にのみ適用されることに注意してください。非可逆圧縮では、すべての文字列を圧縮できます(少なくとも、「空の文字列を返す」アルゴリズムを非可逆圧縮アルゴリズムとして受け入れている限り。;-))。
デビッドリチャービー

@DavidRicherbyもちろん、それは本当です。しかし、損失の多いスキームの最大圧縮を議論することはあまり意味がないため、OPが損失のない圧縮について尋ねているという質問から印象を受けました。使用不可能な極限まで使用できるという考えは、不可逆圧縮の概念に固有のものです。
m69 ''陰気で不快な ''

はい、それは合理的な解釈だと思います。
デビッドリチャービー

-2

エンタープライズバックアップシステムで使用される興味深い完全に異なるアルゴリズムがあります。アイデアは、10,000台のコンピューターを持つ会社がある場合、これらのコンピューターの多くに多数の同一のファイルが含まれることです。たとえば、会社の全員に送信される電子メールは、すべてのハードドライブ上で同一のファイルになる可能性があります。

したがって、ファイルをバックアップしようとするバックアップシステムは、明らかにスペースを節約するためにファイルを圧縮しようとしますが、最初にバックアップシステムは完全に同一のファイルが既に保存されているかどうかをチェックします!したがって、何かをバックアップする代わりに、バックアップシステムが行うことは、たとえば、ハードドライブのバックアップシステムにファイル番号1,487,578があることを思い出すことだけです。

これは、たとえば10,000人のユーザーすべてに同じオペレーティングシステムとアプリケーションがインストールされている場合に特に効率的です。単一のユーザーにとっては、あまり役に立ちません。


4
それは興味深いですが、質問にどのように答えるかわかりません。この質問は、エンタープライズバックアップの一般的な説明ではなく、圧縮の制限を求めています。
デビッドリチャービー

これは重複排除と呼ばれ、ハッシュを使用して行われます。ディスク上のブロックごとに128ビットハッシュを保存するには、大量のRAMが必要です。ZFSはこれを行うことで、一部のブロックがコピーオンライトストレージスペースを共有できるようになります。ただし、この種の圧縮の問題(ランダムアクセスが必要な大量のデータセットを圧縮しようとしており、通常のストリーム圧縮では変化が速すぎるが、ブロックレベルの冗長性がある場合)は、これに対する答えとしては関係ありません。質問。
ピーターコーデス
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.