【OI之路】11更高级数论-2莫比乌斯反演

来源:互联网 发布:postgresql mysql 电商 编辑:程序博客网 时间:2024/05/17 23:41

前方高能!

较优质而乱七八糟的文章:
http://blog.csdn.net/acdreamers/article/details/8542292
http://blog.csdn.net/herodeathes/article/details/78602577
http://blog.csdn.net/lixuepeng_001/article/details/50577932

莫比乌斯反演,需要使用到一个名为莫比乌斯函数的东东
即所谓 μ(mu)函数

μ函数的运用

我们先不解释μ(mu)函数,而是假设我们已经求得它,并尝试利用它做题
例题:GCD-莫比乌斯1
求数对(x,y)满足gcd(x,y)=k,其中xb,yd
并且(1,2)和(2,1)算一对

解:
先简化问题为gcd(x,y)=1,其中xb/k,yd/k
为方便表示设n=b/k,m=d/k

设f(t)为满足gcd(x,y)=t的对数,
其中xn,ym,本题相当于求f(1)

由于直接求f(t)较困难,考虑另一个函数
F(d)为满足gcd(x,y)%d=0的对数,
其中xn,ym,
又因为两个数的最大公约数不可能超过任何一个数,
所以tdmin(x,y)min(n,m)
易知F(d)=nd×md

算了还是证明一下这个“易知”吧
x可以是d2d3dad(n)nd
y也可以是d2d3dbd(m)md
所以就是nd×md

所以,F(d)可以轻松地算出,接下来就是要从F(d)反演出f(t)
他们有如下关系(属于“倍数”类,另一种是约数类)
F(d)=f(t)d|ttmin(n,m)
通过莫比乌斯反演的倍数版公式转化为
(原理是运用容斥,具体证明一会再讲)
f(t)=μ(dt)×F(d)t|ddmin(n,m)

G(a,b)为当n=a,m=b时的f(1)
这道题的最后答案就是G(n,m)-G(n,n)/2 (假设n<=m)
原因可以看这幅图(转载):

也就是右边的公共部分只能取一半,所以减去另外不需要的一半。

μ函数的计算和证明

显然,μ函数可以理解为一种针对F(d)的系数值
为了与刚才的题目运用的公式不同从而让读者有更广泛的认知以及便于证明
约数版公式:
f(t)=μ(td)×F(d)d|tdmin(n,m)

μ这个符号比较麻烦,下文我可能用U表示相同的意义

U有一下性质(有原因,一会再解释):
U[x] = 1 当且仅当x能够分解成偶数个不同质数的乘积(其中1不能被分解,所以1的分解出的质数个数是0,所以U[1]=1)
U[x] = -1 当且仅当x能够分解成奇数个不同质数的乘积
U[x] = 0 除开(2),(3)的其他情况
看上面关于U的定义可能有点看晕了,通俗一点的说

对于一个 x ,分解因式过后有 x=(p1^e1)(p2^e2)…(pr^er)
ei(1<=i<=r)ei1U[x]=0
U[x]=(1)r

来几个例子
U[1]=1; 定义
U[2]=-1;分解式 2=2
U[6]=1; 分解式 6=2×3
U[9]=0; 分解式 9=32
U[12]=0;分解式12=22×3

设H(a,b)是计算f(b)时F(a)的系数
然后从例子中找规律
F(8)=H(8,8)×G(8)+H(4,8)×G(4)+H(2,8)×G(2)+H(1,8)×G(1)
举例子自己推算,
可以发现H(a,b)=H(1,ba)
于是我们把H的第一个元素略去,简写为H(x)

加下来就是U的计算了

首先需要明确2点!
一是 F(x)中,一定包含一个f(1),因为 1|x
二是 f(1)=F(1)

接下来从多种角度尝试,具体推算过程就略过了
(0).如果 x==1 因为 f(1)=F(1) 所以 U(1)=1
(1).假设 x 是一个 质数 ,易知 U(x)=-1
(2).假设 x 可以写成2个不同质数的乘积x=p×q,易知 U(x)=1
(3).假设 x 可以写成3个不同质数的乘积x=p×q,易知 U(x)=1
(4).假设 x 可以写成r个不同质数的乘积,易知 U(x)=(1)r
(5).假设 x 可以写成一个质数的平方x=p2,易知U(x)=0
(6).假设 x 可以写成一个质数的次幂x=pg,易知U(x)=0
总而言之,U的求法也就是μ函数的求法就是其性质了,
可以用线性筛素数来预处理出莫比乌斯函数
(据说莫比乌斯函数在任何题目都不会变,变化的只是F(x)和f(x)的定义

公式

倍数和公式
F(d)=f(t)d|t
f(t)=μ(dt)×F(d)t|d
约数和公式
F(d)=f(t)t|d
f(t)=μ(d)F(td)d|t (网上好像常见这个)
f(t)=μ(td)×F(d)d|t (其实这个也是等效的)

例题

GCD-莫比乌斯2
Problem_b-莫比乌斯3
仪仗队
Ideal Puzzle Bobble

MathJax.Hub.Config({tex2jax: {inlineMath: [[','], [',']]}});
阅读全文
0 0
原创粉丝点击