线性递推(Berlekamp-Massey 算法)

线性递推的求解

参考文献:2019集训队论文,钟子谦《两类递推数列的性质和应用》

这篇文章介绍如何求解,线性递推的应用更多在这里

数列({a_0,a_1,cdots })

向量序列({v_0,v_1,cdots})

矩阵序列({M_0,M_1,cdots})

的线性递推

序列(a_0,a_1,cdots,a_n)的线性递推的定义应当是

对于一个常数列(r_0,r_1,cdots,r_m(r_0=1))

为了便于表示,令

(lambda(i,r)=sum_{j=1}^{m}a_{i-j}r_j)

(Delta(i,r)=sum_{j=0}^m a_{i-j})

满足(forall ige m,Delta(i,r)=0)

这似乎与与平常的认知有一些冲突

[ ]

求解序列的最短线性递推: Berlekamp-Massey 算法

对于一个(n)个元素的数列(a_{1,cdots, n}),求出它的最短线性递推式

为了便于理解约定下文求出的是最小的(m)和对应的(r_1,cdots r_m)使得(forall iin [m+1,n],a_i=sum_{j=1}^{m}a_{i-j}r_j)

很显然使用高斯消元可以在(O(n^3))的时间内求解

( ext{Berlekamp-Massey(BM)})算法是通过依次对于前(i)项构造,

添加每一项时在(O(n))的时间内找到一个可行的构造方法,将复杂度降低到了(O(n^2))

[ ]

[ ]

算法过程

为了更好描述,设(r)的阶为(d(r))

考虑依次加入每个数(a_i),设当前(d(r)=m),上一次的递推是(p),(p)出现不匹配的位置是(f)

特别的,初始状态的递推是(r={},f=0)

(1.Delta(i,r)=0),那么不需要扩展

2.(Delta(i,r) e 0)

( ext{i}.m=0),此时只有一种情况即插入了第一个(a_i e 0),唯一的递推序列就是(d(r')=i,r_j=0(j>0)),此时显然成立

( ext{ii}.m e 0)

构造思路是找到一个(r')使得(forall jin[d(r'),i-1],lambda(j,r')=0and lambda (n,r')=Delta(i-1,r))

那么当前合法的转移就是(r+r')

(t=frac{Delta(n,r)}{Delta(f,p)})

构造(r'=t cdot x^{i-f-1}(1-p))

写出来就是

(r'={underbrace{0,cdots,0},tcdot (1-p)})

$ i-f-1$个(0)

(r'={underbrace{0,cdots,0},t,-tcdot p_{1},-tcdot p_{2}cdots,-tcdot p_{d(p)}})

$ i-f-1$个(0)

此时,(d(r')=i-f+d(p))

(jin [d(r')+1,i-1])时,(lambda(j,r')=sum_{k=i-f}^{d(r')}a_{j-k}r'_k)

(=tcdot( a_{j-(i-f)}-lambda(j-(i-f),p)))

由于(p)对于(jin[d(r')+1-(i-f),i-1-(i-f)]=[d(p)+1,f-1])(p)这个递推式成立

(lambda(j,r')=0)

(j=i)时,

(lambda(i,r')=tcdot (a_{i-(i-f)}+lambda(i-(i-f),p))=tcdot Delta(f,p))

(lambda (i,r')=Delta(n,r))

完成了我们想要的构造,所以每次记录上一次的失配位置,即可找到最小递推式

关于为什么求得的就是最小递推,可以看论文里的证明

求解向量序列的线性递推

对于长度为(n)的向量序列({v_0,v_1,cdots})

在模(P)意义下,随机一个向量(u),构造标量序列({v_0u,v_1u,cdots})

构造和求解这个标量序列的线性递推,复杂度均为(O(n^2))

求得的线性递推也为向量序列的线性递推的概率为(1-frac{n}{P}),通常认为不会错

(可以认为复杂度与读入同阶?)

[ ]

求解矩阵序列的线性递推

对于长度为(n)的矩阵序列({M_0,M_1,cdots})

同样在模(P)意义下,随机两个向量(u,v),构造标量序列({uM_0v,uM_1v,cdots})

求解线性递推的复杂度为(O(n^2))

但是构造标量序列需要计算(n)次向量与矩阵的乘法,复杂度为(O(n^3))

(可以认为复杂度与读入同阶?)

原文地址:https://www.cnblogs.com/chasedeath/p/13101035.html