谨此向您道歉,因为我放弃了太多的细节,但我将要与其他人矛盾。
约K(x)≤K′(x)+c
通常来自描述语言#2 的解释器到描述语言#1 的事实,而不是来自#2程序到#1程序的翻译。K1(x)≤K2(x)+c
例如,,您可以这样简单地得到不等式:KC(x)≤KPython(x)+cpy2c
void py_run(char * s) {
// code of your Python interpreter
}
int main(void) {
py_run("Put here your Python program of size Kpython(x)");
}
然后您的常数将类似于,其中是此代码的位数,而位是使用C语言编写的官方Python解释器的大小。当然,您只需要解释可能的内容使用Python的描述语言,因此您可以做得比69 MB好:-)cpy2c528+490240688528490240688
重要的是您可以在C代码中线性编写Python程序。例如,一种需要在每个字符之间放置“ BANANA”的语言不是一个很好的描述程序,因此该属性为false。(但是,如果描述语言授权您将数据写入单独的文件或块中,则此问题将消失)
为什么您的有缺陷K1(x)=q
与你的定义问题是,你可能需要超过位来描述一个图灵机与状态,因为你需要编码转换。K1qq
因此,没有和可能不是等效的,但这主要是的错误。我认为我们可以证明对于所有都有一个,使得。当然,任何都足以证明不是有效函数这一事实,因为这意味着我们可以将长度为所有可能的字符串编码成位。K1K2K1a>0caK1(x)≤a|x|+caa<1K12nnan+ca
但是,在构建图灵机时,尺寸是一个难以置信的紧密边界。这个想法是,在个状态的块中,有种方法来查找每个状态的跃迁,这比填充位的通常种方法要好。然后,您可以在每个块中存储位信息。(不是因为您必须以一种或另一种方式进入和退出块)bb2b2bblog2b2log2b
所以,是的。。。如果块的大小为,则可以证明。但是我已经写了太多关于为什么状态数不是有效的Kolmogorov复杂度函数的方法。如果您想让我详细说明,我会的。21/aK1(x)≤a|x|+ca
现在关于K2
天真的描述语言大致对应于(即,每个下一个状态的以及有关写入和终止的详细信息)。K2(x)=q⋅2⋅(log2q+2)log2q
就像您看起来的那样,我深信,一种更好的/更骗人的方法是授权将“数据”编码到Turing机器中,也许是通过在描述语言中添加一个二进制标记来说明状态是否为数据状态(只是写了一点,然后转到下一个状态),或者是否执行了其他操作。这样,您可以用一种描述性语言来存储。x
但是,如果保持相同的,则可以使用我在上一部分中使用的相同技术来节省一些位,但是我似乎陷入了(对于任何)..可能小于,即使,但获得似乎很困难。(而且我希望它应该是,甚至不应该是。)K2K2(x)≤a|x|log|x|+ca>0log|x|O(|x|)|x|O(|x|)