使用渐近符号时出错


10

我试图了解以下重复发生的以下证明有什么问题

T(n)=2T(n2)+n
T(n)2(cn2)+ncn+n=n(c+1)=O(n)

文档说,因为归纳假设它的错误是

T(n)cn
我在想什么?

2
使用Master定理也可以解决这种形式的重复情况。
Juho 2012年

2
@冉:我认为主定理不是解决这个问题的合适方法。问题不是关于如何解决它,而是指出特定论点中的谬误。此外,主定理可能过于具体,可能不应该拥有自己的标签。通常,我们应该基于问题而不是可能的答案进行标记。例如,您会标记这个akra-bazzi吗?
Aryabhata'3

“以下证明有什么问题”-我看不到任何证明。写下完整的证明(即明确归纳)以发现错误通常是有帮助的。
拉斐尔

一个相关的更普遍的问题是求解或近似数字序列的递归关系
Juho 2012年

Answers:


12

假设最终目标是证明。您从归纳假设开始:T(n)=O(n)

对所有< ÑT(i)cii<n

并完成了证明,你必须表明为好。T(n)cn

但是,您可以推断出,这对完成证明没有帮助;对于(几乎)全部n,您需要一个常数c。因此,我们无法得出任何结论,也无法证明T n = On T(n)(c+1)ncnT(n)=O(n)

请注意,您在结果和证明过程之间感到困惑。还有一点,在这种情况下,实际上是Θ n log n ,因此您可以考虑使用适当的归纳假设来证明这一点。T(n)Θ(nlogn)


如果我们替换c'= c + 1,它将进行任何更改吗?
Erb 2012年

@erb:不,不会。您必须证明所选择的常数。如果替换,则最终得到 T n c ' + 1 n(或T n c + 2 n),那么结果是相同的。c=c+1T(n)(c+1)nT(n)(c+2)n
填充

8

您已经省略了一些步骤。看起来您正在尝试通过归纳证明,您的证明就可以了:T(n)=O(n)

假设对于k < n,。这意味着Ť ķ ÇT(k)=O(k)k<n代表 c。然后 Ť Ñ = 2 Ť ñ / 2 + ñ 2 ç Ñ / 2 + Ñ C ^ + 1 T(k)ckc,因此 T n = O n T(n)=2T(n/2)+n2cn/2+n(c+1)nT(n)=O(n)

该证明从一开始就错了:“ 对于k < n, ”是没有意义的。大哦是渐近概念:Ť ķ = Ô ķ 手段,有一些恒定Ç和阈值n使得ķ Ñ Ť ķ ÇT(k)=O(k)k<nT(k)=O(k)c 。最后,您不能得出结论“ T n = O n ”,因为这说明了有关函数 T的整体情况,而您仅证明了有关特定值 T n )的情况。kN,T(k)ckT(n)=O(n)TT(n)

您需要明确说明含义。所以也许您的证明去了:O

假设所有 ķ < Ñ。然后 Ť Ñ = 2 Ť ñ / 2 + ñ 2 ç Ñ / 2 + Ñ C ^ + 1 T(k)ckk<nT(n)=2T(n/2)+n2cn/2+n(c+1)n

这并不能证明一个归纳步:从你开始,您证明了对于 k = n T k c + 1 T(k)ckk=n。这是一个较弱的界限。看看这意味着什么:牛逼ķ ÇT(k)(c+1)k表示 c T的增长率的约束。但是你的速度 ç时长 ķ增长。这不是线性增长!T(k)ckcTck

如果仔细观察,您会发现,每当k加倍时,比率就会增加1。因此,非正式地,如果m = 2 p k,c m = c k + p;换句话说,c k = c 0 log 2 kc1km=2pkcm=ck+pck=c0log2k

这可以很精确。通过感应证明了对Ť ķ Ç 日志2ķ k1T(k)clog2(k)

递归关系是分而治之算法的典型特征,该算法在线性时间内将数据分为两个相等的部分。此类算法以时间(不是 O n )。Θ(nlog(n))O(n)

要查看预期的结果,您可以对照主定理检验递归关系。除法是,完成的额外功是n ; 日志22 = 1,所以这是在第二种情况下的量,生长是Θ Ñ2T(n/2)nlog2(2)=1Θ(nlog(n))


7

我正在扩展已经给出的答案,也许只是通过更详细地解释我的评论。

由于猜测显然是困难且乏味的,因此有时存在更好的方法。一种这样的方法是主定理。现在我们的复发形式的,其中一个1并且b > 1是常数,˚F Ñ 的功能。请注意,在我们的例子ñ / 2 可以被解释为ñ / 2T(n)=aT(n/b)+f(n)a1b>1f(n)n/2n/2。从技术上讲,由于可能不是整数,因此递归的定义可能不明确。但是,这是允许的,因为它不会影响复发的渐近行为。因此,我们经常发现放下地板和天花板很方便。正式的证明有点繁琐,但是有兴趣的读者可以从例如Cormen等人的文章中找到。n/2

在我们的情况下,我们有b = 2f n = Θ n 。这意味着我们有n log b a = n log 2 2 = n。由于f n = Θ n ,因此适用了Master定理的第二种情况,并且我们有解T n = Θ n loga=2b=2f(n)=Θ(n)nlogba=nlog22=nf(n)=Θ(n)T(n)=Θ(nlogn)


谢谢!可以注意到的是“滴落地板和ceils”对应于假设其通常完成。基本观察是,对于非递减函数,子序列的渐近增长等于整个序列的渐近增长。n=2k
拉斐尔
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.