初等数论(Ⅳ):狄利克雷卷积和各类反演

1|0前置知识

1|1积性函数

满足 f(1)=1,并且当 gcd(a,b)=1 时,有 f(ab)=f(a)f(b),则称 f(n) 为积性函数。

如果对于全部的 a,b,都有 f(ab)=f(a)f(b),则称 f(n) 是完全积性函数。

1|0常见积性函数

  1. 常数函数:1(x)=1(完全积性)

  2. 恒等函数 idk(n)=nk,id1(n) 简记为 id(n)=n

  3. 元函数:ε(n)=[n=1]

  4. 欧拉函数:φ(n)

  5. 因子函数:d(n)=1k(ai+1),ai是质因数分解后质因子 pi 的幂次。

  6. 除数函数:σ(n)=d|nd

  7. 莫比乌斯函数:

μ(n)={1,        n=1(1)s,n=p1p2ps0,        n包含相同质因子

1|0两个积性函数的性质

1|0欧拉函数

定义

用一个式子表达就是

φ(n)=i=1n[gcd(i,n)=1]

性质

d|nφ(d)=n

证明在我这篇博客里有。

1|0莫比乌斯函数

定义

μ(n)={1,        n=1(1)s,n=p1p2ps0,        n包含相同质因子

性质

d|nμ(d)=[n=1]

也就是说除了 n=1 的时候这个式子是 1 ,其余的都是 0

证明:

n=1 时, μ(1)=1

n>1 时,将 n 质因数分解得到 n=p1a1p2a2psas,令 n=p1p2pn,那么有

d|nμ(d)=d|nμ(d)

因为如果有幂次 >2 的因数函数值是 0,所以可以直接舍掉了。

剩下的就直接运用容斥原理解决。

不取任何质因子的方案数为 Cs0

不取任何质因子的方案数为 Cs1

不取任何质因子的方案数为 Cs2,

所以最后的答案

=(1)0Cs0+(1)Cs1+(1)2Cs2++(1)sCss

=(1+(1))s=0

这个性质往往是逆用的,比如给你一个 [x=k],我们就可以把它转化成 d|xkμ(d)

1|0两个函数的联系

d|nμ(d)nd=φ(n)

证明:

n=1 时,φ(1)=μ(1)=1

n>1 时,n=p1a1p2a2psas,令 n=p1p2pn,那么有

d|nμ(d)nd=nd|nμ(d)d=nd|nμ(d)d

这其中 μ(d) 决定着符号,根据容斥原理,原式

=n(1(1p1++1ps)+(1p1p2++1ps1ps))=n(11p1)(11p2)(11ps)=φ(n)

其中最后这一步的证明在

1|2和式的变换

学会和式的变换有助于我们更好地推式子。

1|0和式的变换规则

  1. 分配律

    kKcak=ckKak

  2. 结合律

    kK(ak+bk)=kKak+kKbk

  3. 交换律

    kKak=p(k)Kap(k)

    pk 指的是标集的任意一个排列

    例如,a1+a2+a3+a6=a6+a2+a3+a1

1|0和式的变换魔术

  1. 替换条件式

    i=1nj=1md|gcd(i,j)d=i=1nj=1md=1min(n,m)[d|i][d|j]d

  2. 替换指标变量

    i=1nj=1m[gcd(i,j)=k]=i=1nkj=1mk[gcd(i,j)=1]

  3. 交换求和次序

    i=1nj=1mA(i)B(j)=j=1mi=1nA(i)B(j)

  4. 分离变量

    i=1nj=1mA(i)B(j)=i=1nA(i)j=1mB(j)

2|0狄利克雷卷积

2|1定义

f(n),g(n) 是两个积性函数,那么

(fg)(n)=d|nf(d)g(nd)=n|df(nd)g(d)

比如 (fg)(4)=f(1)g(4)+f(2)g(2)+f(4)g(1)

2|2性质

  1. 交换律:fg=gf

  2. 结合律:(fg)h=f(gh)

  3. 分配律:(f+g)h=fh+gh

2|3常用卷积关系

d|nμ(d)=[n=1]μ1=ε

证明:

(μ1)(n)=d|nμ(d)1(nd)=d|nμ(d)=[n=1]=ε(n)

d|nφ(d)=nφ1=id

证明:

(φ1)(n)=d|nφ(d)1(nd)=d|nφ(d)=n=id(n)

d|nμ(d)nd=φ(n)μid=φ

证明:

(μid)(n)=d|nμ(d)id(nd)=d|nμ(d)nd=φ(n)

fε=f

证明:

(fε)(n)=d|nf(d)ε(nd)=d|nf(d)[nd=1]=f(n)

这说明 ε 是狄利克雷卷积的单位元。

3|0莫比乌斯反演

3|1定义

f(n),g(n) 均为积性函数,则有

f(n)=d|ng(d)g(n)=d|nμ(d)f(nd)

f(n) 称为 g(n)莫比乌斯变换

g(n) 称为 f(n)莫比乌斯逆变换

证明:

Method 1(卷积角度)

充分性:

f=g1,则 μf=μg1=gμ1=gε=g

必要性:

g=μf,则 g1=μf1=fμ1=fε=f

Method 2(交换和号推式子)

这里只证明充分性,详细的证明可见这里

充分性:

     d|nμ(d)f(nd)=d|nμ(d)k|ndg(k)  (代入充分性的条件)=d|nk|ndμ(d)g(k)=k|nd|nkμ(d)g(k)=k|ng(k)d|nkμ(d)=g(n)

其中第三行到第四行采用的交换和号的方式,可以列一个表格感性证明一下,可以看出先枚举行和先枚举列最终的结果是相同的。

但是好像有关 [gcd()=k] 的用黄金代换式更简单。

4|0欧拉反演

其实也是一类套路。

对于类似 [gcd()=k] 这一类题,我们常常利用黄金代换,也就是反演的一类把这个式子用莫比乌斯函数表示出来,那么对于 gcd(i,j) 一类的题,我们就可以类似的用欧拉函数来表示。

莫比乌斯反演运用了 μ1=ε 的性质,而欧拉反演运用的就是 φ1=id 的性质。

求解下面的式子(默认 nm

i=1nj=1mgcd(i,j)

因为欧拉函数具有 d|nφ(d)=n 的性质,所以我们把 gcd(i,j) 看作 n,就有

     i=1nj=1md|gcd(i,j)φ(d)=i=1nj=1md=1n[d|i][d|j]φ(d)=d=1nφ(d)i=1n[d|i]j=1m[d|j]=d=1nφ(d)ndmd

φ(d) 可以线性预处理,这个式子可以 O(n) 整除分块,于是复杂度就降下来了。


5|0一些常见的变换套路

  1. 黄金代换

    [gcd(i,j)=1]=d|gcd(i,j)μ(d)

    莫比乌斯函数性质的逆运用。

  2. 转艾佛森括号

    d|gcd(i,j)[d|i][d|j]

    以一式举例

    d|gcd(i,j)μ(d)=d=1n[d|i][d|j]μ(d)

  3. 套着求和式外壳的常数

    i=1n[d|i]=nd

    等号左边的实际意义就是让你求 1nd 的倍数的个数,那显然就是 nd 个。

  4. 一个我也不知道叫啥的变换

    k=1nd=1nkμ(d)nkdmkdk=1nT=1nμ(Tk)nTmT

    通过设 T=kd,来把下取整里面的两个变量转化为只有一个变量,方便我们进行整除分块。

  5. 有关 [gcd(i,j)=1] 的套路(默认 nm

         i=1nj=1m[gcd(i,j)=1]=i=1nj=1md|gcd(i,j)μ(d)=i=1nj=1md=1n[d|i][d|j]μ(d)=d=1nμ(d)i=1nj=1m[d|i][d|j]=d=1nμ(d)i=1n[d|i]j=1m[d|j]=d=1nμ(d)ndmd

    于是可以 O(n) 预处理 μ(n),后面两项整除分块即可。

    通过整理式子,我们将一个 O(n2) 的式子优化到了 O(n+n)

  6. 升级版 5

         i=1nj=1m[gcd(i,j)=k]     i,j 同时除以 k=i=1nkj=1mk[gcd(i,j)=1]=i=1nkj=1mkd|gcd(i,j)μ(d)

    后面的就都一样了,注意枚举范围即可。

  7. 升级版 6

         i=1nj=1mij[gcd(i,j)=k]

  • i,j 同时除以 k

    =i=1nkj=1mkijk2[gcd(i,j)=1]=i=1nkj=1mkijk2d|gcd(i,j)μ(d)

  • 你会发现多了一个 k2,这是为什么呢?因为你还要考虑 i,j 的贡献,你同时除以 k 了就要乘上原来应该有的 k2 的贡献。

  1. 一个结论

    d(ij)=x|iy|j[gcd(x,y)=1]

    证明思路大致是构造一个双射,一一对应。

6|0二项式反演

应该是运用最广泛的一个反演类型。

为什么叫二项式反演?因为它由二项式定理推过来的,并且式子也比较相似。

6|1前置

首先我们知道二项式定理

(a+b)n=i=0n(ni)anibi

我们令 a=1,b=1,就得到我们的推论式

i=0n(1)i(ni)=[n=0]

这里因为 00 没有意义,我们给它定义成 00=1,其余的 0k 都是 0

6|2二项式反演

先给出式子

f(n)=i=0n(ni)g(i)g(n)=i=0n(1)ni(ni)f(i)

简单证明一下,只证明从左边推右边

     i=0n(1)ni(ni)f(i)=i=0n(1)ni(ni)j=0i(ij)g(j)=i=0nj=0i(1)ni(ni)(ij)g(j)=j=0ni=jn(1)ni(ni)(ij)g(j)=j=0ni=jn(1)ni(nj)(njij)g(j)=j=0n(nj)g(j)i=jn(1)ni(njij)=j=0n(nj)g(j)i=0nj(1)nji(nji)=j=0n(nj)g(j)[n=j]=g(n)

其中第三行到第四行是一个和式的变换。你可以把它想象成一个下三角,本来是先行再列枚举,变换后就变成了先列后行。

第六行到第七行就是枚举范围的变化,令 i 变为 i+j,相应的范围也发生变化。然后就套用我们的推论式就可以了。

6|3应用

二项式反演往往可以抽象成两种模型。

1|0恰好 → 至多型

g(m) 代表恰好满足条件 (=m),剩下的不满足的方案数,也就是答案。

再设 f(m) 表示至多满足条件 (m) 的方案数。

这种题往往 f(m) 是好求的,我们先求出 f(m),再反演求 g(m)

f(m)=i=0m(mi)g(i)g(m)=i=0m(1)mi(mi)f(i)

1|0恰好 → 至少型

g(m) 代表恰好满足条件 (=m) ,剩下的不满足的方案数,也就是答案。

再设 f(m) 表示钦定 m 个元素满足条件 (m),剩下的随便选的方案数。

同理,这种题往往 f(m) 是好求的,我们先求出 f(m),再反演求 g(m)

f(m)=i=mn(im)g(i)g(m)=i=mn(1)im(im)f(i)

其中 (im) 我们可以理解为,我们钦定了其中 m 个满足限制,那么对于一个满足了 km 个限制的方案,它就会被我们算 (km) 次,因此要乘一个系数。

这其实是二项式反演的另一种性质,上界变而不是下界,我们再简单证明一下。

     i=mn(1)im(im)f(i)=i=mn(1)im(im)j=in(ji)g(j)=i=mnj=in(1)im(ji)(im)g(j)=j=mni=mj(1)ni(jm)(jmim)g(j)=j=mn(jm)g(j)i=0jm(1)im(njij)=j=0n(nj)g(j)i=0nj(1)i(jmi)=j=mn(jm)g(j)[j=m]=g(m)

6|4例题

n 个人 n 封信,求全部装错的方案数

这是一个典型的错排问题,但是我们也可以用二项式反演来得出答案。

g(n) 表示恰好 n 个装错的方案数,这也是我们想求出的,但是它并不好直接求出。

f(n) 代表至多 n 个装错的方案数,这个很好求,答案就是全排列,因为每一种方案都符合要求,并且 f(n)g(i) 有如下关系

fn=i=0n(ni)gi

你会发现这符合二项式反演的式子,于是 g(n) 就可以求解了。

g(n)=i=0n(1)ni(ni)fi=i=0n(1)ni(ni)i!=i=0n(1)nin!(ni)!=i=0n(1)in!i

于是这题就做完了。

6|5总结

二项式反演的题和大多数反演题一样,关键在于找出关系,判断是否符合二项式反演的式子,接着用好表示的来反演出不好表示的,再做化简。

7|0斯特林反演

组合数学斯特林数部分。

8|0单位根反演

咕咕

9|0子集反演

咕咕


__EOF__

本文作者bloodstalk
本文链接https://www.cnblogs.com/bloodstalk/p/17489804.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   Bloodstalk  阅读(102)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示