函数f(n)不是O(g(n))而g(n)不是O(f(n))

时间:2013-03-21 11:36:06

标签: algorithm

是否有任何函数,如f(n)和g(n);

f(n) != O(g(n)) and
g(n) != O(f(n)). 

是否有任何功能符合上述要求?

2 个答案:

答案 0 :(得分:3)

 f(n)=n and g(n)=n^(1 + sin(x)). 

f(n)不是O(g(n)),g(n)不是O(f(n))。

参考http://c2.com/cgi/wiki?BigOh

答案 1 :(得分:1)

考虑:

f(n) = 0 if n is odd, else n*n
g(n) = n

然后对于奇数值g(n)不仅是大于f(n)的常数因子(因此g(n)不是O(f(n)),而对于偶数值f(n)不仅仅是大于g(n)的常数因子(因此f(n)不是O(g(n)))。

观察f(n)n接近无穷大时在无穷远处没有限制,因此在某种意义上说这是一个便宜的例子。但您可以通过将0, n, n*n替换为n, n*n, n*n*n来解决这个问题。

我认为如果两个非负函数具有f(n)/g(n)具有(可能是无限的)限制的属性,因为n接近无穷大,那么它遵循其中一个是大的 - 另一个。如果限制为0,则f(n)O(g(n)),如果限制为有限,则每个都为大 - 另一个为极限,如果限制为无限,则g(n)O(f(n)) 。但是我懒得通过写证明来确认。