首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >给定函数的Big Theta、Big O、Big Omega

给定函数的Big Theta、Big O、Big Omega
EN

Stack Overflow用户
提问于 2012-05-06 21:57:50
回答 2查看 2.1K关注 0票数 0

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

函数A: 2^(3*n)是否可以用作大θ、欧米茄或O作为F的刻画?为什么?

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-05-06 22:17:02

不是的。

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
EN

Stack Overflow用户

发布于 2012-05-06 22:16:23

是的,三个都是。一般来说,你只需要关注增长最快的术语,因为增长较慢的术语将被增长较快的术语“淹没”。

详细说明:

显然F比A增长得更快,所以F在Omega(A)中是不需要动脑筋的。对于足够大的n,存在小于F的A的正倍数(即A本身)。

尝试绘制F与2*A的关系图,你会发现2*A很快就会比F更大,并保持更大。因此,对于足够大的参数,存在大于F的A的正倍数(即2*A)。所以根据O的定义,F在O(A)中。

最后,由于F \in \Omega(A)和F \in O(A),F \in \θ(A)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10471074

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档