zoukankan      html  css  js  c++  java
  • 莫比乌斯反演学习笔记1

    本文主要介绍莫比乌斯函数,狄利克雷卷积以及莫比乌斯反演定理的证明等理论内容。

    在这里首先要说明:

    1:本文讨论的所有函数为数论函数,即定义域为(D=N^*)的函数;

    2:(sum limits_{d|n}f(d))表示(d)取遍(n)的所有正因子,再将所有的(f(d))相加,例如当(n=6)时,(sum limits_{d|n}f(d)=f(1)+f(2)+f(3)+f(6))

    3:(prod limits_{i=1}^ka_i=a_1 imes a_2 imes ... imes a_k),即所有(a_i)的乘积;

    4:([p])(其中p是一个表达式)表示当p成立时,值为1;否则值为0;

    5:((a,b))表示(gcd(a,b)),即(a,b)的最大公因数;

    6:几个在狄利克雷卷积中会出现的基本函数:

    • (varepsilon(n)=[n=1]),也就是(varepsilon(n)=egin{cases}1qquad n=1\0 qquad n eq 1 end{cases})

    • (I(n)=1)

    • (id(n)=n)


    一、积性函数


    定义:如果一个函数(f(n))满足:当((a,b)=1)时,有(f(ab)=f(a) imes f(b)),则称(f(n))为积性函数。

    进一步,如果对于任意数(a,b),都有(f(ab)=f(a) imes f(b)),则称(f(n))为完全积性函数。

    积性函数的基本性质:对于任意正整数(n eq 1),根据唯一分解定理,可以进行分解素因数:即(n=p_1^{c_1}...p_k^{c_k}=prod limits_{i=1}^kp_i^{c_i}),显然所有的(p_i^{c_i})两两互素,因此有:

    (f(n)=f(p_1^{c_1}) imes ... imes f(p_k^{c_k})=prod limits_{i=1}^kf(p_i^{c_i}))

    因此,我们可以用类似线性筛素数的方法线性筛出某一积性函数的值,只需要知道对于每一个素数以及素数的方幂结果为多少即可。

    由积性函数以及完全积性函数的定义,(varepsilon(n),I(n),id(n))显然皆为完全积性函数。

    证明积性函数的常见方法是利用上面的唯一分解式,将(a,b)唯一分解,再用((a,b)=1)的条件可以得到分解出来的所有素数两两不等,从而继续证明。

    例如:证明(d(n))(n)的正因子个数为积性函数。

    证明:取((a,b)=1),将(a,b)分解得:(a=prod limits_{i=1}^kp_i^{c_i}),且(b=prod limits_{i=1}^lq_i^{d_i}),则(p_i,q_i)两两不等(由((a,b)=1)可得),于是:
    (d(a)=prod limits_{i=1}^k(c_i+1)),且(d(b)=prod limits_{i=1}^l(d_i+1))
    由于(p_i,q_i)两两不等,所以(d(ab)=prod limits_{i=1}^k(c_i+1)prod limits_{i=1}^l(d_i+1)=d(a) imes d(b)),即(d(n))是积性函数。

    积性函数另一个不太常用的性质:若(f(n))是积性函数,则或者(f(n))是值为(0)的常值函数,或者(f(1)=1)

    证明十分容易,因为((n,1)=1),所以(f(n)=f(1) imes f(n)),则(f(n)=0)或者(f(1)=1)


    二、莫比乌斯函数


    定义:若将(n)分解素因数为(n=p_1^{c_1}...p_k^{c_k}=prod limits_{i=1}^kp_i^{c_i}),则莫比乌斯函数定义为:

    (mu(n)=egin{cases}1qquadqquad n=1\ (-1)^kqquad c_1=...=c_k=1\ 0 qquadqquad max(c_1,...,c_k)>1end{cases})

    (最后一行的表示其实等价于:若(n)有一个因子为完全平方数,则(mu (n)=0)

    莫比乌斯函数是积性函数。

    证明:取((a,b)=1),对(a,b)进行讨论:

    • (a=1)(b=1),不妨设(a=1),则(mu(a)=1),因为(mu(b)=mu(b)),所以(mu(ab)=mu(a) imes mu(b))
    • (mu(a)=0)(mu(b)=0),不妨设(mu(a)=0),则存在(p^2|a),所以(p^2|ab),所以有(mu(ab)=0),所以(mu(ab)=mu(a) imes mu(b))
    • 否则,设(a=p_1p_2...p_k,b=q_1q_2...q_l),则(mu(a)=(-1)^k,mu(b)=(-1)^l),因为((a,b)=1),所以(p_i,q_i)两两不等,因此(mu(ab)=(-1)^{k+l}),所以:(mu(ab)=mu(a) imes mu(b))

    综上所述,(mu(ab)=mu(a) imes mu(b)),所以(mu(n))是积性函数。

    前面已经提到,积性函数可以用线性筛的方法筛出,下面就是使用线性筛求(mu(1))(mu(x))的代码,关键部分有注释:

    void init (int x) {
    	mob[1]=1;    //由定义可得mob[1]=1
    	for (int i=2;i<=x;i++) {
    		if (!p[i]) {
    			n[++cnt]=i;
    			mob[i]=-1;    //若i是素数,则mob[i]=(-1)^1=-1
    		}
    		for (int j=1;j<=cnt;j++) {
    			p[i*n[j]]=1;
    			if (i%n[j]==0) {    //若i是n[j]的倍数
    				mob[i*n[j]]=0;    //则i*n[j]有n[j]^2的平方因数,所以函数值为0
    				break;
    			} else {
    				mob[i*n[j]]=-mob[i];    //i*n[j]多了素因子n[j],-1的次数加1
    			}
    		}
    	}
    }
    

    下面是一个莫比乌斯函数的重要性质,也是莫比乌斯反演定理的核心内容:

    (sum limits_{d|n}mu(n)=[n=1])

    证明:

    • (n=1),则上式的值为(mu(n)=1),成立;
    • 否则,设(n)(k)个不同的素因子,则只需考虑这些素因子的组合即可(因为一旦某个素因子的个数大于1,则结果为0,不计入求和答案);那么取奇数个素因数时,莫比乌斯函数的值为-1,取偶数个素因数时,莫比乌斯函数的值为1,因此原式可转化为:

      [C_n^0-C_n^1+...+(-1)^nC_n^n ]

    • 根据二项式定理,该式等于((1-1)^n=0)
    • (sum limits_{d|n}mu(n)=0quad(n eq 1)),得证。

    三、狄利克雷卷积


    定义:已知函数(f(n),g(n)),若函数(h(n)=sum limits_{d|n}f(d)g(frac{n}{d})),记为(h=f*g),称(h)(f,g)的狄利克雷卷积。

    一般,我们还可以将狄利克雷卷积写成这样的形式:

    (h(n)=sum limits_{ij=n}f(i)g(j))

    这更利于我们解决一些问题。

    狄利克雷卷积的运算律:

    (一)交换律:(f*g=g*f)

    证明:因为((f*g)(n)=sum limits_{ij=n}f(i)g(j))(i,j)地位相等,因此(i,j)位置可交换,满足交换律;

    (二)结合律:((f*g)*h=f*(g*h))

    证明:根据狄利克雷卷积定义,有:

    (((f*g)*h)(n)=sum limits_{ij=n}(sum limits_{kl=i}f(k)g(l))h(j)=sum limits_{klj=n}f(k)g(l)h(j))

    同时有:

    ((f*(g*h))(n)=sum limits_{ij=n}f(i)(sum limits_{kl=j}g(k)h(l))=sum limits_{ikl=n}f(i)g(k)h(l))

    两式相等,代表((f*g)*h=f*(g*h))

    (三)分配律:((f+g)*h=f*h+g*h)

    将外部求和进行结合,有(sum f(i)+sum g(i)=sum (f(i)+g(i))),由此易证分配率成立(与莫比乌斯反演关系不大,不多做证明了)

    狄利克雷卷积有一个结论,虽然这里不会用到,但也非常有用:

    两个积性函数的狄利克雷卷积还是积性函数,即若(f,g)是积性函数,则(f*g)也是积性函数

    证明:记(h=f*g),取((a,b)=1),则根据定义有:

    (h(ab)=sum limits_{d|ab}f(d)g(frac{ab}{d}))

    由于((a,b)=1),因此可以将(d)表示成:(d=d_1 imes d_2quad(d1|a,d2|b)),而且对于任意一组不同的((d_1,d_2)),所对应的(d)都不同。因此将原式改写成:

    (h(ab)=sum limits_{d_1|a}sum limits_{d_2|b}f(d_1d_2)g(frac{ab}{d_1d_2}))

    因为((a,b)=1),所以((d_1,d_2)=1,(frac{a}{d_1},frac{b}{d_2})=1),根据(f,g)是积性函数可以进行拆分:

    (h(ab)=sum limits_{d_1|a}sum limits_{d_2|b}f(d_1)f(d_2)g(frac{a}{d_1})g(frac{b}{d_2}))

    将与(d_1)有关的式子提到外层求和:

    (h(ab)=sum limits_{d_1|a}(f(d_1)g(frac{a}{d_1})sum limits_{d_2|b}f(d2)g(frac{b}{d_2})))

    内外层求和分别独立,可以拆去括号,此时再由定义即可得到:

    (h(ab)=sum limits_{d_1|a}(f(d_1)g(frac{a}{d_1}))sum limits_{d_2|b}(f(d2)g(frac{b}{d_2}))=h(a) imes h(b))

    得证。

    以函数的狄利克雷卷积类比数的乘法,我们已经得到了一系列运算律,下面做进一步的分析。
    在乘法中,如果两个数相乘结果为1,则称它们互为倒数,也称为逆元,我们可以类似定义狄利克雷卷积中的逆元。但在此之前,需要先搞清楚卷积中的"1"是多少,即找到一个函数,使得任意一个函数与它求卷积后仍然等于原函数。

    定理:对于任意函数(f(n))(f*varepsilon=f quad (varepsilon(n)=[n=1]))

    证明:由狄利克雷卷积定义有:((f*varepsilon)(n)=sum limits_{d|n}f(d)varepsilon(frac{n}{d})),又因为当且仅当(d=n)时,(varepsilon(frac{n}{d})=1 eq 0),因此对答案有贡献的部分只是(d=n),因此有:((f*varepsilon)(n)=f(n) imes 1=f(n)),得证。

    因此我们定义卷积意义下的逆元为:若(f*g=varepsilon),则称(f,g)互为逆元,记作(f=g^{-1})

    下面我们就莫比乌斯函数的逆元进行讨论。

    我们已经证明了(sum limits_{d|n}mu(d)=[n=1]),我们可以在每个求和式后乘上一个(1),将([n=1])(varepsilon(n))代换,因此就得到了:(mu*I=varepsilon),也就是(I=mu^{-1}),其中(I(n)=1)

    下面是一个联系了欧拉函数和莫比乌斯函数的定理:

    (varphi=mu*idquad(id(n)=n))

    证明:设将n进行素因数分解后为:(n=p_1^{c_1}...p_k^{c_k}),由定义的角度出发,欧拉函数指的是小于等于n的与n互素的数的个数,那么我们只需要用n减去与n不互素的数的个数即可。
    其中,(n=1 imes n=mu(1) imes id(n)),而与n不互素的数,其实就是所有(p_i)的倍数,但是(p_i)倍数组成的数集中有交集,因此我们需要用容斥原理,设(S_i)表示(p_i)倍数组成的集合,(|S|)表示S的元素数量,则:

    (|igcuplimits_{i=1}^kS_i|=sumlimits_{i=1}^k|S_i|-sumlimits_{1 leq i<j leq n}|S_icap S_j|+...+(-1)^{k-1}|igcaplimits_{i=1}^kS_i|)

    而事实上,((-1)^k)可以直接由莫比乌斯函数提供,而(|S_i|=frac{n}{p_i}),类似的,用(n)去除若干(p_i)的积就可以得到交集的元素个数了,而这就是卷积式:

    (sum limits_{d|n,d eq 1}((-1) imesmu(d) imesfrac{n}{d}))

    注意莫比乌斯函数中-1的次数与容斥原理中的次数相差1,而且若d有平方因子,则不会计入答案。因此我们就可以得到:

    (varphi(n)=n-sum limits_{d|n,d eq 1}((-1) imesmu(d) imesfrac{n}{d})=sumlimits_{d|n}mu(d)id(frac{n}{d})=(mu*id)(n))

    (varphi=mu*id),得证。

    由上面这个定理,我们可以得到,莫比乌斯函数与容斥原理息息相关,事实上我们在证明(mu*I=varepsilon)时也运用到了这一性质。

    在此介绍这个定理,是因为使用这个定理再加上下面即将介绍的莫比乌斯反演定理就可以得到:(id=varphi*I),也就是:

    (n=sum limits_{d|n}varphi(d))


    四、莫比乌斯反演定理


    下面进入最后一个版块...真正的莫比乌斯反演定理:

    (F(n)=sumlimits_{d|n}f(n) Leftrightarrow f(n)=sumlimits_{d|n}F(d)mu(frac{n}{d}))

    其实只要有了前面的基础,这个结论就非常浅显简单,需要三个之前提到和一个之前没提到的基础知识作为引理:

    1. ((f*g)*h=f*(g*h)),记为(f*g*h)
    2. (f*varepsilon=f)
    3. (mu*I=varepsilon)
    4. (f=g),则(f*h=g*h)

    最后一条结论非常显然,因此之前没有说明。

    下面就开始我们的证明:

    先证必要性((Rightarrow)):

    (F(n)=sumlimits_{d|n}f(n))可以写作(F=f*I),则根据引理4,将两边同时卷上(mu)

    (F*mu=(f*I)*mu)

    右侧可以通过引理1将括号加在右边:

    ((f*I)*mu=f*(I*mu))

    而通过引理3,我们知道:

    (f*(I*mu)=f*varepsilon)

    再使用引理2可得:

    (f*varepsilon=f)

    再看最初的等式,其实已经得到了结论:

    (f=F*muqquad f(n)=sumlimits_{d|n}F(d)mu(frac{n}{d}))

    再证充分性((Leftarrow)):

    (f(n)=sumlimits_{d|n}F(d)mu(frac{n}{d}))可以写作(f=F*mu),类似刚才,我们两边同时卷上(I):

    (f*I=(F*I)*mu=F*(I*mu))

    通过引理3和引理2可得:

    (F*(I*mu)=F*varepsilon=F)

    于是我们就得到了结论:

    (F=f*Iqquad F(n)=sumlimits_{d|n}f(d))

    对于莫比乌斯反演定理的另一种理解是:将(I)视为(mu^{-1}),或者将(mu)视为(I^{-1}),这时结论更加显然,只需在两边同时卷上(I)(mu),同侧逆元抵消即可。
    这个过程可以看做移项后乘法变除法的过程。

    另一个莫比乌斯反演定理的形式:

    (F(n)=sumlimits_{n|d}f(d) Leftrightarrow f(n)=sumlimits_{n|d}F(d)mu(frac{d}{n}))

    这个式子难以用卷积来直接证明,这里直接用了求和的恒等变换的方法,可供参考:

    (k=frac{d}{n}),则要证的等式右侧为:

    (sumlimits_{k in N^*} F(kn)mu(k)=sumlimits_{k in N^*}mu(k)sumlimits_{kn|c}f(c))

    这里可以用类似于狄利克雷卷积结合律的性质交换求和号位置(有点玄学,需要理解一下):

    (sumlimits_{k in N^*}mu(k)sumlimits_{kn|c}f(c)=sumlimits_{n|c}f(c)sumlimits_{k|frac{c}{n}}mu(k))

    此时后面一个是我们熟悉的卷积式,即(sumlimits_{k|frac{c}{n}}mu(k)=varepsilon(frac{c}{n})),当且仅当(c=n)时计入答案:

    (sumlimits_{n|c}f(c)sumlimits_{k|frac{c}{n}}mu(k)=sumlimits_{n|c}f(c)varepsilon(frac{c}{n})=f(n))

    类似的,很容易证明反方向的推出关系。至此,我们已经证明了上述定理2。

    以上就是莫比乌斯反演的理论部分了...这还有很多应用,包括与狄利克雷卷积的组合应用,各种求和问题以及杜教筛都是基于这一板块的内容的。

    后续文章:莫比乌斯反演学习笔记2

  • 相关阅读:
    使用vue-cli搭建SPA项目
    NodeJS的环境搭建+传统ELmentui+vue开发
    vue路由
    Vue基础语法(样式绑定,事件处理,表单,Vue组件)
    动态规划 | 保留重复元素的LCS 1045
    动态规划 | 1007 最大连续子序列和
    数学问题 | 质因数分解:1096
    数学问题 | 连续质因数分解:1096
    数据结构 | 哈希表二次探查法 : 1078
    数学问题 | 1015 进制转换与素数问题
  • 原文地址:https://www.cnblogs.com/ix35/p/11972958.html
Copyright © 2011-2022 走看看