Fork me on GitHub

莫比乌斯反演自我击毙进程1-1

莫比乌斯反演

前情提要:

    关于莫比乌斯翻译,是真的懵逼吾死,莫比乌斯函数(好理解),狄利克雷卷积(能懂不会用),莫比乌斯反演(队友泪两行),杜教筛(呵呵),因为看了两天自己不能自理的推出来,所以写个博客帮助下理解,懂了就改。。。。。。。

积性函数:

  • 积性函数:对于所有互质的整数都有$f(ab)=f(a)f(b)$的数论函数。
  • 完全积性函数:对于任意的整数都满足$f(ab)=f(a)f(b)$的数论函数
  • 常用的积性函数:(常用到几乎你要遇到的题就是n选i个)
  • $1(n)$:不变函数$1(n)=1$;(完全积性)     (用1直接写比较直接,后面用$I$来代替,怎么也得给个符号让他升点品格)
  • $Id(n)$:单位函数$Id(n)=n$;(完全积性)
  • $Idk(n)$:幂函数,对于任何复数、实数k,定义为$Idk(n) = n^k $;(完全积性)

       不是义务教育漏洞的以上函数完全能秒懂,当然这只是万恶的开始

  • $\epsilon (n)$:单位元,记:$\epsilon (n)=[n==1]$,其定义为:当且仅当$n=1$时,$\epsilon (n)=1$,否则为0。

     别称为“对于狄利克雷卷积的乘法单位”;(完全积性)

  • $μ(n)$:  莫比乌斯函数,(积性函数)                     $ \mu(n)\begin{cases}
     & \text 1\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ n=1 \\ 
     & \text(-1)^{k} \ \ \ \ \ \ \ \ \ \ \ \ n=p _{1},p_2,p_3,p_4...,p_k (p_i为n的质数因子)\\
     & \text0  \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 其他
    \end{cases}$
  • $φ(n)$:欧拉函数,在数论中,$φ(n)$表示小于n且与n互质的数的个数。

狄利克雷卷积(∗):

狄利克雷卷积,记符号∗,是函数与函数之间的关系;

定义积性函数$h(n)=f(n)*g(n)$

                                   $h(n)=\sum_{d|n}^{}f(d)g(\frac{n}{d})$

                                                     或者           

 $h(n)=\sum_{\underset{a,b>0}{ab=n}}^{}f(a)g(b)$

狄利克雷卷积具有以下性质:

  • 交换律$f*g=g*f$
  • 结合率$h*(g*f)=f*(h*g)$
  • 对于所有数论函数,都满足$f(n)*\epsilon (n)=\epsilon (n)*f(n)=f(n)$,这好像是个没用的废话,其实巨有用
  • 当$f(n),g(n)$为积性函数的时候,$f(n)*g(n)$也为积性函数,当$h(n)$为积性函数,$g(n)$为积性函数时,$f(n)$也为积性函数
  • 如果 $g$为完全积性函数,且$h=f*g$,则$f=h*\mu g$                   

     即若:          

         $h(n)=\sum_{d|n}^{}f(d)\cdot g(\frac{n}{d})$

     则

         $f(n)=\sum_{d|n}^{}h(d)\mu(\frac{n}{d})g(\frac{n}{d})$

           具体怎么推的,推不出来,暂时先记着吧。如果用$1(n)$来替换$g(n)$其实就和莫比乌斯反演的推论一样。

常用的狄利克雷卷积关系有:

              $\mu * I= \epsilon $    即                             $\sum_{d|n}^{}\mu(d)=\begin{cases}
                      & \text1 \ \ \ \ n=1 \\ 
                      & \text0  \ \ \ \ n>1\end{cases}$

   

            $\varphi * I=N $ (其中N(n)=n) 即                        $\sum_{d|n}^{}\varphi (d)=n$

      

             $\mu*N=\varphi $    即                            $\sum_{d|n}^{}\mu(d)(\frac{n}{d})=\sum_{d|n}d\mu(\frac{n}{d})=\varphi (n)$

       简单的来证一下这个吧

                                                                         $  \varphi *I=N $

 $\rightarrow $    $\varphi *I*\mu=N*\mu$

 $ \rightarrow$           $\varphi *\epsilon=N*\mu$

 $\rightarrow $                 $ \varphi=N*\mu  $              其中$N=n,即为Id(n)$

  

莫比乌斯反演:

    莫比乌斯反演是数论中十分重要的内容,常用于解决组合数的问题,很常见的有$gcd(i,j)$的问题。

    对于莫比乌斯反演其实一年前我就看过一些文章,然后没有然后了,这次本着不是你活就是我亡的大无畏态度,我A了上去,因为不是专门学数学的,这玩意啃起来还是挺有(耗)意(生)思(命)的,没事后面还有一大推数论知识呢o(╥﹏╥)o,别倒在这就行。

   言归正传,关于莫比乌斯反演,主要的预备知识已经介绍完了,那么莫比乌斯反演的结论我先摆出来:

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

   反演前的函数是$F(n)=\sum_{d|h}f(n)$       关于F(n)和f(n)的关系举例,dudu,就懂了。

   为什么是这样呢,推论过程看着上面欧拉函数和莫比乌斯函数推演的过程自行脑补。

   然后到这里,你会惊奇的发现,莫比乌斯反演的过程,啪,会了!

   对于莫比乌斯反演需要求莫比乌斯函数

   简单的题,或者说不恶心的的题,用线筛就可以了,否则就需要用到杜教筛、Min_25筛什么了。

   这里给一段线筛莫比乌斯数的代码,其实就是线筛+$\mu$的组合

   

int prim[N];
bool vis[N];
int cnt;
int mu[N];
void get_mu(int n)
{
    mu[1]=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]<=n/i;j++)
        {
            vis[prim[j]*i]=true;
            if(i%prim[j]==0)
            {
                mu[i*prim[j]]=0;
                break;
            }
            mu[i*prim[j]]=-mu[i];
        }
    }

}

   

posted @ 2022-07-05 20:48  一只鸽子呀  阅读(52)  评论(0)    收藏  举报