哪个函数增长得更快,指数或因子?

时间:2012-07-23 06:23:47

标签: factorial exponential

哪个函数增长得更快,指数(如2 ^ n,n ^ n,e ^ n等)或阶乘(n!)? Ps:我刚读到某个地方,n!增长速度超过2 ^ n。

5 个答案:

答案 0 :(得分:90)

N!最终比具有常数基数(2 ^ n和e ^ n)的指数增长更快,但是n ^ n比n增长更快!因为随着n的增加,基数会增长。

答案 1 :(得分:39)

n! = n * (n-1) * (n-2) * ...

n^n = n * n * n * ...

n^n中第一个术语后的每个术语都较大,因此n ^ n会增长得更快。

答案 2 :(得分:1)

分数时间算法的渐近运行速度比指数时间算法慢,但尚不清楚何时开始出现差异。例如,对于n=5k=105!=120仍然比10^5=10000快。为了找出指数时间算法何时开始表现更好,我们必须进行一些快速的数学分析。

我们可以使用斯特林公式:

log_k^(n!) ~ nlog_k^n - nlog_k^e

k^n = n!
log_k^{k^n} = log_k^{n!}
n = log_k^{n!}

n ~ nlog_k^n - nlog_k^e
1 ~ log_k^n - log_k^e
log_k^n - log_k^e - 1 ~ 0
log_k^n - log_k^e - log_k^k ~ 0
log_k^{n/(ek)} ~ 0

n/(ek) ~ 1
n ~ ek

因此,一旦n的大小几乎是k的3倍,阶乘时间算法的运行速度将比指数时间算法慢。对于大多数现实情况,我们将使用n的大值和k的小值,因此在实践中,我们可以假设阶乘时间算法严格地比指数时间算法差。

答案 3 :(得分:0)

我想向您展示一种更加图形化的方法,以非常容易地证明这一点。我们将使用除法绘制函数图形,这将很容易向我们展示。

让我们使用一个基本且无聊的除法函数来解释除法的性质。

division with variables a and b

随着增加,对该表达的评估也增加。随着b的减小,对该表达式的评估也随之减小。

使用这种想法,我们可以根据期望增加和减少的情况绘制图表,并比较增加速度更快的情况。

在我们的例子中,我们想知道指数函数的增长是否快于阶乘,反之亦然。我们有两种情况,常数对变量指数与可变阶乘,变量对变量指数与可变阶乘。

用Desmos绘制这些工具的图形(没有从属关系,这只是一个不错的工具),向我们展示了这一点:

常数到变量指数与变量阶乘的关系图

graph 1

尽管起初似乎指数表达增加得更快,但它达到了不再以如此快的速度增长的程度,取而代之的是阶乘表达增加得更快。

从变量到变量指数与变量阶乘的图

graph 2

尽管起初看起来较慢,但它开始迅速上升超过该点,因此我们可以得出结论,指数的增长必须快于阶乘。

答案 4 :(得分:0)

Stirling's approximation指出

$$ n! \ approx \ sqrt {2 \ pi n} \ left(\ frac {n} {e} \ right)^ n $$