チェーン変換



アルゴリズムのデモ




後続の圧縮のためにデータを事前準備するための独自のアルゴリズムを提示できてうれしいです。 例としてBTWを使用して、その後の圧縮のためにデータを準備する可能性について学んだので、私は独自の方法を発明することにしました。



アルゴリズムの本質は、双方向変換用の小さなテーブル(辞書)を作成することです。 アルゴリズムは2パスであることが判明しました。 最初のパスでは、テーブルが構築されます。 2番目のパスでは、データは直接エンコードされます。 デコードは、事前に記録されたテーブルの単一パスで行われます。



サイズ2 ^ n ^ mバイトのテーブルを作成します。 ここで、nはビット(ワード)の数、mはチェーンの深さ(ワードの数)です。



テーブルは、このアルゴリズムに従って入力されます。

mワードを読み取り、式(a + 2 ^ n ^ m0)+(b + 2 ^ n ^ m1)+(c + 2 ^ n ^ m2)に従ってテーブル内の値を1つ増やします...

結果のテーブルは、次の単語(バイト)の後の単語(バイト)の出現頻度を示します。 テーブルは、単語(バイト)の出現頻度に従ってソートされます。



エンコードは次のように行われます。

最初と2番目の単語が取られます。 表の前の式に従って値を見つけ、2番目の単語に入力します。 しかし、同時に、元の2番目の単語の値を最初の単語に割り当てます(ただし、ファイル自体には書き込みません)



n = 2 m = 2の変換例

ソースデータ:0,2,1,3、1,1,3,1、0,1,3,0

いっぱいのテーブル:

0,1,1,0

1,1,0,3

0,1,0,0

1,2,0,0



ソートされたテーブル:

1,2,0,3

3,0,1,2

1,0,2,3

1,0,2,3

変換されたデータ:0,0,0,0、0,2,0,3、1,2,1,0



画像

初期データ(ビデオの例の画像ファイル)


画像

変換後




出力は、データ自体がソートされていることを示しています。0は常に1より大きく、1は常に2より大きくなっています。



また、このアルゴリズムは既に圧縮されたデータ(rar、zip)で動作しますが、データの再圧縮には効率が十分ではありません。



All Articles