是O((log n)!)多项式?

时间:2016-10-16 05:30:27

标签: algorithm time-complexity big-o

我想找O((log n)!)。我认为O((log n)!)O(n!)是平等的!因为我认为当n是无穷大(log n)!n!相等时。这是真的吗?如果是,我该怎么表明?如果不是O((log n)!)多项式?

4 个答案:

答案 0 :(得分:5)

我认为你的后续问题是(logn)!是否是多项式限制的。这显然不是多项式本身。 斯特林的逼近给了我们

n!≤en^[n+1/2]*e^(−n)

所以,

(log n)!≤e(log n)^[1/2+log n]*e^(−log n)

现在(log n)^log n=(e^loglogn)^logn=e^[(logn)⋅(loglogn)]

因此,增长的顺序约为e^[(logn)(loglogn)−logn] =n^[(loglogn)−1]

遗憾的是,这不受任何多项式的限制,因为loglogn最终会超过任何正整数。

例如,将(log n)!n^2进行比较。

n=e^10,(log n)!=3480(e^10)2≈4.85×108

n=e^100,(log n)!≈10157e^200≈1086

答案 1 :(得分:2)

由于已经完成了正确的数学运算,让我为任何给定的O(log(n)!) > O(n^c)添加更直观的解释为什么c。我们假设对数是基数2,为简单起见,选择c为10.(该参数对于不同数量的一般值也同样有用)。

那么,为什么log(n)!会比n^10更大?我们来看看这两个功能'功率为2的值,更具体地说,它们与2的最后一次幂相比增长了多少。(从现在开始n = 2^p

log(2^p)! = p * log(2^(p-1))!(2^p)^10 = 2^10 * (2^(p-1))^10。这可能看起来很复杂,但它告诉我们log(n)!函数会将p的{​​{1}}幂2的值乘以p,但n^10 1}}仅将1024乘以它的值,因此log(n)!最终会变得越来越大。

此外,log(n)!比任何指数增长都慢,类似的参数可以通过观察当n增长1时两个函数乘以它们的值来做出多少。

答案 2 :(得分:0)

让我们回到一些基本的数学:
我们知道如果log a> log b,则a> b :( log base大于1)
click here to get more on this

现在我们知道 log(N!)= NLogN see here for proof))

并持有相同的参数,我们得到, log((log N)!)= logN logLogN
因为,
log(N!)是多项式,log((log N)!)是对数阶,
显然, O(N!)> O((logN)!)
希望这有帮助。

答案 3 :(得分:0)

使用Stirling's approximation说明$ n! 〜\ sqrt {2 \ pi n} \ frac {n} {e} ^ n(1 + O(frac {1} {n}))$,并使用$ \ log {n} $的相同公式,可以检查$ n!对于$ \ log {n},$的主要因素是$ n ^ n $! $相同的因子变为$ \ log {n} ^ \ log {n} $。通过使用$ \ ln {n} \ leq n - 1 $的事实,我相信你可以很容易地证明$ O(\ log {n}!)$小于$ O(n!)$。