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


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 na=日志Dk对数n +1ķε>0ķ=2/εÑ=d 2 / ε ķ

τ(n)logT(n)lognalogDk+(a+1/k)lognlogna=logDklogn+1k.
ϵ>0k=2/ϵN=D2/ϵk。然后对于,。因此,我们得到Levin算法在时间。Ñ Ñ τ Ñ ε τ Ñ 0 Ñ 一个+ τ Ñ = Ñ 一个+ Ô 1 nNτ(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.