记号

  • \(\otimes\) 代表或/与/异或卷积
  • \(\oplus\) 代表“拼接”,例如 \(A\oplus B\) 即将 \(B\) 接在 \(A\) 的后面;
  • \(+,-,\times\) 代表按位运算,例如 \(A+B=\{a_0+b_0,a_1+b_1,...,a_n + b_n\}\);
  • \(F(A)\) 代表 \(A\) 进行 fwt 后的序列;
  • \(A_0\) 代表 \(A\) 的前半部分,\(A_1\) 代表 \(A\) 的后半部分,\(A_0\oplus A_1 = A\)

或卷积

直接给出或FWT的递归形式:

\[F(A)=\begin{cases}F(A_0) \oplus F(A_0+A_1)&|A| > 1\\A&|A|=1\end{cases}
\]

接下来是一些性质:

  • \(F(A + B) = F(A) + F(B)\),这一点比较明显;
  • \(F(A\otimes B)=F(A) \times F(B)\),直接证明比较麻烦,我们考虑归纳证明。

易知在 \(|A| = |B| = 1\) 时,上述结论成立。

假设已经证明了对于 \(|A| = |B| = \frac n2\) 上述结论成立,下证对于 \(|A| = |B| = n\) 成立。

首先一个简单的分析——考虑 \(A_0\) 和 \(A_1\),其实下标上只有最高位上 \(A_0\) 是 \(0\),\(A_1\) 是 \(1\) 的区别。然后我们再考虑 \((A \otimes B)_0\),既然是或卷积,最高位是 \(0\),那肯定参与的下标都是最高位为 \(0\),也即

\[(A \otimes B)_0 = A_0 \times B_0
\]

稍微复杂的是 \((A \otimes B)_1\),要求最高位至少有一个 \(1\),也就是说

\[(A \otimes B)_1 = A_0 \otimes B_1 + A_1 \otimes B_0 + A_1 \otimes B_1
\]

有了以上的结论就可以完成或卷积性质的证明了:

\[\begin{aligned}
F(A \otimes B) &= F\Big[(A \otimes B)_0\Big] \oplus F\Big[(A \otimes B)_0 + (A \otimes B)_1\Big]\\
&= F(A_0\otimes B_0) \oplus F(A_0 \otimes B_0 + A_0 \otimes B_1 + A_1 \otimes B_0 + A_1 \otimes B_1)\\
&= [F(A_0) \times F(B_0)] \oplus [F(A_0 + A_1) \times F(B_0 + B_1)]\\
&= [F(A_0) \oplus F(A_0 + A_1)] \times [F(B_0) \oplus F(B_0 + B_1)] & \text{(按位运算)}\\
&= F(A) \times F(B)
\end{aligned}
\]

与卷积与或卷积相同。

异或卷积

同样的,我们可以得到

\[\begin{matrix}
(A \otimes B)_0 = A_0 \otimes B_0 + A_1 \otimes B_1\\
(A \otimes B)_1 = A_0 \otimes B_1 + A_1 \otimes B_0
\end{matrix}
\]

然后给出异或FWT的递归式:

\[F(A)=\begin{cases}
F(A_0 + A_1) \oplus F(A_0 - A_1)&|A| > 1\\
A&|A| = 1
\end{cases}
\]

接下来是类似的归纳推导:

\[\begin{aligned}
F(A \otimes B) &= F[(A \otimes B)_0 + (A \otimes B)_1] \oplus F[(A \otimes B)_0 - (A \otimes B)_1]\\
&= F(A_0 \otimes B_0 + A_1 \otimes B_1 + A_0 \otimes B_1 + A_1 \otimes B_0) \oplus F(A_0 \otimes B_0 + A_1 \otimes B_1 - A_0 \otimes B_1 - A_1 \otimes B_0)\\
&= [F(A_0 + A_1) \times F(B_0 + B_1)] \oplus [F(A_0 - A_1) \times F(B_0 - B_1)]\\
&= [F(A_0 + A_1) \oplus F(A_0 - A_1)] \times [F(B_0 + B_1) \otimes F(B_0 - B_1)]\\
&= F(A) \times F(B)
\end{aligned}
\]

小记

之前推导 FWT 是正向的构造,虽然构造非常巧妙,但是不太好理解。尤其是异或卷积利用到“异或后二进制位 1 的个数的奇偶性不变”这种虽然明显,但并不好用的性质。

现在能找到一种用归纳法证明 FWT 的方式,感觉非常直接,所以记下来了。

最新文章

  1. IO流知识点总结
  2. AX7: Install a deployable package
  3. [转]Java 内部类笔记
  4. Linphone iOS客户端编译时打开G729支持
  5. Mybatis的分页插件PageHelper
  6. Canu FAQ常见问题
  7. 由于IPv6导致的iOS应用发布失败,是否该怪Azure?
  8. 【jQuery】复选框的全选、反选,推断哪些复选框被选中
  9. (十三)Batch Processing
  10. linux shell 数组建立及使用技巧
  11. 将VSCode设置成中文语言环境
  12. centos 阿里云 安装VNC Viewer
  13. git difftool 详解
  14. 【CF625E】Frog Fights(模拟)
  15. HTML、XML、XHTML 有什么区别?
  16. 今天使用VS2012遇到一个问题:"链接器工具错误 LNK2026 XXX模块对于 SAFESEH 映像是不安全的"
  17. APP元素的四大类
  18. .NET面试题(二)
  19. thread_CountDownLatch同步计数器
  20. 写一个php小脚本辅助渗透测试

热门文章

  1. 关于Spring的IoC容器,你了解多少
  2. 淘宝首页数据采集之js采集
  3. C-01\编译器和链接器以及真正的入口函数
  4. python爬取丁香园疫情数据
  5. P11_组件-button和image组件的基本用法
  6. Cesium点击改变entity/primitives颜色与恢复原色(三)
  7. Gold Transportation
  8. aspnetcore读取配置【源码分析】
  9. The size of the request headers is too long.
  10. 01#Vue Transition 过渡:基于 CSS 过渡