繁体   English   中英

为给定的运行时 function f(n)=O(n^2)+nlog(n) 找到可能的大 theta?

[英]Finding possible big theta for a given runtime function f(n)=O(n^2)+nlog(n)?

假设 f( n ) = O( n 2 ) + n log n 以下哪项是可能的?

  1. f( n ) = Θ(log n )
  2. f( n ) = Θ( n )
  3. f( n ) = Θ( n 2 )
  4. 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 nn^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) 项不能为负数。

  1. g(n) = logn - nlogn 为 O(n^2),并且 g(n) + nlogn = logn。
  2. g(n) = n - nlogn 是 O(n^2),并且 g(n) + nlogn = n
  3. g(n) = n^2 - nlogn 是 O(n^2),并且 g(n) + nlogn = n^2
  4. 不可能。

(请注意,这个问题是用大θ 来表达的,但 f(n) 有可能与 1、2 和 3 中的界限完全匹配)。

如果您假设 O(n^2) 项为非负数,则 3 是唯一的解决方案。

在回答这些类型的问题时,请确保您 go 回到大θ的定义。 对于 function f要在 function gΘ(g(n))中,必须满足以下条件:

  1. 存在一个大于 0 的常数 k 1
  2. 存在一个大于 0 的常数 k 2
  3. 存在某个起始值,n 0
  4. 对于所有 n > n 0 , k 1 * g(n) <= f(n) <= k 2 * 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 nnn^3 ,因为没有两个常数可以约束这些函数,它们会随着n的增长而约束f(n)

然而, n^2看起来很有希望。 我们只需要找到允许n^2限制f(n)增长的两个常数。

下面我们可以看到两个这样的常量:

  • 蓝色是f(n)
  • 绿色是1 * n^2
  • 紫色是4 * n^2

1*n^2 和 4*n^2 与 f(n) 一起绘制

通过找到这些常数,我们可以明确地说n^2 + n (log n)Θ(n^2)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM