「常系数齐次线性递推」——矩阵快速幂的优化

  

引入:

  对于递推方程:算法

  $$F(x) = \sum_{i=1}^k a_iF(x-i)$$优化

  咱们显然会获得一个关于$F$的多项式求逆或者矩阵递推式,大多数状况下咱们都是用后者,可是当$k$很大的时候,$k^3log n$的时间复杂度咱们是吃不消的,那么天然咱们的前人就搞出了一些优化。spa

特征多项式及Cayley-Hamilton定理:

1、特征多项式的定义:
blog

  设$A$是$n$阶矩阵,若数$\lambda$和非零列向量$x$使关系式$$Ax=\lambda x\;\;\;\;\;(1)$$百度

成立,那么,这样的数$\lambda$称为矩阵$A$的特征值,非零向量$x$称为$A$的对应于$\lambda$的特征向量。lambda

  (1)式也可写成$$(A-\lambda E)x=0$$方法

此式有非零解(即存在$x$)的充分必要条件是其行列式$$|A-\lambda E|=0\;\;\;\;\;\;(2)$$im

  (1)式能够看做以$\lambda$为未知数的一元$n$次方程,称为$A$的特征方程,(2)式是关于$\lambda$的$n$次多项式$\phi(\lambda)$,称为$A$的特征多项式。img

2、矩阵的多项式:时间

  (矩阵的多项式不等于矩阵多项式,读者若想了解请自行百度)

  即对于$m$次多项式$f(x)$,将矩阵$A$看做未知数,此时$$f(A)=a_0E+a_1A+\dots +a_mA^m$$,记$f(A)$为$A$的$m$次多项式。其运算知足交换律,即$$f(A)g(A)=g(A)f(A)$$

3、Cayley-Hamilton定理:

  对于$A$的特征多项式$\phi(\lambda)$,有$$\phi(A)=0$$

因为笔者能力所限,其证实请读者自行百度。

  P.S:以为吧……其实考虑到$\phi(A)=|A-AE|=|0|=0$,感受这个也是很显然的吧……

$n$阶常系数齐次线性递推矩阵的特征多项式求法:

1、结论(懒人专用)

  $$\phi(\lambda)=(-1)^n(\lambda^n-\sum_{i=1}^n a_i\lambda^{n-i})$$

  其中$a$为递推方程中给出的递推系数。

2、证实

  

 

  那么咱们考虑此时行列式如何去求($a_{i,j}$表示以上行列式的第$i$行第$j$列的元素):

  先考虑这样一件事实:

  若咱们在前i列的选择元素的最大行数也为i,那么接下来的列只能选择对角线上元素,不然其最大行数必定为i+1,此时下一列即i+1列咱们能够选择第一行或者第i+2行的元素

该事实读者能够自行证实。    

  假设咱们选了$a_{1,1}$,由以上事实,咱们只能选择对角线元素,那么此时结果为$$(-1)^n\lambda^n$$。

  不然选取$a_{2,1}$由以上事实,咱们会获得一个$dfs$,直到在第$i$列时选取了$a_{1,i}$,此时获得结果为$$a_{1,i}*(-\lambda)^{n-i}*(-1)^{i-1}=a_{1,i}*(-1)^{n-1}\lambda^{n-i}$$

综上所述:

  $$\phi(\lambda)=(-1)^n(\lambda^n-\sum_{i=1}^{n}a_i\lambda^{n-i})$$

常系数齐次线性递推:

1、多项式引入:

  咱们设$$x^{n}=f(x)g(x)+h(x)$$

其中$g(x)$为已知多项式,那么咱们就能够经过多项式除法以及多项式取模来获得$f(x)$以及$h(x)$。

2、带入矩阵:

  咱们将$k$阶$A$视为未知量,则有$$A^n=f(A)g(A)+h(A)$$

咱们考虑若$g(A)=\phi(A)=0$那么,此时有$$A^n=h(A)=\sum_{i=0}^{k-1} h_i A^i\;\;\;\;\;\;(3)$$

3、如何计算:

  考虑$A^n$咱们已经表示出来了,可是,咱们发现此时算法复杂非但没有减小,反而增长为$k^4$。

  咱们设$k*1$矩阵$$B_i^T=\{F(i+k-1),F(i+k-2),\dots ,F(i)\}$$

  咱们给式(3)等式两边同时乘上$B_1$,即$$A^nB_1=h(A)B_1$$

  化简获得$$B_{1+n}=\sum_{i=0}^{k-1}h_i B_{1+i}$$

  $$B_{1+n}^T=\{B_{n+k},\dots\,B_{n+1}\}=\{\sum_{i=0}^{k-1}h_iF(i+k),\dots ,\sum_{i=0}^{k-1}h_iF(i+1)\}$$

4、时间复杂度

  若只是计算$F$的某一项,那么时间复杂度上界在于如何去求$F$的前$2k$项和以及$h$。

  显然$h$由多项式取模方法时间复杂度为$k^2logn$或$klogklogn$。

  而$F$能够$klogk$或者$k^2$处理。  

相关文章
相关标签/搜索