两个函数f(n)[O(1)]和g(n)[O(n)]相乘时的大O复杂度

时间:2016-09-15 12:31:32

标签: big-o

f(n)和g(n)表示两种不同算法的运行时间。 f(n)具有算法复杂度O(1),并且g(n)具有算法复杂度O(n)。我们可以声称f(n)* g(n)具有复杂度O(n)吗?为什么/为什么不呢?

2 个答案:

答案 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.