使用Kolmogorov复杂度作为输入“大小”


20

假设我们有一个计算问题,例如3-SAT,它具有一组问题实例(可能的输入)。通常,在分析算法或计算复杂性理论时,我们有一些集合 ,所有长度为输入,以及一个函数,该函数给出某些求解算法在输入上的运行时间。那么 ,的最坏情况运行时间序列为S

I(n)={wS:|w|=n}
nT(w)AwA
fn=maxwI(n)T(w).

现在让我们定义 具有Kolmogorov复杂度n的所有输入的集合 I ^ K(n)= \ {w \ in S:K(w)= n \},让我们定义序列 f ^ K_n = \ frac {1 } {\ left | I ^ K(n)\ right |} \ sum_ {w \ in I ^ K(n)} T(w)。 这里˚F-1K-是平均运行时间序列除非该输入“大小”是它们的Kolmogorov复杂,而不是他们的长度,。

IK(n)={wS:K(w)=n}
n
fnK=1|IK(n)|wIK(n)T(w).
fKA

是否存在fnf ^ K_n渐近明显不同的算法fnK?如果是这样,是否存在使用这种不同的分析算法时,其时间复杂度会发生变化的问题?


4
好问题!我经常想知道的一个-希望它能得到一些好的答案。(我添加了标记参数化复杂度b / c,您可以将其视为例如SAT的参数化复杂度的问题,其中参数为Kolmogorov复杂度。)
Joshua Grochow 2014年

3
随机字符串,也就是大多数字符串,在原始长度附近具有Kolmogorov复杂度。对于绝大多数输入fn=fnK如果您询问计算深度而不是Kolmogorov复杂度,可能会得到更有趣的结果。google.com/...
乍得Brewbaker

2
通过在某些情况下将PARITY混合成一种硬语言以形成S(例如,通过为每个实例加上描述该实例来自哪种语言的位切换前缀),则fnK将小于fn。多少取决于相对密度。
安德拉斯·萨拉蒙

1
Vadhan的讲义中有一个地方(2月19日):people.seas.harvard.edu/~salil/cs221/spring10/lectures.html
2014年

1
@AndrásSalamon,是的,我希望我不要太草率,但我认为本质上应该是busy-beaver函数。nmaxw:K(w)=n|w|
usul 2014年

Answers:


14

考虑奇偶校验功能(或依赖于输入的所有/大多数位的任何其他功能)。对于奇偶校验函数,。因此 另一方面, T(w)=Θ(|w|)

fn=Θ(n).
fnK=Θ(1|IK(n)|w:K(w)=n|w|)Ω(12nmaxw:K(w)=n|w|).

注意,。因此和。类似地, ; 因此 “增长很快”。此外,不难看出没有可计算的上限。K(22n)=O(n)

maxw:K(w)=n|w|22Ω(n)
fnK22Ω(n)/2nK(222n)=O(n)fnK222Ω(n)/2nfnK

9

鉴于对这个问题的兴趣,我认为更明确地指出我们完全不应该对答案感到惊讶的原因,并为改进该问题提供一些指导可能会有所帮助。这收集并扩展了一些评论。如果这是“显而易见的”,我深表歉意!

考虑Kolmogorov复杂度的字符串集: 最多有这样的字符串,因为有对长度描述。但是请注意,对于一般,此集合是不确定的(否则,我们可以仅从迭代到并检查隶属度来计算)。此外,函数 快速增长。它是忙碌海狸函数的一种变体:图灵机描述长度为的最长输出是什么n

JK(n)={w:K(w)=n}.
2n2nnnK(w)n=1|w|JK(n)
gK(n)=maxwJK(n)|w|
n?如果它的增长速度慢于某些可计算的函数,我们可以决定停顿问题:给定TM,构造将模拟并在每个步骤上打印。如果的描述长度为,则任一个:最多停止步;或不停止。MMM1MnMgK(n)M

现在,对于安德鲁的问题,我们有,其中是原始语言。因此,避免包含很大的输入的唯一方法是,如果仅包含非常不可压缩的字符串。(请注意,否则,在这里我们可以完全忽略最坏情况分析与平均情况分析之间的区别,因为我们对最多字符串求平均,但是最大字符串的大小增长速度快于任何可计算函数。 )IK(n)=SJK(n)SIK(n)nS2nn

我觉得构造任何仅包含不可压缩字符串但可以确定的非平凡(即无限)可能是不可能的。但是我不知道。但是,希望这可以直观地说明为什么我们不希望大多数语言的增长速度快于可计算的函数。SfnK

要稍微退后一步,问题是将长度为输入的性能与可以压缩为长度输入的性能进行比较。但是我们有比Kolmogorov复杂性更容易处理(且功能不那么强大)的压缩概念。一种简单的方法是给出一个大小为的电路,该电路在输入时二进制数产生第位。请注意,此处输入大小的爆炸最多为指数(大小为的电路最多可能有输入)。nnnbbwn2n

因此,我们可以通过让来改写这个问题 并类似地定义。之所以希望如此,是因为大多数琴弦需要的电路几乎与琴弦本身一样大,并且没有任何琴弦比所需电路大得多。也许在这种情况下,我们可以找到和渐近相似的语言。

IC(n)={wS:the smallest circuit implicitly specifying w has size n}.
fnCfnfnC

一个与此密切相关的问题是的隐式语言的复杂性 IMPLICIT_SAT是NEXP完整的,通常NP完整问题的隐式版本是NEXP完整的。确定IMPLICIT_SAT至少和使用电路写出所有,然后在上运行SAT算法一样容易。因此,如果SAT的,那么这似乎几乎可以证明,平均情况下的IMPLICIT_SAT几乎与最坏情况下的SAT一样快。但是我不知道如何直接将您的概念与隐式语言进行比较,因为“最小电路”这一概念

IMPLICIT_SAT={circuits C:C implicitly specifies w,wSAT}.
wwfnC=Θ(fn)w”对于隐式语言不起作用。

希望这对您有帮助/有趣!

我不确定教科书中是否提及隐性问题,但是这里有一些讲义:http : //people.seas.harvard.edu/~salil/cs221/spring10/lec8.pdf


|JK(n)|=2n吗?但是,并非每个描述都是最少的。
2014年

1
@AndrewMacFie,对,应该“最多”。将修复。
usul 2014年

感谢您添加此答案:)听起来,对于任何3-SAT算法,都会快速增长。fnK
2014年

4

一种简单的情况似乎是语言仅包含填充实例。当通过用符号填充大小为每个实例从语言获得,可以在。SSLn2nnfnK2fn


请注意,Yury的答案包含了这一点,并且还精确地确定了“可以在...附近”。
2014年
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.