莫比乌斯反演学习笔记

\[\]

前段时间学习了莫比乌斯反演,现在补一篇学习笔记吧。


Step 1:莫比乌斯函数

首先我们来定义一下莫比乌斯函数 \(\mu\) ,它的取值如下:

\[\mu(n)=\left\{ \begin{array}{ll} 1 \qquad \quad n=1\\ (-1)^k \quad n=p_1p_2\cdots p_k\\ 0 \qquad \quad otherwise \end{array} \right. \]

显然,莫比乌斯函数是一个积性函数,所以我们可以用线性筛将他筛出来。

莫比乌斯函数具有很好的容斥性,在一部分题目中会用得到。


Step 2:狄利克雷卷积

话分一头,我们来先学习一下另一个鬼东西:狄利克雷卷积。

引用一下我的另一个blog

Step 3: 莫比乌斯反演

写了这么久终于要开始正式讲解了。

我们定义两个函数 \(f,F\)。其中:

\[F(n)=\sum_{d|n}f(d) \]

然后我们要去推这么一个柿子:

\[f(n)=\sum_{d|n}F(d)\mu(\frac{n}{d}) \]

我们先列出几项:

\[F(1)=f(1) \]

\[F(2)=f(1)+f(2) \]

\[F(3)=f(1)+f(3) \]

\[F(4)=f(1)+f(2)+f(4) \]

可以得出:

\[f(1)=F(1) \]

\[f(2)=F(2)-F(1) \]

\[f(3)=F(3)-F(1) \]

\[f(4)=F(4)-F(2) \]

emmm,好像看不出来什么

接下来我们就要用狄利克雷卷积来证明他。

首先,很明显的是

\[F=f * I \]

两边同时卷上个 \(\mu\):

\[F * \mu=f * I * \mu \]

然后我们知道

\[I * \mu=\varepsilon \]

\[\therefore F * \mu=f * \varepsilon \]

\[F * \mu =f \]

证毕。

同样,我们也可证出莫比乌斯反演的另一种形式:

\[F(n)=\sum_{n|d}f(d) \]

\[f(n)=\sum_{n|d}\mu(\frac{d}{n})F(d) \]

后者更加常用(虽然一般做题都不会生搬硬套上面两个形式)。


我们来举个例子使用莫比乌斯反演来做一做:
给定一个数 \(n\),求以下式子的值:

\[\sum_{i=1}^n\sum_{j=1}^ngcd(i,j) \cdots \cdots A \]

\(1 \le n \le 10^5\)

first:

暴力枚举,时间 \(O(n^2 \log n)\)

second:

接下来就是用莫比乌斯反演推柿子的时间了。

\[\sum_{i=1}^n\sum_{j=1}^ngcd(i,j) \]

我们改变枚举顺序,先枚举 \(gcd(i,j)\)

\[=\sum_{d=1}^nd\sum_{i=1}^n\sum_{j=1}^n[gcd(i,j)==d] \]

我们把 \(i,j\) 的枚举范围稍加改变,只枚举 \(d\) 的倍数。

\[=\sum_{d=1}^nd\sum_{i=1}^{[\frac{n}{d}]}\sum_{j=1}^{[\frac{n}{d}]}[gcd(i,j)==1] \]

接下来就是见证奇迹的时刻:

\[=\sum_{d=1}^nd\sum_{i=1}^{[\frac{n}{d}]}\sum_{j=1}^{[\frac{n}{d}]}\sum_{k|gcd(i,j)}\mu(k) \]

这是为什么呢?因为 \(\mu * 1 = \varepsilon\),所以柿子值是不变的。

我们再次改变枚举顺序,先枚举 \(k\)

\[=\sum_{d=1}^nd\sum_{k=1}^{[\frac{n}{d}]}\mu(k)\sum_{i=1}^{[\frac{n}{d}]}\sum_{j=1}^{[\frac{n}{d}]}1 \]

经过我们的一通瞎操作这个柿子终于变得毒瘤起来了。

我们发现最后的两个 \(\sum\) 其实是不必要的,我们可以把它变成\([\frac{n}{d}]^2\)
式子变成了这样:

\[=\sum_{d=1}^nd\sum_{k=1}^{[\frac{n}{d}]}\mu(k)[\frac{n}{d}]^2 \cdots \cdots B \]

这个柿子呢我们来分析一下它的复杂度,应该为:

\[\sum_{i=1}^n[\frac{n}{i}] \]

这个东西我们把它称为调和级数,计算出来约是等于 \(O(n\ln n)\)


其实这个柿子还可以优化,以下有两种优化方法:

1.数论分块:

引理:对于正整数 \(n\), \(S= \{ x|x=[\frac{n}{i}],i\in N^* \}\)\(|S|\)\(\sqrt{n}\)同阶

这个引理本人太菜了不会证明,先放个坑以后填上,但结论是正确的。

那么上面这个 \(B\) 式我们就可以将所有 \([\frac{n}{i}]\) 相等的数统一计算可以达到 \(O(n)\) 的优秀复杂度。

2.继续将柿子优化:

我们可以设 \(T=dk\),然后柿子就变成了这样:

\[\sum_{T=1}^n\sum_{d|T} d\mu(\frac{T}{d})[\frac{n}{d}]^2 \]

其中我们发现 \(\displaystyle \sum_{d|T}d\mu(\frac{T}{d})\)可以用一种类似埃式筛的方法预处理,时间复杂度为 \(O(n\ln n)\),然后 \(O(\sqrt{n})\) 的速度输出答案

第一种方法适合单次输出答案,第二种方法适合多测,一般使用第二种方法。

posted @ 2024-06-19 15:43  LUlululu1616  阅读(55)  评论(0)    收藏  举报