Xor-FWT 的另一種理解方式

Estruct發表於2024-10-31

Xor-FWT 的另一種理解方式

學習 \(\text{Fennec's Algorithm}\) 的額外收穫,順手記錄一下。

假設我們要求兩個長度為 \(n\) 的陣列的異或卷積,為方便起見令 \(n = 2^m\),也就是類似下面的形式

\[C_k = \sum\limits_{i \oplus j} A_i \times B_j \]

考慮構造 \(\mathbb{Z}_2^n\) 中的向量表達異或運算。對於兩條向量 \(u, v\),它們的加法 \(u + v\) 恰好就是原本的 \(i \oplus j\)(因為是 \(\bmod 2\) 意義下所以自然不會進位)。

類似的定義向量點乘 \(u \cdot v = u_0 \times v_0 + u_1 \times v_1 + \ldots u_{m - 1} \times v_{m - 1}\),同樣是在 \(\bmod 2\) 意義下。所以結果相當於 \(\text{pocount}(i \ \text{and} \ j) \bmod 2\)。我們發現其恰好對應 \(\text{FWT}\) 的貢獻係數。下面簡記 \(\langle i, j \rangle = \text{pocount}(i \ \text{and} \ j) \bmod 2\)

\(\hat{A}_i = \sum\limits_{j} A_i (-1)^{\langle i, j \rangle}\)\(\text{Xor-FWT}\) 的主流程即將 \(\hat{A}\)\(\hat{B}\) 的對應位置乘起來,得到 \(\hat{C}\)

現在考慮 \(A_u\)\(\hat{A}_w\) 的貢獻,係數為 \((-1)^{u \cdot w}\),類似的 \(B_v\)\(\hat{B}_w\) 的貢獻係數 \((-1)^{v \cdot w}\),而對應位置係數相乘相當於指數相加,即 \(A_u \times B_v\)\(C_w\) 的貢獻係數 \((-1)^{(u + v) \cdot w}\),即先將 \(u\)\(v\) 做異或卷積(\(u + v\)),再考察其對 \(\hat{C}_w\) 的貢獻。

相關文章