5

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

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

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

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

如果我事先用 100 条样本行训练压缩算法,它会很好地压缩,因为它已经有一种将“香蕉”映射到代码/查找值的方法。

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

# 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)

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

4

2 回答 2

4

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

我不能代表所有的压缩库,但 zlib 绝对支持这一点——正如你想象的那样——通过deflateSetDictionary()andinflateSetDictionary()函数。有关详细信息,请参阅zlib 手册

于 2013-03-18T01:54:12.107 回答
1

它存在,称为 Lempel-Ziv 编码,您可以在此处阅读更多信息:

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

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

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

于 2013-03-18T01:52:34.983 回答