是否可以显示f(n)/log(n) = O(g(n)) => g(n) = Θ(f(n))
?
现在我站在这里:
f(n)/log(n) = O(g(n)) ⇒ f(n)/log(n) ≤ c₁⋅g(n) ⇒ f(n)/(c₁⋅log(n)) ≤ g(n)
g(n) = Θ(f(n)) ⇒ c₂⋅f(n) ≤ g(n) ≤ c₃⋅f(n)
然后我说:c₂ = 1/(c₁⋅log(n)) ⇒ c₂⋅f(n) ≤ g(n)
如果是对的,我该如何显示上限?
答案 0 :(得分:1)
不,这并不接近真实。有两个问题。首先,Theta关系涉及上限和下限,但是(正如您所注意到的)您只假设g给出f的上限。因此,例如,尝试f(n)= 0和g(n)= n:假设为真,但结论是错误的。其次,log(n)的因子不是一个常数因子,这也会阻止你在f和g之间建立紧密的联系;例如,请参阅@templatetypedef的评论。
答案 1 :(得分:0)
如前所述,您可以通过(通用)示例取消该假设:
让f(n) = g(n) ⋅ log(n)
,然后f(n)/log(n) ∈ O(g(n))
成立,但显然g(n) ∉ Θ(f(n))
。
你可以展示的是:
f(n)/h(n) ∈ Θ(g(n)) ⇒ g(n) ∈ Θ(f(n)/h(n)) ⇒ g(n) ∈ O(f(n))