O(f(n) + g(n)) = O(max{f(n), g(n)})
所以首先
f(n) + g(n) = O(max{n, n^2}) = O(n^2)
对于
f(n) 鈰� g(n)
我们将有
O(f(n) 鈰� g(n)) = O(n 鈰� n^2) = O(n^3)
这样想吧。
f(n)= c.n + d g(n)= a.n ^ 2 + b.n + p
然后, f(n)+ g(n)= a.n ^ 2 +(n的较低幂) 和, f(n).g(n)= x.n ^ 3 +(n的较低幂)
由此得出O(f(n)+ g(n))= O(n ^ 2)
和O(f(n).g(n))= O(n ^ 3)
当准备好这个答案时,f(n)显示为o(n),g(n)显示为螛(n虏)。
从f(n)= o(n)和g(n)=螛(n虏)得到f(n)+ g(n)的o(n虏)的下界,但是你得不到f(n)+ g(n)的上限,因为f(n)没有给出上限。 [注意,在上面,螛是一个大的,或大的theta]
对于f(n)·g(n),得到o(n鲁)的下界,因为螛(n虏)表示对于g(n)的o(n虏)和O(n虏)的下限和上限。同样,没有f(n)·g(n)的上界可用,因为f(n)可以任意大;对于f(n),我们只有一个o(n)下界。
修改问题只给出f和g的上界,如f(n)= O(n)和g(n)= O(n虏),我们得到f(n)+ g(n)是O (n虏)和f(n)·g(n)是O(n鲁)。
严格地说明这一点有点单调乏味,但确实如此 直截了当。例如,对于f(n)·g(n)情况,假设通过O(n)和O(n虏)的定义,我们给出C,X,K,Y,使得n>X鈬鈬C· n> f(n)和n> Y鈬 K n&> G(N)。设J = C·K,Z = max(X,Y)。然后n> Z鈬 J·鲁鲁> f(n)·g(n)证明f(n)·g(n)是O(n鲁)。
这个问题可以这样理解: -
f(n)= O(n)表示计算f(n)需要O(n)时间。
同样的,
对于需要O(n ^ 2)时间的g(n)
所以,
P(n)= f(n)+ g(n)肯定会取O(n)+ O(n ^ 2)+ O(1)(对于加法, 一旦你知道了f和g的值
。因此,这个新功能
的 P(n)将需要O(n ^ 2)时间 强> 。
情况也是如此
Q(n)= f(n)* g(n),其需要O(n ^ 2)时间
。