我有家庭作业问题:
设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符号应该用一个下限和上限来绑定函数。这意味着我需要功能?
答案 0 :(得分:2)
是的,答案是一样的!
您可以轻松使用相同的工具来证明T(n) = Omega(n)
。
证明T(n)
是O(n)
[上渐近界限]和Omega(n)
[下渐近界限]后,你知道它也是Theta(n)
[紧渐近界] < / p>
在您的示例中,很容易显示T(n) >= n
- 因为它是作业,因此您需要了解原因。