「postOI」以另一种方式证明 FWT
记号
- \(\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 + 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)_1\),要求最高位至少有一个 \(1\),也就是说
\]
有了以上的结论就可以完成或卷积性质的证明了:
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}
\]
与卷积与或卷积相同。
异或卷积
同样的,我们可以得到
(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_0 + A_1) \oplus F(A_0 - A_1)&|A| > 1\\
A&|A| = 1
\end{cases}
\]
接下来是类似的归纳推导:
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 的方式,感觉非常直接,所以记下来了。
「postOI」以另一种方式证明 FWT的更多相关文章
- 「BJWC2018」Border 的四种求法
「BJWC2018」Border 的四种求法 题目描述 给一个小写字母字符串 \(S\) ,\(q\) 次询问每次给出 \(l,r\) ,求 \(s[l..r]\) 的 Border . \(1 \l ...
- 「MoreThanJava」机器指令到汇编再到高级编程语言
「MoreThanJava」 宣扬的是 「学习,不止 CODE」,本系列 Java 基础教程是自己在结合各方面的知识之后,对 Java 基础的一个总回顾,旨在 「帮助新朋友快速高质量的学习」. 当然 ...
- 「MoreThanJava」Day2:变量、数据类型和运算符
「MoreThanJava」 宣扬的是 「学习,不止 CODE」,本系列 Java 基础教程是自己在结合各方面的知识之后,对 Java 基础的一个总回顾,旨在 「帮助新朋友快速高质量的学习」. 当然 ...
- loj#2552. 「CTSC2018」假面
题目链接 loj#2552. 「CTSC2018」假面 题解 本题严谨的证明了我菜的本质 对于砍人的操作好做找龙哥就好了,blood很少,每次暴力维护一下 对于操作1 设\(a_i\)为第i个人存活的 ...
- 「JavaScript」四种跨域方式详解
超详细并且带 Demo 的 JavaScript 跨域指南来了! 本文基于你了解 JavaScript 的同源策略,并且了解使用跨域跨域的理由. 1. JSONP 首先要介绍的跨域方法必然是 JSON ...
- 「JavaScript」JS四种跨域方式详解
原文地址https://segmentfault.com/a/1190000003642057 超详细并且带 Demo 的 JavaScript 跨域指南来了! 本文基于你了解 JavaScript ...
- Linux 小知识翻译 - 「版本号」的命名方式
包括OS,所有的软件都有版本号信息.一般来说,版本号的增大表示软件的功能增强了或者修正了一些Bug,也就是表示软件更新了. 版本号的命名方式没有统一的标准.每种软件都不一样. 大部分情况下,版本号以「 ...
- 「python」: arp脚本的两种方法
「python」: arp脚本的两种方法 第一种是使用arping工具: #!/usr/bin/env python import subprocess import sys import re de ...
- Android逆向之旅---静态方式分析破解视频编辑应用「Vue」水印问题
一.故事背景 现在很多人都喜欢玩文艺,特别是我身边的UI们,拍照一分钟修图半小时.就是为了能够在朋友圈显得逼格高,不过的确是挺好看的,修图的软件太多了就不多说了,而且一般都没有水印啥的.相比较短视频有 ...
- 「Python」6种python中执行shell命令方法
用Python调用Shell命令有如下几种方式: 第一种: os.system("The command you want"). 这个调用相当直接,且是同步进行的,程序需要阻塞并等 ...
随机推荐
- 二、typora软件的安装与markdown语法
目录 一.typora软件的安装与使用 1.软件的安装 2.破解使用的方法 3.功能描述(markdown语法讲解) 标题 小标题 语言环境 表格 表情 图片 查看源代码 数学公式 流程图 高亮文本 ...
- 为什么要使用 chmod 777
如上图所示, 不使用sudo,报错没有权限 使用sudo,报错找不到命令 只好chmod 777一下了
- C-04\IDE基础知识和分支,循环语句
一.浮点数特性及比较方法 浮点数在多参数传参的时候默认是会进行精度转换,由float转换到double,浮点数是一个近视值,不能进行直接等于比较,一般可以用区间法比较但是会存在精度丢失的问题. 浮点数 ...
- 【HMS Core】机器学习服务助力APP快速集成图像分割与上传功能
1.介绍 总览 机器学习服务(ML Kit)提供机器学习套件,为开发者使用机器学习能力开发各类应用,提供优质体验.得益于华为长期技术积累,ML Kit为开发者提供简单易用.服务多样.技术领先的机器 ...
- JMH测试工具
参考:https://blog.csdn.net/agonie201218/article/details/122333354 1 简介 JMH即Java Microbenchmark Harness ...
- Vue20 生命周期
转:https://blog.csdn.net/weixin_45791692/article/details/124045505 1 简介 Vue的生命周期就是vue实例从创建到销毁的全过程,也就是 ...
- C# 编写Windows Service Windows服务程序
一.新建项目--选择Windows 服务,输入新的项目名称,点击确定. 二.服务名称的设置.服务添加安装程序.服务程序代码 1.服务名称的设置:视图 - 解决方案资源管理器 - 你创建的服务项目 默认 ...
- 下午小博(java小知识)
抽象类: 抽象类中可以构造方法 抽象类中可以存在普通属性,方法,静态属性和方法 抽象类中可以存在抽象方法如果一个类中有一个抽象方法,那么当前类一定是抽象类:抽象类中不一定有抽象方法 抽象类中的抽象方法 ...
- 给力的Zstack云主机
合肥光源储存环纵向震荡可视化展示初步结果 前两天做好上面的可视化展示后,想着顺道把那个时间的二维图分析结果给出来吧,就又把纵向震荡的每个束团的频谱和相位顺道可视化显示出来,给计算这些结果的云主机又加点 ...
- echarts使用dataset数据集创建单轴散点图
dataset创建单轴散点图 由于使用echarts作图时,我很喜欢用dataset作为数据源,但是官方案例中,有没有给出相关示例,于是,在翻阅官方文档相关案例之后,结合官方文档使用dataset的示 ...