矩陣快速冪的學習記錄

2021-08-14 23:39:18 字數 1978 閱讀 3417

關於矩陣快速冪的相關題目的思考:

1. 第乙個問題是關於看到的一道題意較為簡單的矩陣快速冪的題目:problem of precision,就是讓求(

5+2*sqrt(6))^n

,由於他的

n次方一定為這樣的形式

xn+yn*sqrt(6)

。這樣可以由

(xn-1+yn-1*sqrt(6))*(5+2*sqrt(6))

直接得到第

n項和第

n-1項之間的係數關係,進而得到矩陣:

5 12  *  (

xn-1,yn-1)^t=(xn,yn)^t

2 5

這些都不是難點,問題是為什麼用矩陣求得的係數不能直接用來乘sqrt(6),而是轉換一下?首先,我為什麼思考這個問題有二,首要是博主沒有直接給出原因,說自己這樣做很蠢,然後就是這個係數轉換的工作似乎並不好想,而且不是適用於所有類似的題目,這樣不能用就很坑了,明明都是推出來的,為什麼

xn可以用

yn就不可以用。於是我也很蠢的試了一下,果然樣例都過不去,正要回頭去看資料怎轉化的時候,突然想到了會不會是

mod的原因,因為做係數運算的時候可不帶著這個

sqrt(6),

可能會引起該進製的地方沒有進製,這樣就很坑了。於是把

mod去掉,果然與推得的結果完全相同,思考正確。

然後就是另外乙個問題,也就是如何轉換?首先我們知道根號和mod在做係數運算的時候不能同時存在,會引起進製的問題。那麼我為什麼說這個轉換方式適用面比較窄呢?因為利用共軛的性質進行的轉換對這個題目的型別有嚴格的要求,那就是括號裡的數共軛之後一定小於

1 且大於

0。共軛的性質是:可以自由出入運算符號,於是就有:(

a+b*sqrt)^n+(a-b*sqrt)=2xn,

由於取共軛之後小於1大於

0,要求為向下取整,所以所得結果為

2xn-1

。2. 

若用矩陣a表示乙個圖,有邊則為

1,無邊則為

0,那麼從乙個點s過

k個點t的方案總數為,

a^k後

a[s][t]

的值。第二次見這個知識點,雖然美學離散數學的我一臉懵逼,但是這次讓我對上次那個題目有了一些理解。就是為什麼從自己到自己,當然自己到自己了,因為成環唄。所以對角線元素加一起就是方案總數。同時就有了個疑問,為什麼依然是

k次方,而不是

k+1次方,畢竟要回到自己。轉念一想,經過

k點,那本來就不算自己吧,最後再算上

...不知道這樣解釋是不是有點牽強。

構造矩陣的方法總結:

其實這裡不能說構造矩陣的方法,而應該說是找遞推式的方法。矩陣的構造其實並不是件難事,一般根據遞推式,列出相應的列向量,然後列出這個列向量的下一階,然後根據遞推關係確定矩陣即可。而且最終的矩陣並不是唯一的,這也就是說矩陣的構造不難的原因。

那麼,遞推關係應該怎麼找呢?我看過的題目大概有這樣幾種情況:

1. 裸給出遞推關係(這樣的題就是純考你知不知道矩陣快速冪怎麼寫的,實在沒什麼意思,也就是所謂的入門題,一開始最喜歡看的題種,看多了就覺得掉價了。)。

2. 隱式的給出推倒遞推關係所需要的其他一些關係式,然後讓你自己推。這種題目主要是認清你有什麼,還有什麼條件沒用,用這個條件能得到怎麼樣的關係。個人認為這類題目裡面比較好的乙個題目是:another kind of fibonacci,這個題目雖然過程複雜,但對找關係是個很好的鍛鍊。

3. 給出一種環境,根據環境推導。我覺得一般靠環境推的不多,倒是靠樣例(主要這種題一看給的資料要求特別大,而且好像這項跟之前有些關係),不行可以待定係數,最多也就是跟前面兩三項有關係,不行再加上個常數,然後根據環境調整你待定出來的公式,這樣反而好找。

4. (a+sqrt(b))^n型別,這種型別的題目一種常見的解就是遞推矩陣加共軛關係,上面已經說過,後來也有過題目驗證過思路的正確性。還有一種利用共軛關係的方法,由於知道要求

2*xn

,那麼就可以找這個和上乙個的關係解決,也就轉換成了

2中找遞推關係的題目,當然,這個比較難想。

快速冪 快速矩陣冪學習

快速冪學習 計算3 11 如果用傳統計算,則是 for i 11 s 3 速度為n 這裡利用快速冪思想 3 11 3 1 3 2 3 8 3 1的平方就是3 2,再平方就是3 8 最後再將他們乘起來就是求出來的數了,速度也達到了log n 演算法中我們可以先判斷冪指數是否為奇數,先乘乙個3,然後對剩...

矩陣快速冪學習

矩陣快速冪和普通快速冪道理一樣,主要用來加速數列的遞推,關鍵在於構造矩陣。這幾個部落格的板子挺好 題目 落谷模板題p1939 貼個 吧,沒用過載 include include include include using namespace std typedef long long ll cons...

快速冪(矩陣快速冪)

求 3 0 3 1 3 n mod 1000000007 input 輸入乙個數n 0 n 10 9 output 輸出 計算結果 sample input 3sample output 40 分析 利用等比數列的求和公式得所求和是 3 n 1 1 2,如果暴力求3 n 1 會超時,這裡引入快速冪來...