zoukankan      html  css  js  c++  java
  • 从狄利克雷卷积到莫比乌斯函数

    之前学莫比乌斯反演的时候就被莫比乌斯函数震惊了,从(f(x)=sumlimits_{d|n}g(d))反演出(g(n)=sumlimits_{d|n}mu(d) imes f(frac{n}{d})),给出了谜一般的(mu(x))函数的定义,令人百思不得其解,感觉定义出莫比乌斯函数的人似乎对容斥原理有了高深的造诣。这里从狄利克雷卷积((Dirichlet)卷积)出发,可以很自然地导出莫比乌斯函数,并得到莫比乌斯反演公式。

    一些定义

    积性函数

    如果(gcd(x,y)=1),且(f(xy)=f(x) imes f(y)),则(f(x))为积性函数。

    数论函数

    数论函数亦称算术函数,一类重要的函数,指定义在正整数集上的实值或复值函数,更一般地,也可把数论函数看做是某一整数集上定义的函数——《百度百科》

    总之可以理解为是定义域为正整数集的函数。

    常见的数论函数:

    单位函数:(epsilon(n)=[n=1])

    常数函数:(1(n)=1)

    恒等函数:(Id(n)=n)

    欧拉函数:(varphi(n)=sumlimits_{i=1}^{n}[gcd(i,n)=1])

    莫比乌斯函数:(mu(n))

    (Dirichlet)卷积

    定义

    (f,g)为两个数论函数,它们的(Dirichlet)卷积为:

    [(f*g)(n)=sumlimits_{d|n}f(d)*g(dfrac{n}{d}) ]

    (可见它跟数的因子有很密切的关系)

    其中单位函数(epsilon(n)=[n=1])(Dirichlet)卷积的单位元,即任何函数卷(epsilon)都得它本身。

    可以理解卷积是一种运算,它的作用对象是函数。

    性质

    (Dirichlet)卷积满足交换律、结合律和分配律。

    交换律

    [(f*g)(n)=(g*f)(n) ]

    证明它不香吗? 证明:

    由于(d)(dfrac{n}{d})有对称性,故

    [(f*g)(n)=sumlimits_{d|n}f(d) imes g(dfrac{n}{d})=sumlimits_{d|n}g(d) imes f(dfrac{n}{d})=(g*f)(n) ]

    证毕。


    结合律

    [((f*g)*h)(n)=(f*(g*h))(n) ]

    证明它不香吗? 证明:

    [((f*g)*h)(n)=sumlimits_{t imes d_3=n}(sumlimits_{d_1 imes d_2=t}f(d_1) imes g(d_2)) imes h(d_3)=sumlimits_{d_1 imes d_2 imes d_3=n}f(d_1) imes g(d_2) imes h(d_3)=sumlimits_{t imes d_1=n}f(d_1) imes (sumlimits_{d_2 imes d_3=t}g(d_2) imes h(d_3))=(f*(g*h))(n) ]

    证毕。


    分配律

    [((f+g)*h)(n)=(f*h)(n)+(g*h)(n) ]

    证明它不香吗? 证明:

    [((f+g)*h)(n)=sumlimits_{d|n}(f(d)+g(d)) imes h(dfrac{n}{d})=sumlimits_{d|n}f(d) imes h(dfrac{n}{d})+sumlimits_{d|n}g(d) imes h(dfrac{n}{d})=(f*h)(n)+(g*h)(n) ]

    证毕。


    两个积性函数的Dirichlet卷积仍然是积性函数。

    证明它不香吗? 证明:

    (gcdleft( x,y ight)=1),则(fleft( xy ight)=fleft( x ight) imes fleft( y ight))(gleft( xy ight)=gleft( x ight) imes gleft( y ight))

    [left( f*g ight)left( n ight) imes left( f*g ight)left( m ight)=displaystyle sumlimits_{d_1|n}fleft( d_1 ight) imes gleft( dfrac{n}{d_1} ight) imes displaystyle sumlimits_{d_2|m}fleft( d_2 ight) imes gleft( dfrac{m}{d_2} ight)=displaystyle sumlimits_{d_1|n}displaystyle sumlimits_{d_2|m}fleft( d_1 ight) imes fleft( d_2 ight) imes gleft( dfrac{n}{d_1} ight) imes gleft( dfrac{m}{d_2} ight)=displaystyle sumlimits_{d_1|n}displaystyle sumlimits_{d_2|m}fleft( d_1d_2 ight) imes gleft( dfrac{nm}{d_1d_2} ight)=displaystyle sumlimits_{d|nm}fleft( d ight)gleft( dfrac{nm}{d} ight)=left( f*g ight)left( nm ight) ]

    证毕。


    (Dirichlet)卷积的逆

    类比算数运算上的(a imes b=1),如果两个数论函数的卷积后为单位(1),即(f*g=epsilon)(n)省略),则(g)(f)的逆,即(g=f^{-1}),我们考虑下如何去求(f^{-1})

    (f*g=epsilon)展开得(displaystyle sumlimits_{d|n}fleft( d ight) imes gleft( dfrac{n}{d} ight)=epsilonleft( n ight)),我们要求的是(gleft( n ight)),把它从和式分离出来得

    [fleft( 1 ight) imes gleft( n ight)=epsilonleft( n ight)-displaystyle sumlimits_{d|n且d eq 1}fleft( d ight) imes gleft( dfrac{n}{d} ight) ]

    (fleft( 1 ight) eq 0)时,存在(gleft( n ight)=dfrac{1}{fleft( 1 ight)} imes left( epsilonleft( n ight)-displaystyle sumlimits_{d|n且d eq 1}fleft( d ight) imes gleft( dfrac{n}{d} ight) ight)),即

    [f^{-1}left( n ight) =dfrac{1}{fleft( 1 ight) } imes left( epsilonleft( n ight) -displaystyle sumlimits_{d|n且d eq 1}fleft( d ight) imes f^{-1}left( dfrac{n}{d} ight) ight) ]

    很显然当(n=1)(f^{-1}(1)=1)

    这就是(Dirichlet)卷积的逆公式。

    从这里可以很容易证明,如果(f(n))是积性函数,它的逆(f^{-1}(n))也是积性的,方法同第四条性质的证明方法。

    莫比乌斯反演

    讲了这么多,终于轮到莫比乌斯了。

    已知(f(n)=sumlimits_{d|n}g(d)),求(g(n))

    我们从(Dirichlet)卷积的角度去看式子,即是(f=g*1),即函数(f(n))(g(n))与常数函数(1(n)=1)(Dirichlet)卷积的结果。

    我们要求(g(n)),我们可以在等式两边乘以常数函数的逆(1^{-1}(n)),这样式子就变成了(g*(1*1^{-1})=g=f*1^{-1}),这样我们就可以求得(g(n)),现在关键是如何求得(1^{-1}(n))

    由于(1*1^{-1}=epsilon),根据上面的逆的公式得到

    [1^{-1}(n)=dfrac{1}{1left( 1 ight) } imes left( epsilonleft( n ight) -displaystyle sumlimits_{d|n且d eq n}1left( d ight) imes 1^{-1}left( dfrac{n}{d} ight) ight)=left( epsilonleft( n ight) -displaystyle sumlimits_{d|n且d eq n}1^{-1}left( dfrac{n}{d} ight) ight) ]

    我们记(1^{-1}(n)=mu(n))

    因为(1(n))是积性函数,故其逆(mu(n))也是积性的。

    (n=1)时,(mu(1)=1)

    (n>1)时,(epsilon(n)=0)(mu(n)= -displaystyle sumlimits_{d|n且d eq 1}muleft( dfrac{n}{d} ight)=-displaystyle sumlimits_{d|n且d eq n}muleft( d ight))

    (n)是质数时,(mu(n)= -displaystyle sumlimits_{d|n且d eq n}muleft( d ight)=-mu(1)=-1)

    (n)是质数的幂时,设(n=p^c(c>1)),则(mu(p^c)=-displaystyle sumlimits_{d|p^{c-1}}muleft( d ight)=-mu(p^{c-1})-displaystyle sumlimits_{d|p^{c-2}}muleft( d ight)=-mu(p^{c-1})+mu(p^{c-1})=0)

    故如果(n=prodlimits_{i}p_i^{c_i}prodlimits_{j}p_j),其中(c_i>1)(p_i)均是各异的质数,由于(mu(n))是积性函数,则(mu(n)=prodlimits_{i}mu(p_i^{c_i})prodlimits_{j}mu(p_j)=0 imes prodlimits_{j}mu(p_j)=0)

    (n=prodlimits_{i=1}^{k}p_i),根据其积性,可得(mu(n)=prodlimits_{i=1}^{k}mu(p_i)=(-1)^{k}),其中(k)(n)质因数分解后互异质数的个数。

    综上我们就可以得到(mu(n))的表达式了。

    莫比乌斯函数

    (n=prodlimits_{i=1}^{k}p_{i}^{c_{i}})

    [mu(n)=egin{cases} 1 & n=1 \ 0 & exists i in [1,k],c_i>1 \ (-1)^k & forall i in [1,k],c_i=1 end{cases}]

    由此我们就得到了常数函数(1(n))的逆的表达式(mu(n)),所以(g=f*1^{-1}=f*mu),即(g(n)=sumlimits_{d|n}f(d)*mu(dfrac{n}{d}))

    这就是莫比乌斯反演中得到的公式以及(mu(n))函数的由来了。

    莫比乌斯反演还有另一种形式:

    (f(n)=sumlimits_{n|d}g(d)),则(g(n)=sumlimits_{n|d}f(n) imes mu(dfrac{d}{n}))

    然而就算知道这些你还是不会做题

    由于(mu*1=epsilon),其中(epsilon(n))当且仅当(n=1)(epsilon(n)=1),其余情况(epsilon(n)=0),这与([gcd(i,n)=1])非常类似,因为也是只有当(gcd(i,n)=1)([gcd(i,n)=1]=1),其余情况([gcd(i,n)=1]=0)

    故对于([gcd(i,n)=1])我们可以把它替换成(epsilon([gcd(i,n)=1])),再而换成(displaystylesumlimits_{d|gcd(i,n)}mu(d)),然后我们就可以搞事情了并不知道有什么用,看看下面吧。

    欧拉函数

    众所周知,(varphi(n)=sumlimits_{i=1}^{n}[gcd(i,n)=1]),我们将右式替换,得到

    [varphi(n)=sumlimits_{i=1}^{n}sumlimits_{d|i}mu(d) ]

    然后我们再进行常规变换,改变求和的顺序,先枚举因子,然后看看这个因子出现了多少次。

    [varphi(n)=sumlimits_{i=1}^{n}sumlimits_{d|gcd(i,n)}mu(d)=sumlimits_{d|n}mu(d) imes frac{n}{d} ]

    (n)移到左边就得到一个著名的式子

    [dfrac{varphi(n)}{n}=sumlimits_{d|n}dfrac{mu(d)}{d} ]

    莫比乌斯函数与欧拉函数就神奇的联系在一起了。

    还是看上面的式子,写成(Dirichlet)卷积的形式就是

    [varphi=mu*Id ]

    其中(Id(n)=n)。对这个式子我们两边再卷常数函数(1)

    [varphi*1=1*mu*Id=epsilon*Id=Id ]

    (n=sumlimits_{d|n}varphi(d))

    欧拉函数还有另一种求法,根据欧拉函数的定义,

    (n=p)是质数,则(varphi(p)=p-1)

    (n=p^c),由于(p imes i (i in [1,p^{c-1}]))都是(n)的因子,根据容斥原理知(varphi(p^c)=p^c-p^{c-1}=p^{c} imes (1-frac{1}{p}))

    (n=prodlimits_{i=1}^{k}p_{i}^{c_i}),由于欧拉函数是积性函数,故(varphi(n)=prodlimits_{i=1}^{k}varphi(p_{i}^{c_i})=prodlimits_{i=1}^{k}p_{i}^{c_i}(1-dfrac{1}{p_{i}^{c_i}})=nprodlimits_{i=1}^{k}(1-dfrac{1}{p_{i}^{c_i}}))

    总结

    这篇文章讲了什么呢其实什么都没讲,其实就是从(Dirichlet)卷积的角度介绍了莫比乌斯函数(mu(n))和莫比乌斯反演以及证明了关于欧拉函数(varphi(n))与莫比乌斯函数(mu(n))的等式。至于题目,大都是要运用技巧和([gcd(i,n)=1]=sumlimits_{d|gcd(i,n)}mu(d))等式,进行各种变换,最后再预处理加上什么数论分块的做法解决的,但这并不是这篇文章的重点。

    至于杜教筛,是用来解决某些特别的数论函数(f(n))(S(n)=sumlimits_{i=1}^{n}f(i))的方法,通过选择另外两个数论函数(h(n),g(n)),使得(h=f*g),从卷积的角度出发诱导出(S(n))。至于如何选择(h,g),卷积的恒等式:

    [epsilon=mu*1 ]

    [d=1*1 ]

    [sigma=d*1 ]

    [varphi=mu*Id ]

    [Id=varphi*1 ]

    给我们指引了方向。具体的怎样留个坑qwq

    其中(d(n))表示(n)的因子个数,(sigma(n))表示(n)的因子和。

  • 相关阅读:
    Android框架之路——OkGo的使用
    recyclerview23+出现多个item只显示第一个item的问题
    Spark MLlib回归算法LinearRegression
    Spark MLlib聚类KMeans
    Impala性能优化
    Impala通过JDBC方式访问
    Impala与HBase整合
    Impala数据处理(加载和存储)
    Impala SQL
    Impala储存与分区
  • 原文地址:https://www.cnblogs.com/Lanly/p/12189571.html
Copyright © 2011-2022 走看看