cxy 在集训队论文《浅谈线性基在 OI 中的应用》4.1 节中不加证明地给出结论,对于长度为 \(2^m\) 的点值序列 \(a\),连续做两次 FWT 后得到的结果是 \(a\) 的每一项都乘上 \(2^m\),我们给出这个结论的证明。
首先回顾 FWT 的定义:\(\hat{a_i}=\sum\limits_{j=0}^{2^m-1}(-1)^{i\circ j}a_j\),其中 \(i\circ j\) 为两个向量的标准内积,等于 \(\operatorname{popcnt}(i\&j)\bmod 2\)。
写出做两次 FWT 后得到的式子:
经典套路是交换两项,得到:
不难发现标准内积的运算中模 \(2\) 是无关紧要的(因为底数是 \(-1\)),所以将其展开:
说明当 \(\operatorname{popcnt}(i\& j)\) 和 \(\operatorname{popcnt}(k\& j)\) 奇偶性相同时系数为 \(1\),否则为 \(-1\)。若对于某一位,\(i\) 和 \(k\) 在这位上取值相同,此时 \(j\) 在该位的取值是不重要的,我们只关心取值不同的位上取什么,即只考察 \(i\oplus k\)。由经典组合数学,得到:
前面的系数代表那些位可以任填。后面则是枚举 \(\operatorname{popcnt}((i\oplus k)\& j)\) 中有几个 \(1\),这个式子在子集反演中十分经典,在后面配上 \(1^{\operatorname{popcnt}(i\oplus k)-p}\) 后由二项式定理得到:
回到 FWT 的式子,可以发现当 \(i=k\) 时会产生 \(2^m\times a_i\) 的贡献,否则贡献为 \(0\)。
Q.E.D.