莫比乌斯反演是数论数学中很重要的内容,可以用于解决很多组合数学的问题。第一次接触莫比乌斯反演时,还是在学长们的胡策题中听说的。当时的我一脸懵逼~
莫比乌斯函数(Important)
人为定义莫比乌斯函数
莫比乌斯函数有着这样的几个性质:
对任意正整数n有
∑d|nμ(d)=[d==1]
∑d|nμ(d)d=ϕ(n)n
在这里我给出第一个性质的证明(我才不会说第二个我不会证明)
证明:
很明显当d等于1时式子的结果是1。由于莫比乌斯函数那可爱的性质,我们只需要考虑那些每种质因子不超过1的因数对答案的贡献,所以我们可以化成这个式子:
设n共有k种质因子。 得:
∑d|nμ(d)=∑ki=0Cik(−1)i
通过牛顿二项式公式定理我们可以很明显地看出后面是等于
(1+(−1))k
,结果等于0。证毕。
莫比乌斯的核心公式
如果我们知道:
f(n)=∑nd|ng(d)
那么可以推出:
g(n)=∑nd|nμ(nd)f(d)
意义:题目往往要我们去求一个函数
f(x)
。时空复杂度无法承受,所以我们需要另设一个易求的
g(x)
,通过反演用
f(x)
来线性表示
g(x)
,最后通过线性筛的方法得出答案。
证明:
易得:
g(n)=∑d|ng(d)∑x|ndμ(x)=∑x|nμ(x)∑d|nxg(d)=∑x|nμ(x)f(nx)
得证。证明的关键便在于指标代换。
莫比乌斯反演的公式变种
莫比乌斯反演公式的变化有很多,在此我也只是收集几种,并不加以证明。
莫比乌斯反演的真正用途
你们也许会问了,莫比乌斯反演到底是用来干什么的?
在题目中你可能会遇到一个函数的关系,需要是你求值,而直接暴力算的复杂度不能承受,那该怎么办呢?我们就需要根据题目定义另一个函数,然后找到关系进行反演,缩短时空复杂度,利用莫比乌斯函数最后可得到理想的答案。
应用一:
g(i)
很难求,但是
∑d|ng(d)
易求,则可用下面的反演来计算
g(i)
:
应用二:
g(i)
很难求,但是
∑⌊ni⌋d=1g(d∗i)
易求,则可用下面的反演来计算
g(i)
:
四大要点:
1.公式推导:用莫比乌斯反演推导出基本式子
2.等价变换:变量替换、内层外移等等技巧
3.线性筛法:强大的线性筛可以支持一系列的预处理
4.分块处理:归结到最后,用分块在
n√
内处理
与莫比乌斯相关的重要知识
狄利克雷卷积
既然知道了莫比乌斯反演,那就不得不去学狄利克雷卷积。这两个一个是枪一个是弹,组合起来非常管用。当你真正精通莫比乌斯反演和狄利克雷卷积时,别人需要反演1h的式子,你也许两行就反演完了,就是这么神奇。
杜教筛
杜教筛是极其强大的筛法,用来计算一系列积性函数前缀和百试不爽。
除法优化
从杜教筛中即可看出除法优化的强大。
我会在稍后的博客中讲解这三个知识。
与莫比乌斯相关的一些优美的式子