fwt的再理解 与 k进制fwt
一. fwt 的本质
sh 的讲解很详细了,就不再写了
还是写一下吧...
构造二元函数 \(f(i,j)\) 满足:
-
\(f(i,j)f(i,k)=f(i,j \oplus k)\)
-
\(f(i,j)=\prod_{p} f(i_p,j_p)\) , \(i_p\) 表示 \(i\) 的二进制第 \(p\) 位的数 , \(j_p\) 同理
不难发现一组满足 (1) 的 \(f(0,0),f(0,1),f(1,0),f(1,1)\) 可确定所有的 \(f\)
并且, fwt 的本质即为:
\[\begin{bmatrix}
FWT(A'_0) & FWT(A'_1)
\end{bmatrix}
=
\begin{bmatrix}
FWT(A_0) & FWT(A_1)
\end{bmatrix}
\begin{bmatrix}
f(0,0) ~~~ f(0,1) \\
f(1,0) ~~~ f(1,1) \\
\end{bmatrix}
\]
ifwt 即为乘上逆矩阵
那么对于任意二元运算,我们只需构造相应的 \(f\) 矩阵和其逆矩阵即可。
而且可以发现,每一位的二元运算是可以不同的。
例题
二. k进制fwt
同理我们构造一个 \(k*k\) 的 \(f\) 矩阵满足 \(k\) 进制运算下上述性质
以 \(\otimes\) (异或) 卷积为例:
异或卷积本质上是一个 \(\%k\) 的循环卷积,发现 \(k\) 次单位根便是一组合法的解,矩阵如下:
\[\begin{bmatrix}
&\omega_{k}^{0\times 0} & \omega_{k}^{0 \times 1} & \cdots & \omega_{k}^{0 \times (k-1)} \\
&\omega_{k}^{1\times 0} & \omega_{k}^{1 \times 1} & \cdots & \omega_{k}^{1 \times (k-1)} \\
&\vdots & \vdots & \ddots & \vdots \\
&\omega_{k}^{(k-1)\times 0} & \omega_{k}^{(k-1) \times 1} & \cdots & \omega_{k}^{(k-1) \times (k-1)} \\
\end{bmatrix}\]
例题