递推数列深造

BM算法(Berlekamp-Massey算法):解决线性递推问题 算法内容 Berlekamp-Massey算法,常简称为BM算法,是用来求解一个数列的最短线性递推式的算法。 BM算法可以在O(N2)的时间内求解一个长度为N的数列的最短线性递推式。 算法模板 取模,模数为质数 #include<bits/stdc++.h> using namespace std; #define rep(i,a,n) for(int i=a;i<n;i... 阅读详情

线性递推数列

求数列最小线性递推式

设有数列 a0⋯ana_0 \cdots a_na0​⋯an​,rir_iri​ 为数列 a0⋯ai{a_0 \cdots a_i}a0​⋯ai​ 的最小线性递推式,lil_ili​ 为 rir_iri​ 的阶数。显然有 li−1⩽lil_{i-1} \leqslant l_ili−1​⩽li​。设 did_idi​ 为真实 aia_iai​ 与用 ri−1r_{i-1}ri−1​ 计算出的 aia_iai​ 的差。若 di=0d_i=0di​=0 则 ri=ri−1r_i=r_{i-1}ri​=ri−1​,否则 li>li−1l_i>l_{i-1}li​>li−1​。设 ppp 为上次递推式增长的位置,则令 rir_iri​ 为 ri−1r_{i-1}ri−1​ 在所有的 j⩾i−pj \geqslant i-pj⩾i−p 下标上进去 didprp−1,j−i+p\frac{d_i}{d_p}r_{p-1,j-i+p}dp​di​​rp−1,j−i+p​ 即可。正确性可以被验证。
时间复杂度 O(n2)O(n^2)O(n2),空间复杂度 O(n)O(n)O(n)
此为BerlekampMassey(BM)算法的执行过程。

BM算法应用
求向量列、矩阵列最小线性递推式

以长度为 nnn 的行向量为例,在模 PPP 意义下,对每一项乘以一随机列向量,再对数列求最小线性递推式。根据SchwartzZippel引理,正确的概率至少为 P−nP\frac{P-n}PPP−n​。列向量同理。对于大小为 n×mn \times mn×m 的矩阵,先乘以一长度为 mmm 的随机列向量,转化成为向量列即可。

求矩阵最小多项式

对于方阵 MMM,其最小多项式即为矩阵列 I,M,M2⋯I,M,M^2 \cdotsI,M,M2⋯ 的最短线性递推式,直接求解即可。
时间复杂度 O(n3)O(n^3)O(n3),空间复杂度 O(n2)O(n^2)O(n2)
当矩阵较为稀疏时,计算向量与矩阵乘法时可以更快。若矩阵中有 eee 个非000位置,则时间复杂度可降为 O(n(n+e))O(n(n+e))O(n(n+e))。

解稀疏线性方程组

已知一长度为 nnn 的行向量 bbb,大小为 n×nn \times nn×n 的满轶矩阵 AAA,求一行向量 xxx 使得 xA=bxA=bxA=b,即 x=bA−1x=bA^{-1}x=bA−1。设 b,bA,bA2⋯b,bA,bA^2 \cdotsb,bA,bA2⋯ 的最短线性递推式为 r0⋯rmr_0 \cdots r_mr0​⋯rm​,有 ∑i=0mAibrm−i=0\sum_{i=0}^m A^ibr_{m-i}=0∑i=0m​Aibrm−i​=0,移项得 A−1b=−1rm∑i=0m−1Aibrm−1−iA^{-1}b=-\frac{1}{r_m}\sum_{i=0}^{m-1}A^ibr_{m-1-i}A−1b=−rm​1​∑i=0m−1​Aibrm−1−i​。若矩阵中有 eee 个非零位置,则时间复杂度为 O(n(n+e))O(n(n+e))O(n(n+e)),空间复杂度为 O(n2)O(n^2)O(n2)

求稀疏矩阵行列式

已知一大小为 n×nn \times nn×n 的满轶矩阵 AAA,求 det⁡(A)\det(A)det(A) 模 PPP 的值。令对角矩阵 BBB 和 AAA 有相同的大小,对角线上每个数为随机值,则有至少 1−2n2−nP1-\frac{2n^2-n}{P}1−P2n2−n​ 的概率满足矩阵 ABABAB 的最小多项式就是其特征多项式。对于任意的 n×nn \times nn×n 的矩阵,其特征多项式的常数项为其行列式的值乘以 (−1)n(-1)^n(−1)n,求出 det⁡(AB)\det(AB)det(AB) 后,我们有 det⁡(A)=det⁡(AB)det⁡(B)\det(A)=\frac{\det(AB)}{\det(B)}det(A)=det(B)det(AB)​。若 AAA 中有 eee 个非零位置,则时间复杂度为 (n(n+e))(n(n+e))(n(n+e))

整式递推数列

定义

若数列 aaa 与多项式列 B0⋯BmB_0 \cdots B_mB0​⋯Bm​ 满足对于任意的 i⩾mi \geqslant mi⩾m 都有 ∑j=0mai−jBj(i)=0\sum_{j=0}^m a_{i-j}B_j(i)=0∑j=0m​ai−j​Bj​(i)=0,则 BBB 为数列 aaa 的整式递推式。

求整式递推式

设现已知 a0⋯ana_0 \cdots a_na0​⋯an​,BBB 的阶数为 mmm,BiB_iBi​ 的最大可能次数为 sss。设 Ci(x)=Bi(x+m)C_i(x)=B_i(x+m)Ci​(x)=Bi​(x+m),则可以根据定义将 CCC 中每一项的每个系数列方程组,求出 CCC。在解方程时对遇到第一个自由元可直接赋非000值。最后还原出 BBB。
时间复杂度 O(n2ms)O(n^2ms)O(n2ms),空间复杂度 O(nms)O(nms)O(nms)
这里 nnn 必须满足 n⩾(s+2)(m+1)n \geqslant (s+2)(m+1)n⩾(s+2)(m+1),且 nnn 越大正确的概率越大。

再谈KMP/BM算法(I) 之前我的《BM算法详解》一文中有一个巨大的缺憾,就是没能给出计算模式串好后缀跳转表的高效算法。Robert S.Boyer和J Strother Moore两人的论文中,不知什么原因,并没有给出这样的算法,蛮力算法O(n^3)的时间复杂度使得BM算法的实用性大打折扣。实际上线性时间内计算出模式串的好后缀跳转表的算法是存在,但是在介绍这个算法之前,我要向大家推荐一本字符串处理方面的权威著作《Al 阅读详情

相关推荐

Berlekamp Massey(BM)算法的C实现

Berlekamp Massey(BM)算法的C实现

weixin_40440564的博客 3528

【学习笔记】BM算法和线性递推

里面写的东西很不偏向于数竞;不适合喜欢数学公式的同学。

七代目鸽影 6987

r语言svr模型_R语言初探强化学习中的马尔可夫模型

强化学习大家这几年应该不陌生,从AlphaGo到AlphaZero让大家见识到了强化学习的力量。我们今天给大家介绍一个在强化学习中核心思维马尔可夫决策过程(MDP)。马尔科夫决策过程是基于马尔科夫论的随机动态系统的最优决策过程。它是马尔科夫过程与确定性的动态规划相结合的产物,故又称马尔科夫型随机动态规划,属于运筹学中数学规划的一个分支。今天我们给大家介绍下马尔可夫决策过程中用到一些算法以...

weixin_28994357的博客 1111

推荐一个超棒的数学网站——整数数列…

推荐一个超棒的数学网站——整数数列百科全书       是否遇到很多找规律的题目却又是束手无策?老实说这种问题很变态,我在很多文章里谈到过我对这个问题的看法,其实知道一点方程知识的人都知道,这玩意答案可以是任何数的,也就是给定一系列数,下一个数可以是任何数。但是遇到考试你不可能不闻不问,公务员考试也最喜欢考这种题。而且从另一个角度来讲,我还是很喜欢这种探索式的题目的,历史上很多著名的发现都是先...

极客学长Bravo | 突破信息差 | 副业生财有术 1万+

MounRiver避坑实录:手把手迁移CH32V307 EVT工程到自定义目录

本文详细记录了将沁恒CH32V307的EVT工程迁移到自定义目录的完整流程与避坑指南。针对MounRiver Studio的虚拟链接机制,重点讲解了如何清理旧配置、重新设置头文件路径、链接脚本等关键步骤,帮助开发者创建独立、可维护的MCU项目工程。

uber9的博客 243

STM8S全解析之系列文章4---STM8S芯片项目升级引导程序(使用中断接收升级数据)

STM8S全解析之系列文章4—STM8S芯片项目升级引导程序(使用中断接收升级数据) 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 例如:第一章 Python 机器学习入门之pandas的使用 文章目录STM8S全解析之系列文章4---STM8S芯片项目升级引导程序(使用中断接收升级数据)前言一、Flash划分boot和App二、使用步骤1.引入库2.读入数据总结 前言 用过STM8S都知道它没有中断向量重定向,也就意味着STM8S的中断向量没办法指向其他的位置,间接说明升级的引导

weixin_39853312的博客 1030

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

最短线性递推式

myjs999的博客 2506

frp 内网渗透案例:端口转发 + 二级代理(深入理解 frp 在内网渗透中的技巧)

本文使用 vulnstack7 靶场作为测试环境,解释 frp 内网渗透特殊使用姿势,通过此案例来提高内网渗透能力。接下来的演示环境只做了以下修改。攻击者 vps 的 ip 修改为:192.168.72.162。DMZ 区域的 ubuntu 的 ip1 修改为:192.168.72.129。先引入问题,当我们控制了 DMZ 的 ubuntu 并且拿到第二层网络的 ubuntu 的 rce 后,会出现以下两个问题。如何搭建隧道让 ubuntu 反弹 shell 给攻击者 vps?

anddddoooo的博客 1765

算法分析中递推式的一般代数解法

算法分析中经常遇到需要求解递推式的情况,即将递推式改写为等价的封闭形式。例如汉诺塔问题的时间复杂度递推形式为T(n)=2T(n−1)+1(n≥1),可以解出封闭形式为T(n)=2n−1(设初始状态T(0)=0)。 因为递推式求解的重要性,许多算法书籍对其有专门介绍。Donald Knuth在Concrete Mathematics一书中多个章节都涉及递推式求解方法。算法导论也在第四章中专门论

继续微笑lsj 2526

国家医保移动支付国密算法SM2签名验签、SM4加解密DLL

DLL,非.net开发,所以无需安装配置,直接程序引用开发即可,支持各类开发语言。已知省份有广西、贵州、安徽、河北、黑龙江、湖南、吉林、江苏、四川、新疆等各地方。国家医保移动支付国密算法SM2签名验签、SM4加解密DLL。//SM4加密与解密。支持医保移动支付(国家统一版),//SM2签名与验签。

4263

如何在INCA中修改标定量的初始值,并刷回控制器

测试过程中,有些时候,标定量来不及修改,这就需要修改标定量的初始值了,又不想打开模型重新编译,因此直接在INCA中修改,然后再刷回控制器,就成了最佳选择,之前也学过,长时间不用,忘记怎么搞了,最近又用到了,这次记录一下,以后用到的时候,就不用在网上东翻西找了。截止到2023年11月24日,共找到了两种方法可以实现修改。

weixin_43406519的博客 4200

天才基本法_由《天才基本法》浅谈数学之美

长洱笔下的林朝夕和裴之因数学结缘,一见钟情钟的是颜值外貌,共度余生靠的是共同语言,数学作为他们的共同爱好在这段感情中功不可没。这让我联想到了最近很火的日剧《轮到你了》中的二阶堂忍和黑岛沙和这对cp,高智商低情商的他们靠着缜密的逻辑思维和严格的公式推导没能找到另一半,却凭着“斐波那契数列”觅得知己。正是这两对cp让我对数学这个“红娘”好奇心起,究竟这些公式定理有怎样的魅力呢?F(n)=F(n-1)+...

weixin_26918763的博客 8131

华为OD机试真题 新系统2026-04-08 C++ 实现【直捣黄龙】

小王在玩一款叫做直捣黄龙的小游戏,在该游戏中他需要从入口位置进入敌营,绕过哨兵的层层封锁,达到敌军司令部实施斩首行动。 敌军阵营是一个n*n的矩阵,入口在坐标(0,n/2),敌军司令部在坐标(n-1,n/2),每个 哨兵警戒以自己为中心的9宫格,一旦被哨兵发现则行动失败。

MISAYAONE的博客 261

2023.1.11(三) 随笔

杨老师讲课方式 如往常一样在讲矩阵快速幂时,掺杂了一些对高中数学书本的推荐,这次杨老师推荐的是同济大学所出版的《线性代数》。整式之间的运算只不过是零维和一维最朴素的运算。矩阵快速幂涉及到的矩阵运算是矩阵乘法,矩阵乘法可以将所有的复数系数一次式的统一递推一般化。)的递归,普通人会用时间复杂度为O(n)的一层循环递推,而更高级一点的人会用时间复杂度为O(log(n))的矩阵乘法,而大佬会直接套用特征根方程。这说明了使用的算法和思考认知的程度深度绑定着,提升思维的认知程度就要深造初高中数学。

weixin_42178241的博客 138

【26美赛E题 Passive Solar Shading】2026美赛数学建模(MCM/ICM)思路解析及代码分享

本文研究了被动太阳能遮阳(PSS)策略在建筑节能中的应用,针对Sungrove大学(低纬高温)和Borealis大学(高纬寒冷)两种典型气候条件,建立了动态太阳辐射-热平衡模型。通过优化遮阳结构(外檐长度、百叶角度)、窗户布局和内部热质量分布,实现了夏季制冷负荷降低30-40%(Sungrove)和冬季采暖负荷减少15-25%(Borealis)。创新性地采用全天候动态遮阳建模方法,结合热质量优化与储能设计,提出了可适应不同气候条件的建筑节能解决方案,为未来可持续建筑设计提供了量化框架。

一键难忘的博客 947

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

大学生程序设计竞赛:解锁烧脑题目的神秘面纱

在竞赛中,拿到题目后不要急于动手编码,而是要深入分析题目本质。就像 “狗吃骨头” 这道题,不能仅仅看到表面的小狗吃骨头场景,而要挖掘出背后隐藏的数学递推关系。通过对每只狗吃骨头行为的细致分析,找到骨头数量在不同狗吃之前的变化规律,从而构建出递推式。这就要求我们具备敏锐的洞察力,能够从复杂的题目描述中提取关键信息,将实际问题转化为数学模型或者算法问题。

大雨淅淅的博客 806

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

杜教BM线性递推自动化模板

这是一个超厉害的模板,功能是输入前几项,能够自动推导公式                                         前提:公式必须是线性的,前几项越多越好,一般不低于8项,不然推出来不准确。                                         原理:暂时没搞清楚,听说是利用矩阵来推导。 #include &lt;cstdio&gt; #in...

PleasantlY1的博客 892

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

杜教板子(BM)线性递推式

据说这个模板可以解决任何线性递推式,听说是杜教的,只要我们手推递推式的前几项,然后扔进这个板子就哦了,我的天,前几项丢的越多越好,8个以上就稳了(打脸了,有的题还是要多要一点)刚刚遇到一个导8个没用,导了50个就ok了。 #include&lt;bits/stdc++.h&gt; using namespace std; #define rep(i,a,n) for (int i=a;i&lt;n...

小灰狼与大白兔的博客 6404

hdu5950(BM递推)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5950 思路:直接套板子啊,不过要改一下 #include &lt;cstdio&gt; #include &lt;cstdlib&gt; #include &lt;cassert&gt; #include &lt;cstring&gt; #include &lt;bitset&gt; #incl...

llmxby 511

BM线性递推

如果一个数列、其能够通过线性递推而来: 例如使用矩阵快速幂优化的 DP 大概都可以丢进去 则使用 BM 即可得到任意 N 项的数列元素 模板: #include <cstdio> #include <cstring> #include <cmath> #include <algorithm> #include <vector&g...

Jiandong 1177

BM算法

参考 https://en.wikipedia.org/wiki/Boyer%E2%80%93Moore_string_search_algorithm

多看多听多总结 1454

ACM算法总结 线性递推(BM)

BM算法,全称是Berlekamp-Massey算法,给出某个其次的线性递推数列的前面若干项,它可以自动算出这个齐次式,以及计算出后面第 K 项的值。我依然不理解这个算法,这里只是记录一下有这个东西。 代码: const int maxn=40005; const LL M=998244353; struct linear_sequence { LL res[maxn],base[maxn],_c[maxn],_md[maxn]; VI Md; LL ksm(LL x,LL n..

dragonylee的博客 1162

BM线性递推模板【黑科技】

#include &lt;cstdio&gt; #include &lt;cstring&gt; #include &lt;cmath&gt; #include &lt;algorithm&gt; #include &lt;vector&gt; #include &lt;string&gt; #include &lt;map&gt; #include &lt;set&gt; #i

running_acmer的博客 1199

dls的BM算法模板(线性递推问题,解决矩阵快速幂解决不了的问题)

模板:往里面扔数就可以了(据说&gt;=8个?)%%%dls https://www.cnblogs.com/zzqsblog/p/6877339.html #include&lt;bits/stdc++.h&gt; using namespace std; #define rep(i,a,n) for (int i=a;i&lt;n;i++) #define per(i,a,n) for ...

xuanweiace的博客 1854

BM求线性递推式

只能解决常系数线性递推式 要求数域中每个的非0数存在乘法逆元 #include&lt;bits/stdc++.h&gt; using namespace std; #define rep(i,a,n) for (int i=a;i&lt;n;i++) #define pb push_back #define mp make_pair #define SZ(x) ((int)(x).size(...

蒟蒻 lxw的博客 1649

【学习笔记】Berlekamp-Massey算法

【算法简介】Berlekamp-Massey算法,常简称为BM算法,是用来求解一个数列的最短线性递推式的算法。BM算法可以在\(O(N^2)\)的时间内求解一个长度为\(N\)的数列的最短线性递推式。在当今OI竞赛界,尚没有很多BM算法的应用,但在一些输入的数很少的题目中,BM能够成为发掘题目性质的一大助力,甚至有可能直接解出答案的线性递推式,不失为一种不错的工具。【算法流程】对于数列\(\{a_...

cz_xuyixuan的博客 2万+
上一篇: Atcoder AGC050
下一篇: 伯努利数 仓鼠的数学题
Defener
博客等级 码龄6年 8粉丝 39原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值