[英]Ordering functions by Asymptotic Growth Rate
以渐近增长率的降序排列以下功能。 如果两个或多个函数具有相同的渐近增长率,则将它们组合在一起。
g1(n)= n
g2(n)= n ^ 3 + 4n
g3(n)= 2n log(以2为底)n
g4(n)= 2 ^ n
g5(n)= 3 ^(3 * log(以3为底的n)n)
g6(n)= 10 ^ n
我一直在网上浏览几个示例,但是我不知道该怎么做,对我来说这似乎是一个完全陌生的概念。 如果有人可以帮助我,将不胜感激。 我什至如何计算增长率?
您可能在这里发现最有用的许多技术都是处理涉及对数和指数的表达式的技巧。
首先,您可能想查看对数的幂规则:
a log b c = log b c a 。
接下来,存在一个事实,即指数和对数彼此相反:
log b b n = b log b n = n
例如,这些规则可以帮助您重写g 5 (n)。
这是另一个有用的规则:
(a b ) c = a bc =(a c ) b 。
您实际上可以使用前面的两个规则来更改指数函数的基数。 例如,假设您要比较2 n与5 n 。 注意
5 n =(2 log 2 5 ) n
=(2 n ) log 2 5 。
这样是否更容易看出这两个功能中的哪一个将更快地增长?
最后,您可能想使用以下事实:所有多项式的增长都比所有底数大于1的指数慢。这意味着,对于任何n> 1,n k的增长都比n严格慢。类似地,所有多项式的增长都比所有对数,因此对于所有k> 0,记录b n <n k 。
使用以上规则,查看是否可以尝试将每个表达式重写为n的对数,n中的多项式或n中的指数形式。 然后,您可以从那里对数表达式对自己,对多项式对自己,对指数对自己进行排序,然后按顺序将它们写出来。
一般来说,这里提到的技术在将来很有用。 我希望这能使您走上正确的道路!
有一个非常简单的规则可以解决这些问题。 使用微积分和复杂性的基本定义很容易证明(并且可能是一个很好的启动方法)。
给定两个函数f(n)和g(n) :
如果lim n→∞f (n)/ g(n)= 0 ,则f(n)= o(g(n) 。
如果lim n→∞f (n)/ g(n)=∞ ,则f(n)= w(g(n) (从上一点起)。
如果lim n→∞f (n)/ g(n)= c , 0 <c <∞ ,则f(n)=Θ(g(n) 。
在这里查看您的示例,可以使用它们解决每一个示例。 例如, lim n→ ∞g1(n)/ g2(n)= 0 ,所以g1(n)= o(g2(n)) 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.