以渐近增长率的非降序列出以下函数。如果两个或多个函数具有相同的渐近增长率,则将它们组合在一起。
g1(n)= n
g2(n)= n ^ 3 + 4n
g3(n)= 2n log(base 2)n
g4(n)= 2 ^ n
g5(n)= 3 ^(3 * log(base 3)n)
g6(n)= 10 ^ n
我一直在网上查看几个例子,但我不知道怎么做,这对我来说似乎是一个完全陌生的概念。如果有人能帮助我,那将非常感激。我怎么算出增长率?
答案 0 :(得分:3)
您可能会发现这里最有用的许多技巧都是操作涉及日志和指数的表达式的技巧。
首先,您可能希望查看对数的幂规则:
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 k 的增长速度比 n < / sup>对于任何n&gt;类似地,所有多项式都比所有对数严格地增长,因此log b n <1。所有k> n k 0
使用上述规则,看看你是否可以尝试将这些表达式中的每一个重写为n的对数,n中的多项式或n中的指数。然后,您可以将对数表达式与自身,对自己的多项式以及指数对自己进行排名,然后按顺序将它们写出来。
一般来说,这里提到的技术在未来非常有用。我希望这能让你走上正轨!
答案 1 :(得分:1)
有一个非常简单的规则可以帮助解决这些问题。使用微积分和复杂性的基本定义来证明是非常容易的(并且它可能是一个很好的练习)。
给定两个函数, 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&lt; c&lt; ∞,然后 f(n)=Θ(g(n)。
在这里查看您的示例,他们可以使用这些来解决每个问题。例如, lim n→∞ g1(n)/ g2(n)= 0 ,所以 g1(n)= o(g2(n))