fwt

题目链接

参考链接

http://blog.leanote.com/post/rockdu/TX20

http://vfleaking.blog.uoj.ac/blog/87

http://blog.miskcoo.com/2015/12/inversion-magic-binomial-inversion

前言

之前只学习了 $FWT$ 和 $FMT$ 的模板,对其原理一点都不理解。

有时,一些题目中会涉及到对这些变换的理解和变形,这要求窝必须彻底理解这些变换的原理。

很多博客对这些变换的证明和理解只字不提,经过一番寻找终于找到了一些适合的文章(如上),经过学习也感受到了这些变换的奇妙之处,这里也来复现他们的证明过程,加深理解。

反演和变换

变换是对数列做一个线性变换,主要形式如下

反演主要满足以下形式

由上可见,反演实质上就是一个线性逆变换,那么在做反演和变换时,我们可以将数列看作列向量,即

定义 $Kronecker’s\,delta$ 函数 $\delta(i,j)=[i=j]$ ,显然

所以 $Kronecker’s\,delta$ 函数表示成矩阵形式就是单位矩阵

那么,对一个变换,寻求其反演公式,本质就是在求逆矩阵

子集变换和子集反演

子集变换定义如下:

为求其反演公式,我们需要找到其逆矩阵,而我们有

那么,得到逆变换之后直接开始推导吧

所以可以得到子集反演公式

这个公式也就是我们所熟知的容斥原理

快速莫比乌斯变换(FMT)

快速莫比乌斯变换算是子集变换,他主要解决并集卷积和交集卷积的加速

先以比较简单的并集为例,我们的目的是使这个式子和 $FFT$ 一样能够经过变换之后直接做乘法,即

这个东西其实比较容易构造,事实上