f(n)/ log(n)= O(g(n))⇒g(n)=Θ(f(n))?

时间:2015-03-13 15:47:22

标签: big-o asymptotic-complexity big-theta

是否可以显示f(n)/log(n) = O(g(n)) => g(n) = Θ(f(n))

现在我站在这里:

  1. f(n)/log(n) = O(g(n)) ⇒ f(n)/log(n) ≤ c₁⋅g(n) ⇒ f(n)/(c₁⋅log(n)) ≤ g(n)

  2. g(n) = Θ(f(n)) ⇒ c₂⋅f(n) ≤ g(n) ≤ c₃⋅f(n)

  3. 然后我说:c₂ = 1/(c₁⋅log(n)) ⇒ c₂⋅f(n) ≤ g(n)

    如果是对的,我该如何显示上限?

2 个答案:

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