1. 程式人生 > >矩陣快速冪中矩陣的構造技巧

矩陣快速冪中矩陣的構造技巧

對於出現線性遞推的題目,當直接暴力計算的複雜度太高時,我們可以考慮用矩陣快速冪進行加速。

因為雖然矩陣乘法的複雜度為O(n^3),但是通過二進位制分解,整體的複雜度變成了 log(n^3) = 3logn = O(logn),複雜度是對數級別的,非常小。

但是矩陣快速冪的難點就是在如何構造矩陣來完成計算。

因為矩陣快速冪是用來加速線性遞推的,所以最核心的部分就是線性遞推公式

最經典的就是斐波那契數列的遞推: f(n) = f(n-1) + f(n-2);

其對應的矩陣就是       f(n+1)      1    1          f(n)

                                      f(n)  =    0    1     *   f(n-1)

可以發現,左面是個常數矩陣,而右面的列向量中每一項就是遞推公式中的依賴項。

當遞推公式中出現常數時,我們只需在右面的列向量中加入個常數1,即可。

剩下的就是我們如何去構造左面的常數矩陣。其實給出了右面的列向量,我們在根據題中的遞推公式,在左面的常數矩陣中填入對應的常數即可。

這樣,這個問題就圓滿的解答了。