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 相比,但在多个单项式或有规律的多项式相乘时有奇效。

posted @ 2026-01-12 11:21  yemuzhe  阅读(0)  评论(0)    收藏  举报