这是一个采访问题:
Given: f(n) = O(n)
g(n) = O(n²)
find f(n) + g(n) and f(n)⋅g(n)?
这个问题的答案是什么?
答案 0 :(得分:6)
当准备这个答案时,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)没有给出上限。 [注意,在上面,Θ是一个大θ或大θ]
对于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 2)且f(n)·g(n)是O(n 3)。
严格证明这一点有点单调乏味,但确实如此 直截了当。例如,对于f(n)·g(n)情况,假设通过O(n)和O(n²)的定义,我们给出C,X,K,Y,使得n>X⇒C·n> ; f(n)和n>Y⇒K·n 2> G(N)。设J = C·K,Z = max(X,Y)。然后n>Z⇒J·n³> f(n)·g(n)证明f(n)·g(n)是O(n³)。
答案 1 :(得分:1)
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)
答案 2 :(得分:0)
以这种方式思考。
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)
答案 3 :(得分:0)
这个问题可以这样理解: -
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)时间