常系数齐次线性递推学习笔记

求一个满足 k 阶齐次线性递推数列 ai 的第 n 项,即:

fn=i=1kaifni

n1018,k32000

使用矩阵乘法加速可以做到 O(k3logn) ,运用这一项科技,可以做到 O(klogklogn)

数列转化为生成函数

将该线性递推序列看作一个生成函数:

F(x)=i=0nfixi

将递推式也视为一个生成函数:

A(x)=i=0kaixi

显然有:

F(x)=F(x)A(x)+R(x)

其中 R(x) 为加以修正的常数项。进一步化式子,将其表示为分式形式。

F(x)=R(x)1A(x)

然后就可以用常系数齐次线性递推来优化了。ps. 分母那一坨东西也被叫做数列的特征方程。

常系数齐次线性递推

现在已经将所求数列转化成了一个生成函数的分式形式,所求即为:

[xn]F(x)=P(x)G(x)

接下来的一步非常巧妙!将其系数按照奇偶分开:

[xn]F(x)=P(x)G(x)G(x)G(x)

先看这个分母,将其视为一个整体显然是一个偶函数,因此其奇数项系数为 0 。将分子系数按照奇偶分开:

[xn]F(x)=xO(x2)+E(x2)G(x2)

n 按照奇偶性分类讨论,如果是奇数的话保留左边,否则保留右边不断递归下去,直到 n=0 也就是仅剩常数项为止。

多项式乘法使用 FFT 优化复杂度可以做到 O(klognlogk)

posted @   _YangZJ  阅读(87)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 【杂谈】分布式事务——高大上的无用知识?
点击右上角即可分享
微信分享提示
主题色彩