矩陣加速遞推

2022-08-20 23:15:13 字數 1220 閱讀 2172

關於矩陣加速數列遞推:

給定乙個遞推數列 \(f[i] = a_1*f[i-1] + a_2*f[i-2] … a_k*f[i-k]\) ,我們普通計算的話肯定是逐個計算,複雜度較大。

我們可以用矩陣表示:

\[ \left[

\begin

f[i] \\

f[i-1] \\

… \\

f[i-k]

\end

\right]

\]為了遞推出 \(f[n]\) ,我們需要找到乙個係數矩陣 \(a\) 使得:

\[ \left[

\begin

f[i] \\

f[i-1] \\

… \\

f[i-k]

\end

\right]

=a\times

\left[

\begin

f[i-1] \\

f[i-2] \\

… \\

f[i-k-1]

\end

\right]

\]就可以這樣計算:

\[ \left[

\begin

f[n+k] \\

f[n+k-1] \\

… \\

f[n]

\end

\right]

=a^\times

\left[

\begin

f[k] \\

f[k-1] \\

… \\

f[1]

\end

\right]

\]通過矩陣快速冪來計算 \(a^n\) 可以減小複雜度,問題是如何找到乙個 \(a\) 矩陣

容易發現,\(a\)矩陣可以這樣構造:

\[ \left[

\begin

a_1 & a_2 & … & a_k-1 & a_k \\

1 & 0 & … & 0 & 0 \\

0 & 1 & … & 0 & 0 \\

… & … & … & … & … \\

0 & 0 & … & 1 & 0

\end

\right]

\]即第一行為係數,從 \(a_\) 開始的一條斜線為 \(1\), 其餘為 \(0\),這樣構造可以保證 \(f[i]\) 被計算出來了,而其餘的元素都繼承了上乙個矩陣的值。

至此,我們可以愉快地用矩陣加速遞推數列了。

矩陣性質 矩陣加速遞推

本文介紹線性代數中乙個非常重要的內容 矩陣 matrix 的乙個重要性質 矩陣加速遞推同時本文已經更新至 矩陣 matrix 系統介紹篇 斐波那契數列 fibonacci sequence 大家應該都非常的熟悉了。在斐波那契數列當中,f 1 f 2 1 f i f f i geq 3 如果有一道題目...

模板 矩陣加速(數列)(矩陣加速遞推)

a 1 a 2 a 3 1 a x a x 3 a x 1 x 3 求a數列的第n項對1000000007 10 9 7 取餘的值。輸入格式 第一行乙個整數t,表示詢問個數。以下t行,每行乙個正整數n。輸出格式 每行輸出乙個非負整數表示答案。矩陣加速裸題 和我的前一篇基本一模一樣 只不過改變了要乘的...

矩陣加速遞推 入門指南

首先是乙個例題,輸入n和m,問用1x2的方塊填滿4xn的格仔共有多少種方案數,答案對m取模。分析問題可以找出所有狀態,用乙個1x4的位表示一行的方塊情況,0表示暫時為空,1表示恰好填入方塊。雖然4個二進位制位共有16中可能,但是合法的方案數實際只有6中,0000 0011 0110 1001 110...