1

大きなオフセットから小さな値で増加する数の束があるとしましょう

例:オフセット= 123456789

私たちの番号は次のとおりです:123456790 123456791 123456793 123456796 123456799 123456804

これらの数値からオフセットを引くと、1 2 4 71015が得られます。

数値は8バイトの他のデータとともに保存され、合計12バイトになります。その後、これらの10000のグループが1つのチャンクに圧縮されます。

したがって、これらの数値を32ビット整数として格納して圧縮する場合、2番目の数値セットを使用すると、より適切に圧縮されますか?または、同じ量のエントロピーが含まれているため、まったく同じように圧縮されますか?

私の仕事仲間の即時応答は、2番目のセットの32ビット数に多くのゼロがあるため、2番目のセットの方が圧縮率が高いためですが、エントロピーは同じです(私は思う)ので、一般的な圧縮アルゴリズムはそうではありませんとにかくこれを理解し、同様の圧縮率になりますか?

最終的には、結果を確認するためにこれを試してみる必要があると思いますが、事前にそれを理解しようとすることに興味があります。

4

1 に答える 1

3

これは、デルタエンコーディングとして知られています。データの詳細によっては、これにより圧縮率が向上する場合があります。より直接的な節約も可能かもしれません。たとえば、隣接する要素間の差が0〜255の範囲外にならないことが確実にわかっている場合は、デルタを32ビットintではなく1バイトとして格納できます。 。

于 2011-04-07T02:57:06.247 に答える