📜  连续二项式系数的乘积和(1)

📅  最后修改于: 2023-12-03 15:28:20.301000             🧑  作者: Mango

连续二项式系数的乘积和

连续二项式系数的乘积和是指在n次连续二项式的系数之间相乘并求和的结果,即:

$\sum_{k=0}^{n-1} {n \choose k}{n \choose k+1} = {2n \choose n} - n$

其中,n为非负整数,$0 \leq k \leq n-1$,${n \choose k}$表示从n个元素中取k个元素的组合数。

解析

连续二项式系数的乘积和的求解方法有多种,以下是其中两种比较常见的方法。

方法一

考虑将系数展开并化简,可以得到以下式子:

$\sum_{k=0}^{n-1} {n \choose k}{n \choose k+1} = \sum_{k=0}^{n-1} {n \choose k}^2 - {n \choose n-1}^2$

而连续二项式系数的和可以用套路的二项式定理来求解:

$(1+1)^{2n} = \sum_{i=0}^{2n} {2n \choose i}$

$(1-1)^{2n} = \sum_{i=0}^{2n} (-1)^i{2n \choose i}$

将上述两个式子相加减得到以下式子:

$\sum_{i=0}^{2n} (-1)^i{i+n-1 \choose 2n-1} = 0$

将上式中的i=n-1带入可以得到:

$\sum_{k=0}^{n-1} {n \choose k}^2 = {2n \choose n}$

因此,将上式带入之前的式子,即可得到连续二项式系数的乘积和的另一个表达式:

$\sum_{k=0}^{n-1} {n \choose k}{n \choose k+1} = {2n \choose n} - n$

方法二

对于连续二项式系数求和的问题,还可以采用封闭形式的解法,即使用伯努利数。

定义n次连续二项式的系数为$b_{n,k} = {n \choose k}$,则其生成函数为:

$F(x) = (1+x)^n$

根据牛顿二项式定理,可以将其展开为:

$F(x) = \sum_{k=0}^n b_{n,k}x^k = \sum_{k=0}^n {n \choose k}x^k = \sum_{k=0}^n (-1)^{n-k}{-n-1 \choose k}x^k$

因此,$b_{n,k}$可以表示为:

$b_{n,k} = (-1)^{n-k}{-n-1 \choose k}$

考虑将连续二项式系数的乘积转化为伯努利数的形式。对于相邻的两个系数:

$b_{n,k} b_{n,k+1} = (-1)^{n-k-k-1}{-n-1 \choose k}{-n-1 \choose k+1}$

利用伯努利数和二项式反演的性质,可以得到以下式子:

$\sum_{k=0}^{n-1} b_{n,k} b_{n,k+1} = \sum_{k=0}^{n-1} (-1)^{n-k-k-1}B_{n-k}{-n-1 \choose k}$

其中,$B_n$为伯努利数。

将其带入之前推导出的式子,即可得到:

$\sum_{k=0}^{n-1} {n \choose k}{n \choose k+1} = {2n \choose n} - n$

代码实现
方法一
def binomial_sum(n):
    res = 0
    for k in range(n):
        res += comb(n, k) * comb(n, k+1)
    return comb(2*n, n) - n
方法二
def bernoulli_binomial_sum(n):
    res = 0
    for k in range(n):
        res += (-1)**(n-k-k-1) * bernoulli(n-k) * comb(-n-1, k)
    return comb(2*n, n) - n