我正在研究使用压缩作为衡量文档与文档语料库关系的一种方法。在使用bzip2时,我发现了一个奇怪的结果; len(compress(corpus))> len(compress(corpus + new_document))。实际的压缩算法应该是这种情况吗?当考察Kolmogorov数据的复杂性时,这在理论上是可行的吗? (其思想是使用压缩算法来近似数据的复杂度)实际压缩和柯尔莫哥洛夫复杂度的界限
回答
是的,实际的压缩算法应该是这种情况,理论上可以使用Kolmogorov complexity。解释原因的最简单方法就是举一个例子。
假设如下:
- 你的文件分隔符为
,
- 语料库文件ABC,DEF,ABC,DEF,ABC,DEF,ABC,
- 新的文件是高清
- 您的压缩算法(或kolmogorov描述语言)只允许重复前缀重复计数,后跟
|
(这是run-length encoding的变体)
然后:
- 压缩(语料库)= “3 | ABC,DEF,1个| ABC”
- 压缩(语料库+ new_document)= “4 | ABC,DEF,”
因此compress(corpus)
比compress(corpus+new_document)
长。这是有点人为的,但希望解释如何结果理论上可以用简单的方案出现。我并不是说bzip2会发生这种情况,只是展示它在理论上是可行的。
编辑 它已运行长度编码不是图灵完整的,因此不能用于柯尔莫哥洛夫复杂另一个答案被提及。虽然这是真的,但使用图灵语言,您可以使用实现以您选择使用的任何描述语言编码游程长度,结果相同,因此该示例仍然有效。
真实的压缩算法有这样的怪癖,但它们只是提供了一个非常粗略的近似值。
至于在理论上是否可能发生,但差别不大。
我们假设你有两个字符串,x和y,其中x是y的前缀。比方说,例如该
X = “asdfasdfasdfasdfasdfasdfasdfasdfasdf”
Y = “asdfasdfasdfasdfasdfasdfasdfasdfasdf23452345234523452344523452452345234524345234”
让我们进一步假设,d为y的最短描述。 (即在这种情况下,x可以被描述为|“由D描述的数字减46个字符”|,其比D更长,但是仅仅通过小的常数和对数因子(基本上其余指令中的字符数)。
甚至有可能是x的一个短的描述,但我们知道,在最坏情况下,K(X)< = K(Y)+日志(| Y | - | X |)
但是,你必须请记住,理论Kolmogorov复杂性是难以置信的,恒定的差异在这个领域没有任何意义。
(注:上面的RLE例子也不是一个有效RLE不是图灵完整的语言,因此它不能被用来作为Kolmogorov复杂的描述语言。)
- 1. 柯尔莫哥洛夫 - 斯米尔诺夫检验与
- 2. 生成柯尔莫哥洛夫 - 查普曼方程马尔可夫过程
- 3. 一个样本柯尔莫哥洛夫 - 斯米尔诺夫测试GOF的理论distribtion(makedist错误)MATLAB
- 4. 科尔莫戈罗夫 - 斯米尔诺夫测试R
- 5. 吉夫LZW压缩
- 6. Kolmogorov复杂性的最优已知上界是什么?
- 7. H.264实时流如何实际压缩和传输?
- 8. 离子传递复杂对象的莫代尔通过NavParams
- 9. LCID的标准摩洛哥Tamazight
- 10. .NET的TimeZoneInfo错摩洛哥夏令
- 11. Maven的组装插件 - 复杂的压缩和解脚本
- 12. 时间复杂度混淆的下界
- 13. Python,如何压缩和重构复杂的数据集
- 14. 霍夫曼编码压缩
- 15. 霍夫曼编码 - 压缩
- 16. 穷人哈夫曼压缩
- 17. 压缩文件下载到实际的压缩文件中的文件结构
- 18. 解压压缩串霍夫曼算法
- 19. 时间复杂度界输入
- 20. 时间复杂度和空间复杂度,如何计算空间复杂度
- 21. 德尔福压缩和加密
- 22. 计算函数的空间复杂度和时间复杂度
- 23. 压缩实例
- 24. 通过杂种群与八哥和杂种的多个实例工作
- 25. 压缩的实施?
- 26. 霍夫曼压缩文件大小是否有最大限制?
- 27. 测量霍夫曼算法的压缩
- 28. 洛夫JSliderNews URL问题
- 29. 马尔可夫链测试和实现
- 30. 时间复杂度无限递归
我喜欢这个答案是什么它是如何直观地表明为什么链规则除了一个常数因子之外还有一个对数因子(来自减去的字符数量的来源;来自减法的常数)。 – 2011-11-16 23:34:48