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

本文大量参考了:

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

线性递推数列

基本性质和判定方法

一些定义:

  • 对于无限数列 \(\{a_0,a_1,\cdots\}\) 和有限非空数列 \(\{r_0=1,r_1,\cdots,r_{m-1}\}\),若对于任意 \(p\geq m-1\),有 \(\sum_{k=0}^{m-1}a_{p-k}r_k=0\),则称数列 \(r\) 为数列 \(a\)线性递推式

    对于有限数列 \(\{a_0,a_1,\cdots,a_{n-1}\}\) 和有限非空数列 \(\{r_0=1,r_1,\cdots,r_{m-1}\}\),若对于任意 \(m-1\leq p\leq n-1\),有 \(\sum_{k=0}^{m-1}a_{p-k}r_k=0\),则称数列 \(r\) 为数列 \(a\)线性递推式

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

  • 称线性递推式 \(\{r_0,r_1,\cdots,r_{m-1}\}\)阶数为它的长度减 \(1\)(即 \(m-1\)),称数列 \(a\) 的阶数最小的线性递推式为数列 \(a\)最短线性递推式

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

  • 定理 1:对于无限数列 \(\{a_0,a_1,\cdots\}\) 和有限非空数列 \(\{r_0=1,r_1,\cdots,r_{m-1}\}\),设它们的生成函数分别为 \(A,R\),那么数列 \(r\) 为数列 \(a\) 的线性递推式等价于存在次数不超过 \(m-2\) 的多项式 \(S\) 满足 \(AR+S=0\)

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

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

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

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

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

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

    \(p(\lambda)=\sum_{i=0}^nc_{i}\lambda^{n-i}\),那么就有 \(\sum_{i=0}^nc_iM^{n-i}=0\)。那么即可对任意 \(j\geq n\) 推出 \(\sum_{i=0}^nc_iM^{j-i}=0\)

    于是 \(\{c_0,\cdots,c_n\}\) 即为一个合法的阶数为 \(n\) 的线性递推式。

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

  • 定理 3:对于线性递推数列 \(\{a_0,a_1,\cdots\},\{b_0,b_1,\cdots\}\),我们有:
    • \(\{a_i+b_i\}_{i=0}^{\infty}\) 为线性递推数列。
    • \(\{\sum_{j=0}^ia_jb_{i-j}\}_{i=0}^{\infty}\) 为线性递推数列。
    • \(\{a_ib_i\}_{i=0}^{\infty}\) 为线性递推数列。

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

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

Berlekamp-Massey 算法。

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

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

    \[l_i\geq \max(l_{i-1},i-l_{i-1}+1) \]

    证明:显然只需证 \(l_i\geq i-l_{i-1}+1\)

    反证法。假设 \(l_i\leq i-l_{i-1}\),设 \(r^{(i-1)}=\{p_0,\cdots,p_{l_{i-1}}\}\)\(r^{(i)}=\{q_0,\cdots,q_{l_i}\}\)。那么:

    \[-\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 \]

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

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

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

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

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

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

  • 否则,设 \(AR^{(i-1)}-S^{(i-1)}\equiv dx^i\pmod{x^{i+1}}\)。我们考虑上一次增长递推式的情形,设当时存在 \(p<i\)\(c\) 使得 \(AR^{(p-1)}-S^{(p-1)}=cx^p\pmod{x^{p+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} \]

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

    \[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}} \]

    \(R^{(i)}=R^{(i-1)}-tx^{i-p}R^{(p-1)}\) 即可。

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

    然后可以归纳证明这样得到的 \(l_i\) 一定满足 \(l_i=\max(l_{i-1},i-l_{i-1}+1)\)。由于 \(p\) 是最近的一次增长递推式的时候,所以我们有 \(l_{i-1}=l_p=p-l_{p-1}+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) \]

    即证。

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

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

  • 定理 4:对于线性递推数列 \(\{a_0,a_1,\cdots\}\),若它的最短线性递推式阶数不超过 \(s\),那么 \(\{a_0,\cdots,a_{2s-1}\}\) 的最短线性递推式即为 \(a\) 的最短线性递推式。

    证明:设 \(\{a_0,a_1,\cdots\}\) 的最短线性递推式阶数为 \(q\)\(\{a_0,\cdots,a_{2s-1}\}\) 的最短线性递推式阶数为 \(p\),那么必定有 \(p\leq q\)\(p+q\leq 2s\)。接下来的证明就和引理1的证明类似了。

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

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

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

对于 \(n\)\(m\) 列的矩阵序列 \(\{t_0,t_1,\cdots\}\),考虑在模 \(p\) 意义下随机一个 \(n\) 维行向量 \(u\) 和一个 \(m\) 维列向量 \(v\),然后计算标量序列 \(\{ut_0v,ut_1v,\cdots\}\) 的最短线性递推式。

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

求矩阵的最小多项式

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

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

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

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

整式递推数列

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

基本性质和判定方法

一些定义:

  • 对于无限数列 \(\{a_0,a_1,\cdots\}\) 和有限非空多项式数列 \(\{P_0,P_1,\cdots,P_{m-1}\}\),若 \(P_0\) 非零且对于任意 \(p\geq m-1\),有 \(\sum_{k=0}^{m-1}a_{p-k}P_k(p)=0\),则称数列 \(P\) 为数列 \(a\)整式递推式

    对于有限数列 \(\{a_0,a_1,\cdots,a_{n-1}\}\) 和有限非空多项式数列 \(\{P_0,P_1,\cdots,P_{m-1}\}\),若 \(P_0\) 非零且对于任意 \(m-1\leq p\leq n-1\),有 \(\sum_{k=0}^{m-1}a_{p-k}P_k(p)=0\),则称数列 \(P\) 为数列 \(a\)整式递推式

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

  • 称整式递推式 \(\{P_0,P_1,\cdots,P_{m-1}\}\)阶数为它的长度减 \(1\)(即 \(m-1\)),次数\(\max_i\deg(P_i)\)

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

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

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

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

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

    \(\{P_0,\cdots,P_{m-1}\}\)\(a\) 的整式递推式(满足 \(\forall n\geq m-1,\sum_{k=0}^{m-1}a_{n-k}P_k(n)=0\))。设 \(D=\max_i\deg (P_i)\)

    \(A_i(x)=x^iA^{(i)}(x)\)\(0\leq i\leq D\))。

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

    那么,当 \(n\geq D+m-1\) 时:

    \[\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} \]

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

    再令 \(Q_i(x)=Q_i'(x)x^i\),于是对于任意 \(n\geq D+m-1\)\([x^n]\sum_{i=0}^DQ_i(x)A^{(i)}(x)=\sum_{k=0}^{m-1}a_{n-k}P_k(n)=0\)

    上述过程建议画图推导。

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

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

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

posted @ 2022-10-31 09:44  ez_lcw  阅读(362)  评论(0编辑  收藏  举报