算法在什么情况下暗示算法?


16

假设,对于每个,有一个图灵机,其确定一个语言在时间。是否存在确定时间的单一算法?(这里,项是根据输入长度来度量的。)ε > 0 ϵ>0中号εMϵ大号LÔ (Ñ 一个+ ε)O(na+ϵ)大号LÔ (Ñ 一个+ Ô (1 ))O(na+o(1))ø (1 )o(1)ñn

是否有所作为,如果该算法是可计算的,或有效的计算,在以下方面?中号εMϵ εϵ

动机:在许多证明中,构造时间的算法比限制算法容易。特别是,您需要限制的常数项以传递到极限。如果有一些常规结果可以调用以直接传递到限制,那就太好了。Ô (Ñ 一个+ ε)O(na+ϵ)Ö (Ñ 一个+ Ô (1 ))O(na+o(1))ø (Ñ 一个+ ε)O(na+ϵ)Ö (Ñ 一个+ Ô (1 ))O(na+o(1))

Answers:


10

这个问题类似于关于(构造)对象序列的极限的构造性存在的问题。通常,如果您可以足够有效地均匀构造这些对象(此处为),则可以建设性地显示极限的存在。中号εMϵ

例如,假设我们有一个TM它运行在和其运行时间为(此处的边界也是统一的,例如将不起作用)。然后,我们可以将此统一模拟器与函数结合起来以获得运行时间为的机器。N (k ,x )M | k | - 1 X Ö (Ñ 一个+ | ķ | - 1)+ Ö (| ķ |)Ô (2 ķ。Ñ 一个+ | ķ | - 1)(ķ ,X )↦ X Ñ (X ,X )Ô (ñN(k,x)M|k|−1xO(na+|k|−1)+O(|k|)O(2k.na+|k|−1)(k,x)↦xN(x,x)a + o (1 ))O(na+o(1))

PS:由于渐近符号的嵌套,有点模棱两可,我将其解释为。同样,我们需要不能太小,例如至少。O (n a + o (1 ))n a + o (1 ) a 1O(na+o(1))na+o(1)a1


8

您可以使用Levin的通用搜索算法。假设您可以以某种方式枚举确定的算法序列,每个算法在时间。Levin的算法针对每个在时间中运行,其中是取决于的常数。因此,对于每个, 给定,选择,令甲ķ大号Ç ķ Ñ 一个+ 1 / ķ Ť (Ñ )≤ d ķ Ñ 一个+ 1 / ķ ķ d ķ Ç ķ ķ τ (Ñ )≜ 登录Ť (Ñ )AkLCkna+1/kT(n)≤Dkna+1/kkDkCkk日志ñ -一个≤日志dķ+(一个+1/ķ)日志Ñlog n −a=日志Dk对数n +1ķ。ε>0ķ=⌈2/ε⌉Ñ=⌈d 2 / ε ķ ⌉

τ(n)≜logT(n)logn−a≤logDk+(a+1/k)lognlogn−a=logDklogn+1k.
ϵ>0k=⌈2/ϵ⌉N=⌈D2/ϵk⌉。然后对于,。因此,我们得到Levin算法在时间。Ñ ≥ Ñ τ (Ñ )≤ ε τ (Ñ )→ 0 Ñ 一个+ τ (Ñ ) = Ñ 一个+ Ô (1 )n≥Nτ(n)≤ϵτ(n)→0na+τ(n)=na+o(1)

如果我了解Levin的算法,这仅适用于搜索算法。该算法将使函数反转,其中可以在时间。f f O (n o (a ))ffO(no(a))
— 大卫·哈里斯

我并不是在建议使用Levin的算法本身,而是建议使用燕尾榫并行运行所有算法的想法,以使每个算法只能通过一个乘数来减慢速度。一个ķAk
— Yuval Filmus 2012年

@ Yuval,当您将所有算法融合在一起时,您如何决定接受哪个答案?在搜索问题中,您可以测试每个推定的输出,但是通常这是不可能的。
— 戴维·哈里斯

我接受出现的第一个答案。我们给出了算法正确决定。甲ķ大号AkL
— Yuval Filmus 2012年
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.