如何计算算法的kolmogorov复杂度?

时间:2010-10-01 02:21:38

标签: space-complexity

假设对于各种输入字符串,算法生成具有相同数字0和1的二进制字符串。两个不同输入字符串的输出可能相同也可能不同。我们能谈谈算法的空间复杂性吗?

2 个答案:

答案 0 :(得分:3)

问题不太对。

Kolmogorov复杂度K(x)不适用于程序,它适用于字符串x。 更具体地说,字符串x的Kolmogorov复杂度是计算特定字符串x所需的最小程序长度。

已经正式证明,人们无法计算字符串的Kolmogorov复杂性。在实践中,您可以通过上限进行近似。

Ferbus-Zanda和Griorieff的以下论文为您提供了理论http://arxiv.org/abs/1010.3201

考虑这种近似上限的直观方法是考虑可以解压缩为特定字符串的压缩程序的长度。

将此问题应用于您的问题,您描述的字符串是随机二进制文件,加倍。输入字符串作为随机数生成器的种子。

忽略你的问题的kolmogorov复杂性部分,只是看看@templatetypedef所做的空间复杂性(即内存占用)方面,你提到的标准是如此宽松,以至于所有你可以说的是,较低的空间限制了算法是O(1)和上限O(n),其中n是输出。

答案 1 :(得分:1)

不,我不相信。考虑算法“print 01”,它需要空间Θ(1),算法“加倍输入字符串的长度,然后打印01”,这需要空间Θ(n)。这两种算法都符合您提供的标准,因此只要给出这些标准,您就无法对算法的空间复杂性做出任何说明。

希望这有帮助!