压缩算法可以“学习”文件集并更好地压缩它们吗?

时间:2011-08-31 18:19:51

标签: compression

是否有压缩库支持在某些文件集上“学习”或使用某些文件作为压缩其他文件的基础?

如果我们想压缩许多类似的文件,保留对每个文件的快速访问权限,这将非常有用。

类似的东西:

# compression:
compressor.learn_on_data(standard_data);
compressor.compresss(data, data_compressed);

# decompression:
decompressor.learn_on_data(the_same_standard_data);
decompressor.decompress(data_compressed, data);

如何调用(我认为“增量压缩”还有一点其他的事情)?在流行的压缩库中是否有这种实现?我希望它可以通过例如用标准数据预先填充词典来实现。

1 个答案:

答案 0 :(得分:2)

是的,它有效。 虽然有很多技巧,但你会发现最简单的技术称为“字典预填充”。简而言之,您提供了一个文件,从中可以“消化”最新的部分(最大窗口大小,根据您的算法可以在4K到64MB之间),因此可以用来更好地压缩下一个文件。

实际上,这类似于“实体模式”,当在存档中时,所有相同类型的文件被组合在一起,以便前一个文件可以用作下一个文件的字典,从而提高压缩率。 / p>

下行:必须为压缩器和解压缩器提供相同的字典。