【问题标题】:Proving Polynomial Big-Theta through induction?通过归纳证明多项式 Big-Theta?
【发布时间】:2012-09-19 16:07:08
【问题描述】:

我了解 big theta、big oh 和 big omega 的概念。我只是很难证明这一点。自从我做归纳以来已经很长时间了,所以我很确定我只是生疏了,缺少一些简单的东西。

例如..我需要帮助的问题是表明5n² - 6n = Θ(n²)

我已经得到了问题的 Big-Oh 部分(我分别做 big-Oh 和 Ω 正确吗?)到:

6k² >= 5n² - 6n

和大的欧米茄部分:

5n² - 6n >= n²

....但是我该去哪里呢?!我从归纳中回忆起……我认为这些是真的,现在为每个n 插入(n+1) 并且……做.. 什么?在这一点上,我迷失了自己。

【问题讨论】:

    标签: algorithm big-o big-theta induction


    【解决方案1】:

    要证明 5n^2-6n 是 O(n^2),你必须证明这个陈述 5n^2-6n = n0,对于某个数字 n0 和常数 c。

    归纳证明包括证明基本案例的主张和证明归纳步骤。在我们的示例中,我们可以看到基本情况,当 n = 1 时,对于某个常数 c 显然成立。

    对于归纳步​​骤,我们假设某个数字 k 的断言是正确的,并使用它来证明该断言对于 k+1 是正确的。所以我们假设 5k^2-6k

    5(k+1)^2 - 6(k+1)  = 5k^2 +10k + 5 -6k - 6
                       = 5k^2-6k + 10k -1        
                      <= ck^2 + 10k - 1
                      <= ck^2 + c*2k + c       (for any constant c  >= 5)
                       = c(k+1)^2
    

    这证明了 k+1 的声明并完成了证明。

    您可以用类似的方式证明 Omega 的大主张。

    【讨论】:

    • 好的,现在看起来很熟悉,谢谢!唯一的问题..我看到你是如何从 5k^2-6k + 10k -1 到 ck^2 + 10k - 1 通过代入假设的方程......但是你是如何从那个到 ck^2 + c* 2k + c?而且我猜也是..我之前在这里选择了'6'作为我的c..我不先这样做吗?
    • 如果 c >= 5,则 10k
    • 是的,你也可以提前选择一些固定的c,如果你知道它会起作用的话。在这种情况下,任何 c >= 5 都可以工作