“启动”或“训练”压缩算法用于压缩/解压缩?

时间:2013-03-18 01:47:52

标签: compression

我正在尝试研究是否有可以预先训练的压缩算法,您可以使用经过训练的数据来压缩和解压缩数据。

我不确切知道压缩算法是如何工作的,但我知道这是可行的。

例如,如果我单独压缩这些行,它就不能很好地压缩。

banana: 1, tree: 2, frog: 3
banana: 7, tree: 9, elephant: 10

如果我预先使用100个样本行训练压缩算法,它会很好地压缩,因为它已经有了将“banana”映射到代码/查找值的方法。

伪代码帮助解释我的问题:

# Compressing side

rip = Rip()
trained = rip.train(data)  # once off
send_trained_data_to_clients(trained)

compressed = rip.compress(data)

# And on the other end

rip = Rip()
rip.load_train_data(train)
data = rip.decompress(compressed)

是否有一个共同的(即有流行语言的库)压缩算法让我这样做?

2 个答案:

答案 0 :(得分:3)

在大多数压缩算法的说法中,您所描述的将是压缩器的预设词典

我无法代表所有压缩库,但zlib肯定支持这一点 - 以您想象的确切方式 - 通过deflateSetDictionary()inflateSetDictionary()函数。有关详细信息,请参阅zlib manual

答案 1 :(得分:1)

它存在,它被称为Lempel-Ziv编码,你可以在这里阅读更多:

http://en.wikipedia.org/wiki/LZ77_and_LZ78

它是几种“字典”类型的无损压缩方法之一。

LZ就是Zip归档器的基本功能。