特征多项式

特征多项式与常系数线性齐次递推

通常来讲,这个东西是用来优化能用矩阵乘法优化的递推式子的。优化

一般,这种递推式子的特征是在齐次的条件下,转移系数也能够经过递推获得。it

对于这样的递推,一般解法为$O(NK)$的递推或者$O(k^3\log n)$的矩阵乘法,可是有些**毒瘤**的出题人~~吉老师~~,会将这样的递推强行出成$K\le 1000$,特别,对于常系数线性齐次递推有些出题人甚至会出成$20000$!lambda

这样,就须要引入一个很是有趣~~头秃~~的概念:特征多项式。方法

首先,咱们须要介绍$Cayley-Hamilton$定理im

对于一个$n$阶的一个方阵,它的特征多项式为$p(\lambda)=|\lambda E-A|=\lambda^n+b_1\lambda^{n-1}+b_2\lambda^{n-2}+...+b_n$时间

那么显然:$p(A)=0$time

也就是说:$A^N+b_1A^{n-1}+...+b_n=0$,即$p(\lambda)$为原多项式的化零多项式。手册

所以,这个特征多项式能够经过高斯消元及拉格朗日插值求出。ps

求矩阵的特征多项式

一个$O(n^4)$的作法

显然,咱们获得的特征多项式是一个$n$阶多项式,那么只须要知道$n+1$个点的点值就能够获得了。

也就是,咱们把$n+1$个数代入$|\lambda E-A|$中(做为$\lambda$),而后暴力高斯消元便可获得一个矩阵的特征多项式。

那么,接下来,只须要拉格朗日插值便可。

这个作法做为一个$n^4$的作法其实想要卡掉矩阵乘法是很难的,除非将递推的项数放到$10^{1000}$这样的级别,如[BZOJ4162]

那么接下来,咱们考虑刚刚的作法可否被优化。

显然,每次$n^3$求矩阵行列式太慢了。

一个$O(n^3)$的作法

对于这样的矩阵:$A=P\times B\times P^{-1}$

称$A,B$是类似的,也就是说,对于$A,B$的特征多项式相同。

构造仍是很容易的,只须要保留每行与每行之间的关系便可。

对于这样的矩阵,咱们称之为上海森堡矩阵。

$\begin{pmatrix} a_{1,1}&a_{1,2}&a_{1,3}&\cdots&a_{1,n}\\ a_{2,1}&a_{2,2}&a_{2,3}&\cdots&a_{2,n}\\ 0&a_{3,2}&a_{3,3}&\cdots&a_{3,n}\\ \vdots&\vdots&\vdots&\ddots&\vdots\\ 0&0&0&\cdots&a_{n,n} \end{pmatrix}$

那么,对于这样的矩阵,求行列式的时间复杂度就降为$n^2$了!

而后,总时间复杂度为$n^3+n^2\log m$,或者为$n^3+n\log n \log m$(并没有卵用),而后对于$n^3 \log m$的矩阵乘法构成了鲜明的优点(大雾

显然,其实上面的东西没有那么有用...

可是仍是有必要知道的,万一他卡你呢?

常系数线性齐次递推的矩阵的特征多项式

定义:递推式为$f_i=\sum\limits_{j=1}^na_j\times f_{i-j},i>n$的递推。

讲道理,这个东西才很是有用...

对于全部的常系数线性齐次递推来讲,它们的矩阵形态相似,一样,他们的特征多项式也相似...

其实手画一下就能够发现,它们的特征多项式都是$p(\lambda)=\lambda^n-a_1\lambda^{n-1}-a_2\lambda^{n-2}-...-a_n$

按照行列式的定义展开式子退一下就获得啦!

特征多项式的使用手册

其实,使用方法很简单啦,就是运用以前获得的特征多项式性质,$p(A)=A^N+b_1A^{n-1}+...+b_n=0$

那么,对于这样的式子,就能够作到将全部的$A^K$用$A^0\sim A^n$的矩阵线性表达出来了。

$A^{x+y}=A^x \times A^y$

那么$A^x=\sum\limits_{i=0}^n b_i\times A^i,A^y=\sum\limits_{i=0}^nc_i\times A^i$

也就是:$A^{x+y}=\sum\limits_{i=0}^n\sum\limits_{j=0}^nb_i\times c_{j}\times A^{i+j}$

由于有:$p(A)=0$也就是说:$A^{x+y}=\sum\limits_{k=0}^{2\times n}(\sum\limits_{i=0}^{\min(n,k)}b_ic_{k-i})A^k \mod p(\lambda)$

而后显然,能够用倍增(其实就是快速幂)上述操做,也就是咱们获得了一个$n^2\log m$复杂度的递推。

对于上述暴力操做能够用$NTT$或$FFT$优化上述多项式相乘和多项式取模。

也就是说,咱们获得了一个$n\log n \log m$的优秀作法!(拿头写啊

关于答案

$A^x=\sum\limits_{i=0}^n b_i\times A^i$

这个式子已经给咱们答案了,也就是说,这个矩阵的前$n$项加上系数相加便可,可是显然这个东西是$n^4$的

若是要求$f_m$的话,这个东西只须要用到$f_0\sim f_n$便可

若是求矩阵的话,仍是老老实实的一个一个乘吧...

例题.jpg

求矩阵特征多项式裸题:[BZOJ4162]

常系数线性齐次递推$n^2\log m$裸题:[BZOJ4161]

高难度的东西:[NOI 2017 泳池]

附件

NOI 2017 泳池 题解

对我来讲,可能我只能接受$k\le 2000$,若是再大就想要打人了...

首先70分的暴力基本雷同[UNR 2 积劳成疾](http://uoj.ac/problem/311)

大概就是推一个$f[i][j],s[i][j]$便可,[我不想再写一遍了](https://winniechen.cn/?p=152)

剩下的就是能够把这个转移写成矩阵的形式,而后就能够拿到优秀的$90$分了。

最后,根据上面的东西,优化一下就能够AC掉这道题了!

相关文章
相关标签/搜索