面试问题

时间:2013-03-27 08:23:09

标签: big-o complexity-theory asymptotic-complexity

这是一个采访问题:

Given: f(n) = O(n)
       g(n) = O(n²)
find f(n) + g(n) and f(n)⋅g(n)?

这个问题的答案是什么?

4 个答案:

答案 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)时间