卷积
我对卷积理解很浅,先抛砖引玉,如有错误还请指正。
我也不知道卷积是什么,常见的是连续形式
和离散形式
如果没有特殊强调,只讨论离散形式的卷积。
卷积总是满足
- 交换律
- 结合律
- 分配律
- 数乘结合律
- 微分(差分)定理
级数
级数乘法是离散卷积的一个重要例子。对于级数
它们的乘法是
因此看到相乘下标之和可能为为定值时,要主动想到卷积。
卷积定理
设 Fourier 变换为
该卷积定理是 FFT 的基础。
其他卷积
卷积有很多形式。
Dirichlet 卷积
对于数论函数
在 Mobius 反演中有重要应用。详见 Dirichlet 卷积。
快速加法
来看题目 SP8372 TSUM - Triple Sums。给定
先不考虑
那么
因此构造
最终
字符串匹配
考虑用 FFT 解决字符串匹配。定义匹配函数
给定文本串
即
再提供模式串
前面两项能够预处理,最后一项是卷积,可以用 FFT。于是最终复杂度是
带通配符匹配
这个复杂度比 KMP 还高的 FFT 版字符串匹配有什么用呢?来看题目 P4173 残缺的字符串。
仅令通配符的字符值为
然后大力展开
注意到三个都是卷积,全都可以 FFT。于是最终复杂度是
失配次数
来看题目 CF528D Fuzzy Search。注意到,我们新搓的匹配函数
考虑再搓个新匹配函数。设字符集为
然后代入
于是复杂度
再计算通配符的影响。容斥可知通配符的贡献为:字符串
前者可以预处理,后者即是再来一遍卷积。