为什么在


10

我的教科书说:“我们将函数定义如下:和。请注意,给定,我们可以在时间中轻松找到数量,使得夹在和。” f (1 )= 2 f (i + 1 )= 2 f (i )1.2 n O (n 1.5)i n f (i )f (i + 1 )f:N→Nf(1)=2f(i+1)=2f(i)1.2nO(n1.5)inf(i)f(i+1)

我如何使自己相信我们实际上可以在时间内轻松找到?由于是递归定义的,我认为我们必须计算直到。为了找出这些计算所花费的时间,我认为我们必须为依赖于找到合适的上限,并且必须找到函数。最后,我们可以希望显示所引用的命题。不幸的是,我看不到一件事,也看不到另一件事。ø (Ñ 1.5)˚F ˚F (1 ),˚F (2 ),˚F (3 )... ˚F (Ĵ )˚F (Ĵ )≥ ñ 我Ñ X → 2 X 1.2iO(n1.5)ff(1),f(2),f(3)…f(j)f(j)≥ninx→2x1.2

我忘了提:请注意,我们处于不确定性环境中。因此,被不确定的图灵机据称可在。O (n 1.5)fO(n1.5)


由于已经有很多人阅读了这个问题,其中一些人也发现它很有用和有趣,但是到目前为止,还没有人回答。我想提供更多有关此上下文的信息:引用的权利要求是对证明的必要部分非确定时间层次定理。证明(带有权利要求)可以在Arora和Barak的书中找到,但我在网络上也发现了很多其他资源,它们提供了相同的证明。这些方法中的每一种方法都将索赔称为简单或琐碎的事,并且没有详细说明如何在时间内找到。因此,要么从Arora和Barak复制所有这些资源,要么实际上并不那么困难。O (n 1.5)iO(n1.5)


1
这看起来像是Arora&Barak中的不确定时间层次定理证明,是吗?如果是这样,我认为不确定性在这里发挥了作用。
— G. Bach 2014年

你是对的。抱歉,我应该提到不确定性上下文。您能否详细解释一下不确定性如何帮助我们显示O(n ^ 1.5)界?
— user1494080

Answers:


4

用表示 x | 一个数字的长度X,即⌊ 登录2 X ⌋ + 1(对于X > 0)。计算2 X需要时间ø (X )在RAM模式,和因此在计算˚F (我+ 1 )从˚F (我)需要时间Ô (˚F (我)1.2)= Ö (| ˚F|x|x⌊log2⁡x⌋+1x>02xO(x)f(i+1)f(i)。由于 f (i )的增长速度快于几何增长速度,因此计算 f (i + 1 )的总时间为 O (| f (i + 1 )|)。正如你指出,需要这样做,直到 ˚F (我+ 1 )≥ Ñ,这意味着 ˚F (我)< Ñ。因此,总运行时间为O(f(i)1.2)=O(|f(i+1)|)f(i)f(i+1)O(|f(i+1)|)f(i+1)≥nf(i)<n。O(|f(i+1)|)=O(f(i)1.2)=O(n1.2)

在具有单个磁带的图灵机模型中,计算需要时间O (x log x ),因此总运行时间为O (n 1.2 log n )= O (n 1.5)。用于计算算法2 X内容替换[ X ]由1 [ [ X ] ](这里[ X ]是的二进制表示X,和[ [2xO(xlog⁡x)O(n1.2log⁡n)=O(n1.5)2x[x]1[[x]][x]x是使用不同的数字的二进制表示 0 ',1 '),然后重复运行变换 [ [ X ] ] ⟶ 0 [ [ X - 1 ] ],这需要时间 ø (| X |)= Ö (log x )。[[x]]0′,1′[[x]]⟶0[[x−1]]O(|x|)=O(log⁡x)


很好,谢谢!还有一个问题:我们不必争辩| f(i)|吗?比几何增长快,而不是f(i)比几何增长快?
— user1494080 2014年

由于,这是同一回事,但是你是对的。我们真正需要的是Σ Ĵ ≤ 我 | f (j )| = O (| f (i )|)。|f(i+1)|=f(i)1.2∑j≤i|f(j)|=O(|f(i)|)
— Yuval Filmus 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.