特徵多項式

特徵多項式與常係數線性齊次遞推

通常來講,這個東西是用來優化能用矩陣乘法優化的遞推式子的。優化

一般,這種遞推式子的特徵是在齊次的條件下,轉移係數也能夠經過遞推獲得。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掉這道題了!

相關文章
相關標籤/搜索