データ圧縮

私はこの問題に長い間興味を持ち始めました。 メモリ、ディスク容量を節約するという考えは、長い間、そしておそらく誰にとっても存在していました。 RLEアルゴリズムに似た独自の圧縮アルゴリズムを最初に作成しようとしたのは2000年で、その後、元の圧縮の概念がいくつかありましたが、予備テストを超えていませんでした。 2005年、彼は圧縮のアイデアを真剣に取り上げました。 6年後、私は研究からの抜粋を共有します。



この記事を理解して理解するために、いくつかの用語を紹介します。



ブロック内の一意の単語の定義-ブロック内の単語の繰り返しのない組み合わせの数。 例:

1 1 1 1 1 1 1 1

8 8 8 8 8 8 8 8

1 8 2 5 1 5 1 2

4 6 7 3 3 3 3 3






N = 3のブロックで一意の単語を見つける


ブロック内のすべての組み合わせを調べた後、ブロック分布の表を取得します。 例:

1 4

2 84

3 144

4 24



256 (8 ) - 2^(N*2^N)






ブロック割り当てテーブルN = 2


01 16

02 7864080

03 23996064960

04 7504175995680

05 574579238688000

06 15768930151054080

07 189225474428390400

08 1111400775560275200

09 3407360398041600000

10 5630409646557696000

11 5045340384103219200

12 2403608358767616000

13 577538743541760000

14 62977597562880000

15 2510734786560000

16 20922789888000



18446744073709551616 (64 ) - 2^(N*2^N)






ブロック割り当てテーブルN = 4


N = 4以上の場合、数秒でブルートフォースによるブロック分布のテーブルを取得できなくなります。



アルゴリズムの最初の部分は、着信ストリームを分析することです(エントリテーブルを作成します)。 入力ストリームはブロックに分割され、一意の単語の数がチェックされます。 一意の単語番号は、エントリテーブルの行番号として使用されます。 行の値は1ずつ増加します。 オカレンスのテーブルを受信すると、いくつかのプロパティを確認できます。 いくつか例を挙げます。

Different types of files

N = 8のオカレンステーブルに従ってプロットすると、 ここからファイルをダウンロードできます。


Different degree of aggressiveness of the compression

N = 8のオカレンステーブルに従ってプロットすると、 ここからファイルをダウンロードできます。


Different cryptographic algorithms

N = 8のオカレンステーブルに従ってプロットすると、 ここからファイルをダウンロードできます。


この方法でデータストリームを分析すると、複数のブロックを取得していない圧縮および暗号化されたデータに未使用の行があることがわかります。ブロックは一意の単語で区切られているため、含まれていないブロックの数は配布テーブルで確認できます



配布テーブルの行では、エントリテーブルの行にゼロがある場合はゼロが書き込まれ、(エントリテーブル内の)ゼロ以外の番号がある行は変更されません。 変更されたエントリテーブルを要約すると、使用されているブロックの数がわかります。 次に、着信ストリームはベース番号システムに従ってエンコードされます。これにより、これにより前のステップで取得された量もデータを圧縮します。 エンコードされたストリームから逆データ変換を取得するには、分散テーブルで使用される行の所有権を担当する小さなNビット辞書が必要です。 圧縮は効果的ではありませんが、従来の圧縮および暗号化アルゴリズムによって既に圧縮されているデータのサイズを削減できることを証明しています。





特別なアルゴリズムのデモ


「冗長性のない」データのデータ圧縮を改善する可能性を示すために作成されたビデオ。 これは、ソースデータに冗長性を作成する特別なアルゴリズムです。



PS最初のアルゴリズムの実行時間が長すぎたため、ビデオが機能しませんでした。 2番目のアルゴリズムはビデオに示されています。 BTWアルゴリズムと同じ考え方で機能します。つまり、最初にデータを準備し、次にこのデータを古典的なアルゴリズムで圧縮します。



All Articles