博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
特征多项式与常系数线性齐次递推学习笔记
阅读量:6824 次
发布时间:2019-06-26

本文共 1169 字,大约阅读时间需要 3 分钟。

特征多项式

定义一个大小为$ k$矩阵$ M$的特征多项式$ P$要求满足

$$ \sum_{i=0}^k P_iM^i=0$$

其中$ 0$是一个全$ 0$矩阵

Cayley-Hamilton定理

一个矩阵$ P$的特征多项式为

$$P(\lambda)=|\lambda E-M|=\lambda^n+P_1\lambda^{n-1}+P_2\lambda^{n-2}+...+P_n$$

其中$ E$是单位矩阵,$ |\lambda|$表示$ \lambda$的行列式

显然有$P(A)=0$

快速求一般矩阵的特征多项式

暴力插值+消元是$ O(n^4)$的

有$ O(n^3)$的奇妙做法

咕咕咕

常系数线性齐次递推

就是给定转移式$ f_i=\displaystyle\sum_{j=1}^k a_j f_{i-j}$求$ f_n$

$ n \leq 10^9 k \leq 5·10^4$

直接矩阵快速幂是$ k^3 \log n $的,显然无法通过

这类转移矩阵$ M$有一个非常好的性质:其特征多项式$ P(\lambda)=\lambda^k-\lambda^{k-1}a_1-\lambda^{k-2}a_2-..-a_k$

证明

将行列式第一行展开

咕咕咕

食用方法

对于该矩阵的特征多项式式$ P$有$ P(M)=0$

因此有$ M^k=a_1M^{k-1}+a_2M^{k-2}+..+a_k$

这意味着我们可以通过降次将$ M^n$转化成$ b_0+b_1M+b_2M^2+..+b_kM^k$

我们令$ M^n$的系数多项式为$ b$

显然矩阵的乘积等价于对应系数多项式的乘积

即设$ M^x$的系数多项式为$ a$,$ M^y$的系数多项式为$ b$

则$ M^{x+y}$的系数多项式为$ a*b$

初始令$ M$的系数多项式为$ \{0,1,0,0..0\}$然后快速幂即可

诶等等..这样求多项式快速幂的话..多项式的长度不会过长吗..?

回到原特征方程式,我们发现$ P(M)=0$

意味着我们可以对求出来的系数多项式进行任意的加减特征多项式

即我们可以对特征多项式进行取模操作,将系数多项式的长度控制在$ k+1$

计算答案

如果我们用系数多项式化出原矩阵的话复杂度还没有优化到最优

发现我们只是要求一个向量乘上前$ k$个矩阵

而前$ k$个矩阵只有对应位置上有值

因此答案就是$ \displaystyle\sum_{i=0}^k b_if_i$

其中$ b$是$ M^n$的系数多项式的对应位系数

用多项式板子优化复杂度可以达到$ O(n \log n \log k)$ 

转载于:https://www.cnblogs.com/DreamlessDreams/p/10247864.html

你可能感兴趣的文章
滑动窗口的最大值
查看>>
[转]BT常用渗透命令
查看>>
面向.Net程序员的前端优化
查看>>
HTTPS到底是个什么鬼?
查看>>
Yii框架中ActiveRecord使用Relations
查看>>
leetcode 55.跳跃游戏
查看>>
flexPaper +swftools实现文档在线阅读
查看>>
分形树的绘制
查看>>
loadrunner请求中有汉字 如何编码
查看>>
java数据结构 • 面向对象 • 异常 • 随机数·时间
查看>>
springmvc 实现pc端手机端适配(同一个请求根据不同客户端展示不同界面)
查看>>
BTree和B+Tree详解
查看>>
VS2005工程迁移到Eclipse CDT
查看>>
Linux高端内存映射(上)【转】
查看>>
usb_control_msg参数详解【转】
查看>>
8086汇编指令速查手册
查看>>
j2EE web.xml中的url-pattern的映射规则
查看>>
带输入输出参数的存储过程
查看>>
字符编码简介
查看>>
LevelDB源码之六缓存机制
查看>>