FMT 与 FWT
【预备知识】
子集反演公式:
如果用
(
【FMT】
FMT,快速莫比乌斯变换。它解决这么一个问题:
给定两个序列
这种问题叫或卷积。
记
FMT 可以用来解决这类问题,复杂度为
下面介绍一下 FMT。
在开始之前,我们先回顾一下 FFT 是怎么做普通卷积的。
-
对
分别做 DFT。 -
求出
的 DFT。 -
做 iDFT 求出
。
这个做法的关键在于:存在一个变换 DFT,使得 DFT 和 iDFT 做起来都很快,而且
然后回到原问题。我们记
为了解决问题,我们希望找到变换 t 满足:t 和 it 都很快,且
一个很牛的事实是,这种变换确实存在,它们叫做 DMT 和 iDMT。即莫比乌斯变换和逆莫比乌斯变换。
介绍一下,
引理:
证明:
因此可以
另外,FMT 还可以做与卷积:把
【FWT】
FWT,快速沃尔什变换,用于解决异或卷积问题。问题定义类似。
同样地,我们要找一个变换 t,同样满足上面的性质。
而一样很牛的事实是,这样的变换也存在,叫做 DWT 和 iDWT。
看起来相当奇怪。
先说明 DWT 和 iDWT 都可以
引理:
引理证明:
转证
为什么呢?
令
接下来证明转化命题。不妨设
观察上式,
因此,
算法:只考虑怎么 DWT。
设
有结论:
如果有这个结论,很显然就可以分治
问题只在于结论证明。
求证:
证明:
证毕。
然后说明
证明:
引理:
比较显然,因为异或后受到影响的只有同时在
证明:
【深入理解】
可能会觉得 DMT, DWT 的式子比较生硬,于是我们深入理解一下这两个东西到底在干嘛。
DFT 是在做点值,DMT 和 DWT 其实也是在做另一种意义上的点值。
具体来说,我们需要用到集合幂级数。
对于一个序列
这个多项式有
看看 DMT 是在干嘛。令
注意到当
而
因此,
所以 DMT 计算
再看看 DWT 是在干嘛。令
那么
注:向量
而
所以 DWT 实际上是求出了
总之,FFT, FMT, FWT 都是在先点值后插值。
例题
经验:什么涉及位运算,什么就作为集合幂级数的指数。
例如要求一些东西的与等于
Nim (Topcoder 11469)
问有多少序列
-
。 -
。 -
为质数。
构造一个序列
构造一个集合幂级数
在乘法定义为异或卷积(
那
因此只要做一次
这题可以类比多项式快速幂:
CF449D
给定
考虑取
令乘法为与卷积,答案就是
问题转化为求
注意到
所以做
这有什么用呢?记
那么问题转化为求
那么这一题就做完了,复杂度
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!