莫比乌斯反演—详解

  • Post author:
  • Post category:其他



莫比乌斯反演


介绍

1、莫比乌斯反演是组合数学中很重要的内容,可以用于解决很多组合数学的问题。

2、莫比乌斯反演是数论中的重要内容,在许多情况下能够简化运算。

3、是个很神奇的东西。


引入

考虑以下求和函数












f








n







=














d






|




n












g








d


















那么根据定义我们可以知道












f








1
















=











g








1



























f








2
















=











g








1
















+











g








2



























f








3
















=











g








1
















+











g








3



























f








4
















=











g








1
















+











g








2
















+











g








4



























f








5
















=











g








1
















+











g








5



























f








6
















=











g








1
















+











g








2
















+











g








3
















+











g








6



























f








7
















=











g








1
















+











g








7



























f








8
















=











g








1
















+











g








2
















+











g








4
















+











g








8



























f








9
















=











g








1
















+











g








3
















+











g








9



























f










10


















=











g








1
















+











g








2
















+











g








5
















+











g










10





























f










11


















=











g








1
















+











g










11





























f










12


















=











g








1
















+











g








2
















+











g








3
















+











g








4
















+











g








6
















+











g










12


















……

现在反过来,用








f













表示









g

























g








1
















=











f








1



























g








2
















=











f








2




























f








1



























g








3
















=











f








3




























f








1



























g








4
















=











f








4




























f








2



























g








5
















=











f








5




























f








1



























g








6
















=











f








6




























f








3




























f








2
















+











f








1



























g








7
















=











f








7




























f








1



























g








8
















=











f








8




























f








4



























g








9
















=











f








9




























f








3



























g










10


















=











f










10






























f








5




























f








2
















+











f








1



























g










11


















=











f










11






























f








1



























g










12


















=











f










12






























f








6




























f








4
















+











f








2
















……

根据上面的部分,我们发现了类似于这样的这样的式子:












g








n
















=




















d






|




n












f








d


















*








?











我们还可以发现









?












的值对于一个定值








d













,我们可以发现









n












的不同,会导致








?











的值不同,

但我们发现









?












的值与











n






d
























有关系,所以我们可以把








?











看成某个当自变量为












n






d

























的函数的函数值,我们设这个函数为








m


u


(


i


)













则原式子可以写成:












g








n
















=




















d






|




n












f








d


















*








m


u


(







n






d

















)












内容












μ








d




















为莫比乌斯函数,定义如下:

1、当








d













=









1





















μ




(


d




)













=1

2、若








d













=












P








1

















*











P








2
















*











P








3
















* …… *











P








k
















,其中











P








i
















(1<=i<=k)为

互异

的素数,则








μ




(


d




)













=








(





1





)






k

















3、其余情况,








μ




(


d




)













=0

莫比乌斯反演的内容如下:

如果满足












f








n
















=




















d






|




n












g








d


















则存在












g








n
















=




















d






|




n












f








d


















*








μ




(







n






d

















)






















μ











函数的性质

现在给出莫比乌斯函数








μ











的两个性质。

性质1、








μ











为积性函数。

积性函数的定义为,如果








a





















b












两数互质,就会满足








f




(


a





b


)











=








f




(


a


)











*








f




(


b


)











,那我们就说这个函数为积性函数。

这个证明没什么难的,对








a





















b












的值按照








μ











函数定义分类讨论一下就可以证出了。

性质2、对于任意正整数








n











,有

(1)若









n












=1,




















d






|




n









μ




(


d




)













=1

(2)若








n











>1,





















d






|




n









μ




(


d




)














=0


证明如下:

<1>当








n











=1时,





















d






|




n









μ




(


d




)














=








μ


(


1


)











=1,得证。

<2>当








n











>1时,设









d














=











P













t






1













1
















*











P













t






2













2
















*











P













t






3













3
















*











P













t






4













4
















* ….. *











P













t






k













k



























t






i
















>1时,








μ


(


d




)











=0,所以我们只讨论











t






i
















=0或1 的情况。

假设








d













含有









n





















e











个互不相同质因数,且质因数的指数为1,这样的









d























μ











值为








(





1





)






e
















这样的








d


























C










e










k



















个。





















d






|




n









μ


(


d




)











=




















k










e


=


0





























C










e










k



























(





1





)






e
















=




















k










e


=


0





























C










e










k



























(





1





)






e
















*











1








(


k





e


)


















根据牛顿二项式定理








(


a











+








b





)






n
















=




















n










i


=


0





























C










i










n


















*











a






i










b








(


n





i


)



















可知





















k










e


=


0





























C










e










k


















*








(





1





)






e
















*











1








(


k





e


)


















=








(





















1












+








1





)






k
















=0,即




















d






|




n









μ




(


d




)













=0,得证。


证明

有了








μ











函数的性质,我们就可以证出莫比乌斯反演的正确性了。





















d






|




n












f








d


















*








μ




(







n






d

















)













=




















d






|




n









μ




(


d




)













*








f




(







n






d

















)











=




















d






|




n









μ




(


d




)













*




















i




|









n






d









































g




(


i


)











交换主体,原式等价于





















i




|




n


























g




(


i


)











*




















d






|









n






i







































μ


(


d




)











根据









μ











函数



性质2

可知

(1)当








i


=


n











时,











n






i






















=1,所以




















d






|









n






i







































μ


(


d




)











=








1











,因此









g




(


i


)












的系数为1。

(2)当








i


<


n











时,











n






i






















>1,所以




















d






|









n






i







































μ


(


d




)











=








0











,因此









g




(


i


)












的系数为0。

综上所述





















i




|




n


























f




(


i


)











*




















d






|









n






i







































μ


(


d




)











=








g




(





i






1







)











*








0











+









g




(





i






2







)












*








0











+……+









g




(


n


)












*1=








g




(


n


)






















g








n
















=




















i




|




n


























f




(


i


)











*




















d






|









n






i







































μ


(


d




)











=




















d






|




n












f








d


















*








μ




(







n






d

















)













,得证。










μ











的求值

关于








μ











的求值可以用线性筛法求素数求得。

如果不会线性筛法可以看我写的博客,链接如下:


http://blog.csdn.net/xianhaoming/article/details/50954056


程序如下(Pascal)

for i:=1 to n do
begin
    if bz[i]=false then
    begin
        inc(o);
        s[o]:=i;  
        mu[i]:=true; //素数的mu值为(-1)^1=-1
    end;
    for j:=1 to o do
    begin 
        bz[i*s[j]]:=true;
        if (i mod s[j]=0) or (i*s[j]>n) then 
        begin
            mu[i*s[j]]=0; //如果i mod s[j]=0 说明i*s[j]含有至少两个相同的素因子,所以mu的值为0.
            break;
        end;  
        mu[i*s[j]]:=mu[i]*mu[s[j]]; //根据mu是一个积性函数可得。(i和s[j]互质)
    end;
end; //每个合数和质数都会被搜到且仅被搜到一次,故时间复杂度为O(n)


莫比乌斯反演的变形及证明

用类似的方法,我们还可以证出以下变形

如果有以下求值函数









f




(


i


)











=




























n






i


























d




=


1


























g




(


i





d




)











则满足









g




(


i


)











=




























n






i


























d




=


1


























f




(


i





d




)











*








μ


(


d




)












证明和原形差不了多少





























n






i


























d




=


1


























f




(


i





d




)











*








μ


(


d




)











=




























n






i


























d




=


1


























μ


(


d




)











*








f




(


i





d




)











=




























n






i


























d




=


1


























μ


(


d




)











*




























n







d







i



























r


=


1


























g




(


r





d







i


)












设T=r*d

,则原式为





























n






i


























T




=


1


























g




(


T







i


)











*




















d






|




T




























μ


(


d




)











根据









μ











函数



性质2

可知

(1)当








T













=1时,





















d






|




T





























μ


(


d




)











=1,因此








g




(


T







i


)











的系数为1。

(2)当








T













>1时,





















d






|




T





























μ


(


d




)











=0,因此








g




(


T







i


)











的系数为0。

综上所述





























n






i


























T




=


1


























g




(


T







i


)











*




















d






|




T




























μ


(


d




)











=








g




(


i





1


)











* 1+








g




(


i





2


)











* 0+……+








g




(


i















n






i




















)











* 0=








g




(


i


)



















g




(


i


)











=




























n






i


























d




=


1


























f




(


i





d




)











*








μ


(


d




)











,得证。


莫比乌斯反演的应用

对于类似于莫比乌斯反演的求和函数












f








n
















=




















d






|




n












g








d


















一般我们可以用











O






1
















时间求得











f








i
















,但











g








i
















可能要用











O











n






2























的时间去求,乃至更多。

这时我们就可以用莫比乌斯反演(或变形)得












g








n
















=




















d






|




n












f








d


















*








μ




(







n






d

















)













这样用











O






n
















的时间就可以求出











g








i
















,而不是











O











n






2























乃至更多,大大降低了时间复杂度。



版权声明:本文为XianHaoMing原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。