Big Theta,Big O,Big Omega用于给定功能

时间:2012-05-06 13:57:50

标签: time-complexity asymptotic-complexity

考虑函数F:2 ^(3 * n)+ n ^ 2

函数A:2 ^(3 * n)可以用作大Theta,Omega或O作为F的特征吗?为什么呢?

我正在修改Big Omega,Big Theta和Big O的概念,我遇到了这个例子,但不知道从哪里开始。

2 个答案:

答案 0 :(得分:1)

没有。

2 ^(3 * n)是主要术语,但除非你做了一些非常错误的事情,否则你不会花那么长时间来计算。 Wikipedia列出了各种功能的时间复杂性。你正在做的最复杂的操作是提升能力,其复杂性在其他post中讨论。

由于您正在查看形式为g(f(x))的函数,其中g(x)= 2 ^ x且f(x)= 3x,因此计算的时间将为O(h) + O(k),其中h是g的时间复杂度,k是f的时间复杂度。想一想:它应该永远不会超过这个,如果它你可以将操作分成两部分并通过单独执行部件来节省时间。因为h将主导这个总和,所以通常会关闭k项。

答案 1 :(得分:0)

是的,这三个。总的来说,你只需要关注增长最快的术语,因为增长较慢的术语将被更快的增长条件“淹没”。

详细说明:

显然,F比A长得快,所以F \ in \ Omega(A)是不费脑子的。对于所有足够大的n,存在小于F的A的正倍数(即A本身)。

尝试将F绘制为2 * A.你会发现2 * A很快就会比F大并且保持更大。因此,对于足够大的参数,存在大于F的正多个(即2 * A)。所以通过定义O,F \ in O(A)。

最后,因为F \ in \ Omega(A)和F \ in O(A),F \ in \ Theta(A)。