莫比乌斯反演专题学习笔记

莫比乌斯反演专题学习笔记

本文可能存在诸多谬误,阅读时请谨慎分析

若发现文中有谬误,如您愿意,恳请您向我指出,不胜感激!


为什么要学莫比乌斯反演?

解决一类与狄利克雷卷积、整除、积性函数有关的问题,通过莫比乌斯反演,往往可以将复杂度优化到可接受的范围内


积性函数

对于任意互质整数\(a,b\)\(f(ab)=f(a)f(b)\)的函数称为积性函数

对于任意整数\(a,b\)\(f(ab)=f(a)f(b)\)的函数称为完全积性函数

常见,重要的积性函数有:

欧拉函数\(\phi(n)\)
莫比乌斯函数\(\mu(n)\)
狄利克雷卷积单位元\(\varepsilon=[n=1]\)
不变函数\({\bf{1}}(n)=1\)

狄利克雷卷积

函数\(f,g\)的狄利克雷卷积\((f*g)\)定义如下

\[(f*g)(n)=\sum_{d|n}f(\frac{n}{d})g(d)\]

狄利克雷卷积的单位元为\(\varepsilon=[n=1]\)(把它代入到狄利克雷卷积中,可以发现\(f*\varepsilon=f\)

莫比乌斯函数

莫比乌斯函数定义如下:

\[\mu(i)=\begin{cases}1,& \text{if i = 1}\\(-1)^k,& \text{if i=}p_1p_2p_3\dots p_k(p\in prime)\\0,&\text{otherwise}\end{cases}\]

下面证明莫比乌斯函数的狄利克雷卷积逆是不变函数,即

\[\mu*{\bf{1}}=\varepsilon\]

以下过程引自【算法讲堂】【电子科技大学】【ACM】莫比乌斯反演

证明:设\(n\)的不同质因子的个数为\(k\),则有
\[\mu*{\bf{1}}=\sum_{d|n}\mu(d)=\sum_{i=0}^k(-1)^i\begin{pmatrix}k\\i\end{pmatrix}\]
由二项式定理,有
\[(x+y)^k=\sum_{i=0}^kx^iy^{k-i}\begin{pmatrix}k\\i\end{pmatrix}\]
\(x=-1,y=1\)代入得
\[0^k=\sum_{i=0}^k(-1)^i\begin{pmatrix}k\\i\end{pmatrix}\]

\[\mu*{\bf{1}}=\varepsilon\]

由此,我们得到莫比乌斯函数的一个性质\(\sum_{d|m}\mu(d)=[m=1]\)


由于莫比乌斯函数具有积性,我们可以用线性筛来求出莫比乌斯函数

void GetPrime()
{
    nop[1]=1,mu[1]=1;
    for(register int i=2;i<=N;++i)
    {
        if(!nop[i])pri[++pcnt]=i,mu[i]=-1; 
        for(register int j=1;j<=pcnt && i*pri[j]<=N;++j)
        {
            nop[i*pri[j]]=1;
            if(i%pri[j]==0)break;
            else mu[i*pri[j]]=-mu[i];
        }
    }
}

莫比乌斯反演

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

证明:

\[g=f*{\bf{1}},\mu*g=f*{\bf{1}}*\mu=f\]


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

证明略


参考资料

【算法讲堂】【电子科技大学】【ACM】莫比乌斯反演https://www.bilibili.com/video/av43470417

猜你喜欢

转载自www.cnblogs.com/lizbaka/p/10509365.html