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)