差分表

定义

对于一个序列
a0,a1,...,an,...

定义一个新的序列
Δa0,Δa1,...,Δan,...

其中
Δai=ai+1ai

那么我们新定义的这个序列 {Δan} 称序列 {an} 的(一阶)差分序列

类似的,我们可以构造序列 {Δan} 的二阶、三阶… k 阶差分序列。
不妨记为{Δ2an},...,{Δkan}

而原序列的差分表,则是由每个 p=0,1,...,k 排成 k 行形成的表。p阶差分序列在行 p 上,原序列在第0行。


性质

  • 令序列的通项是关于 n 的一个p次多项式,即
    fn=pi=0ainp
    n>=0,Δp+1an=0
    证明使用归纳法即可。
  • 差分的线性性
    倘若 fn=k1gn+k2hn ,则有 p,n,Δpfn=k1Δpgn+k2Δphn
    从定义去证明即可。
  • 一个差分表中的所有元素可以由它的第一条对角线确定下来。
    这个有点类似于泰勒展开的离散形式。
  • 若某个序列 fn 的差分表的第一条对角线为
    c0,c1,...,cp,0,...
    则序列的通项满足 fn=pi=0ci(ni)
    证明:不妨考虑一个最简单的形式。
    设某个差分表的第一条对角线为 0,...,0,1,0,... ,它的特点是第 一条对角线上只有第 p 个数为1,其他都为 0
    那么这个差分表对应的原数列f则为 0,...,0,1,0,... ,其中除 fp=1 以外其他项都为 0
    由此我们可以写出这个序列的一个通项公式
    fn=c(n)(n1)(n2)...(np+1)
    其中 c 是某个常数。代入fp=1,得到 c=1p!
    于是乎我们得到 fn 的通项公式
    fn=nj=np+1jp!=n!p!(np)!=(np)
    那么根据差分的线性性,对于任意一个差分表我们都可以分拆成若干个只有一个 1 的差分表的线性组合。把这所有的通项式结合起来我们就可以得到
    fn=pi=0ci(ni)

在求和上的应用

看了上面一堆的式子以后,似乎差分表的作用还没有体现出来。
但是结合以下的这个结论,差分表就在求和问题上显得尤为有效了。

引理: pi=0(ni)=(n+1p+1)
证明只需要不断按照 (nm)=(nm1)+(n1m1) 展开右式即可得到左式。

那么假如我们现在要求
ni=0fi

首先用 O(p2) 的时间计算出差分表,取出第一条对角线上的元素 ci ,则有
ni=0fi=ni=0pj=0cj(ij)=pj=0cjni=0(ij)=pj=0cj(n+1p+1)

成功地将 O(n) 的求和时间复杂度降到了 O(p2)

你可能感兴趣的:(数学)