前置知识:线代基础(越多越好

发现了一位老哥写的笔记,精炼得相当到位 (这是博客地址嗷) 。


线性递推数列

基本性质

定理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​...rm−1​},设数列 a a a 和数列 r r r 所对应的生成函数为 A A A 和 R R R,数列 r r r 为数列 a a a 的线性递归式等价于存在次数不超过 m − 2 m−2 m−2 的多项式 S S S 满足 A R + S = 0 AR + S = 0 AR+S=0。

定理1.2.

对于一个 n × n n × n n×n 的矩阵 M M M,无限数列 I , M , M 2 , M 3 ⋅ ⋅ ⋅ {I, M, M^2 , M^3 · · · } I,M,M2,M3⋅⋅⋅ 是一个线性递推数列,它的最短线性递推式阶数不超过 n n n。

定理1.3.

由于太占篇幅了所以就略了。

定理1.4.

对于线性递推数列 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+s−1​ 的最短线性递推式即为 a 的最短线性递推式。

求数列的最小线性递推式,BM算法

zzq的博客 Berlekamp-Massey算法简单介绍

常见应用

求向量列、矩阵列最小线性递推式

考虑求 n n n 维行向量列 { t 0 , t 1 , t 2 . . . } \{t_0, t_1, t_2...\} {t0​,t1​,t2​...} 的线性递推式。假设考虑在模 p p p 意义下随机 一个 n n n 维列向量 v v v,转而计算 { t 0 v , t 1 v , t 2 v . . . } \{t_0v, t_1v, t_2v...\} {t0​v,t1​v,t2​v...} 这个标量序列的最短线性递推式。根据SchwartzZippel引理,正确率至少为 p − n n \frac{p-n}{n} np−n​ 。列向量同理。
对于大小为 n × m n\times m n×m 的矩阵就先乘以一个长度为 m m m 的随机的列向量,转而成为求向量列递推式即可。

求矩阵最小多项式

n × n n\times n n×n 的矩阵 M M M 的最小多项式是次数最小使得 f ( M ) = 0 f(M)=0 f(M)=0 的多项式 f f f 。
对于方阵 M M M ,其最小多项式即为矩阵列 I , M , M 2 . . . I,M,M^2... I,M,M2... 的最短线性递推式,直接求解即可。时间复杂度 O ( n 3 ) O(n^3) O(n3) 。若矩阵中有 e e e 个非 0 0 0 位置,则时间复杂度可降为 O ( n ( n + e ) ) O(n(n+e)) O(n(n+e)) 。

优化动态规划

已知一个递推式 f ( i , j ) = ∑ t = 0 m − 1 f ( i − 1 , t ) c ( t , j ) f(i,j)=\sum_{t=0}^{m-1}f(i-1,t)c(t,j) f(i,j)=∑t=0m−1​f(i−1,t)c(t,j) ,需要求出 f ( n , j ) , j ∈ [ 0 , m ) f(n,j),j\in[0,m) f(n,j),j∈[0,m) 。记 F ( i ) F(i) F(i) 为 f ( i , j ) ( j ∈ [ 0 , m ) ) f(i,j)(j\in[0,m)) f(i,j)(j∈[0,m)) 的行向量, C C C 为 c c c 对应的矩阵,则 F ( n ) = F ( 0 ) C n F(n)=F(0)C^n F(n)=F(0)Cn 。所以 F ( 0 ) , F ( 1 ) . . . F ( n ) {F(0),F(1)...F(n)} F(0),F(1)...F(n) 是线性递推数列,用求线性递推数列的某一项的方法求出即可。时间复杂度 O ( m 3 + m log ⁡ ( m ) log ⁡ ( n ) ) O(m^3+m\log(m)\log(n)) O(m3+mlog(m)log(n)) ,比直接矩阵快速幂只少了一个 log ⁡ \log log ,所以十分没用。

解稀疏线性方程组

有一个 n × n n × n n×n 的满秩矩阵 A A A 和一个长度为 n n n 的行向量 b b b,我们需要求出一个长度为 n n n 的行向量 x x x 满足 A x = b Ax = b Ax=b,即 x = A − 1 b x=A^{-1}b x=A−1b 。
设 b , A b , A 2 b . . . b,Ab,A^2b... b,Ab,A2b... 的最短线性递推式为 r 0 . . . r m r_0...r_m r0​...rm​ ,有 ∑ i = 0 m A i b r m − i = 0 \sum_{i=0}^mA^ibr_{m-i}=0 ∑i=0m​Aibrm−i​=0 ,两遍同时左乘 A − 1 A^{-1} A−1,再移项可得 A − 1 b = − 1 r m ∑ i = 0 m − 1 A i b r m − i − 1 A^{-1}b=-\frac{1}{r_m}\sum_{i=0}^{m-1}A^ibr_{m-i-1} A−1b=−rm​1​∑i=0m−1​Aibrm−i−1​。若 A A A 中有 e e e 个非 0 0 0 位置,则时间复杂度为 O ( n ( n + e ) ) O(n(n+e)) O(n(n+e)) 。

求稀疏矩阵行列式

已知一个大小大小为 n × n n\times n n×n 的满秩矩阵 A A A,求 d e t ( A ) det(A) det(A) 对 p p p 取模的值。
随机一个大小和 A A A 相等对角矩阵 B B B ,至少有 1 − 2 n 2 − n p 1-\frac{2n^2-n}{p} 1−p2n2−n​ 的概率 A B AB AB 的最小多项式就是其特征多项式,又因为特征多项式的常数等于行列式乘以 ( − 1 ) n (-1)^n (−1)n ,所以我们就能求出 d e t ( A B ) det(AB) det(AB) ,最后 d e t ( A ) = d e t ( A B ) d e t ( B ) det(A)=\frac{det(AB)}{det(B)} det(A)=det(B)det(AB)​ 。若 A A A 中有 e e e 个非 0 0 0 位置,则时间复杂度为 O ( n ( n + e ) ) O(n(n+e)) O(n(n+e)) 。

线性递推数列_学习笔记相关推荐

  1. [线性代数学习笔记] 线性递推数列及 Berlekamp-Massey 算法的详细推导过程

    线性递推数列 线性递推 对于无限数列 {a0,a1,...}\{a_0,a_1,...\}{a0​,a1​,...} 和有限非空数列 {r0,r1,...,rm−1}\{r_{0},r_1,...,r ...

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

    1.11.11.1 定义:对于无限数列{a0,a1,a2,...}\{a_0,a_1,a_2,...\}{a0​,a1​,a2​,...}和有限非空数列{r0,r1,r2,...,rm−1}\{r_0 ...

  3. 特征方程求数列的通项公式(二阶线性递推式)

    特征方程求数列的通项公式(二阶线性递推式) 已知数列{an}\{a_n\}{an​}满足fn=afn−1+bfn−2,a,b∈N,b≠0,n>2,f1=c1,f2=c2,(c1,c2f_n=af ...

  4. BM算法(Berlekamp-Massey算法):解决线性递推问题

    算法内容 Berlekamp-Massey算法,常简称为BM算法,是用来求解一个数列的最短线性递推式的算法. BM算法可以在O(N2)的时间内求解一个长度为N的数列的最短线性递推式. 算法模板 取模, ...

  5. Codeforces 1106F Lunar New Year and a Recursive Sequence (数学、线性代数、线性递推、数论、BSGS、扩展欧几里得算法)...

    Codeforces 1106F Lunar New Year and a Recursive Sequence (数学.线性代数.线性递推.数论.BSGS.扩展欧几里得算法) 哎呀大水题..我写了一 ...

  6. 特征根法--递推数列前4列

    问题概述:求出第n个斐波那契数列的前4位,其中a[0]=0.a[1]=1,n可高达100000000 输入样例:                                     对应输出: 3 ...

  7. BM求线性递推模板(杜教版)

    BM求线性递推模板(杜教版) BM求线性递推是最近了解到的一个黑科技 如果一个数列.其能够通过线性递推而来 例如使用矩阵快速幂优化的 DP 大概都可以丢进去 则使用 BM 即可得到任意 N 项的数列元 ...

  8. 有理展开定理与递推数列通项公式

    可以结合 https://blog.csdn.net/ez_lcw/article/details/125731258?spm=1001.2014.3001.5502. 不同根的有理展开定理 设 R ...

  9. CCF201809-5 线性递推式(募集解题代码)

    试题编号: 201809-5 试题名称: 线性递推式 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 样例输入 3 3 6 2 0 4 样例输出 12 32 80 208 样例说明 样例 ...

最新文章

  1. (三)RocketMQ集群部署实践
  2. kafka安装、配置、启动、常用命令及shell启动脚本编写
  3. matlab摄像头录像保存在哪里,matlab连接摄像头读取视频部分解释
  4. 【opencv学习】【hough圆检测】
  5. jsp标记之动作标记介绍
  6. 数字电子技术基础(四):门电路(CMOS)必看
  7. 郭天祥的10天学会51单片机_第一节
  8. u盘推荐知乎_求推荐好用的u盘?
  9. jquery html包含自身,jquery 获取 outerHtml 包含当前节点本身的代码
  10. QT QPainter
  11. H5社交漂流瓶交友源码/附安装教程
  12. zynq100 linux移植,Linux3.6.7在OK6410平台的移植(四)搭建YAFFS2根文件系统
  13. JavaSE聊天室项目
  14. 川土微电子 | 隔离电源的辐射抑制设计参考(三)
  15. fiddler抓取https,提示“CA 根证书不在受信任的存储区域”的解决方法
  16. 2019年,成年人的奔溃来得那么突然,但他们仍选择负重前行
  17. 64 位软件和 32 位有什么具体区别?
  18. leetcode 29.两数相除
  19. 网络安全工程师学习第二天
  20. 对策论的蒙特卡洛求解方法

热门文章

  1. 【go】golang中置new()函数和make()函数的区别
  2. Linux时间子系统之Tick层
  3. 变压器直流电阻测试仪RS485串口数据采集接入数据库及MESERP系统方案
  4. 【论文阅读】MIMICS: A Large-Scale Data Collection for Search Clarification
  5. sqlitebrowser
  6. CSS兄弟选择器(选择所有兄弟姐妹)
  7. DHT11温湿度LCD显示
  8. 第二代商用计算机,紫光计算机第二代商用台式机 Unis 526S/526T G2 上市
  9. Java基础 -> 独享锁 VS 共享锁
  10. delphi中字符串拼接_Delphi中的字符串类型(Delphi适用于初学者)