引入:
對於遞推方程:
$$F(x) = \sum_{i=1}^k a_iF(x-i)$$
我們顯然會得到一個關於$F$的多項式求逆或者矩陣遞推式,大多數情況下我們都是用后者,但是當$k$很大的時候,$k^3log n$的時間復雜度我們是吃不消的,那么自然我們的前人就搞出了一些優化。
特征多項式及Cayley-Hamilton定理:
一、特征多項式的定義:
設$A$是$n$階矩陣,若數$\lambda$和非零列向量$x$使關系式$$Ax=\lambda x\;\;\;\;\;(1)$$
成立,那么,這樣的數$\lambda$稱為矩陣$A$的特征值,非零向量$x$稱為$A$的對應於$\lambda$的特征向量。
(1)式也可寫成$$(A-\lambda E)x=0$$
此式有非零解(即存在$x$)的充分必要條件是其行列式$$|A-\lambda E|=0\;\;\;\;\;\;(2)$$
(1)式可以看作以$\lambda$為未知數的一元$n$次方程,稱為$A$的特征方程,(2)式是關於$\lambda$的$n$次多項式$\phi(\lambda)$,稱為$A$的特征多項式。
二、矩陣的多項式:
(矩陣的多項式不等於矩陣多項式,讀者若想了解請自行百度)
即對於$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)$$
三、Cayley-Hamilton定理:
對於$A$的特征多項式$\phi(\lambda)$,有$$\phi(A)=0$$
由於筆者能力所限,其證明請讀者自行百度。
P.S:覺得吧……其實考慮到$\phi(A)=|A-AE|=|0|=0$,感覺這個也是很顯然的吧……(評論說不可以這樣證……我是不是誤導了什么)
$n$階常系數齊次線性遞推矩陣的特征多項式求法:
一、結論(懶人專用)
$$\phi(\lambda)=(-1)^n(\lambda^n-\sum_{i=1}^n a_i\lambda^{n-i})$$
其中$a$為遞推方程中給出的遞推系數。
二、證明
那么我們考慮此時行列式如何去求($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})$$
常系數齊次線性遞推:
一、多項式引入:
我們設$$x^{n}=f(x)g(x)+h(x)$$
其中$g(x)$為已知多項式,那么我們就可以通過多項式除法以及多項式取模來得到$f(x)$以及$h(x)$。
二、帶入矩陣:
我們將$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)$$
三、如何計算:
考慮$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)\}$$
四、時間復雜度
若只是計算$F$的某一項,那么時間復雜度上界在於如何去求$F$的前$2k$項和以及$h$。
顯然$h$由多項式取模方法時間復雜度為$k^2logn$或$klogklogn$。
而$F$可以$klogk$或者$k^2$處理。