找到以下递归方法的theta表示法

时间:2012-03-04 16:58:03

标签: algorithm big-o big-theta

我有家庭作业问题:

  设p(n)表示语句x = x + 1的次数   在算法中执行

example (n)
{
    if (n == 1)
    {
       return
    }
    for i = 1 to n
    {
       x = x + 1
    }
    example (n/2)
}
  

找到执行x = x + 1次数的θ表示法。   (10分)。

这就是我所做的:

我们完成了以下工作量: - 基本案例检查的不断工作量 - O(n)努力计算数字 - 递归调用一半大小所需的工作

我们可以将此表达为递归关系:     T(1)= 1     T(n)= n + T(n / 2)

让我们看看这是什么样的。我们可以通过注意

开始扩展它
T(n)=n+T(n/2)
=n+(n/2+T(n/4))
=n+n/2+T(n/4)
=n+n/2+(n/4+T(n/8))
=n+n/2+n/4+T(n/8)

我们可以在这里看到一种模式。如果我们将T(n / 2)位扩展k次,我们得到:     T(n)= n + n / 2 + n / 4 +⋯+ n / 2 ^ k + T(n / 2 ^ k)

最终,当n/2^k =1发生这种情况时会停止,我们有:      T(N)= N + N / 2 + N / 4 + N / 8 +⋯+ 1

这对此有何评价?有趣的是,这个总和等于2n + 1,因为总和n+ n/2 + n/4 + n/8 +…. = 2n.因此第一个函数是 O(n)

我得到了答案,感谢this question 回答@templatetypedef


知道我对theta符号感到困惑。答案是否相同?我知道theta符号应该用一个下限和上限来绑定函数。这意味着我需要功能?

1 个答案:

答案 0 :(得分:2)

是的,答案是一样的!

您可以轻松使用相同的工具来证明T(n) = Omega(n)

证明T(n)O(n) [上渐近界限]和Omega(n) [下渐近界限]后,你知道它也是Theta(n) [紧渐近界] < / p>

在您的示例中,很容易显示T(n) >= n - 因为它是作业,因此您需要了解原因。