如果
f(n)=ϴ(n),g(n)=ϴ(n)
和
h(n)=Ω(n)
然后如何评估f(n)g(n)+h(n)
?
我接近f(n)g(n)=ϴ(n^2)
,现在是Ω(n)+ϴ(n^2)
。根据我的说法,这个表达式的下限应该是Ω(n)
,上限应该是O(n^2)
,但是这个表达式应该是最紧密的约束?
答案 0 :(得分:1)
对于某些常量k1, k2, l1, l2 and m > 0
,我们有:
f(n) is ϴ(n)
=> k1*n < f(n) < k2*n, for n sufficiently large
g(n) is ϴ(n)
=> l1*n < g(n) < g2*n, for n sufficiently large
h(n) is Ω(n)
=> m*n < h(n), for n sufficiently large
然后,f(n)*h(n)
:
for f(n) * h(n):
k1*l1*n^2 < f(n)*g(n) < k2*l2*n^2, for n sufficiently large
所以我们可以写p(n) = f(n)*g(n)
并使用常量c1=k1*l1
和c2=k2*l2
,我们有:
p(n) (= f(n)*g(n)) is in ϴ(n^2), since
c1*n^2 < p(n) < c2*n^2
然后,最后,p(n) + h(n)
有什么复杂性?我们有:
c1*n^2 + m*n < p(n) + h(n), for n sufficiently large
由于我们从未得到h(n)
的上限,我们无法真正说出有关p(n) + h(n)
上限的任何内容。这是必要的:h(n) in Ω(n)
仅表示h(n)
的增长速度至少与n
(线性)一样快,但我们不知道这是否是一个紧张的下限。对于指数时间函数,它可能是一个非常草率的下界。
随后,我们只能陈述关于下限的内容:
p(n) + h(n) = f(n)*g(n) + h(n) is in Ω(n^2)
即,f(n)*g(n) + h(n)
至少增长为n^2
(即Ω(n^2)
)渐近。
关于您的方法的说明:您是f(n)g(n) is in ϴ(n^2)
的正确(如上所示),但请注意,这意味着f(n)g(n) + h(n)
的紧密下限永远不会小于k*n^2
}:ie,f(n)g(n) + h(n) in Ω(n^2)
是给定的,并且比你的建议更好(更强)的下界; Ω(n)
。回想一下,增长最快的术语主导着渐近行为。
供参考,参见例如