f(n)和g(n)表示两种不同算法的运行时间。 f(n)具有算法复杂度O(1),并且g(n)具有算法复杂度O(n)。我们可以声称f(n)* g(n)具有复杂度O(n)吗?为什么/为什么不呢?
答案 0 :(得分:0)
O(n)是时间复杂度。当我们乘以f(n)和g(n)时,获得的时间复杂度越高,算法复杂度为O(n)。
答案 1 :(得分:0)
数学证明:
如果我们想证明f(n)* g(n)是O(n),我们必须证明存在n0
和常数c
,例如:
f(n)*g(n) < c*n for every n>n0
事实上,f(n)是O(n),这意味着有c1,n1:
f(n)<c1*n for every n>n1 (1)
并且对于g,存在c2,n2:
g(n)<c2 for every n>n2 (2)
现在我们已经知道,每n>max(n1,n2)
(最大值因为我们想要f和g的两个不等式):
f(n)g(n)<c1*c2*n (by multiplying (1),(2))
所以我们证明存在c=c1*c2 and n0=max(n1,n2)
如下面的不等式:
f(n)g(n)<c*n -> f(n)*g(n) is O(n) for every n>n0.