【学习笔记】线性递推数列

1.1 1.1 1.1 定义:对于无限数列 { a 0 , a 1 , a 2 , . . . } \{a_0,a_1,a_2,...\} {a0,a1,a2,...}和有限非空数列 { r 0 , r 1 , r 2 , . . . , r m − 1 } \{r_0,r_1,r_2,...,r_{m-1}\} {r0,r1,r2,...,rm1},若对于任意 p ≥ m − 1 p\ge m-1 pm1,有 ∑ k = 0 m − 1 a p − k r k = 0 \sum_{k=0}^{m-1}a_{p-k}r_k=0 k=0m1apkrk=0 r 0 = 1 r_0=1 r0=1,我们称数列 r r r为数列 a a a的线性递推式。我们称存在线性递推式的无线序列为线性递推数列。 r 0 = 1 r_0=1 r0=1说明 a p = − ( a p − 1 r 1 + . . . + a p − m + 1 r m − 1 ) a_p=-(a_{p-1}r_1+...+a_{p-m+1}r_{m-1}) ap=(ap1r1+...+apm+1rm1),就是所谓的递推式。

1.2 1.2 1.2对于无限数列 { a 0 , a 1 , a 2 , . . . } \{a_0,a_1,a_2,...\} {a0,a1,a2,...}和有限非空序列 { r 0 , r 1 , r 2 , . . . , r m − 1 } \{r_0,r_1,r_2,...,r_{m-1}\} {r0,r1,r2,...,rm1},设数列 a a a和数列 r r r所对应的生成函数为 A A A R R R,数列 r r r为数列 a a a的线性递推式等价于存在次数不超过 m − 2 m-2 m2的多项式 S S S满足 A R + S = 0 AR+S=0 AR+S=0。对于有限数列 { a 0 , a 1 , a 2 , . . . , a n − 1 } \{a_0,a_1,a_2,...,a_{n-1}\} {a0,a1,a2,...,an1},则为 A R + S = 0 ( m o d x n ) AR+S=0\pmod{x^n} AR+S=0(modxn)

1.3 1.3 1.3 Berlekamp-Massey 算法,先考虑有限的情形。该算法找一个阶数最小的 R R R,使得 A R = S ( m o d x n ) AR=S\pmod{x^n} AR=S(modxn),且 S S S的阶数小于 R R R的阶数。具体做法是对于 i = 2 , 3 , . . . , n i=2,3,...,n i=2,3,...,n,在 m o d    x i \mod{x^i} modxi的意义下递推求出 R i R_i Ri S i S_i Si

假设已经知道   m o d     x i − 1 \bmod\ {x^{i-1}} mod xi1 的答案是 R i R_i Ri,那么求   m o d     x i \bmod\ {x^i} mod xi 的答案 R i R_i Ri

1.3.1 1.3.1 1.3.1 先检验一下是否有 A R i − 1 = S i − 1 ( m o d x i ) AR_{i-1}=S_{i-1}\pmod{x^i} ARi1=Si1(modxi),如果是,那么 R i = R i − 1 R_i=R_{i-1} Ri=Ri1

1.3.2 1.3.2 1.3.2 如果不是,那么有 A R i − 1 − S i − 1 = d x i − 1 ( m o d x i ) ( 1 ) AR_{i-1}-S_{i-1}=dx^{i-1}\pmod{x^i}(1) ARi1Si1=dxi1(modxi)(1)。考虑上次是再 p ( p < i ) p(pp(p<i)增长的递推式,当时有 A R p − 1 − S p − 1 = c x p − 1 ( m o d x p ) ( 2 ) AR_{p-1}-S_{p-1}=cx^{p-1}\pmod{x^p}(2) ARp1Sp1=cxp1(modxp)(2)

( 2 ) (2) (2) 同时乘 x i − p d c − 1 x^{i-p}dc^{-1} xipdc1,有 x i − p d c − 1 ( A R p − 1 − S p − 1 ) = d x i − 1 ( m o d x i ) ( 3 ) x^{i-p}dc^{-1}(AR_{p-1}-S_{p-1})=dx^{i-1}\pmod{x^i}(3) xipdc1(ARp1Sp1)=dxi1(modxi)(3)

( 1 ) − ( 3 ) : A ( R i − 1 − x i − p d c − 1 R p − 1 ) = S i − 1 − x i − p d c − 1 S p − 1 ( m o d x i ) (1)-(3):A(R_{i-1}-x^{i-p}dc^{-1}R_{p-1})=S_{i-1}-x^{i-p}dc^{-1}S_{p-1}\pmod{x^i} (1)(3):A(Ri1xipdc1Rp1)=Si1xipdc1Sp1(modxi)

R i = R i − 1 − x i − p d c − 1 R p − 1 R_i=R_{i-1}-x^{i-p}dc^{-1}R_{p-1} Ri=Ri1xipdc1Rp1 S i = S i − 1 − x i − p d c − 1 S p − 1 S_i=S_{i-1}-x^{i-p}dc^{-1}S_{p-1} Si=Si1xipdc1Sp1即可。

初始 R 0 = 1 , S 0 = 0 R_0=1,S_0=0 R0=1,S0=0,如果 A 0 A_0 A0 A i − 2 A_{i-2} Ai2都是 0 0 0,而 A i − 1 A_{i-1} Ai1不为零,此时修改递推式,让 R i = 1 + x i R_{i}=1+x^i Ri=1+xi S i = A i − 1 x i − 1 S_i=A_{i-1}x^{i-1} Si=Ai1xi1即可。

其最短性不再赘述。由于初值和递推过程中, S i S_i Si次数小于 R i R_i Ri次数,所以最后得到的结果中, S S S的次数也是小于 R R R的次数的。复杂度 O ( n 2 ) O(n^2) O(n2)

对于无限长的数列 { a 0 , a 1 , a 2 , . . . } \{a_0,a_1,a_2,...\} {a0,a1,a2,...},若它的最短线性递推式阶数不超过 s s s,那么 { a 0 , a 1 , a 2 , . . . , a s + s − 1 } \{a_0,a_1,a_2,...,a_{s+s-1}\} {a0,a1,a2,...,as+s1}的最短线性递推式即为 a a a的最短线性递推式。

1.4 1.4 1.4 设已知 a i + 1 = − ( a i − n + 1 b n + a i − n + 2 b n − 1 + . . . + a i b 1 ) a_{i+1}=-(a_{i-n+1}b_n+a_{i-n+2}b_{n-1}+...+a_ib_1) ai+1=(ain+1bn+ain+2bn1+...+aib1),且已知 a 1 ∼ n a_{1\sim n} a1n b 1 ∼ n b_{1\sim n} b1n,求 a k a_k ak的值。

我们知道 A R = S AR=S AR=S,所以 A = S R A=\frac{S}{R} A=RS

问题转化为,求 P ( x ) Q ( x ) \frac{P(x)}{Q(x)} Q(x)P(x)的第 n n n项。因为 F ( x ) = P ( x ) Q ( − x ) Q ( x ) Q ( − x ) F(x)=\frac{P(x)Q(-x)}{Q(x)Q(-x)} F(x)=Q(x)Q(x)P(x)Q(x),所以 Q ( x ) Q ( − x ) Q(x)Q(-x) Q(x)Q(x)只有偶数项不为 0 0 0,设 P ( x ) Q ( − x ) = E ( x 2 ) + x O ( x 2 ) P(x)Q(-x)=E(x^2)+xO(x^2) P(x)Q(x)=E(x2)+xO(x2) V ( x ) = Q ( x ) Q ( − x ) V(x)=Q(x)Q(-x) V(x)=Q(x)Q(x),所以得到分解 P ( x ) Q ( x ) = E ( x 2 ) V ( x 2 ) + x O ( x 2 ) V ( x 2 ) \frac{P(x)}{Q(x)}=\frac{E(x^2)}{V(x^2)}+x\frac{O(x^2)}{V(x^2)} Q(x)P(x)=V(x2)E(x2)+xV(x2)O(x2),只需按 n n n的奇偶性递归到一侧即可。递归到常数项时答案就是分子分母常数项相除。

复杂度 O ( n log ⁡ n log ⁡ k ) O(n\log n\log k) O(nlognlogk)

1.5 1.5 1.5 求向量/矩阵的最短递推式

考虑将向量/矩阵转化为标量序列的最短线性递推式。具体做法是随机一个向量 v v v与每个向量相乘,矩阵的情况也类似。

1.6 1.6 1.6 求矩阵的最小多项式

相当于求矩阵 { I , M , M 2 , . . . } \{I,M,M^2,...\} {I,M,M2,...}的线性递推式,我们知道 M M M的最小多项式阶数 ≤ n \le n n(特征多项式),所以只需对矩阵 { I , M , M 2 , . . . , M 2 n } \{I,M,M^2,...,M^{2n}\} {I,M,M2,...,M2n}应用 B M BM BM算法即可。

1.7 1.7 1.7 求矩阵的特殊多项式

由于特征多项式是一个 n n n阶多项式,所以可以带入 n + 1 n+1 n+1个值进去,求 n n n个行列式的值,然后插值。复杂度 O ( n 4 ) O(n^4) O(n4)

你可能感兴趣的:(多项式,学习)