FWT 学习笔记】的更多相关文章

一个数学不好的菜鸡的快速沃尔什变换(FWT)学习笔记 曾经某个下午我以为我会了FWT,结果现在一丁点也想不起来了--看来"学"完新东西不经常做题不写博客,就白学了 = = 我没啥智商 ,网上的FWT博客我大多看不懂,下面这篇博客是留给我我再次忘记FWT时看的,所以像我一样的没智商选手应该也能看懂!有智商选手更能看懂咯! (写得非常匆忙,如有任何错误请在评论区指正!TAT) 什么是FWT FWT是用来快速做位运算卷积的.位运算卷积是什么?给出两个数组\(A\)和\(B\)(长度相等且是2…
FWT学习笔记 引入 一般的多项式乘法是这样子的: \(c_i=\sum_{i,j}a_j*b_k*[j+k==i]\) 但是如果我们将这个乘法式子里面的+号变换一下变成其他的运算符号呢? \(c_i=\sum_{i,j}a_j*b_k*[j\oplus k==i]\) 其中\(\oplus\)可以取\(and,or,xor\) 这个时候FFT和NTT就没有什么用了... 前人的智慧是无穷的! 考虑一个神奇的算法:FWT(快速沃尔什变化) or卷积 先从最容易的or卷积下手. 我们考虑他给出的式…
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…
目录 FMT/FWT学习笔记 FMT 快速莫比乌斯变换 OR卷积 AND卷积 快速沃尔什变换(FWT/XOR卷积) FMT/FWT学习笔记 FMT/FWT是算法竞赛中求or/and/xor卷积的算法,数据处理中也有应用. 网上的命名方法有很多. 这里我们选这个博客的,把AND/OR命名为FMT,XOR命名为FWT 如果是整数,我们认为\(\cup\)和\(\cap\)运算是二进制下的,也就是\(\text{|和&}\),这可以帮我们理解之后的集合幂级数. FMT 快速莫比乌斯变换 OR卷积 与F…
\(\text {FWT}\) 学习笔记 正常项的\(\text {FWT}\) 在\(\text {OI}\)中,我们经常会碰到这种问题: 给出一个长度为\(n\)的序列\(a_{1,2,...,n},b_{1,2,...,n}\),求出 \[c_k=\sum_{i\oplus j=k}a_i b_j \] 其中\(\oplus\)是定义的一种二进制下的运算. 对于这种问题,我们有一种通用的方法,我们称之为\(\text {FWT}\). 我们考虑对于一个\(A\)构造一个\(FWT\)变换序…
证明均来自xht37 的洛谷博客 作用 在 \(OI\) 中,\(FWT\) 是用于解决对下标进行位运算卷积问题的方法. \(c_{i}=\sum_{i=j \oplus k} a_{j} b_{k}\) 其中 \(\oplus\) 是二元位运算中的一种. 实现 \(or\) 运算 构造 \(fwt[a]_i = \sum_{j|i=i} a_j\) 则 \(\begin{aligned} fwt[a] \times fwt[b] &= \left(\sum_{j|i=i} a_j\right)…
〇.前言 之前看到异或就担心是 FWT,然后才开始想别的. 这次学了 FWT 以后,以后判断应该就很快了吧? 参考资料 FWT 详解 知识点 by neither_nor 集训队论文 2015 集合幂级数的性质与应用及其快速算法 by 吕凯风 一.FWT 是什么 FWT 是快速沃尔什变换.它和快速傅里叶变换一样,原本都用于物理中的频谱分析. 但是由于它可分治的特点,在算法竞赛中常被用来计算位运算卷积. 二.FWT 能干什么 它可以在 \(O(n\log n)\) 的时间复杂度内由数组 \(a,b…
FWT求解的是一类问题:\( a[i] = \sum\limits_{j\bigoplus k=i}^{} b[j]*c[k] \) 其中,\( \bigoplus \) 可以是 or,and,xor 三种问题的解决思路都是对多项式 \( a \) 构造一个 \( a' \),令 \( a' = b' * c' \): 那么只需要把 \( b \) 变换成 \( b' \),\( c \) 变换成 \( c' \),然后乘出 \( a' \),再逆变换得到 \( a \): 下面问题就变成如何快…
之前做了那么多生成函数和多项式卷积的题目,结果今天才理解了优化卷积算法的实质. 首先我们以二进制FWT or作为最简单的例子入手. 我们发现正的FWT or变换就是求$\hat{a}_j=\sum_{i\in j}a_i$,即子集和,那这个是怎么来的呢? 我们假设$a$到$\hat{a}$的转移矩阵为$X$,则 $$(\sum_{j}X_{i,j}a_j)*(\sum_{j}X_{i,j}b_j)=\sum_jX_{i,j}(\sum_{s|t=j}a_sb_t)$$ 所以考虑$a_sb_t$的…
FWT快速沃尔什变换学习笔记 1.FWT用来干啥啊 回忆一下多项式的卷积\(C_k=\sum_{i+j=k}A_i*B_j\) 我们可以用\(FFT\)来做. 甚至在一些特殊情况下,我们\(C_k=\sum_{i*j=k}A_i*B_j\)也能做(SDOI2015 序列统计). 但是,如果我们把操作符换一下呢? 比如这样? \(C_k=\sum_{i|j=k}A_i*B_j\) \(C_k=\sum_{i\&j=k}A_i*B_j\) \(C_k=\sum_{i\wedge j=k}A_i*B_…