【发布时间】: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
如果函数 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
我们给出一些正式的定义:
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 >= k,0 <= g(n) < cf(n)。根据假设,我们知道对于所有c',存在一些k',因此对于所有n >= k',0 <= f(n) < cg(n)。让k'' = max(k, k')。我们必须:
0 <= g(k'') < cf(k'')
0 <= f(k'') < c'g(k'')
=> 0 <= g(k'') < cc'g(k'')
这必须适用于c' > 0 的任何选择。我们所知道的c 是存在的。但只要f(n) 和g(n) 严格大于零,我们就知道一定有一个最小的c 有效。让c'' 成为c 在k'' 的最小有效选择。然后我们可以选择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 是否定的。
【讨论】: