莫比乌斯反演学习笔记(内含反演详细推导和证明!)

莫比乌斯反演

前言

记得上次学这个东西已经是一年前了,题到没有做过几道……

一些有趣的东西

莫比乌斯这个人还是很nb的,相信大家都听说过莫比乌斯带,就是他发现的,跟所有数学大佬一样的,他还喜欢天文学和物理

废话不扯多了

前置知识

整除分块

一个在数论计算中异常常见的东西,一般和反演一起出现不是因为反演常见它就常见吗,一般可以在如下形式的式子中使用:

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

这里直接说\(O(\sqrt{n})\)的做法,也就是整除分块,具体做法如下:

  1. 由一些神奇的规律可以发现,大多数\(\lfloor \frac{n}{i}\rfloor\)的值是一样的,且呈块状分布
  2. 可以发现对于每一个对于每一个值相同的块,最后一个数都是\(n/(n/i)\)
  3. 直接乱搞
for(int i=1,k=0;i<=n;i=k+1){
		k=n/(n/i);
		ans+=(k-i+1)*(n/i); 
}

由于主角不是这货,所以证明什么的就不需要啦,有兴趣可以自己打打表看看,或者上网查查证明

正文

莫比乌斯函数

定义

其定义如下:

\[\mu(x)=\left\{\begin{aligned} 1 & &n==1 \\ (-1)^r && n=p_1p_2……p^r,其中p_i为不同质数\\ 0 && others \end{aligned} \right. \]

计算

对于算法竞赛来说,我们有两个方法来算莫比乌斯函数:

方法1:

根据定义直接算

时间复杂度:\(O(\sqrt{(n)})\)

看着很搞笑高效是吧,这东西一次只能算一个数……

方法二:

计算欧拉筛的时候算

void get_mu(int n){
    mu[1]=1;//定义n=1
    for(int i=2;i<=n;i++)
    {
        if(!vis[i]){prim[++cnt]=i;mu[i]=-1;}
        for(int j=1;j<=cnt&&prim[j]*i<=n;j++)
        {
            vis[prim[j]*i]=1;
            if(i%prim[j]==0)break;
            else mu[i*prim[j]]=-mu[i];
        }
    }
 }

接下来给出莫比乌斯函数的一堆定理和部分证明:

定理

1.莫比乌斯函数\(\mu(n)\)是积性函数

2.莫比乌斯函数的和函数在整数\(n\)处的值\(F(n)=\sum_{d|n}\mu(d)\),满足如下

\[\sum_{d|n}\mu(d)=\left\{\begin{aligned} 1 & &n==1 \\ 0 && n>1\\ \end{aligned} \right. \]

证明

对于定理1:这个我想大家自己脑补,因为我觉得显然,但是要写很多东西……,或者可以查一下积性函数,这个东西这么出名,绝对有人写证明

抱歉!!!

对于定理2:这个还是有一点说头的

先考虑\(n=1\)的情况,\(F(1)=\sum_{d|1}\mu(d)=\mu(1)=1\)

对于\(n>1\),因为上一个定理,\(\mu\)是一个积性函数,那么它的和函数必定是一个积性函数,我们现在假设\(p\)为质数,\(k\)为正整数,那么可以得到如下等式

\[\begin{aligned} F(p^k)&=\sum_{d|p^k}\mu(d)=\mu(1)+\mu(p)+\mu(p^2)+...+\mu(p^k)\\ &=1+(-1)+0+...+0=0 \end{aligned} \]

当一个正整数\(n=p^{a_1}_1p^{a_2}_2...p^{a_k}_k\)时,其和函数\(F(n)=F(p_1^{a_1})F(p_2^{a_2})F(p_3^{a_3})...F(p_k^{a_k})=0\)

证毕

莫比乌斯反演

\(f\)为算术函数,\(f\)的和函数\(F\)的值为\(F(n)=\sum_{d|n}f(d)\),其值由\(f\)的值决定。也就是说\(F\)的形式由\(f\),决定,即\(f\)可以视作自变量,\(F\)可以视作因变量

那我们思考,能不能让\(f\)作为因变量呢,简单来说就是用\(F\)表示出\(f\),由此引出莫比乌斯反演

依旧设\(f\)为算术函数,\(F\)为其和函数\(F(n)=\sum_{d|n}f(d)\),我们按照定义式展开\(F(n),n=1,2,…,8\)

\[\begin{align} 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(5)&=f(1)+f(5)\\ F(6)&=f(1)+f(2)+f(3)+f(6)\\ F(7)&=f(1)+f(7)\\ F(8)&=f(1)+f(2)+f(4)+f(8)\\ \end{align} \]

从这上面的方程可以算出\(f(n),n=1,2……8\)的值

\[\begin{align} f(1)&=F(1)\\ f(2)&=F(2)-F(1)\\ f(3)&=F(3)-F(1)\\ f(4)&=F(4)-F(1)\\ f(5)&=F(5)-F(1)\\ f(6)&=F(6)-F(3)-F(2)+F(1)\\ f(7)&=F(7)-F(1)\\ f(8)&=F(8)-F(4)\\ \end{align} \]

那么我们可以注意到\(f(n)\)等于\(\pm F(n/d)\),其中\(d|n\),那么我们可以得到一个等式

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

这个就是网上常见的莫比乌斯反演啦

我们先来证明一下证明一下这个东西:

先从公式的右边的和式开始,通过\(f\)的和函数的定义,将\(F(n/d)\)用表达式\(\sum_{e|\frac{n}{d}}f(e)\)表示

\[\begin{aligned} \sum_{d|n}\mu(d)F(n/d)&=\sum_{d|n}(\mu(d)\sum_{e|\frac{n}{d}}f(e))\\ &=\sum_{d|n}(\sum_{e|\frac{n}{d}}f(e)\mu(d)) \end{aligned} \]

注意到二元组\((d,e)\),满足\(d|n,e|\frac{n}{d}\).同样的\(e|n,d|\frac{n}{e}\),那么继续变

\[\begin{aligned} \sum_{d|n}(\sum_{e|\frac{n}{d}}f(e)\mu(d))=\sum_{e|n}(\sum_{d|\frac{n}{e}}f(e)\mu(d))=\sum_{e|n}(f(e)\sum_{d|\frac{n}{e}}\mu(d)) \end{aligned} \]

然后我们由上面莫比乌斯函数的定理可以得到\(\sum_{d|\frac{n}{e}}\mu(d)=0\),除非\(\frac{n}{e}=1\),当\(n=e\)时,和等于1,所以有:

\[\sum_{e|n}(f(e)\sum_{d|\frac{n}{e}}\mu(d))=f(n)\times 1=f(n) \]

证毕

定理

\(f\)是积性函数,和函数\(F(n)=\sum_{d|n}\mu(d)\),如果\(F\)是积性函数的话,\(f\)也是积性函数

证明请读者像上面\(\mu\)是积性函数一样yy一下吧,等一下还要写杜教筛,我要写不动了

用途

杜教筛、容斥、数论推式子

后话

感觉和一年前学的时候完全不一样了,以前只看结论,现在还会研究一下证明,越来越喜欢数论了

以上内容的证明和推导全部基于《初等数论及其应用》作者是Kenneth H.Rosen

感谢亲爱的czc教练提供资料

posted @ 2023-05-10 16:15  6penny  阅读(150)  评论(0编辑  收藏  举报