![](/img/trans.png)
[英]Is it possible to prove that f(n) + g(n) = theta(n^2) for f(n) = theta(n^2) & g(n) = O(n^2)
[英]Finding possible big theta for a given runtime function f(n)=O(n^2)+nlog(n)?
假设 f( n ) = O( n 2 ) + n log n 。 以下哪项是可能的?
- f( n ) = Θ(log n )
- f( n ) = Θ( n )
- f( n ) = Θ( n 2 )
- f( n ) = Θ( n 3 )
由于包含 O( n 2 ),我对运行时 function 有点困惑。 我相信答案是 2 和 3,因为它们中的每一个都可以乘以一个数字来达到 O( n 2 )。 具体来说,Θ( n 2 )可以乘以1达到上界O( n 2 ),而Θ( n )可以乘以n达到上界O( n 2 )。
我对么?
我想唯一正确的答案是(3)。 O(n^2)
是任何 function,其增长速度与n^2
一样快或更慢。 n log n = O(n^2)
,所以O(n^2) + n log n
是任何 function 渐近“介于” n log n
和n^2
之间。 在您问题中的所有 Thetas 中,只有第三个符合这些界限。
f(n) = O(n^2) + nlogn 表示 O(n^2) 中有 ag(n) 使得 f(n) = g(n) + nlogn。
O(n^2) 中的 g(n) 表示 |g(n)| < cn^2 对于一些正常数 c,并且所有足够大的 n。 绝对值 || 定义中的条允许 g(n) 为负的可能性。
这意味着 1、2、3 可能是正确答案。 f(n) 不能为负数,因为它描述了运行时间,但没有理由 O(n^2) 项不能为负数。
(请注意,这个问题是用大θ 来表达的,但 f(n) 有可能与 1、2 和 3 中的界限完全匹配)。
如果您假设 O(n^2) 项为非负数,则 3 是唯一的解决方案。
在回答这些类型的问题时,请确保您 go 回到大θ的定义。 对于 function f
要在 function g
的Θ(g(n))
中,必须满足以下条件:
(4) 基本上意味着随着 f(n) 的增长,对于相同的 n,k 1 * g(n) 增长较慢,而 k 2 * g(n) 增长较快。
幸运的是,当它们并排绘制时,这些函数之间的关系真的很容易看出:)
下面我们可以看到所有功能并排绘制:
f(n)
log n
n
n^2
n^3
基于这个 plot,我们可以立即丢弃log n
、 n
和n^3
,因为没有两个常数可以约束这些函数,它们会随着n
的增长而约束f(n)
。
然而, n^2
看起来很有希望。 我们只需要找到允许n^2
限制f(n)
增长的两个常数。
下面我们可以看到两个这样的常量:
f(n)
1 * n^2
4 * n^2
通过找到这些常数,我们可以明确地说n^2 + n (log n)
是Θ(n^2)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.