【问题标题】:Can Big-O and Big-theta be used interchangibly?Big-O 和 Big-theta 可以互换使用吗?
【发布时间】:2012-09-09 04:31:43
【问题描述】:

我正在学习 Thomas H. Corman 的《算法导论》一书。我正在研究渐近符号。有一件事让我很困扰,因为作者说:

f(n)=Big-theta(g(n)) 意味着 f(n)=Big-O(g(n)) ,因为 Big-theta 表示法比 O-表示法更强。 怎么做??

并且作者还表示(an^2+bn+c),其中a>0,在Big-theta(n^2)中也显示这样的二次函数在 Big-O(n^2) 中。 怎么做??

【问题讨论】:

标签: algorithm big-o notation


【解决方案1】:

我认为您对这些术语有些困惑。

f(n) = O(g(n)) - 表示g(n)f(n) 的上限。正式 - 存在 const n0, c,这样对于所有 n>n0, f(n)<= c*g(n)。你可以把它想象成两个图,这样c*g(n) 高于f(n)。 例如:5n^2+n = O(n^2)

为什么?

因为如果,例如n0=10c=10,那么对于所有n>n0 - 5n^2+n <= 10*n^2

f(n) = Theta(g(n)) - 表示g(n)f(n) 的上限和下限。正式 - 存在 const n0, c1, c2,这样对于所有 n>n0, c1*g(n)<=f(n)<=c2*g(n)。你可以把它想象成三个图,这样f(n)就在c1*g(n)c2*g(n)之间。 例如:5n^2+n = Theta(n^2)

为什么?

因为如果,例如,n0=100c1=1,c2=100,那么对于所有 n>n0 - n^2<=5n^2+n<=100*n^2

【讨论】:

    【解决方案2】:

    (在本书的 V1 中)f() 在 Theta(g(n)) 中的定义是存在正常数 C1 和 C2 使得 0 = N0

    O(g(n)) 的定义是存在单个 C 使得 0 = N0

    所以如果你能找到足够大的常数 N0、C1 和 C2 来满足第一个定义,你可以使用常数 N0 和 C = C2 来满足第二个定义。因此,第一个定义比第二个定义更强,因为任何满足第一个定义的东西都满足第二个定义——关于二次的业务是这种情况的一个特例。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-03
      • 2019-12-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多