FWT 学习笔记
FWT学习笔记
好久以前写的,先粘上来
定义数组
\(n=2^k\)
\(A=[a_0,a_1,a_2,a_3,...,a_{n-1}]\)
令\(A_0=[a_0,a_1,a_2,...,a_{\frac n 2-1}]\)
且\(A_1=[a_{\frac n 2},a_{\frac n 2+1},..,a_{n-1}]\)
即\(A_0\)为没有最高位的部分,\(A_1\)为有二进制最高位的部分
\(A\)可以用\(A=\{A_0,A_1\}\)表示
定义运算
\(A+B=[a_0+b_0,a_1+b_1,...,a_n+b_n]=\{A_0+B_0,A_1+B_1\}\)
\(A-B=[a_0-b_0,a_1-b_1,...,a_n-b_n]=\{A_0-B_0,A_1-B_1\}\)
\(A*B=[a_0*b_0,a_1*b_1,...,a_n*b_n]=\{A_0*B_0,A_1*B_1\}\)
\(A xor B=[\sum_{i xor j=0}a_i*a_j,\sum_{i xor j=1}a_i*a_j,...,\sum_{i xor j=n-1}a_i*a_j]\)
\(A and B=[\sum_{i and j=0}a_i*a_j,\sum_{iandj=1}a_i*a_j,...,\sum_{i and j=n-1}a_i*a_j]\)
\(A or B=[\sum_{i or j=0}a_i*a_j,\sum_{i or j=1}a_i*a_j,...,\sum_{i or j=n-1}a_i*a_j]\)
性质1
交换率、结合率均满足
\(Cxor(A+B)=CxorA+CxorB\)
\(Cand(A+B)=CandA+CandB\)
\(Cor(A+B)=CorA+CorB\)
性质2
由于\(n-1\)和\(\frac n 2-1\)在二进制下相差一位的特殊性质
\(AxorB=\{A_0xorB_0\)+\(A_1xorB_1,A_0xorB_1\)+\(A_1xorB_0\}\)
\(AandB=\{A_0andB_0\)+\(A_0andB_1\)+\(A_1andB_0,A_1andB_1\}\)
\(AorB=\{A_0orB_0,A_oorB_1\)+\(A_1orB_0\)+\(A_1orB_1\}\)
定义FWT和IFWT
\(FWT(A)=A(n=1)\)
n>1时
xor:\(FWT(A)=\{FWT(A_0+A_1),FWT(A_0-A_1)\}\)
xor:\(DWT(A)=\{DWT(\frac {A_0+A_1} 2),DWT(\frac {A_0-A_1} 2)\}\)
and:\(FWT(A)=\{FWT(A_0+A_1),FWT(A_1)\}\)
and:\(DWT(A)=\{DWT(A_0-A_1),DWT(A_1)\}\)
or:\(FWT(A)=\{FWT(A_0),FWT(A_1+A_0)\}\)
or:\(DWT(A)=\{DWT(A_0),DWT(A_1-A_0)\}\)
这跟FFT递归树是一个道理的啊
FFT要分奇偶递归树先按最低位为0分两段
到FWT里啥顺序都行,reverse都不用了
性质
1.\(FWT(A\pm B)=FWT(A)\pm FWT(B) 线性性\)
2.\(FWT(A⊕B)=FWT(A)*FWT(B) (点乘)\)
3.\(DWT(FWT(A))=A\)
证明
代入一下再根据性质一化简一下,数学归纳法
模板
FWT 学习笔记的更多相关文章
- 一个数学不好的菜鸡的快速沃尔什变换(FWT)学习笔记
一个数学不好的菜鸡的快速沃尔什变换(FWT)学习笔记 曾经某个下午我以为我会了FWT,结果现在一丁点也想不起来了--看来"学"完新东西不经常做题不写博客,就白学了 = = 我没啥智 ...
- FWT学习笔记
FWT学习笔记 引入 一般的多项式乘法是这样子的: \(c_i=\sum_{i,j}a_j*b_k*[j+k==i]\) 但是如果我们将这个乘法式子里面的+号变换一下变成其他的运算符号呢? \(c_i ...
- FMT/FWT学习笔记
目录 FMT/FWT学习笔记 FMT 快速莫比乌斯变换 OR卷积 AND卷积 快速沃尔什变换(FWT/XOR卷积) FMT/FWT学习笔记 FMT/FWT是算法竞赛中求or/and/xor卷积的算法, ...
- $\text {FWT}$学习笔记
\(\text {FWT}\) 学习笔记 正常项的\(\text {FWT}\) 在\(\text {OI}\)中,我们经常会碰到这种问题: 给出一个长度为\(n\)的序列\(a_{1,2,...,n ...
- 快速沃尔什变换 (FWT)学习笔记
证明均来自xht37 的洛谷博客 作用 在 \(OI\) 中,\(FWT\) 是用于解决对下标进行位运算卷积问题的方法. \(c_{i}=\sum_{i=j \oplus k} a_{j} b_{k} ...
- 快速沃尔什变换 FWT 学习笔记【多项式】
〇.前言 之前看到异或就担心是 FWT,然后才开始想别的. 这次学了 FWT 以后,以后判断应该就很快了吧? 参考资料 FWT 详解 知识点 by neither_nor 集训队论文 2015 集合幂 ...
- 快速沃尔什变换(FWT)学习笔记 + 洛谷P4717 [模板]
FWT求解的是一类问题:\( a[i] = \sum\limits_{j\bigoplus k=i}^{} b[j]*c[k] \) 其中,\( \bigoplus \) 可以是 or,and,xor ...
- 卷积理论 & 高维FWT学习笔记
之前做了那么多生成函数和多项式卷积的题目,结果今天才理解了优化卷积算法的实质. 首先我们以二进制FWT or作为最简单的例子入手. 我们发现正的FWT or变换就是求$\hat{a}_j=\sum_{ ...
- FWT快速沃尔什变换学习笔记
FWT快速沃尔什变换学习笔记 1.FWT用来干啥啊 回忆一下多项式的卷积\(C_k=\sum_{i+j=k}A_i*B_j\) 我们可以用\(FFT\)来做. 甚至在一些特殊情况下,我们\(C_k=\ ...
随机推荐
- GC执行finalize的过程以及对象的一次自我拯救
参考资料:深入理解java虚拟机 /** * 此代码演示了两点: * 1.对象可以在被GC时自我拯救 * 2.这种自救的机会只有一次,因为一个对象的finalize()方法只会被系统自动调一次 */ ...
- mysq--索引模块
问题:为什么要 使用索引? --->快速查询数据,但是仅仅这么回答,就是不专业的!!! 应该要分为数据量少的时候,不适用索引,走全表扫描的话,查询速率也是很快的 数据量大的话,使用索引,查询速率 ...
- Java中 Character方法练习:字符串中英文字母个数 5435abc54abc3AHJ5 正则:matches("[a-zA-Z0-9]{1}")
package com.swift; public class String_Letter_Number_Test { public static void main(String[] args) { ...
- UI Testing in Xcode 7
参考文章: UI Testing in Xcode - WWDC 2015https://developer.apple.com/videos/play/wwdc2015-406/ Document ...
- #ifdef #else #endif #fi #ifndef 的用法
预处理就是在进行编译的第一遍词法扫描和语法分析之前所作的工作.说白了,就是对源文件进行编译前,先对预处理部分进行处理,然后对处理后的代码进行编译.这样做的好处是,经过处理后的代码,将会变的很精短. ...
- 当c++遇上音乐
运用到的函数 #include <windows.h> Beep( f, t ); Sleep( t ); eep() 函数可以让蜂鸣器发出频率为f赫兹,音长大约为 2t 毫秒的音.(注意 ...
- python生成四位随机数
有些时候需要发送短信给用户生成四位随机数字,这里在python中我们可以根据python自带的标准库random和string来实现. random下有三个可以随机取数的函数,分别是choice,ch ...
- k8s资源指标API及metrics-server资源监控
简述: 在k8s早期版本中,对资源的监控使用的是heapster的资源监控工具. 但是从 Kubernetes 1.8 开始,Kubernetes 通过 Metrics API 获取资源使用指标,例如 ...
- zabbix3.2安装手册
Alexei Vladishev创建了Zabbix项目,当前处于活跃开发状态,Zabbix SIA提供支持. Zabbix是一个企业级的.开源的.分布式的监控套件 Zabbix可以监控网络和服务的监控 ...
- 使用linux安装gitolite管理git
系统:centos7 服务器:阿里云 一.前期准备 1.安装git yum install git 2.安装perl yum install perl 3.安装openssh yum install ...