FWHT
我们假设要对一个单项式 \(x ^ k\) 进行长度为 \(2 ^ m\) 的 FWT,观察如下:
做到 \(x = f _ {j}\) 和 \(y = f _ {j + 2 ^ i}\) 时,若 \(k\) 的第 \(i\) 位为 \(1\),则 \(x' = x + y = x\),\(y' = x - y = x\);否则 \(k\) 的第 \(i\) 位为 \(0\),则 \(x' = x + y = y\),\(y' = x - y = -y\)。
这时候我们发现如果设点值为序列 \(A\),初始时 \(A = \langle 1, 1, \ldots, 1 \rangle\),依次考虑 \(k\) 的每一位,若第 \(i\) 为 \(1\) 则对于所有第 \(i\) 位为 \(1\) 的 \(j\),令 \(A _ j \leftarrow -A _ j\)。总结一下,最后得到的 \(A\) 的形式为 \(\langle (-1) ^ {\operatorname {popcount} (j \operatorname \& k)}\rangle\)。
如果对一个多项式 \(F (x)\) 进行 FWHT 呢?由于 \(\operatorname {FWT} (A + B) = \operatorname {FWT} (A) + \operatorname {FWT} (B)\),所以结果就是 \(\displaystyle \left\langle \sum _ {k = 0} ^ {2 ^ m - 1} (-1) ^ {\operatorname {popcount} (j \operatorname \& k)} F _ j \right\rangle\)。
这样复杂度是 \(\text O (4 ^ m)\) 的,无法与 FWT 相比,但在多个单项式或有规律的多项式相乘时有奇效。

浙公网安备 33010602011771号