二项式系数函数的增长是阶乘还是多项式
Is the growth of the binomial coefficient function factorial or polynomial
我编写了一个算法,给定一个单词列表,必须检查该单词列表中四个单词的每个唯一组合(无论顺序如何)。
要检查的组合数 x
可以使用二项式系数计算,即 x = n!/(r!(n-r)!)
其中 n
是列表中的单词总数,r
是每个组合中的单词数,在我的例子中总是 4,因此函数是 x = n!/(4!(n-4)!) = n!/(24(n-4)!)
。因此,随着总单词数 n
增加要检查的组合数 x
,因此 以阶乘方式增加 对吗?
让我震惊的是 WolframAlpha 能够将此函数重写为 x = (n^4)/24 − (n^3)/4 + (11.n^2)/24 − n/4
,所以现在它似乎随着 n
的增长而 多项式 增长?那是哪一个?!
Here is a graph to visualise the growth of the function (the letter x is switched to an l)
对于固定的r值,这个函数是O(n^r)。在你的例子中,r = 4,它是 O(n^4)。这是因为分子中的大部分项都被分母抵消了:
n!/(4!(n-4)!)
= n(n-1)(n-2)(n-3)(n-4)(n-5)(n-6)...(3)(2)(1)
-------------------------------------------
4!(n-4)(n-5)(n-6)...(3)(2)(1)
= n(n-1)(n-2)(n-3)
----------------
4!
这是 n 的 4 次多项式。
我编写了一个算法,给定一个单词列表,必须检查该单词列表中四个单词的每个唯一组合(无论顺序如何)。
要检查的组合数 x
可以使用二项式系数计算,即 x = n!/(r!(n-r)!)
其中 n
是列表中的单词总数,r
是每个组合中的单词数,在我的例子中总是 4,因此函数是 x = n!/(4!(n-4)!) = n!/(24(n-4)!)
。因此,随着总单词数 n
增加要检查的组合数 x
,因此 以阶乘方式增加 对吗?
让我震惊的是 WolframAlpha 能够将此函数重写为 x = (n^4)/24 − (n^3)/4 + (11.n^2)/24 − n/4
,所以现在它似乎随着 n
的增长而 多项式 增长?那是哪一个?!
Here is a graph to visualise the growth of the function (the letter x is switched to an l)
对于固定的r值,这个函数是O(n^r)。在你的例子中,r = 4,它是 O(n^4)。这是因为分子中的大部分项都被分母抵消了:
n!/(4!(n-4)!)
= n(n-1)(n-2)(n-3)(n-4)(n-5)(n-6)...(3)(2)(1)
-------------------------------------------
4!(n-4)(n-5)(n-6)...(3)(2)(1)
= n(n-1)(n-2)(n-3)
----------------
4!
这是 n 的 4 次多项式。