无法理解O(f(n))

时间:2018-03-29 18:23:10

标签: algorithm time-complexity

以下重复的价值是什么:

T(n)= T(n / 4)+ T(n / 2)+cn²,T(1)= c,T(0)= 0

其中c是正常数:

  1. T(n)= O(n³)
  2. T(n)= O(n²)
  3. T(n)= O(n²logn)
  4. T(n)= O(n log n)
  5. 正确答案是2,但我有疑问。根据O(f(n))的定义,它给出了一个上界,O(n²)是最小的上界。所以在我看来,O(n³)和O(n²logn)也应该是真的。

    T(n)= 1 /2n²+ 3n

    以下哪项陈述属实(请选中所有适用的内容。)

    1. T(n)= O(n)
    2. T(n)=Ω(n)
    3. T(n)=θ(n²)
    4. T(n)= O(n³)
    5. 这里,正确的答案是2,3和4。

      那么,我是不正确地理解定义还是我犯了一些错误?

1 个答案:

答案 0 :(得分:3)

让我们尝试使用归纳来证明T(n) = O(n^2)第一次复发 我将使用Big O的定义(来自CLRS):

Big O Definition

对于某些常量kn_0

基础步骤:

Basis StepT(0)也是如此,但自T(0) = 0起,它对重复没有任何贡献,我们可以选择T(1)作为基本情况。

归纳步骤

假设T(n/2) = O(n^2),现在推导出T(n)。自T(n/4) <= T(n/2)起,我们的假设意味着T(n/4) = O(n^2)

我们有

T(n/2) = O(n²) iff 0 < T(n/2) <= c<sub>1</sub>(n/2)^2

表示常量c_1

由于

Lemma

成立,将x = T(n)y_1, ..., y_n设置为所有归纳假设的表达式:

Algebraic Deduction

Q.E.D.

(如果我搞砸了某个地方,请告诉我!)

  

所以我认为O(n³)和O(n²logn)也应该是真的。

O(n^2) <= O(n^2 log n) <= O(n³) <= O(n^100),是的,你完全正确。如上所述,您可以证明它是正确的。但是,非正式地,人们经常使用Big O上限互换。这是不精确的,但习惯。如果你从高等教育机构那里得到这些问题,那当然是有问题的。

  

所以,我是不正确地理解这个定义还是我在做一些   误?

你基本上是正确的。然而,现实世界并不是关于正式的正确性,所以要注意非正式主义并且要更好地了解。另外,很多人也会将Landau符号Big OBig OmegaBig Theta视为相同,即使它们绝对不是。