鉴于此,
设f(n)= O(g(n)),设g(n)= O(h(n)),f(n),g(n)和h(n)的函数可以是)使以下真正的hg(n)= O(f(n))。
我尝试过所有可能的解决方案。例如,令f(n)= g(n)= h(n)= n。
所以f(n)是g(n)的大O是真的,而g(n)是h(n)的大O,但是h.g = O(f(n))当然是假的。因为我要得到n ^ 2,如果它是Ω 符号而不是大O,这很容易证明。
我尝试了不同的函数多项式,日志,指数函数它们都没有工作。
答案 0 :(得分:1)
假设h(x)
为OMEGA(x)
,这意味着必须存在一些常数正值x', a,b,c,d
,以便对于任何x>x'
,以下成立:
f(x) <= a*g(x), g(x) <= b*h(x)
和d*f(x) >= h(g(x)) >= c*g(x) >= c*a*f(x)
,这意味着实际上g
和f
渐近等价且两者都是o(x)
,但h(x)
实际上是{{} 1}}(否则矛盾) - 这导致一组解决方案
现在假设Theta(x)
为h(x)
,这意味着所有o(x)
实际上都是f,g,h
。这意味着我们可以从o(x)
中挑选任何h(x)
,然后挑选任何[O(1):o(x)]
,以便g(x)
为g(x)
,然后挑选任何[O(1):o(h)]
由f
为[OMEGA[h(g(x)), o(g(x))]
而必须存在的h
范围。这些导致第二组解决方案(无限数,基于o(x)
的选择)
注意:假设所有功能都在增加且至少为o(1)
忽视以下 - 错误地理解了问题
这不回答问题,但可能有所帮助
显然,所有三个函数h(x)
都是f,g,h
。很容易理解为什么:
必须存在一些常数正值O(1)
,以便对于任何x', a,b,c
,以下成立:
x>x'
,所以
c * f(x)> = h(x)* g(x)> = a * b * f(x)* f(x),或f(x)=&lt; C /(B * A)
因此我们可以得出结论f(x) <= a*g(x), g(x) <= b*h(x), h(x)*g(x) <= c*f(x)
实际上是f(x)
此外,
&lt; c&gt; = c * f(x)&gt; = h(x)* g(x)&gt; = g(x)* g(x)* b
所以O(1)
也是g(x)
。
最后
c * f(x)> = h(x)* g(x)> = h(x)* f(x)* a或h(x)<= c / a
所有三个功能都是O(1)
。一个例子是O(1)