快去膜神仙
特征多項式
定義一個大小為$ 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)$