我们不能输出Kolmogorov复杂度吗?


28

让我们固定图灵机和通用图灵机的无前缀编码上输入(编码为的无前缀码随后)输出任何上输入输出(可能都永远运行)。限定的Kolmogorov复杂,,作为最短程序的长度,使得。U(T,x)TxTxxK(x)pU(p)=x

是否有图灵机使得每个输入都输出整数不同于的Kolmogorov复杂度,即但吗?TxT(x)|x|xT(x)K(x)lim inf|x|T(x)=

这些条件是必要的,因为

(a)如果T(x)|x|,那么输出一个与K(x)略有不同的数字会很容易,K(x)因为它大于|x|+cU

(b)如果允许lim inf|x|T(x)<C,那么我们可以通过“幸运地”猜测最多1个数字来输出几乎所有数字的0(或其他常数)。 (一定数量的数字)的值等于0(等于0其他常数),然后输出其他值。我们甚至可以通过输出x = 2 ^ n的2 \ log n来保证\ limsup_ {| x | \ rightarrow \ infty} T(x)= \ inftylim sup|x|T(x)=2lognx=2n

还要注意,如果我们知道T(x)不是排斥性的,但是对此知之甚少,那么我们的工作将会很容易,因此答案可能取决于U,尽管我对此怀疑。

我知道对关系的研究很多,但是

有没有人问过类似的问题,我们的目标是给出输出某些参数的算法?

我的动机是这个问题http://arxiv.org/abs/1302.1109


5
这取决于您的编码,因为正如您所链接的异形性主题中所提到的那样,可能只有偶数长度的程序有效。因此,要使您的问题平凡,您需要对编码有更多假设。Kp
丹尼斯

2
关于第二个问题:是的。给定整数,让表示第个图灵机。甲对角线非递归(或DNR)函数是一个函数使得对于所有的整数,。(也就是说,如果停在,则,否则可以是任意的。)最近在可计算性/可计算性方面进行了很多研究。随机性社区。谷歌“对角非递归”地找到关于此的论文。M[M]Mf:NNM[M](M)f(M)[M]Mf(M)[M](M)f(M)
约书亚·格罗夫

1
@Denis:我认为你错了。根据我在第一段中对通用图灵机的定义,所有长度都可以是有效程序。
domotorp

3
几次前,我以为(一个徒劳的)关于一个看似简单的版本:(dis)证明对于足够大的,对于所有,。x0K(x)|x|/2xx0
Marzio De Biasi 2015年

1
@Ricky:很好,我对Turing机器的编码没有任何限制,仅对您可以在第一段中阅读的程序没有限制。
domotorp

Answers:


7

可以将问题改写为以及Denis在注释中指出对于某些编码,这是错误的。这是一个较弱的语句,并且它的尝试证明不依赖于编码的任何细节,但为简单起见,我将假定使用二进制语言:liminf|x||T(x)K(x)|=0

令是一个满足和。然后。非正式地,如果每个字符串的Kolmogorov复杂度周围都有一个目标,并且该目标的范围无限扩大,那么任何可计算的函数都无法避免击中它。T:{0,1}N0T(x)|x|liminf|x|T(x)=liminf|x||T(x)K(x)|<

为了看到这一点,令为一个随机的位数字,即和。对于所有,存在一个随机数。还要注意,存在无穷多个值,其中,这是根据上的条件得出的。现在,让为最小的字符串,使得。显然存在一个常数,使得,因为和nb0n<2bK(n)bbnb|{T(x)=b}|2bTxnthT(x)=bc1K(x)>bc1K(n)bn可以从计算。并且存在一个常数,使得,这是因为也仅由一个大于的常数从上方限制,并且可以从计算。然后,我们为选择了无数个(基数至少为),产生了无数个值对于,到此完成。xc2K(x)<b+c2K(n)bxn|K(x)T(x)|<c1+c2b2bx

暗示是对于某些,无限地频繁。因此有人可能说我们不能输出非Kolmogorov复杂性的东西!cZT(x)=K(x)+c


1
很好,我认为这应该可行。当然,可能没有任何字符串,所以也许您想要,对吧?f(x)=bf(x)b
domotorp '16

1
它需要,以便距离可计算。因此,我猜想需要选择以便左右的字符串映射到它。大概,这些假设应该暗示有无限多个这样的(尽管我目前还不太清楚)。(据我所知,没有以其他任何方式使用这些假设。)f(x)=bnxb,n b2b+1b
EmilJeřábek支持Monica

1
是的,的确需要这样做。但证明是容易的矛盾-如果它总是,如果,然后通过看任何范围,我们可以得出结论,至少字符串被映射到,因此无限多个,与相矛盾。<2bb>b0b0<bBBb0b0lim inf=
domotorp '02

丹尼斯谈论的内容不适用于我在问题的第一行中定义普遍性的方式。他的话也很琐碎,我不知道为什么这么多人支持他的评论。但是可惜,同样,彼得的错误回答也得到了很多好评,我对这个站点失去了信心……
domotorp 2016年

只要满足我有关通用TM的条件,TM的编码方式都没关系,因此Denis的评论是不正确的。如果说这是关于另一种型号的评论,那将是另一回事。无论如何,让我们尝试看看是否可以加强您的想法,而不是为此
烦恼

3

我认为以下作品。我将针对Colmogorov复杂度使用C(x)

  • 给一个时限(例如,输入程序长度的某个指数函数),然后调用结果。如果程序超出了时间限制,则进入无限循环。UtUtUt
  • 让是最短的程序上的。注意,是可计算的。Ct(x)xtCt
  • 令返回,除非该值等于在这种情况下,返回0。除非是空程序的输出,在这种情况下,返回1。T(x)Ct(x)+1|x|x
  • 由于,因此将始终与。上一步中的逻辑处理边缘情况。C(x)Ct(x)T(x)C(x)
  • Ut用作所有字符串的代码,因此具有无限的下无穷大。

一对夫妇的意见,KC理论在替代(但等效)解释规定如下:几乎所有的字符串都已经在他们的最佳表现(WRT除了可数的许多字符串给定的模型),它可以转化成最佳表现(最小)WRT到一个给定的计算模型(或TM)。从这个意义上讲,几乎每个程序都会输出最佳的字符串表示形式,但是这些并不是先验的(或可计算的)
Nikos M.

为什么会有?T(x)|x|
domotorp '16

@domotorp从技术上讲,我们有,其中是最短打印程序的长度。当然,也有此常数(实际上,除非打印程序真的很慢,否则它是相同的常数)。T(x)|x|+ccC(x)
彼得

但这就是使整个问题变得有趣的原因!我本来可以问函数而不是,例如,我的唯一目的是消除类似于您的解决方案。|x||x|/2+99
domotorp '16

我看到了@domotrop,所以您想强制不能成为的上限。那更有趣...T(x)C(x)
Peter
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.