有效计算的Kolmogorov复杂度变体


28

Kolmogorov前缀复杂度(即K(x)是输出的最小自定界程序的大小x)具有几个不错的功能:

  1. 这对应于一种直觉,即给具有模式的字符串或结构比不具有模式的字符串降低复杂度。
  2. 它允许我们定义条件复杂度K(x|y),甚至可以为某些oracle O定义更好的K(x|O)O
  3. 它是子添加剂K(x,y)K(x)+K(y)

但是它有一个可怕的缺点:给定x时,返回是无法确定的。K(x)x

我想知道是否存在使用受限计算模型的Kolmogorov复杂度(通过使用比TM弱的语言或使用资源有界TM)保留特征(1)和(2)(特征( 3)是可有效计算的红利,但不是必须的吗?K(x)

这个问题的动机是用于各种进化玩具模型的仿真研究。因此,以前被用作Kolmogorov复杂度在数字工作中的“近似”答案是更可取的。但是,我们的目标不是完全进行实验,因此首选相对简单/简洁的描述语言/计算模型,从而有可能证明一些合理的定理,关于K 'K和什么样的字符串。KKK

相关问题

弱描述语言的Kolmogorov复杂性

对于不确定的问题,是否有一个合理的近似算法概念?

Answers:


10

Gzip。Cilibrasi和Vitanyi的文章非常好,他们使用gzip作为Kolmogorov复杂度的近似值来进行聚类。通过压缩聚类


1
他们如何定义条件复杂度?
Artem Kaznatcheev

1
假设A和B是两个文档,AB是两个串联的文档。他们查看SIZE(gzip(A)+ gzip(B))与SIZE(gzip(AB))的比率。
乍得·布鲁贝克2011年

1
应该意识到使用gzip(和类似的东西)来近似Kolmogorov的复杂性有弊端bactra.org/notebooks/cep-gzip.html。但这并不是说它对聚类现实生活的数据集没有用,但它确实表明了其对现实生活的数据集的实用性告诉我们一些关于这些数据集与伪随机数生成器的输出有何不同的信息...
约书亚·格罗夫

3

我考虑了更多问题,并提出了可能的解决方案。它有两个限制,仅在长度为n = 2 m的字符串上定义n=2m(尽管我将对此进行更多讨论),并且它不是在谈论通用图灵机,而是遵循先前的问题并使用替代的计算模型。


基本上,我们可以用|来解释字符串x | = 2 作为函数˚F X{ 0 1 } { 0 1 }。然后,我们的复杂性度量K 'x 是表示f x的唯一约简有序二进制决策图(ROBDD;标准排序固定)的大小(边数)。这满足条件[1]。此外,由于可以按2 m的时间多项式计算ROBDDx|x|=2mfx:{0,1}m{0,1}K(x)fx2m,我们有一个有效的措施。

为了满足条件[2],我们必须通过在节点上允许特殊类型来修改标准BDD。一般节点由索引标记,我们将包括一个特殊的oracle节点。对于K x | y 其中| y | = 2 i{1,...,m}K(x|y)|y|=2m我们将允许BDD中的特殊节点如下:

如果我们在输入| a | = m)上运行BDD,则由i标记的普通节点只是将我们发送到标记i的边缘。一个oracle节点将代替我们向标记为f ya 的边缘发送。因此,ķ 'X | X = 2,并用高概率ķ 'X | Ý ķ X 为一个ý随机均匀地拾取。a|a|=miaify(a)K(x|x)=2K(x|y)K(x)y

[注意:尚不清楚条件复杂度是否仍然可以有效地计算:(]

方便地讲,由于还为建立了OBDD,因此我们也具有次可加性Ÿ我们可以有一个查询的第一位,并在0转到ROBDD为X1至ROBDD为ÿ。因此,我们有ķ 'X Ý ķ 'X + ķ 'Ý x.y0x1yK(x.y)K(x)+K(y)


以亚可加性的潜在代价,我们可以通过仅取两个整数的幂并将其复杂度加在一起来定义任意长度x。例如| x | = 2 m| y | = 2 > ,我们可以定义ķ 'X Ý = ķ 'X + ķ 'Ý K(x)x|x|=2m|y|=2lm>lK(x.y)=K(x)+K(y)

不幸的是,我的方法也有一些局限性。我们不能超越OBDD,如果我们考虑最少的决策树或仅考虑BDD,那么我们将在此答案中解决难解决的问题。即使对于OBDD的可变顺序,似乎也存在难以处理的结果。因此,似乎OBDD是这种不太类似于标准的Kolmogorov复杂度方法的局限性。


2

我不是专家,但如果你需要一个实际的字符串复杂度,你可以看看到铁钦纳T-复杂性措施。

请参阅Titchener的网站以进行快速介绍。他的论文可以pdf格式下载

摘要 -基于特定的递归分层字符串生成过程,提出了一种新的有限字符串复杂性度量方法。从最大界限,我们推论出复杂度与总信息量之间的关系。..全文

我也找到了一些有关实际实现的论文(例如,参见“ 快速T分解算法 ”)


2

基本上,几乎任何机器学习或压缩方法都是Kolmogorov复杂度的近似值:

  • p(x)logp(x)
  • nK(x)n+sCsCx(它基本上是你需要的位数向您的通用图灵机描述C)。

因此,您可以只寻找具有任何压缩器或概率分布的模式,并且它们对数据的压缩越好,则您对K(x)的上限越好。只要确保将压缩器本身的大小与压缩数据的大小相加即可得出估计值。

K(x)

当然,从上方限制可能还不够。如果您的估计很大,该怎么办?ķX实际上很小?为此,您需要对数据进行一些假设:修复一类概率分布(如概率自动机),并对这些分布使用Baseyian混合来压缩数据。如果您的数据实际上是由概率自动机产生的,ķ 大大小于您的估计成倍消失。

您还可以使用时间限制来定义模型类,从而引出Suresh的答案。基本上,如果您假设您的数据源具有多项式时间复杂度,并且尝试使用所有多项式Turing机器对其进行压缩,则可以确定您已准确估计了Kolmogorov复杂度。这可能还不那么实用,但是对于较短的时间范围,您可以计算出近似的完整贝叶斯混合。

有关技术细节,请参见本文。免责声明:我是作者之一。

最后,您应该注意 ķX仅在渐近意义上有意义。对于任何一个数据集,其值ķX可以从一台计算机到另一台计算机改变一个常数,并且该常数可以随您的喜欢而变大。因此,用一粒盐来近似这种类型。


-1

您正在寻找资源受限的Kolmogorov复杂性。您可以从本文开始并进行扩展。


2
感谢本文的链接,我在问题中提到了资源有限的复杂性,但实际上人们对可有效计算的度量感兴趣。看来论文表明这些模型的“随机字符串”对应于高复杂度的集合。这表明确定这些模型中字符串的复杂度不能有效地计算,不是吗?
Artem Kaznatcheev
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.