【问题标题】:Big Oh,small Oh and Big theta relationsBig Oh,small Oh 和 Big theta 关系
【发布时间】:2016-09-20 19:50:15
【问题描述】:

如果函数 f(x)=O(g(x)),那么有可能 f(x)=Ω(g(x)) 并且 f(x)= ϴ(g(x)) ,但是如果f(x)=o(g(x)),有没有可能是f(x)=Ω(g(x)),或者f(x)=ω(g(x))?

【问题讨论】:

标签: algorithm math asymptotic-complexity calculus


【解决方案1】:

我们给出一些正式的定义:

f(n) = o(g(n))
<=> forall c > 0 exists k > 0 s.t. 0 <= f(n) < cg(n) forall n >= k.
<=> g(n) = ω(f(n))

f(n) = O(g(n))
<=> exists c > 0 exists k > 0 s.t. 0 <= f(n) < cg(n) forall n >= k.
<=> g(n) = Ω(f(n))

f(n) = ϴ(g(n))
<=> f(n) = O(g(n)) and g(n) = O(f(n))

假设f(n) = o(g(n))。问题一:f(n) = Ω(g(n))可以吗?如果是这样,那么必须存在c, k,使得对于所有n &gt;= k0 &lt;= g(n) &lt; cf(n)。根据假设,我们知道对于所有c',存在一些k',因此对于所有n &gt;= k'0 &lt;= f(n) &lt; cg(n)。让k'' = max(k, k')。我们必须:

0 <= g(k'') < cf(k'')
0 <= f(k'') < c'g(k'')
=> 0 <= g(k'') < cc'g(k'')

这必须适用于c' &gt; 0 的任何选择。我们所知道的c 是存在的。但只要f(n)g(n) 严格大于零,我们就知道一定有一个最小的c 有效。让c'' 成为ck'' 的最小有效选择。然后我们可以选择c' = 1/c''。因此我们需要

0 < g(k'') < g(k'')

这总是错误的。因此,只要f(n)g(n) 不(最终)等于零,我们就不能同时拥有f(n) = o(g(n))f(n) = Ω(g(n))

由于f(n) = ω(g(n)) 隐含f(n) = Ω(g(n)),并且根据我们的假设,我们知道后者不正确,因此我们也可以安全地回答问题2 是否定的。

【讨论】:

    猜你喜欢
    • 2011-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多