莫比乌斯反演学习笔记

前言

停更好久了,刚好我们老师讲了莫比乌斯反演,那我就来开数论这个天坑吧。

莫比乌斯反演

比如说我们现在有一个函数

f(n)=d|ng(d) f ( n ) = ∑ d | n g ( d )

假设f非常容易求得,但是g很难求,那么我们是不是可以通过f来求g呢
g(n)=d|nf(nd)μ(d) g ( n ) = ∑ d | n f ( n d ) ∗ μ ( d )

然后 mu(d) m u ( d ) 这个东西就是莫比乌斯函数,所以这个变换也叫莫比乌斯变换

关于莫比乌斯函数

(1) 若 d=1 d = 1 ,则 μ(d)=1 μ ( d ) = 1
(2) 若 d=p1p2p3p4..pn d = p 1 ∗ p 2 ∗ p 3 ∗ p 4 ∗ . . ∗ p n (注意不是笔者偷懒,而是p的次数都是1,且都是互异的质数) 那么 μ(d)=(1)k μ ( d ) = ( − 1 ) k
(3) other wise μ(d)=0 μ ( d ) = 0

莫比乌斯函数的性质
性质1

对于正整数n,有

d|nμ(d)=[n=1] ∑ d | n μ ( d ) = [ n = 1 ]

中括号在这里表达bool表达式,如果满足中括号内的条件则为1,否则为0
证明:
(1) n=1,根据定义,显然成立
(2) n>1,设 n=px11px22px33...pxkk n = p 1 x 1 ∗ p 2 x 2 ∗ p 3 x 3 ∗ . . . ∗ p k x k ,也就是把n质因数分解
那么d一定能表示为 py11py22py33...pykk p 1 y 1 ∗ p 2 y 2 ∗ p 3 y 3 ∗ . . . ∗ p k y k ,其中( 0<=yi<=xi 0 <= y i <= x i ),那么根据定义,只要有一个y大于二,那么 μ(d)=0 μ ( d ) = 0 ,没有贡献,所以我们只要考虑所有y均为0,1时的情况。
我们假设这k个中有r个y=1,那么出现这种情况的方案数为 Crk C k r ,总贡献为
Crk(1)r C k r ∗ ( − 1 ) r
我们再把每个d的贡献加起来
r=0kCrk(1)r ∑ r = 0 k ∗ C k r ∗ ( − 1 ) r

是不是觉得有点眼熟呢,没错,这就是我们的二项式定理,所以上式就等于 (1+(1))k=0 ( 1 + ( − 1 ) ) k = 0
结论得证。

性质2

莫比乌斯函数为积性函数
证明:
若有两个互质的数a,b
我们把它们分别分解质因数 a=px11px22...pxkk a = p 1 x 1 ∗ p 2 x 2 ∗ . . . ∗ p k x k b=qy11qy22...qytt b = q 1 y 1 ∗ q 2 y 2 ∗ . . . ∗ q t y t
由于a,b互质, ab=px11px22...pxkkqy11qy22...qytt a ∗ b = p 1 x 1 ∗ p 2 x 2 ∗ . . . ∗ p k x k ∗ q 1 y 1 ∗ q 2 y 2 ∗ . . . ∗ q t y t
如果 μ(a)==0μ(b)==0 μ ( a ) == 0 或 μ ( b ) == 0 为0,那么说明一定有一个x或y>=2,那么 μ(ab) μ ( a ∗ b ) 也一定为0.
μ(a) μ ( a ) μ(b) μ ( b ) 均为1,说明k与t均为偶数,那么k+t也为偶数,所以 μ(ab) μ ( a ∗ b ) 也为1
μ(a) μ ( a ) μ(b) μ ( b ) 均为-1,说明k与t均为奇数,那么k+t为偶数,所以 μ(ab) μ ( a ∗ b ) 为1
μ(a)1μ(b) μ ( a ) 为 1 , μ ( b ) 为-1,说明k为偶数,t为奇数,那么k+t为奇数,所以 μ(ab) μ ( a ∗ b ) 为-1,
μ(b)1μ(a) μ ( b ) 为 1 , μ ( a ) 为-1与上一条同理。
综上所述,莫比乌斯函数为积性函数。

莫比乌斯函数的求法

这里介绍一下如何使用线性筛筛出莫比乌斯函数

    memset(isprime,1,sizeof(isprime));
    isprime[1]=0;
    mu[1]=1;
    for (int i=2;i<=100000;i++){
        if (isprime[i]){prime[++pri]=i;mu[i]=-1;}//质数的mu显然是-1
        for (int j=1;j<=pri&&i*prime[j]<=100000;j++){
            int tt=i*prime[j];
            isprime[tt]=0;
            if (i%prime[j]==0){//说明prime[j]这个质因子次数大于1,所以mu为0
                mu[tt]=0;
                break;
            }
            else{
                mu[tt]=-mu[i];//说明新出现了一个质数,所以要再*=-1
            }
        }
    }   

其复杂度就是线性筛的复杂度,和筛质数,筛phi都是一样的。

莫比乌斯反演

我们现在已经知道了莫比乌斯函数和他的一些性质,那么我们试着证明一下莫比乌斯反演的正确性。

g(n)=d|nf(nd)μ(d) g ( n ) = ∑ d | n f ( n d ) ∗ μ ( d )

再把 f f 展开
g(n)=d|nμ(d)i|ndg(i)

然后我们把g的sigma换到前面去
g(n)=i|ng(i)d|niμ(d) g ( n ) = ∑ i | n g ( i ) ∑ d | n i μ ( d )

我们考虑后面这个sigma的值
(1)当i=n时,
d|niμ(d)=1g(i)d|niμ(d)=g(n) ∑ d | n i μ ( d ) = 1 , g ( i ) ∑ d | n i μ ( d ) = g ( n )

(2)当i为小于n且是n的因数时,根据
d|nμ(d)=[n=1] ∑ d | n μ ( d ) = [ n = 1 ]

那么
d|niμ(d)=0 ∑ d | n i μ ( d ) = 0

乘上一个g(i)仍然为0,那么上下两种情况加起来就是
d|nμ(d)i|ndg(i) ∑ d | n μ ( d ) ∑ i | n d g ( i )

所以就是g(n),证毕

莫比乌斯反演的变形

变形一:

f(i)=d=1nig(di)>g(i)=d=1nif(di)μ(d) f ( i ) = ∑ d = 1 ⌊ n i ⌋ g ( d ∗ i ) − − − > g ( i ) = ∑ d = 1 ⌊ n i ⌋ f ( d ∗ i ) ∗ μ ( d )

证明:
我们把上面二式的f展开
d=1nif(di)μ(d)=d=1niμ(d)d1=1ndig(d1di) ∑ d = 1 ⌊ n i ⌋ f ( d ∗ i ) ∗ μ ( d ) = ∑ d = 1 ⌊ n i ⌋ μ ( d ) ∑ d 1 = 1 ⌊ n d ∗ i ⌋ g ( d 1 ∗ d ∗ i )

我们令d1*d=T
那么原式=
T=1nig(Ti)d|Tμ(d) ∑ T = 1 ⌊ n i ⌋ g ( T ∗ i ) ∑ d | T μ ( d )

仔细想一下i,d,T的关系应该不难理解
当(1)T=1时,
d|Tμ(d)=1g(Ti)d|Tμ(d)=g(i) ∑ d | T μ ( d ) = 1 , g ( T ∗ i ) ∑ d | T μ ( d ) = g ( i )

(2)T>1时,
d|Tμ(d)=0g(Ti)d|Tμ(d)=0 ∑ d | T μ ( d ) = 0 , g ( T ∗ i ) ∑ d | T μ ( d ) = 0

综上所述,结论正确
变形二:
f(i)=i|dg(d)>g(i)=i|df(d)μ(di) f ( i ) = ∑ i | d g ( d ) − − − > g ( i ) = ∑ i | d f ( d ) ∗ μ ( d i )

证明:
di=k d i = k
那么
i|df(d)μ(di)=k=1μ(k)f(ki)=k=1μ(k)ki|tg(t)=i|tg(t)k|tiμ(k) ∑ i | d f ( d ) ∗ μ ( d i ) = ∑ k = 1 ∞ μ ( k ) ∗ f ( k ∗ i ) = ∑ k = 1 ∞ μ ( k ) ∗ ∑ k ∗ i | t g ( t ) = ∑ i | t ∗ g ( t ) ∗ ∑ k | t i μ ( k )

又是熟悉的套路,就是把 μ μ 换成前缀和,就有非常好的性质了,那么最后得到的这个式子,只有在t=i时,后面的这个 μ μ 的sigma才会变成1,所以加起来就是f(i)

尾声

以上就是笔者对莫比乌斯反演的一些理解与介绍,军训每天逃机房花了5天终于码完了,希望能给大家带来帮助

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值