如果函数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))?
答案 0 :(得分:0)
我们给出了一些正式的定义:
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))
。问题1:可以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中的否定。