Loading [MathJax]/jax/output/HTML-CSS/jax.js

从卷积到反演

狄利克雷卷积

对于卷积,我们应该并不陌生。最简单的卷积从我们常见的竖式乘法开始,再到生成函数 (多项式) 的相乘,无处不在。

多项式相乘就是一种卷积。次数为 a 和 b 的项的系数相乘得到系数为 (a+b)项的系数。
C[n]=ni=0A[i]B[ni]
同样,狄利克雷卷积也是一种类似的卷积。
C[n]=ij=nA[i]B[j]
如果把 A 和 B 都理解成一种函数,A[i] 是函数在 x=i 时的取值,那么我们就可以把狄利克雷卷积这样表示:
(FG)(n)=ij=nA(i)B(j)
同样,多项式的卷积也能够这样表示,不过为了加以区分,我们用方括号:
[FG](n)=i+j=nA(i)B(j)
之后,我们将用 (FG)(n)表示离散函数 F 和 G 的狄利克雷卷积,[FG](n)表示离散函数 F 和 G 的多项式卷积。

多项式卷积及其反演

交换律 (fg=gf)

这个应该是显然的,因为多项式卷积本身是一个对称的过程。

结合律 ([fg]g=f[gh])

这也是显然的,多项式的相乘不分先后。

存在单位元 (e)

单位元的意思,就好比小学数学中的 1,矩阵中的单位矩阵。它乘以任何东西,那个东西都不会变。

于是乎,我们要求一个离散函数 e,使得:
ef=f
显然,我们需要的单位元是:
e(n)={1(n=0)0(n0)
因为,这样的 e才能保证 [ef]的每一项就是 f的每一项。

存在逆元 (f1)

对于离散函数 f,我们把它看成是一个多项式,或者说生成函数,那么它的逆元就记作:1f,或者 f1


以上的性质已经说明,离散函数 (f,g,h)与多项式卷积构成了一个乘法群。以上的性质已经可以帮助我们非常容易地理解什么是反演了。

一般反演

这里的反演的一般定义是:对于数列 f,g,如果他们可以写成如下的形式:
gn=ni=0anififn=ni=0bnigi
那么称这两个序列是互反的。现在,我们可以把这两个序列理解为离散函数,那么:
g=aff=bg

而反演的意义在于,当 f不是很好求,而 g非常好求的时候,我们可以用反演求出 f。那么首先,我们需要知道 a,b之间存在怎样的关系。

根据之前提到的,离散函数的四大性质,我们可以作出如下推断:
f=bgf=bafba=e

也就是说,b,a代表的离散函数在多项式卷积下互逆。哈,一般反演说到这里就结束了。

二项式反演与矩阵

二项式反演是一般反演的加强版:
gn=ni=0anififn=ni=0bnigi
这里的 a对于不同的 n是完全不同的数列了,b也同样。那么这时,我们需要将 a,b看成一些二维的东西,比如矩阵。矩阵的乘法实际上可以看成是高维的卷积。
[g0g1g2]=[a0000a10a110a20a21a22]×[f0f1f2][f0f1f2]=[b0000b10b110b20b21b22]×[g0g1g2]
现在,像上次一样,我们要知道当 f,g互反时,a,b应满足怎样的关系。下面用列向量表示 f,g, 用方阵表示 a,b
F=A×GG=B×FF=A×G=A×B×FA×B=E
A×B=E展开后的表示就是:
nj=mbniaim={0(nm)1(n=m)

而满足这样的典型的 a,b就包括:

gn=ni=0Cinfifn=ni=0(1)niCingi

以及:
gn=ni=0(1)iCinfifn=ni=0(1)iCingi

上面两个式子的证明并不复杂:
式 1:
A×B=ni=mbniaim=ni=m(1)imCinCmi=ni=m(1)imCmnCninm=(1)imCmnni=mCninm=(1)nimCmnnmi=0Cinm=(1)nmCmnnmi=0(1)iCinm=(1)nmCmn(11)nm
因此,A×B=E。式 2 的证明同理。

狄利克雷卷积及其反演

交换律 (fg=gf)

和多项式乘法一样,狄利克雷卷积也满足交换律。证明嘛。。。显然的。

结合律 ((fg)h=f(gh))

对于 (fg)h在 n 处的取值,我们进行如下证明:
((fg)h)(n)=ij=n(fg)(i)h(j)=ij=n(kl=if(k)g(l))h(j)=ijk=nf(i)g(j)h(k)
同理,对于 f(gh)在 n 处的取值,我们也把它变成上面的形式:
(f(gh))(n)=ij=nf(i)(gh)(j)=ijk=nf(i)g(j)h(k)
所以结合律在这个卷积中存在。

存在单位元 (e)

同多项式卷积的单位元,我们可以写出狄利克雷卷积的单位元:
e(n)={1(n=1)0(n1)

存在逆元 (f1)

对于一个函数 f!=0,我们总能找到一个函数 g,使得 fg=e,则 g一定是 f的逆元。并且这个 g一定是唯一的。


以上的这些结论,已经可以说明这些离散函数 (fgh)在狄利克雷卷积意义下构成了一个乘法群。但是这并不重要。重要的是我们为什么可以用卷积的方式更简单地分析莫比乌斯反演。

莫比乌斯函数

我们通常见到的莫比乌斯反演总是这样的:
f(n)=d|ng(d)g(d)=d|nf(d)μ(nd)
我们把它先用卷积的形式写一下:
f=ugg=fμ
其中 u是一个恒为 1 的函数。

哈哈,这样,我们只需要说明 uμ互为反函数就行啦。

因为,如果 u 和 g 互为反函数 (即 ug=e),我们可以证明:
f=gufμ=guμfμ=gefμ=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)++μ(p1p2pk)=ki=0Cik(1)i=0

分类: 文章

1 条评论

【算法】 简单容斥模型 -boshi – K-XZY · 2018年10月12日 3:59 下午

[…] 本文将简单介绍几种常见的容斥模型,以及容斥方法。容斥和反演是离不开的,因为实际上它们就是同一种东西的两种表现形式,一种出现于小学课本,另一种出现于大学的教材。但是,容斥原理所运用的手段与技巧完全是基于反演理论的,因此,想熟练运用容斥原理,第一步就是完全搞清楚反演是什么。文章:从卷积到反演 […]

发表回复

Avatar placeholder

您的邮箱地址不会被公开。 必填项已用 * 标注