轉置原理

Fido_Puppy發表於2024-05-30

一、轉置原理

若對於一個 \(n\times m\) 的矩陣 \(M\),存在一個線性演算法能夠對於給定的 \(m\) 維列向量 \(a\),求出 \(b = Ma\),則一定存在一個線性演算法能夠在同時間複雜度內,對於一個給定的 \(n\) 維列向量 \(b\) 求出 \(a = M^T b\)

若第一個演算法的過程為 \(b = A_k A_{k-1}\cdots A_2 A_1 a\),那麼第二個演算法的過程只需要 \(a ={A_1}^T {A_2}^T \cdots{A_{k-1}}^T {A_k}^T b\) 即可。

二、一些演算法的轉置

2.1 多項式多點求值

給定一個 \(n\) 次多項式 \(f(x)\) 以及 \(m\) 個點值 \(a_1, a_2, \ldots, a_m\),對於 \(i \in [1,m]\),求出 \(f(a_i)\)

\(\displaystyle f(x)=\sum_{i=0}^n b_ix^i\)

令向量 \(\displaystyle a=\begin{bmatrix}b_0\\b_1\\\vdots\\b_{n-1}\\b_n\end{bmatrix}\),矩陣 \(\displaystyle M=\begin{bmatrix}1 & a_1 & \cdots & {a_1}^n \\ 1 & a_2 & \cdots & {a_2}^n \\ \vdots & \vdots & \ddots & \vdots\\ 1 & a_{m-1} & \cdots & {a_{m-1}}^n \\ 1 & a_m & \cdots & {a_m}^n \end{bmatrix}\),則原問題相當於求出 \(b = Ma\)

考慮其轉置演算法,對於一個給定的 \(m\) 維向量 \(\displaystyle b=\begin{bmatrix}c_1\\c_2\\\vdots\\c_{m-1}\\c_m\end{bmatrix}\),有矩陣 \(\displaystyle M^T = \begin{bmatrix}1 & 1 & \cdots & 1 \\ a_1 & a_2 & \cdots & a_m \\ \vdots & \vdots & \ddots & \vdots\\ {a_1}^{n-1} & {a_2}^{n-1} & \cdots & {a_m}^{n-1} \\ {a_1}^n & {a_2}^n & \cdots & {a_m}^n\end{bmatrix}\),即求 \(a = M^T b\)

那麼轉置演算法相當於 \(\forall i \in [0,n]\),求 \(\displaystyle [x^i]\sum_{j=1}^m \frac{c_j}{1-a_jx}\),這可以利用分治 NTT 在 \(\Theta(n \log^2 n)\) 的時間複雜度內求出。

相關文章