线性递推数列_学习笔记
前置知识:线代基础(越多越好
发现了一位老哥写的笔记,精炼得相当到位 (这是博客地址嗷) 。
线性递推数列
基本性质
定理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...\} {t0v,t1v,t2v...} 这个标量序列的最短线性递推式。根据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−1f(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=0mAibrm−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=−rm1∑i=0m−1Aibrm−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)) 。
线性递推数列_学习笔记相关推荐
- [线性代数学习笔记] 线性递推数列及 Berlekamp-Massey 算法的详细推导过程
线性递推数列 线性递推 对于无限数列 {a0,a1,...}\{a_0,a_1,...\}{a0,a1,...} 和有限非空数列 {r0,r1,...,rm−1}\{r_{0},r_1,...,r ...
- 【学习笔记】线性递推数列
1.11.11.1 定义:对于无限数列{a0,a1,a2,...}\{a_0,a_1,a_2,...\}{a0,a1,a2,...}和有限非空数列{r0,r1,r2,...,rm−1}\{r_0 ...
- 特征方程求数列的通项公式(二阶线性递推式)
特征方程求数列的通项公式(二阶线性递推式) 已知数列{an}\{a_n\}{an}满足fn=afn−1+bfn−2,a,b∈N,b≠0,n>2,f1=c1,f2=c2,(c1,c2f_n=af ...
- BM算法(Berlekamp-Massey算法):解决线性递推问题
算法内容 Berlekamp-Massey算法,常简称为BM算法,是用来求解一个数列的最短线性递推式的算法. BM算法可以在O(N2)的时间内求解一个长度为N的数列的最短线性递推式. 算法模板 取模, ...
- Codeforces 1106F Lunar New Year and a Recursive Sequence (数学、线性代数、线性递推、数论、BSGS、扩展欧几里得算法)...
Codeforces 1106F Lunar New Year and a Recursive Sequence (数学.线性代数.线性递推.数论.BSGS.扩展欧几里得算法) 哎呀大水题..我写了一 ...
- 特征根法--递推数列前4列
问题概述:求出第n个斐波那契数列的前4位,其中a[0]=0.a[1]=1,n可高达100000000 输入样例: 对应输出: 3 ...
- BM求线性递推模板(杜教版)
BM求线性递推模板(杜教版) BM求线性递推是最近了解到的一个黑科技 如果一个数列.其能够通过线性递推而来 例如使用矩阵快速幂优化的 DP 大概都可以丢进去 则使用 BM 即可得到任意 N 项的数列元 ...
- 有理展开定理与递推数列通项公式
可以结合 https://blog.csdn.net/ez_lcw/article/details/125731258?spm=1001.2014.3001.5502. 不同根的有理展开定理 设 R ...
- CCF201809-5 线性递推式(募集解题代码)
试题编号: 201809-5 试题名称: 线性递推式 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 样例输入 3 3 6 2 0 4 样例输出 12 32 80 208 样例说明 样例 ...
最新文章
- (三)RocketMQ集群部署实践
- kafka安装、配置、启动、常用命令及shell启动脚本编写
- matlab摄像头录像保存在哪里,matlab连接摄像头读取视频部分解释
- 【opencv学习】【hough圆检测】
- jsp标记之动作标记介绍
- 数字电子技术基础(四):门电路(CMOS)必看
- 郭天祥的10天学会51单片机_第一节
- u盘推荐知乎_求推荐好用的u盘?
- jquery html包含自身,jquery 获取 outerHtml 包含当前节点本身的代码
- QT QPainter
- H5社交漂流瓶交友源码/附安装教程
- zynq100 linux移植,Linux3.6.7在OK6410平台的移植(四)搭建YAFFS2根文件系统
- JavaSE聊天室项目
- 川土微电子 | 隔离电源的辐射抑制设计参考(三)
- fiddler抓取https,提示“CA 根证书不在受信任的存储区域”的解决方法
- 2019年,成年人的奔溃来得那么突然,但他们仍选择负重前行
- 64 位软件和 32 位有什么具体区别?
- leetcode 29.两数相除
- 网络安全工程师学习第二天
- 对策论的蒙特卡洛求解方法
热门文章
- 【go】golang中置new()函数和make()函数的区别
- Linux时间子系统之Tick层
- 变压器直流电阻测试仪RS485串口数据采集接入数据库及MESERP系统方案
- 【论文阅读】MIMICS: A Large-Scale Data Collection for Search Clarification
- sqlitebrowser
- CSS兄弟选择器(选择所有兄弟姐妹)
- DHT11温湿度LCD显示
- 第二代商用计算机,紫光计算机第二代商用台式机 Unis 526S/526T G2 上市
- Java基础 -> 独享锁 VS 共享锁
- delphi中字符串拼接_Delphi中的字符串类型(Delphi适用于初学者)