线性递推数列和整式递推数列

本文详细探讨了线性递推数列的定义、阶数概念、生成函数的运用,包括定理1与推论1的证明,并介绍了Berlekamp-Massey算法求最短线性递推式的方法。此外,文章还涉及整式递推数列的基本判定,如微分有限性的定义及与整式递推数列的关系。

本文大量参考了:

  • 国家集训队2019论文集,钟子谦,两类递推数列的性质和应用

线性递推数列

基本性质和判定方法

一些定义:

  • 对于无限数列 {a0,a1,⋯ }\{a_0,a_1,\cdots\}{a0,a1,} 和有限非空数列 {r0=1,r1,⋯ ,rm−1}\{r_0=1,r_1,\cdots,r_{m-1}\}{r0=1,r1,,rm1},若对于任意 p≥m−1p\geq m-1pm1,有 ∑k=0m−1ap−krk=0\sum_{k=0}^{m-1}a_{p-k}r_k=0k=0m1apkrk=0,则称数列 rrr 为数列 aaa线性递推式

    对于有限数列 {a0,a1,⋯ ,an−1}\{a_0,a_1,\cdots,a_{n-1}\}{a0,a1,,an1} 和有限非空数列 {r0=1,r1,⋯ ,rm−1}\{r_0=1,r_1,\cdots,r_{m-1}\}{r0=1,r1,,rm1},若对于任意 m−1≤p≤n−1m-1\leq p\leq n-1m1pn1,有 ∑k=0m−1ap−krk=0\sum_{k=0}^{m-1}a_{p-k}r_k=0k=0m1apkrk=0,则称数列 rrr 为数列 aaa线性递推式

  • 称存在线性递推式的无限数列为线性递推数列(有限数列一定存在线性递推式)。

  • 称线性递推式 {r0,r1,⋯ ,rm−1}\{r_0,r_1,\cdots,r_{m-1}\}{r0,r1,,rm1}阶数为它的长度减 111(即 m−1m-1m1),称数列 aaa 的阶数最小的线性递推式为数列 aaa最短线性递推式

用生成函数的观点看线性递推式,我们将有如下结论:

  • 定理 1:对于无限数列 {a0,a1,⋯ }\{a_0,a_1,\cdots\}{a0,a1,} 和有限非空数列 {r0=1,r1,⋯ ,rm−1}\{r_0=1,r_1,\cdots,r_{m-1}\}{r0=1,r1,,rm1},设它们的生成函数分别为 A,RA,RA,R,那么数列 rrr 为数列 aaa 的线性递推式等价于存在次数不超过 m−2m-2m2 的多项式 SSS 满足 AR+S=0AR+S=0AR+S=0

    对于有限数列 {a0,a1,⋯ ,an−1}\{a_0,a_1,\cdots,a_{n-1}\}{a0,a1,,an1} 的情况,要满足的条件变为 AR+S≡0(modxn)AR+S\equiv 0\pmod{x^{n}}AR+S0(modxn) 即可。

    证明:考虑无限序列的情况,按照定义,对于 k≥m−1k\geq m-1km1 我们肯定有 [xk](AR)=0[x^k](AR)=0[xk](AR)=0,那么只需要取适当的 SSS 使得低次项系数为 000 即可。

    推论 1:对于无限数列 {a0,a1,⋯ }\{a_0,a_1,\cdots\}{a0,a1,} 及其生成函数 AAAaaa 为线性递推数列当且仅当存在存在常数项为 111 的多项式 RRRSSS 满足 A=SRA=\frac{S}{R}A=RS。此时对应的线性递推式的阶数为 max⁡(deg⁡(R),deg⁡(S)+1)\max(\deg(R),\deg(S)+1)max(deg(R),deg(S)+1)

    证明:由定理1移项得到。

  • 定理 2:对于一个 n×nn\times nn×n 的矩阵 MMM,无限数列 {I,M,M2,⋯ }\{I,M,M^2,\cdots\}{I,M,M2,} 是一个线性递推数列,它的最短线性递推式阶数不超过 nnn

    证明:考虑矩阵 MMM 的特征多项式 p(λ)=∣λI−M∣p(\lambda)=|\lambda I-M|p(λ)=λIM,其次数为 nnnnnn 次项恰好为 111。由 Cayley-Hamilton 定理可知 p(M)=0p(M)=0p(M)=0

    p(λ)=∑i=0nciλn−ip(\lambda)=\sum_{i=0}^nc_{i}\lambda^{n-i}p(λ)=i=0nciλni,那么就有 ∑i=0nciMn−i=0\sum_{i=0}^nc_iM^{n-i}=0i=0nciMni=0。那么即可对任意 j≥nj\geq njn 推出 ∑i=0nciMj−i=0\sum_{i=0}^nc_iM^{j-i}=0i=0nciMji=0

    于是 {c0,⋯ ,cn}\{c_0,\cdots,c_n\}{c0,,cn} 即为一个合法的阶数为 nnn 的线性递推式。

线性递推数列还满足以下的封闭性:

  • 定理 3:对于线性递推数列 {a0,a1,⋯ },{b0,b1,⋯ }\{a_0,a_1,\cdots\},\{b_0,b_1,\cdots\}{a0,a1,},{b0,b1,},我们有:
    • {ai+bi}i=0∞\{a_i+b_i\}_{i=0}^{\infty}{ai+bi}i=0 为线性递推数列。
    • {∑j=0iajbi−j}i=0∞\{\sum_{j=0}^ia_jb_{i-j}\}_{i=0}^{\infty}{j=0iajbij}i=0 为线性递推数列。
    • {aibi}i=0∞\{a_ib_i\}_{i=0}^{\infty}{aibi}i=0 为线性递推数列。

前两者的证明都较为简单,直接按推论1设 A=S1R1,B=S2R2A=\frac{S_1}{R_1},B=\frac{S_2}{R_2}A=R1S1,B=R2S2 即可。对于最后一者,可以从特征根的角度证明。

求一个数列的最短线性递推式

Berlekamp-Massey 算法。

先考虑有限数列 {a0,⋯ ,an}\{a_0,\cdots,a_n\}{a0,,an} 的情况。我们会求出其每个前缀 {a0,⋯ ,ai}\{a_0,\cdots,a_i\}{a0,,ai} 的最短线性递推式 r(i)r^{(i)}r(i)(设 lil_ilir(i)r^{(i)}r(i) 的阶数)。首先显然有 li−1≤lil_{i-1}\leq l_ili1li

  • 引理 1:如果 r(i−1)r^{(i-1)}r(i1) 不是 {a0,⋯ ,ai}\{a_0,\cdots,a_i\}{a0,,ai} 的最短线性递推式,那么:

    li≥max⁡(li−1,i−li−1+1) l_i\geq \max(l_{i-1},i-l_{i-1}+1) limax(li1,ili1+1)

    证明:显然只需证 li≥i−li−1+1l_i\geq i-l_{i-1}+1liili1+1

    反证法。假设 li≤i−li−1l_i\leq i-l_{i-1}liili1,设 r(i−1)={p0,⋯ ,pli−1}r^{(i-1)}=\{p_0,\cdots,p_{l_{i-1}}\}r(i1)={p0,,pli1}r(i)={q0,⋯ ,qli}r^{(i)}=\{q_0,\cdots,q_{l_i}\}r(i)={q0,,qli}。那么:

    −∑j=1li−1pjai−j=∑s=2li−1+liai−s∑jpjqs−j=−∑j=1liqjai−j=ai -\sum_{j=1}^{l_{i-1}}p_ja_{i-j}=\sum_{s=2}^{l_{i-1}+l_i}a_{i-s}\sum_{j}p_jq_{s-j}=-\sum_{j=1}^{l_i}q_ja_{i-j}=a_i j=1li1pjaij=s=2li1+liaisjpjqsj=j=1liqjaij=ai

    中间那一步用到了 i−(li−1+li)≥0i-(l_{i-1}+l_i)\geq 0i(li1+li)0

    所以 r(i−1)r^{(i-1)}r(i1) 也为 {a0,⋯ ,ai}\{a_0,\cdots,a_i\}{a0,,ai} 的线性递推式,显然它就是最短的,矛盾。

由此我们证明了 lil_ili 的下界, 而 Berlekamp-Massey 算法给出了取到下界的方案。

AAA 为数列 aaa 的生成函数,R(i)R^{(i)}R(i) 为数列 r(i)r^{(i)}r(i) 的生成函数,那么根据定理1可知存在多项式 S(i)S^{(i)}S(i) 使得 AR(i)≡S(i)(modxi+1)AR^{(i)}\equiv S^{(i)}\pmod{x^{i+1}}AR(i)S(i)(modxi+1),其中 deg⁡(S(i))≤li−1\deg(S^{(i)})\leq l_i-1deg(S(i))li1

考虑由 R(i−1)R^{(i-1)}R(i1) 推到 R(i)R^{(i)}R(i)

  • 如果我们仍然有 AR(i−1)≡S(i−1)(modxi+1)AR^{(i-1)}\equiv S^{(i-1)}\pmod{x^{i+1}}AR(i1)S(i1)(modxi+1),那么令 R(i)←R(i−1)R^{(i)}\gets R^{(i-1)}R(i)R(i1) 即可。

  • 否则,设 AR(i−1)−S(i−1)≡dxi(modxi+1)AR^{(i-1)}-S^{(i-1)}\equiv dx^i\pmod{x^{i+1}}AR(i1)S(i1)dxi(modxi+1)。我们考虑上一次增长递推式的情形,设当时存在 p<ip<ip<iccc 使得 AR(p−1)−S(p−1)=cxp(modxp+1)AR^{(p-1)}-S^{(p-1)}=cx^p\pmod{x^{p+1}}AR(p1)S(p1)=cxp(modxp+1),那么我们就有:

    AR(i−1)−S(i−1)≡dxi(modxi+1)AR(p−1)−S(p−1)≡cxp(modxp+1) \begin{aligned}AR^{(i-1)}-S^{(i-1)}&\equiv dx^i\pmod{x^{i+1}}\\AR^{(p-1)}-S^{(p-1)}&\equiv cx^p\pmod{x^{p+1}}\end{aligned} AR(i1)S(i1)AR(p1)S(p1)dxi(modxi+1)cxp(modxp+1)

    将下式乘上 t⋅xi−pt\cdot x^{i-p}txip(其中 t=dct=\frac{d}{c}t=cd,注意 c,dc,dc,d 均不可能等于 000),再将两式相减,即可得到:

    A(R(i−1)−txi−pR(p−1))−(S(i−1)−txi−pS(p−1))≡0(modxi+1) A(R^{(i-1)}-tx^{i-p}R^{(p-1)})-(S^{(i-1)}-tx^{i-p}S^{(p-1)})\equiv 0\pmod{x^{i+1}} A(R(i1)txipR(p1))(S(i1)txipS(p1))0(modxi+1)

    R(i)=R(i−1)−txi−pR(p−1)R^{(i)}=R^{(i-1)}-tx^{i-p}R^{(p-1)}R(i)=R(i1)txipR(p1) 即可。

    放在现实意义中的阿巴阿巴:考虑 r(p−1)r^{(p-1)}r(p1),它满足对于 j<pj<pj<p 都是成立的,但 j=pj=pj=p 时会多算出一些东西。我们利用这个性质,对 r(p−1)r^{(p-1)}r(p1) 进行适当的修改、放缩、补零,即可得到一个对于 j<ij<ij<i 取值都是 000、对于 j=ij=ij=i 取值恰好为 ddd 的递推式。然后再用 r(i−1)r^{(i-1)}r(i1) 和这个递推式相减即可消去第 iii 位的多余部分。

    然后可以归纳证明这样得到的 lil_ili 一定满足 li=max⁡(li−1,i−li−1+1)l_i=\max(l_{i-1},i-l_{i-1}+1)li=max(li1,ili1+1)。由于 ppp 是最近的一次增长递推式的时候,所以我们有 li−1=lp=p−lp−1+1l_{i-1}=l_p=p-l_{p-1}+1li1=lp=plp1+1,那么:

    li=max⁡(li−1,(i−p)+lp−1)=max⁡(li−1,(i−p)+(p−lp+1))=max⁡(li−1,i−lp+1) l_i=\max(l_{i-1},(i-p)+l_{p-1})=\max(l_{i-1},(i-p)+(p-l_p+1))=\max(l_{i-1},i-l_p+1) li=max(li1,(ip)+lp1)=max(li1,(ip)+(plp+1))=max(li1,ilp+1)

    即证。

那么我们只要枚举 iii 并按照上述算法计算 r(i)r^{(i)}r(i)lil_ili 即可,注意 li>li−1l_i>l_{i-1}li>li1 时需要对 p,cp,cp,c 进行更新。时间复杂度 O(n2)O(n^2)O(n2)

对于无限数列的情况,我们有如下定理:

  • 定理 4:对于线性递推数列 {a0,a1,⋯ }\{a_0,a_1,\cdots\}{a0,a1,},若它的最短线性递推式阶数不超过 sss,那么 {a0,⋯ ,a2s−1}\{a_0,\cdots,a_{2s-1}\}{a0,,a2s1} 的最短线性递推式即为 aaa 的最短线性递推式。

    证明:设 {a0,a1,⋯ }\{a_0,a_1,\cdots\}{a0,a1,} 的最短线性递推式阶数为 qqq{a0,⋯ ,a2s−1}\{a_0,\cdots,a_{2s-1}\}{a0,,a2s1} 的最短线性递推式阶数为 ppp,那么必定有 p≤qp\leq qpqp+q≤2sp+q\leq 2sp+q2s。接下来的证明就和引理1的证明类似了。

所以如果我们知道数列 aaa 最短线性递推式阶数的上界 sss,我们只需要求出这个数列长度为 2s2s2s 的前缀并求出它的最短线性递推式即可。

求一个矩阵序列的最短线性递推式

这里需要假设运算均在模某个大质数 ppp 下进行。

对于 nnnmmm 列的矩阵序列 {t0,t1,⋯ }\{t_0,t_1,\cdots\}{t0,t1,},考虑在模 ppp 意义下随机一个 nnn 维行向量 uuu 和一个 mmm 维列向量 vvv,然后计算标量序列 {ut0v,ut1v,⋯ }\{ut_0v,ut_1v,\cdots\}{ut0v,ut1v,} 的最短线性递推式。

根据一个我不会证的定理,它们的最短线性递推式相同的概率为 1−n+mp1-\frac{n+m}{p}1pn+m,即单次错误的概率为 n+mp\frac{n+m}{p}pn+m

求矩阵的最小多项式

n×nn\times nn×n 的矩阵 MMM 的最小多项式为次数最小的使得 f(M)=0f(M)=0f(M)=0 的多项式 fff

f(x)=∑i=0mcixm−if(x)=\sum_{i=0}^{m}c_ix^{m-i}f(x)=i=0mcixmi。类似于定理2的证明,我们知道 MMM 的零化多项式 fff 对应着无限数列 {I,M,M2,⋯ }\{I,M,M^2,\cdots\}{I,M,M2,} 的一个线性递推式。

所以矩阵 MMM 的最小多项式对应着无限数列 {I,M,M2,⋯ }\{I,M,M^2,\cdots\}{I,M,M2,} 的最短线性递推式。

根据定理2,再套用前两节的做法,我们需要先计算出 {I,uMv,⋯ ,uM2n−1v}\{I,uMv,\cdots,uM^{2n-1}v\}{I,uMv,,uM2n1v}。使用递推计算,过程中是向量乘矩阵,单次乘法为 O(n2)O(n^2)O(n2),总时间复杂度 O(n3)O(n^3)O(n3)

整式递推数列

这个比较难,就只有最基础的一点东西(

基本性质和判定方法

一些定义:

  • 对于无限数列 {a0,a1,⋯ }\{a_0,a_1,\cdots\}{a0,a1,} 和有限非空多项式数列 {P0,P1,⋯ ,Pm−1}\{P_0,P_1,\cdots,P_{m-1}\}{P0,P1,,Pm1},若 P0P_0P0 非零且对于任意 p≥m−1p\geq m-1pm1,有 ∑k=0m−1ap−kPk(p)=0\sum_{k=0}^{m-1}a_{p-k}P_k(p)=0k=0m1apkPk(p)=0,则称数列 PPP 为数列 aaa整式递推式

    对于有限数列 {a0,a1,⋯ ,an−1}\{a_0,a_1,\cdots,a_{n-1}\}{a0,a1,,an1} 和有限非空多项式数列 {P0,P1,⋯ ,Pm−1}\{P_0,P_1,\cdots,P_{m-1}\}{P0,P1,,Pm1},若 P0P_0P0 非零且对于任意 m−1≤p≤n−1m-1\leq p\leq n-1m1pn1,有 ∑k=0m−1ap−kPk(p)=0\sum_{k=0}^{m-1}a_{p-k}P_k(p)=0k=0m1apkPk(p)=0,则称数列 PPP 为数列 aaa整式递推式

  • 称存在整式递推式的无限数列为整式递推数列(有限数列一定存在整式递推式)。

  • 称整式递推式 {P0,P1,⋯ ,Pm−1}\{P_0,P_1,\cdots,P_{m-1}\}{P0,P1,,Pm1}阶数为它的长度减 111(即 m−1m-1m1),次数max⁡ideg⁡(Pi)\max_i\deg(P_i)maxideg(Pi)

容易看出线性递推数列也是整式递推数列。

接下来给出整式递推数列最基本的判定方法:

  • 称形式幂级数 A(x)A(x)A(x)微分有限的,当且仅当存在多项式 Q0(x),⋯ ,Qm−1(x)Q_0(x),\cdots,Q_{m-1}(x)Q0(x),,Qm1(x) 满足 Qm−1(x)≠0Q_{m-1}(x)\neq 0Qm1(x)=0∑i=0m−1Qi(x)A(i)(x)=0\sum_{i=0}^{m-1}Q_i(x)A^{(i)}(x)=0i=0m1Qi(x)A(i)(x)=0

  • 定理 5:对于无限数列 {a0,a1,⋯ }\{a_0,a_1,\cdots\}{a0,a1,} 及其生成函数 AAAaaa 为整式递推数列当且仅当 AAA 是微分有限的。

    证明:对于必要性,这里直接给出一种明了的构造方式:

    {P0,⋯ ,Pm−1}\{P_0,\cdots,P_{m-1}\}{P0,,Pm1}aaa 的整式递推式(满足 ∀n≥m−1,∑k=0m−1an−kPk(n)=0\forall n\geq m-1,\sum_{k=0}^{m-1}a_{n-k}P_k(n)=0nm1,k=0m1ankPk(n)=0)。设 D=max⁡ideg⁡(Pi)D=\max_i\deg (P_i)D=maxideg(Pi)

    Ai(x)=xiA(i)(x)A_i(x)=x^iA^{(i)}(x)Ai(x)=xiA(i)(x)0≤i≤D0\leq i\leq D0iD)。

    那么对于任意 n≥Dn\geq DnD[xn]Ai(x)=fi(n)an[x^n]A_i(x)=f_i(n)a_n[xn]Ai(x)=fi(n)an,其中 fi(n)f_i(n)fi(n) 是关于 nnniii 次多项式(具体来说是一个下降幂的形式,不过这不重要)。

    那么,当 n≥D+m−1n\geq D+m-1nD+m1 时:

    [xn]∑i=0DQi′(x)xiA(i)(x)=∑k=0m−1∑i=0D([xk]Qi′(x))([xn−k]Ai(x))=∑k=0m−1∑i=0Dqi,k′fi(n−k)an−k=∑k=0m−1an−k∑i=0Dqi,k′fi(n−k)=∑k=0m−1an−k∑i=0Dqi,k′fi′(n) \begin{aligned}&[x^n]\sum_{i=0}^{D}Q'_i(x)x^iA^{(i)}(x)\\=&\sum_{k=0}^{m-1}\sum_{i=0}^D\bigg([x^k]Q'_i(x)\bigg)\bigg([x^{n-k}]A_i(x)\bigg)\\=&\sum_{k=0}^{m-1}\sum_{i=0}^Dq'_{i,k}f_i(n-k)a_{n-k}\\=&\sum_{k=0}^{m-1}a_{n-k}\sum_{i=0}^Dq'_{i,k}f_i(n-k)\\=&\sum_{k=0}^{m-1}a_{n-k}\sum_{i=0}^Dq'_{i,k}f'_i(n)\\\end{aligned} ====[xn]i=0DQi(x)xiA(i)(x)k=0m1i=0D([xk]Qi(x))([xnk]Ai(x))k=0m1i=0Dqi,kfi(nk)ankk=0m1anki=0Dqi,kfi(nk)k=0m1anki=0Dqi,kfi(n)

    由于 fi′(n)f_i'(n)fi(n) 为关于 nnniii 次多项式,所以 {f0′(n),⋯ ,fD′(n)}\{f_0'(n),\cdots,f_D'(n)\}{f0(n),,fD(n)} 线性组合张成的空间包含了所有关于 nnn 的次数不超过 DDD 的多项式,那么我们选取合适的 qi,k′q'_{i,k}qi,k 使得 ∑i=0Dqi,k′fi′(n)=Pk(n)\sum_{i=0}^Dq'_{i,k}f'_i(n)=P_k(n)i=0Dqi,kfi(n)=Pk(n) 即可。

    再令 Qi(x)=Qi′(x)xiQ_i(x)=Q_i'(x)x^iQi(x)=Qi(x)xi,于是对于任意 n≥D+m−1n\geq D+m-1nD+m1[xn]∑i=0DQi(x)A(i)(x)=∑k=0m−1an−kPk(n)=0[x^n]\sum_{i=0}^DQ_i(x)A^{(i)}(x)=\sum_{k=0}^{m-1}a_{n-k}P_k(n)=0[xn]i=0DQi(x)A(i)(x)=k=0m1ankPk(n)=0

    上述过程建议画图推导。

    那么现在我们已经构造出一组 Qi(x)Q_i(x)Qi(x) 满足 ∑i=0DQi(x)A(i)(x)=S(x)\sum_{i=0}^DQ_i(x)A^{(i)}(x)=S(x)i=0DQi(x)A(i)(x)=S(x),其中 S(x)S(x)S(x) 为一有限次多项式。

    再对等式两边同时求 deg⁡(S(x))+1\deg (S(x))+1deg(S(x))+1 阶导,即可证明 AAA 是微分有限的。

    至于充分性,直接将 ∑i=0m−1Qi(x)A(i)(x)=0\sum_{i=0}^{m-1}Q_i(x)A^{(i)}(x)=0i=0m1Qi(x)A(i)(x)=0 展开,然后对于充分大的 nnn,取左式的 nnn 次项系数即可得到一个 aaa 的整式递推式。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值