Guy E. Blellochによる、Introduction to Data Compressionという本を読み始めました。1ページ目で、彼は次のように述べています。
真実は、1つのメッセージがアルゴリズムによって短縮された場合、他のメッセージを長くする必要があるということです。これを実際に確認するには、GIFファイルでGZIPを実行します。実際、さらに進んで、固定長の一連の入力メッセージについて、1つのメッセージが圧縮されている場合、すべての可能な入力にわたる圧縮メッセージの平均長は、常に元のメッセージよりも長くなることを示すことができます。入力メッセージ。
たとえば、8つの可能な3ビットメッセージを考えてみます。1つが2ビットに圧縮されている場合、2つのメッセージが4ビットに拡張されなければならず、平均で3 1/8ビットになることを理解するのは難しくありません。
本当に?それを自分に納得させるのはとても難しいと思います。実際、これが反例です。3ビットの文字列を入力として受け入れ、次の出力にマップするアルゴリズムを考えます。
000 -> 0
001 -> 001
010 -> 010
011 -> 011
100 -> 100
101 -> 101
110 -> 110
111 -> 111
だからあなたはそこにいます-入力はより長い出力にマッピングされていません。確かに4ビットに拡張された「2つのメッセージ」はありません。
それで、著者は正確に何を話しているのですか?私には明らかではないいくつかの暗黙の警告があるか、または彼はあまりにも抜本的な言語を使用しているのではないかと思います。
免責事項:私のアルゴリズムを繰り返し適用すると、実際にデータが失われることを理解しています。入力110に2回適用してみてください。110-> 000-> 0であり、110と000のどちらが元の入力であったかがわかりません。ただし、一度だけ適用すると、私にとっては無損失のようです。それは著者が話していることに関連していますか?