【发布时间】:2012-03-04 16:46:33
【问题描述】:
我有作业问题:
- 找到语句 x = x + 1 执行次数的 theta 表示法。 (10 分)。
i = n
while (i >= 1)
{
for j = 1 to n
{
x = x + 1
}
i = i/2
}
这就是我所做的:
好的,首先让我们让它变得更容易。我们将首先找到以下的增长顺序:
while (i >= 1)
{
x = x + 1
i = i/2
}
具有增长顺序 O(log(n)) 实际上是对数基数 2
另一个内部for循环将执行n次因此算法应该是有序的:
O(log(n)*n)
我感到困惑的部分是我应该找到 theta 符号而不是 big-O。我知道 theta 表示法假设将函数限制在上限和下限。正确答案会是Theta(log(n)*n)吗?
我在link 中找到了答案,但我不知道你是如何得到这个答案的。为什么他们声称答案是 Theta(n)?
【问题讨论】:
-
我现在很想吃乌龟,要是我能抓到一只就好了。
-
应该是
theta(log(n)*n) -
我也这么认为,所以链接answers.yahoo.com/question/index?qid=20100203122230AAP41TQ是错误的吗?
-
(a) 区分大 O 表示法和大 O 表示法。在 theta 符号中找到以下函数的时间复杂度: (i) f(n) : n^3 + 2^1000 (ii) f(n) :n^4+!n+100 (iii) f(n) :n^3+ n^2log n+log4^ n+ 20 (iv) f(n) : 2^n + !n log n + log(log(log(n))) + 100 :D