我试图了解以下重复发生的以下证明有什么问题
文档说,因为归纳假设它的错误是
我试图了解以下重复发生的以下证明有什么问题
文档说,因为归纳假设它的错误是
Answers:
假设最终目标是证明。您从归纳假设开始:
对所有我< Ñ。
并完成了证明,你必须表明为好。
但是,您可以推断出,这对完成证明没有帮助;对于(几乎)全部n,您需要一个常数c。因此,我们无法得出任何结论,也无法证明T (n )= O(n )。
请注意,您在结果和证明过程之间感到困惑。还有一点,在这种情况下,实际上是Θ (n log n ),因此您可以考虑使用适当的归纳假设来证明这一点。
您已经省略了一些步骤。看起来您正在尝试通过归纳证明,您的证明就可以了:
假设对于k < n,。这意味着Ť (ķ )≤ Ç代表 c。然后 Ť (Ñ )= 2 Ť (⌊ ñ / 2 ⌋ )+ ñ ≤ 2 ç ⌊ Ñ / 2 ⌋ + Ñ ≤ (C ^ + 1 ),因此 T (n )= O (n )。
该证明从一开始就错了:“ 对于k < n, ”是没有意义的。大哦是渐近概念:Ť (ķ )= Ô (ķ )手段,有一些恒定Ç和阈值n使得∀ ķ ≥ Ñ ,Ť (ķ )≤ Ç 。最后,您不能得出结论“ T (n )= O (n ) ”,因为这说明了有关函数 T的整体情况,而您仅证明了有关特定值 T (n )的情况。。
您需要明确说明含义。所以也许您的证明去了:
假设所有 ķ < Ñ。然后 Ť (Ñ )= 2 Ť (⌊ ñ / 2 ⌋ )+ ñ ≤ 2 ç ⌊ Ñ / 2 ⌋ + Ñ ≤ (C ^ + 1 )。
这并不能证明一个归纳步:从你开始,您证明了对于 k = n, T (k )≤ (c + 1 )。这是一个较弱的界限。看看这意味着什么:牛逼(ķ )≤ Ç表示 c是 T的增长率的约束。但是你的速度 ç时长 ķ增长。这不是线性增长!
如果仔细观察,您会发现,每当k加倍时,比率就会增加1。因此,非正式地,如果m = 2 p k,则c m = c k + p;换句话说,c k = c 0 log 2 k。
这可以很精确。通过感应证明了对,Ť (ķ )≤ Ç 日志2(ķ )。
递归关系是分而治之算法的典型特征,该算法在线性时间内将数据分为两个相等的部分。此类算法以时间(不是 O (n ))。
要查看预期的结果,您可以对照主定理检验递归关系。除法是,完成的额外功是n ; 日志2(2 )= 1,所以这是在第二种情况下的量,生长是Θ (Ñ。
我正在扩展已经给出的答案,也许只是通过更详细地解释我的评论。
由于猜测显然是困难且乏味的,因此有时存在更好的方法。一种这样的方法是主定理。现在我们的复发形式的,其中一个≥ 1并且b > 1是常数,˚F (Ñ )的功能。请注意,在我们的例子⌊ ñ / 2 ⌋可以被解释为ñ / 2。从技术上讲,由于可能不是整数,因此递归的定义可能不明确。但是,这是允许的,因为它不会影响复发的渐近行为。因此,我们经常发现放下地板和天花板很方便。正式的证明有点繁琐,但是有兴趣的读者可以从例如Cormen等人的文章中找到。书。
在我们的情况下,我们有,b = 2,f (n )= Θ (n )。这意味着我们有n log b a = n log 2 2 = n。由于f (n )= Θ (n ),因此适用了Master定理的第二种情况,并且我们有解T (n )= Θ (n log。