Big o 面试问题

Big o 面试问题,big-o,complexity-theory,asymptotic-complexity,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)? 这个问题的答案是什么?在准备这个答案时,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³)的下界,因为

这是一个采访问题:

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

这个问题的答案是什么?

在准备这个答案时,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²)意味着o(n²)和o(n²)对于g(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·n³>f(n)·g(n),证明了f(n)·g(n)是O(n³)

所以首先

f(n) + g(n) = O(max{n, n^2}) = O(n^2)
为了

我们会

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)


这个问题可以这样理解:-

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)个时间


.

0(n^2)
中的
0
是什么?大θ?他们提到它是n^2的顺序。所以我相信它是大θ。但是你现在编辑成大θ了吗?它们不是同义词。
f(n).g(n)
中的点代表什么?函数合成?我回滚了编辑。它是大θ
f(n) ⋅ g(n) 
O(f(n) ⋅ g(n)) = O(n ⋅ n^2) = O(n^3)