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

问题描述 投票:1回答:1

给定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))。

我已经知道f(n)似乎没有约束,因为随着n变大,函数变得越来越大......(我在这里绘制了图表)https://www.desmos.com/calculator/xtrh124rjb

那么如何证明它属于哪一个呢?或者它属于它们两者,因为它根本没有约束......?

complexity-theory
1个回答
0
投票

考虑序列1,5,9,...,4k + 1,......对于n的这些值,(1 + sin(n * pi / 2))/ 2 = 1.因此,对于n的这些值,你的函数是与函数A(n)= n ^ 1 = n相同。注意,A(n)= n是NOT 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不是欧米茄(g(n))=欧米茄(n ^ 0.5); n ^ 0.5渐近地比常数1(它根本不增长)渐近地增长。

f(n)不是O(g(n))或者f(n)不是Omega(g(n))将已经取消f(n)成为Theta(g(n))。

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

© www.soinside.com 2019 - 2024. All rights reserved.