算法的顺序函数

时间:2013-01-20 14:17:11

标签: algorithm big-o big-theta

有人可以帮我理解这个问题吗?我可能会在明天的考试中找到它但我在网上或讲座中找不到类似的问题。

enter image description here

4 个答案:

答案 0 :(得分:1)

首先,你必须通过确定每个函数的增长类来计算Theta符号,例如。 1,log(n),n,n log(n)等。要做到这一点,你当然要扩展这些功能。 拥有每个功能的增长级别,你必须通过他们的善良来订购它们。 最后,你必须把这些函数放在关系中,比如g1 = omega(g2)。因此,请记住,如果t(n)以g(n)的某个倍数为界,则函数t(n)被称为omega(g(n)),例如。 n 3> = n 2,因此n 3是欧米茄(n 2)的元素。这也可以写成n³= omega(n²)

答案 1 :(得分:1)

首先,您需要将每个函数表示为Theta(something)
例如,对于第一个:Theta((1-n)(n^3-17)) = Theta(n^4 + ...) = Theta(n^4)
第二个:Theta(30+log(n^9)) = Theta(30 + 9logn) = Theta(logn)
这些分类为g1, g2,因为n^4 = Omega(logn)
等等。
对于排序:说g1 = Omega(g2)意味着g1的增长速度至少与g2一样快,那就是我们定义了一个下限。因此,将它们从最坏的(最慢的,增长最快的)到最好的(NB:奇怪的是,练习想要“第一个最优先”,但Omega的定义毫无疑问)。
顺便说一句:如果你想更正式,这里是Omega符号的定义:
f = Omega(g) iff exist c and n0 > 0 such that forall n >= n0 we have 0 <= c*g(n) <= f(n)(用语言来说:f增长至少与g一样快)。

答案 2 :(得分:1)

对于theta,this answerthat one总结了您的问题所在。您可以找到哪些 g 功能(例如 f 是上述8种功能之一)

  • 乘以渐近于 f 的常数边界(称为O(g(n))
  • 乘以(通常)渐近地 f 之下的另一个常量界限(称为omega(g(n))

例如,对于iv10^5nΘ(n)适合,因为您可以轻松找到两个常量,其中 k1.n 的范围低于{{1并且渐近地将 k2.n 限制在上面。 (此处 f 10^5nO(n) f Omega(n)很简单。

答案 3 :(得分:0)

你需要明白所有大O和大欧米茄和大the都适用于更差/最佳/平均情况

用于某些功能: 大O - &gt; O(..)是此功能永远不会超过的上限。为更高的价值 大欧米茄 - &gt;功能从不低于它的低点。例如,小值 Big theta就像:有两个常数,这样:         大欧米茄* c&lt; Big Theta&lt;大O * c2

所以转到你的样本: i)对于Big Omega和O(n ^ + n),其顺序为n ^ 4。 viii)它的常数因此Obig O和大欧米茄都相同..因此大Theta相同