【组合数学】差分序列&p次方和

【组合数学】差分序列&p次方和

问题

有一个很古老的问题,就是求 1+2+\cdots+n ,当然这种弱智问题一眼就看出来了,简单等差数列求和而已, \frac{(上底+下底)\times高}{2}=\frac{(1+n)n}{2} (小学时的记公式方法)。那么让问题升级, 1^2+2^2+\cdots+n^2 ,有的人一看这也很简单啊我记住公式了,然后数学归纳法证明也照样很容易啊。但是,我们让幂继续升高,3次方,4次方,……,问题的复杂度就逐渐上升了,那么对于这样的p次方和问题有什么通解方法吗?本文的主攻点就是它啦。


线性代数解法

我们先来看看使用线性代数的思想如何解决这个问题。首先,对于问题 \sum_{i=1}^{n}{i^p} ,有一个很显然的结论:原问题的最高次项是p次,则和式的最高次数是p+1次。而对于一个p+1次的一元多项式,我们需要做的就是求出每一项的系数,共p+2个系数,有了这p+2个系数那么相应的部分和也就解出来了。要求出p+2个数的唯一解,那么就需要p+2个线性方程来构成方程组。由此,我们可以自然而然的得出解法1:

  • 对于问题 \sum_{i=1}^{n}{i^p} ,设其结果为:Sn=\sum_{i=1}^{n}{i^p}=a_{p+1}n^{p+1}+a_pn^p+\cdots+a_1n+a_0=\sum_{i=0}^{p+1}{a_in^i}
  • p是已知量,选取p+2个自然数(一般是1到p+2,使问题简单)代入上式形成p+2个线性方程构成的线性方程组,其必有唯一解。即令 n={1,2,\cdots ,p+2} 代入得到线性方程组如下:  \begin{cases} a_{p+1}+a_p+\cdots+a_0=1^p&\\ a_{p+1}2^{p+1}+a_p2^p+\cdots+a_0=1^p+2^p &\\ \cdots\cdots\cdots\cdots\cdots\cdots\cdots\cdots &\\ a_{p+1}(p+2)^{p+1}+a_p(p+2)^p+\cdots+a_0=1^p+2^p+\cdots (p+2)^p \end{cases}
  • 通过矩阵的初等变换解出p+2个系数的值,从而得到解。

这个算法可谓之简单暴力,借助矩阵库的话编程实现非常简单,我们可以很快得到答案。


差分序列

现在我们回到标题——差分序列,首先我们介绍其定义。在我高中学习微积分的时候,曾经听到差分之名,当时是十分惊恐,微积分就足够当时的我头大了再来个差分是什么鬼……现在了解了之后发现,差分的定义非常简单(本文中单指前向差分):

h_0,h_1,\cdots,h_n,\cdots 是一个序列,序列的差分为: \Delta h_n=h_{n+1}-h_n(n \geq 0)
利用此定义,我们可以定义序列的一阶差分序列为 \Delta h_0,\Delta h_1,\cdots,\Delta h_n,\cdots ,那么通过递归定义,我们可以定义二阶差分序列乃至更高阶的差分序列,而原序列可以被看做是零阶差分序列。显而易见的一点是,如果序列的通项是多项式,那么每取一阶差分多项式就降一阶。
然后,我们定义将序列的每个 p=0,1,2,\cdots 阶差分序列列成一行得到的表成为差分表,基本的形式如下所示:
h_0 \qquad h_1\qquad h_2\qquad h_3 \qquad h_4 \qquad \cdots\\ \Delta h_0 \quad \Delta h_1\quad \Delta h_2\quad \Delta h_3 \quad \cdots\\ \Delta^2 h_0 \quad \Delta^2 h_1\quad \Delta^2 h_2 \quad \cdots\\ \Delta^3 h_0 \quad \Delta^3 h_1 \quad \cdots\\ \cdots
p阶差分在第p行上,序列本身(零阶差分)在第0行上。
如果序列的通项是n的p次多项式,我们可以很容易用第二数学归纳法证得,该序列的p+1阶差分(包括更高阶的差分)都是0。

现在我们来看看差分表的性质:

  • 由差分表的定义,可以由差分表的第0行推出整个差分表。
  • f_ng_n 分别是两个序列的通项,定义新的序列 h_n=cf_n+dg_n(n\geq0) ,其中c和d都是常数,那么由归纳法可证得 \Delta ^p(cf_n+dg_n)=c\Delta ^p f_n+d\Delta^pg_n(p\geq0) ,这个性质叫做差分的线性性,即差分运算是序列构成的线性空间上的一个线性变换。通过这条规则,我们可以很容易的从 f_n,g_n 的差分表得到 h_n 的差分表。
  • 我们定义 h_i,\Delta h_i,\Delta^2 h_i,\cdots 是差分表的第i条对角线,那么按照从左往右的顺序,就有差分表对角线上的元素由前一条对角线上的元素确定。例如: h_1=h_0+\Delta h_0 \\ \Delta h_1 =\Delta h_0 +\Delta^2h_0
  • 由上一条性质推理可得,我们可以通过差分表的第0条对角线推出整个差分表。对于p次多项式的序列,我们知道其p+1阶及以上差分都是0,那么我们仅需要第0条对角线的前p个元素即可推出整张差分表,那么由此便可以得到 h_n
  • 若差分表的第0条对角线等于 c_0,c_1,\dots,c_p,0,0,\cdots(c_p\ne 0) ,那么序列 h_n 的通项满足: h_n=c_0\binom{n}{0}+c_1\binom{n}{1}+\cdots+c_p\binom{n}{p} (1)
    而且可以证明这些常数是唯一确定的。至于为什么会是这个形式,简单递归推理加归纳就可以得到。这里,我还要强调另外一个神奇的发现:当你第一眼看到这样的式子会联想到什么?回想一下数学分析,对的,这个式子非常像连续可导函数在x=0处的泰勒展开式,即: f(x)=f(0)+f^{'}(0)x+\frac{f^{''}(0)x^2}{2!}+\cdots+\frac{f^{(n)}(0)x^n}{n!}+o(x^n)
    其实,我们这里所得的公式就是连续可导函数泰勒展开式的离散版本,即分析函数由其在x=0处的函数值(0阶导数)和在此的各阶导数确定,而对于离散的序列,其通项由其第0条对角线,即他的各阶差分的第0项确定。一个p次多项式的p+1阶导数为0,其p+1阶差分也为0。

通过差分的线性性和我们得到的公式(1),我们就可以得到p次方和问题的解法2,当然它也可以运用到更一般的多项式序列 h_n ,具体推理过程如下: h_n=a_pn^p+\cdots+a_1n+a_0\\ h_n=c_0\binom{n}{0}+c_1\binom{n}{1}+\cdots+c_p\binom{n}{p}\\ S_n=\sum_{i=0}^{n}h_i=h_0+h_1+\cdots+h_n\\ S_n=c_0\sum_{i=0}^{n}\binom {i}{0}+c_1\sum_{i=0}^{n}\binom {i}{1}+\cdots+c_p\sum_{i=0}^{n}\binom {i}{p}\\ 由公式\sum_{i=0}^{n}\binom {i}{p}=\binom{n+1}{p+1}得\\ S_n=c_0\binom{n+1}{1}+c_1\binom{n+1}{2}+\cdots+c_p\binom{n+1}{p+1}

最后我们得到的这个公式就是一个非常简单的求部分和的公式。首先,对于一个p次多项式,将 i=0,1,2,\cdots,p 代入通项得到差分表的第0行的一部分,然后利用这部分递归得出差分表第0条对角线的前p+1个值 c_0,c_1,c_2,\cdots,c_p ,将其代入上述公式,就可得到解。更一般的,由于我们之前讲过第二类Stirling数和差分表第0条对角线的关系,所以通过Stirling数表,再利用差分的线性性,我们也能得到第0条对角线从而得到解。


注:对于推理中用到的公式 \sum_{i=0}^{n}\binom {i}{p}=\binom{n+1}{p+1} ,这其实就是利用帕斯卡公式\binom {n}{i}=\binom{n-1}{i}+\binom{n-1}{i-1} 将右边依次展开得到的结果。而帕斯卡公式最简单的一个组合推理证明如下:左边=从n个人中选i个人——\binom {n}{i} = 对于某一个人,这个人不在结果中的组合数——\binom{n-1}{i} +这个人在结果中的组合数——\binom{n-1}{i-1} = 右边。

发布于 2018-06-02

文章被以下专栏收录