如果g(n)= sqrt(n)^ sqrt(n),g(n)的复杂度是否为O(2 ^ n)?

时间:2017-03-04 21:56:42

标签: algorithm big-o discrete-mathematics

如果g(n)= sqrt(n) sqrt(n),g(n)的复杂度是否为O(2 n )?

感谢任何帮助。

3 个答案:

答案 0 :(得分:6)

比较两个指数函数时的一个有用技巧是让它们具有相同的基数:

  

√n√n =(2 lg√n√n = 2 √nlg√n

现在你将2 √nlg√n与2 n 进行比较,希望从中可以很容易地看出前者的功能不会像后者那样快速增长,所以√n√n = O(2 n )确实是正确的。

答案 1 :(得分:5)

其他证明很短且很好,但是这里有更详细的证据,用于描述大符号和计算所需的限制。

函数10 print i : 20 由另一个函数g(n)通过大写符号(f(n))上限,如果它保持 (source

first

加入函数,我们必须计算

second

首先在g(n) = O(f(n))术语上进行一些代数按摩。根据身份,它保留g(n)。此外,它认为sqrt(n) = n^(1/2)。有了这个:

third

此外,对数标识(x^a)^b = x^(a*b)2^n,然后exp(log( 2^n ))log(a^b) = b*log(a) 2^n = exp(log( 2^n )) = exp(n * log(2))。同样可以应用于n^(1/2 sqrt(n)),它变为exp(log( n^(1/2 sqrt(n)) = exp(1/2*sqrt(n)*log(n))。所以我们现在有了

something

此时我们可以比较指数的增长,即比较

something2

该限制为0,因为const * n增长速度超过sqrt(n)*log(n)。这可以反过来显示明确地计算限制。将1/2和log2放在分子中。自n = sqrt(n) * sqrt(n)起,我们可以将其简化为:

some4

此限制确实为零,因为Orders of common functions的平方根比对数增长得更快。因此,较低函数的指数增长得比较高函数的指数增长得快。因此,第一个定理严格证明了g(n) = O(2^n)

答案 2 :(得分:4)

可以假设O(log n) < O(sqrt(n))Order of common functions - wikipedia

转换的工作原理如下:

sqrt(n)^sqrt(n)                2^n              # a^b = e^(ln(a) * b)
e^(ln(sqrt(n)) * sqrt(n))      e^(ln(2) * n)    # if e^a < e^b, then a < b
ln(sqrt(n)) * sqrt(n)          ln(2) * n        # / sqrt(n)
ln(sqrt(n))                    ln(2) * sqrt(n)  # ln(a^b) = b * ln(a)
0.5 ln(n)                      ln(2) * sqrt(n)  # ln(a) / ln(b) = log(a base b)
0.5 log(n base 2)              sqrt(n)          # base and constant factor don't matter
log(n)                         sqrt(n)

为简单起见,我省略了复杂性类。上面应该从下到上阅读以获得适当的证据。