使用大O的法则

时间:2018-04-24 09:59:53

标签: big-o

让我们说我想回答的问题是:

问。证明O(n)+ O(1)= O(n)

我回答了这个问题......

首先,我们可以看到 f(n)< f(n)+ 1< 2f(n)因此我们可以说明 O(n)+ O(1)= 2O(n)然后通过应用系数规则得到 O(n) + O(1)= O(n)

我想了解如何正确处理这类问题,并想知道我的推理是否正确?谢谢!

1 个答案:

答案 0 :(得分:0)

我建议你通过证明来详细说明:

  1. O(n) <= O(n) + O(1)
  2. O(n) + O(1) <= O(n)
  3. 然后得出结论:两个集合是相同的(您可以将这些对象视为函数集和它们之间的不等式作为包含)。

    不平等1

    f(n)中取O(n)。我们必须证明f(n)可以表示为O(n)中的函数加上O(1)中的函数。这是正确的,因为f(n) <= f(n) + 1(你的论点)。

    不平等2

    f(n)O(n) g(n)中使用O(1)两个函数。我们必须证明f(n) + g(n)位于O(n)。换句话说,我们必须显示f(n) + g(n) <= C*n对于某个常量Cn足够大。

    现在,我们可以使用常量A和整数Nf(n) <= A*n n > N。这是因为f(n)位于O(n)。同样,BM存在g(n) <= B n > M(因为g(n)位于O(1))。因此,n > max(N,M)我们得到了

    f(n) + g(n) <= A*n + B
                <= max(A,B)*n + max(A,B)
                <= max(A,B)*n + max(A,B)*n
                <= 2max(A,B)*n
    

    表示存在常量C,即2max(A,B)和整数R,即max(N,M),以便:f(n) + g(n) <= C*n表示所有{ {1}},根据定义,n > R位于f(n) + g(n),正如我们想要看到的那样。