从卷积到反演
狄利克雷卷积
对于卷积,我们应该并不陌生。最简单的卷积从我们常见的竖式乘法开始,再到生成函数 (多项式) 的相乘,无处不在。
多项式相乘就是一种卷积。次数为 a 和 b 的项的系数相乘得到系数为 (a+b)项的系数。
C[n]=n∑i=0A[i]B[n−i]
同样,狄利克雷卷积也是一种类似的卷积。
C[n]=∑ij=nA[i]B[j]
如果把 A 和 B 都理解成一种函数,A[i] 是函数在 x=i 时的取值,那么我们就可以把狄利克雷卷积这样表示:
(F∗G)(n)=∑ij=nA(i)B(j)
同样,多项式的卷积也能够这样表示,不过为了加以区分,我们用方括号:
[F∗G](n)=∑i+j=nA(i)B(j)
之后,我们将用 (F∗G)(n)表示离散函数 F 和 G 的狄利克雷卷积,[F∗G](n)表示离散函数 F 和 G 的多项式卷积。
多项式卷积及其反演
交换律 (f∗g=g∗f)
这个应该是显然的,因为多项式卷积本身是一个对称的过程。
结合律 ([f∗g]∗g=f∗[g∗h])
这也是显然的,多项式的相乘不分先后。
存在单位元 (e)
单位元的意思,就好比小学数学中的 1,矩阵中的单位矩阵。它乘以任何东西,那个东西都不会变。
于是乎,我们要求一个离散函数 e,使得:
e∗f=f
显然,我们需要的单位元是:
e(n)={1(n=0)0(n≠0)
因为,这样的 e才能保证 [e∗f]的每一项就是 f的每一项。
存在逆元 (f−1)
对于离散函数 f,我们把它看成是一个多项式,或者说生成函数,那么它的逆元就记作:1f,或者 f−1。
以上的性质已经说明,离散函数 (f,g,h)与多项式卷积构成了一个乘法群。以上的性质已经可以帮助我们非常容易地理解什么是反演了。
一般反演
这里的反演的一般定义是:对于数列 f,g,如果他们可以写成如下的形式:
gn=n∑i=0an−ififn=n∑i=0bn−igi
那么称这两个序列是互反的。现在,我们可以把这两个序列理解为离散函数,那么:
g=a∗ff=b∗g
而反演的意义在于,当 f不是很好求,而 g非常好求的时候,我们可以用反演求出 f。那么首先,我们需要知道 a,b之间存在怎样的关系。
根据之前提到的,离散函数的四大性质,我们可以作出如下推断:
f=b∗gf=b∗a∗fb∗a=e
也就是说,b,a代表的离散函数在多项式卷积下互逆。哈,一般反演说到这里就结束了。
二项式反演与矩阵
二项式反演是一般反演的加强版:
gn=n∑i=0anififn=n∑i=0bnigi
这里的 a对于不同的 n是完全不同的数列了,b也同样。那么这时,我们需要将 a,b看成一些二维的东西,比如矩阵。矩阵的乘法实际上可以看成是高维的卷积。
[g0g1g2]=[a0000a10a110a20a21a22]×[f0f1f2][f0f1f2]=[b0000b10b110b20b21b22]×[g0g1g2]
现在,像上次一样,我们要知道当 f,g互反时,a,b应满足怎样的关系。下面用列向量表示 f,g, 用方阵表示 a,b:
→F=A×→G→G=B×→F⇒→F=A×→G=A×B×→FA×B=E
而 A×B=E展开后的表示就是:
n∑j=mbniaim={0(n≠m)1(n=m)
而满足这样的典型的 a,b就包括:
gn=n∑i=0Cinfifn=n∑i=0(−1)n−iCingi
以及:
gn=n∑i=0(−1)iCinfifn=n∑i=0(−1)iCingi
上面两个式子的证明并不复杂:
式 1:
A×B=n∑i=mbniaim=n∑i=m(−1)i−mCinCmi=n∑i=m(−1)i−mCmnCn−in−m=(−1)i−mCmnn∑i=mCn−in−m=(−1)n−i−mCmnn−m∑i=0Cin−m=(−1)n−mCmnn−m∑i=0(−1)iCin−m=(−1)n−mCmn(1−1)n−m
因此,A×B=E。式 2 的证明同理。
狄利克雷卷积及其反演
交换律 (f∗g=g∗f)
和多项式乘法一样,狄利克雷卷积也满足交换律。证明嘛。。。显然的。
结合律 ((f∗g)∗h=f∗(g∗h))
对于 (f∗g)∗h在 n 处的取值,我们进行如下证明:
((f∗g)∗h)(n)=∑ij=n(f∗g)(i)h(j)=∑ij=n(∑kl=if(k)g(l))h(j)=∑ijk=nf(i)g(j)h(k)
同理,对于 f∗(g∗h)在 n 处的取值,我们也把它变成上面的形式:
(f∗(g∗h))(n)=∑ij=nf(i)(g∗h)(j)=∑ijk=nf(i)g(j)h(k)
所以结合律在这个卷积中存在。
存在单位元 (e)
同多项式卷积的单位元,我们可以写出狄利克雷卷积的单位元:
e(n)={1(n=1)0(n≠1)
存在逆元 (f−1)
对于一个函数 f!=0,我们总能找到一个函数 g,使得 f∗g=e,则 g一定是 f的逆元。并且这个 g一定是唯一的。
以上的这些结论,已经可以说明这些离散函数 (f,g,h)在狄利克雷卷积意义下构成了一个乘法群。但是这并不重要。重要的是我们为什么可以用卷积的方式更简单地分析莫比乌斯反演。
莫比乌斯函数
我们通常见到的莫比乌斯反演总是这样的:
f(n)=∑d|ng(d)⇒g(d)=∑d|nf(d)μ(nd)
我们把它先用卷积的形式写一下:
f=u∗g⇒g=f∗μ
其中 u是一个恒为 1 的函数。
哈哈,这样,我们只需要说明 u和 μ互为反函数就行啦。
因为,如果 u 和 g 互为反函数 (即 u∗g=e),我们可以证明:
f=g∗uf∗μ=g∗u∗μf∗μ=g∗ef∗μ=g
μ的定义
我们直接定义 u∗μ=e,即 ∑d|nμ(d)={1 n=10n>1
然后我们随手构造一个 μ(d)的取值表,使他满足这个东西就好啦。
μ的构造
前人已经发现了 μ的构造方法。
μ(1)=1
μ(n)=(−1)k,如果 n 可以写成 k 个不同质数的积
μ(n)=0,其他 n
按照这种定义,显然 n=1 时 ∑d|nμ(d)=1
对于其他 n,我们可以尝试证明一下。
首先,我们把 n 唯一分解一下,变成若干个素数的积,然后选择 n 的因数 d,把他们的 μ(d)加起来。注意下面的证明中只把非 0 的 μ(d)加了起来。
∑d|nμ(d)=μ(1)+μ(p1)+μ(p2)+⋯+μ(p1p2)+⋯+μ(p1p2…pk)=k∑i=0Cik(−1)i=0
1 条评论
【算法】 简单容斥模型 -boshi – K-XZY · 2018年10月12日 3:59 下午
[…] 本文将简单介绍几种常见的容斥模型,以及容斥方法。容斥和反演是离不开的,因为实际上它们就是同一种东西的两种表现形式,一种出现于小学课本,另一种出现于大学的教材。但是,容斥原理所运用的手段与技巧完全是基于反演理论的,因此,想熟练运用容斥原理,第一步就是完全搞清楚反演是什么。文章:从卷积到反演 […]