对于每个可计算的函数


19

对于每个可计算函数都存在一个可以在时间内最多解决的问题,或者是否存在一个可计算函数使得可以在解决的每个问题都可以也可以在时间内解决?fΘ(f(n))fO(f(n))o(f(n))

昨天这个问题浮现在我的脑海。我已经考虑了一下,但无法解决。我真的不知道该怎么用谷歌搜索,所以我在这里问。这是我想出的:

我的第一个想法是答案是肯定的:对于每个可计算的函数,“输出点”(或创建带有点的字符串或其他东西)的问题显然无法在时间。因此,我们只需要证明它可以在时间内解决。没问题,只需采用以下伪代码:ff(n)f(n)o(f(n))O(f(n))

x = f(n)
for i from 1 to x:
    output(".")

显然,该算法解决了所述问题。而且它的运行时显然在,因此问题得以解决。那很容易,对吗?除了不,不是因为您必须考虑第一行的成本。如果计算所需的时间在,则上述算法的运行时仅在。显然,并非所有功能都适用1Θ(f(n))Θ(f(n))f(n)O(f(n))

因此,这种方法并没有带我到任何地方。我将感谢任何为我指出正确方向的人,以正确解决此问题。


1例如,考虑函数。显然,,但是没有算法可以在时间内计算。p(n)={1if n is prime2otherwiseO(p(n))=O(1)pO(1)


1
我认为您在第一段中的两个陈述不一定是彼此相反的:如果您有一个使得存在可以在解决而不是在,也不会在时间内?fO(f(n))o(f(n))Θ(f(n))
亚历克斯(Alex)10 Brink

@Alex这是一个好点,我没有考虑。
sepp2k 2012年

Answers:


13

根据Gap定理(使用此处的表述,搜索'gap'),对于任何可计算的无界函数,存在一些可增加的(实际上是任意大的)可计算的函数这样。 f NN D T I M E f n = D T I M E g f n g:NNf:NNDTIME(f(n))=DTIME(g(f(n))

这回答了您的问题,因为存在一个(实际上是无限多个):对于每个可计算的函数,使得,存在一个递增的函数,使得所有问题都可以在时间也可以用时间来求解。请注意,不一定是时间可构造的-对于时间可构造的情况,请参见@RanG的答案。g g = o n f O f n O g f n = o f n ffgg=o(n)fO(f(n))O(g(f(n))=o(f(n))f

在Wikipedia公式中(要求g(x)x),然后成为你的榜样,并˚F需求是ω ñ (所以你周围走另一条路- “问题可解的Ò g ^ f n 也可解决O g n '是有趣的部分)。gffω(n)O(g(f(n))O(g(n))

维基百科的文章没有注明不断增加,其实可以任意大(˚F ñ g ^ ñ 为例)。证明缺口定理的文章确实提到并证明了这一点(例如,参见此处)。ff(n)g(n)


可以ø Ñ ?是不是要求g ^ X X?您的说法仍然是正确的,但证明却相反,对吗?go(n)g(x)x
Ran G.

@RanG。更新以提供两种配方的证明(我使用了本文中的配方):)
亚历克斯·十·布林克2012年

“对于每个g = o(n)的可计算函数g,都有一些函数f使得在O(f(n))时间内可解决的所有问题也可在O(g(f(n))= o( F(N))的时间”,如果所有目前这克FS是为O什么(θ1)然后O(克(F(N))仍是O(1),因此不O(1)。
sepp2k

@ sepp2k:很好,这确实是一个问题。我已经更新了答案。
亚历克斯十布林克

12

对于每个可计算的函数都存在一个可以在Θ f n ))时间内最多解决的问题,或者存在一个可计算的函数f使得在O f n ))中可以解决的每个问题也可以在o f n 时间内解决?fΘ(f(n))fO(f(n))o(f(n))

如果时间可构造的函数,则时间层次定理说存在一些问题,需要O f n 时间,并且不能用时间o f n 来解决。fO(f(n))。具体来说, DTIMEofno(f(n)log(f(n)))

DTIME(o(f(n)log(f(n))))DTIME(f(n))

这仅考虑决策问题,而不考虑生成输出所花费的时间。


ff(n)Θ(f(n))

fgf=Θ(g)O(f)

o(f(n)lgf(n))o(f(n))

3

我将尝试提供一些框架,希望它能提供更深刻的见解。

当您接触到这一基本知识时,到处都有意料之外的陷阱。例如:“解决”问题是什么?在计算机科学中,我们通常仅考虑“决策”变体,在该变体中我们得到了输入,只需要输出True或False。您正在关注“功能”问题。

如果您认为O(f(n))表示试图捕获解决一个问题需要多少“工作”,那么使用决策而不是函数(需要输出)似乎更好,因为您可以将计算与输出格式完全分开。

我认为这不会回答您的问题,但是您可能对此感兴趣:http : //en.wikipedia.org/wiki/Time_hierarchy_theorem

另外,请注意加速定理

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.