最短线性递推式 BM算法 Berlekamp-Massey

版权声明:转载必须注明原文链接,并且每50字(半角,向上取整)就要注明一次,侵权必究 https://blog.csdn.net/myjs999/article/details/86433706

已知数列 { a 0 , a 1 ,   , a n 1 } \{a_0,a_1,\cdots,a_{n-1}\} ,求其最短线性递推式。即求数列 { r 0 , r 1 ,   , r m 1 } \{r_0,r_1,\cdots,r_{m-1}\} 满足 i [ m , n ) , a i = j = 1 m r j 1 a i j \forall i\in[m,n),a_i=\sum_{j=1}^mr_{j-1}a_{i-j}

考虑不停地修改答案递推式。设 R p R_p 表示得到的第 p p 个递推式,最开始的递推式为空,即 R 0 = { } R_0=\{\} 。记 d i d_i a i a_i 与由当前递推式算出的 a i a_i 的差。如果 d i = 0 d_i=0 那么说明递推式到 i i 都是对的,否则记 f p f_p 表示 R p R_p 的错误位置。考虑如何修改当前的 R R 。设新的递推式为 R p + 1 R_{p+1} ,事实上,我们把 R p R_p 加上 R R' 即可,其中 R R' i f p 1 1 i-f_{p-1}-1 0 0 拼上 M M 拼上 R p 1 R_{p-1} M -M 倍,其中 M = d i d f p 1 M=\frac{d_i}{d_{f_{p-1}}} 。每次最多修改 n n 项,最多修改 n n 次,复杂度为 O ( n 2 ) O(n^2)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/myjs999/article/details/86433706