当前位置: 首页 > news >正文

矩阵,递推与2BM

以下默认小写字母 \(\mathbf{a},\mathbf{b}\) 等表示的向量是一个行向量,\(\mathbf{1}\) 表示全 \(1\) 行向量,\(\operatorname{diag(\mathbf{a})}\) 表示一个大小 \(|\mathbf{a}|\times |\mathbf{a}|\) 的矩阵,满足 \((i,i)=a_i\) 且其余项为 \(0\)

缘起:模拟赛题被AI爆标了,原因竟然是:

\(\mathbf{a}\times A^{t}\times \mathbf{b^T}\) 的值。

其中 \(A=\mathbf{1^T}\mathbf{c}+\operatorname{diag(d_0,d_1\dots d_{n-1})}\)

这样特殊的矩阵需要用一些技术处理,下面先了解这些技术。

常系数齐次线性递推

目前只涉及求 \(n\) 阶齐次线性递推数列 \(f\) 的第 \(m\) 项。

一般我们需要解决这样的问题:

\[f_m=\sum_{i=m-n}^{m-1}f_ig_{m-i} \]

给定递推系数 \(g_1\sim g_{n}\) 以及初始项 \(f_0\sim f_{n-1}\)

观察到这个样子很卷积啊:

\[f_m+\sum_{i=m-n}^{m-1}f_i(-g_{m-i})=0 \]

建立 \(G(z)=1-\sum_{i=1}^nz^ig_i\),或者说设 \(g'_0=1,g'_i=-g_i\)

\(F(z)=\sum_{i=0}^{\infty}z^if_i\)

我们要求 \([z^m]F(z)\)

那么就有:

\[F(z)\times G(z)=R(z) \]

其中 \(R(z)=F(z)\times G(z)(\bmod x^n)\),因为阶数 \(\ge n\) 的项都没了。

因此,做一次长度为 \(n\) 的多项式乘法就可以求出 \(R(z)\) 了,紧接着:

\[F(z)=\frac{R(z)}{G(z)} \]

Bostan-Mori 算法求远处系数

正是求远处项系数,这是一个用递归理解的算法,每次规模减半。

\[\begin{aligned} [z^m]F(z)&=[z^m]\frac{R(z)}{G(z)}\\ &=[z^m]\frac{R(z)G(-z)}{G(z)G(-z)}\\ &=[z^m]\frac{U_{even}(z^2)+zU_{odd}(z^2)}{V(z^2)}\\ \end{aligned} \]

那么按 \(m\) 的奇偶性保留 \(U_{even}\) 或者 \(U_{odd}\),问题就只剩下全是平方项的多项式了,因此用 \(z^2\) 代替 \(z\),问题规模就减半了。

最终剩下上下两个常数,直接算逆元就行。

我们每一轮只会有两次多项式乘法,效率非常高。

 	cin>>m>>n;vector<int>f(n+1),g(n+1);for(int i=1;i<=n;++i){cin>>f[i];f[i]=-f[i];}f[0]=1;for(int i=0;i<n;++i)cin>>g[i];g=Mul(f,g);while(g.size()>1&&(g.back()==0||g.size()>n))g.pop_back();while(m){//[x^m]g/fvector<int>h=f;for(int i=1;i<h.size();i+=2)h[i]=p-h[i];vector<int>nf=Mul(h,f),ng=Mul(g,h);f.clear();g.clear();for(int i=0;i<nf.size();i+=2)f.push_back(nf[i]);    for(int i=(m&1);i<ng.size();i+=2)g.push_back(ng[i]);m>>=1;}cout<<g[0]*power(f[0],p-2)%p<<"\n";

矩阵快速幂与常系数齐次线性递推的转化

这是一个很重要的观察:若存在多项式 \(F(z)\),满足 \(F(A)=0\),那么我们称多项式 \(F\) 为矩阵 \(A\) 的零化多项式。

关于零化多项式的更多细节,[请移步](零化多项式 - spdarkle - 博客园)

黑科技:2BM算法

http://www.jsqmd.com/news/278275/

相关文章:

  • 如何让大模型后训练工作更扎实?打造solid大模型后训练的完整方法论!
  • BluetoothDesktopHandlers.dll文件丢失找不到 免费下载方法分享
  • 2026抚顺市英语雅思培训辅导机构推荐;2026权威出国雅思课程排行榜
  • 还在用多线程?Python异步编程已成主流,5个理由告诉你必须转型
  • bootstr.dll文件丢失找不到问题 免费下载方法分享
  • 2026年上海弯管机认证厂家排行榜,看看哪个口碑好!
  • 2026年AI行业火爆,普通人如何抓住机遇?揭秘2026年春季招聘中的高薪AI岗位!
  • BootCriticalUpdatePlugin.dll文件丢失找不到 免费下载方法分享
  • 从业务系统的奇怪问题,看银行的数据架构
  • 2026大连市英语雅思培训辅导机构推荐,2026权威出国雅思课程排行榜
  • 2026年背单词软件推荐:智能学习趋势深度排名,涵盖碎片化与系统化记忆场景
  • 【高性能Python编程必修课】:深入剖析多线程与多进程的真实应用边界
  • 2026年背单词软件推荐:基于多场景深度评测,解决遗忘与效率痛点并附排名
  • 题目1119:C语言训练-“水仙花数“问题1
  • 上海市英语雅思培训辅导机构推荐,2026权威出国雅思课程中心学校口碑排行榜
  • python笔记-界面开发
  • SonarQube Server 2025.6.1.117629 - 代码质量、安全与静态分析工具
  • 股票分析:Python 爬取同花顺股票数据(技术指标提取)
  • Claude code--使用心得
  • 2026年锯片式分板机国产品牌排行榜上的优质品牌
  • 揭秘高频验证码识别难题:5大技术方案彻底破解反爬机制
  • MES看板数据对应的js脚本
  • 【大模型学习】LLM、RAG、MCP、AI Agent:图文详解
  • 2026六安市英语雅思培训辅导机构推荐;2026权威出国雅思课程排行榜
  • 论文写作“数据炼金术”:书匠策AI如何让你的分析秒变学术黄金
  • 从挫折到成功:我的机器学习转型日记
  • 数据魔法师:书匠策AI如何让论文分析从“炼金术”变“科学实验”——论文写作数据分析篇
  • 2026沈阳市英语雅思培训辅导机构推荐,2026权威出国雅思课程排行榜
  • VibeVoice部署全攻略:从镜像拉取到网页访问一步到位
  • 数据魔法师:书匠策AI如何用“代码炼金术”重塑论文写作的数据战场