确定Big-Oh / Big-Theta或Big-Omega

时间:2019-03-07 13:14:49

标签: complexity-theory

给出f(n)= n ^ [(1 + sin(n * pi / 2))/ 2]和g(n)= n ^ 0.5 ,如何证明f(n)= O(g(n))/ f(n)= Omega(g(n))/ f(n)= Theta(g(n))。

我已经得出结论,随着函数随着n的增大而变得越来越大,f(n)似乎没有界限。...(我在此处绘制了图表) https://www.desmos.com/calculator/xtrh124rjb

那么如何证明它属于哪个呢? 还是它根本不属于它们,因为它根本就没有界限...?

1 个答案:

答案 0 :(得分:0)

考虑序列1,5,9,…,4k +1,…对于n的这些值,(1 + sin(n * pi / 2))/ 2 =1。因此,对于n的这些值,您的函数与函数A(n)= n ^ 1 = n相同。注意A(n)= n不是O(g(n))= O(n ^ 0.5); n的渐近增长快于n ^ 0.5。

考虑序列3,7,11,…,4k + 3,…对于n的这些值,(1 + sin(n * pi / 2))/ 2 =0。因此,对于n的这些值,您的函数与函数B(N)= n ^ 0 = 1相同。请注意,B(n)= 1不是Omega(g(n))= Omega(n ^ 0.5); n ^ 0.5的渐近增长速度快于常数1(根本不增长)。

如果f(n)不为O(g(n))或f(n)不为Omega(g(n)),则f(n)不再符合Theta(g(n))的资格。 / p>

注意:f(n)= O(A(n))和f(n)= O(B(n))。 f(n)= Theta(h(n)),其中h(n)是任何像f(n)一样振荡的函数,其增长速度至少一样快,并且具有恒定的下界。