为什么在


10

我的教科书说:“我们将函数定义如下:和。请注意,给定,我们可以在时间中轻松找到数量,使得夹在和。” f 1 = 2 f i + 1 = 2 f i 1.2 n O n 1.5i n f i f i + 1 f:NNf(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)ninx2x1.2

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


由于已经有很多人阅读了这个问题,其中一些人也发现它很有用和有趣,但是到目前为止,还没有人回答。我想提供更多有关此上下文的信息:引用的权利要求是对证明的必要部分非确定时间层次定理。证明(带有权利要求)可以在Arora和Barak书中找到,但我在网络上也发现了很多其他资源,它们提供了相同的证明。这些方法中的每一种方法都将索赔称为简单或琐碎的事,并且没有详细说明如何在时间内找到。因此,要么从Arora和Barak复制所有这些资源,要么实际上并不那么困难。O n 1.5iO(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|xlog2x+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)<nO(|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(xlogx)O(n1.2logn)=O(n1.5)2x[x]1[[x]][x]x是使用不同的数字的二进制表示 0 '1 '),然后重复运行变换 [ [ X ] ] 0 [ [ X - 1 ] ],这需要时间 ø | X |= Ö log x [[x]]0,1[[x]]0[[x1]]O(|x|)=O(logx)


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

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