莫比乌斯反演学习笔记

引子

很久以前就听说过了莫比乌斯反演这个名词,每次都看的稀里糊涂,但一直没能学下去。也碰到不少莫比乌斯反演的题目,无奈只能跳过。最近各种爆炸,心态极端不好,几度想放弃,想来想去还是应该坚持下去,学点新东西。于是再次百度一些以前遗留下来没学完的知识点。
主要学习了
@litble 初涉莫比乌斯反演(附带例题)
@outer_form 莫比乌斯反演定理证明(两种形式)

基本知识

莫比乌斯反演初始是两个相互关联的函数 F ( x ) f ( x )

形式1

一种形式是已知

F ( n ) = <munder> d | n </munder> f ( d )

F ( n ) 是所有 f ( d ) 的和,其中d是n的因数
莫比乌斯反演的结果是:
f ( n ) = <munder> d | n </munder> μ ( d ) F ( n d )

形式2

另一种形式是已知

F ( n ) = <munder> n | d </munder> f ( d )

F ( n ) 是所有 f ( d ) 的和,其中d是n的倍数
莫比乌斯反演的结果是:
f ( n ) = <munder> n | d </munder> μ ( d n ) F ( d )
;
其中 μ ( x ) 是莫比乌斯函数,网上都可以看到这么一个公式:
<mlabeledtr> <mtext> (906) </mtext> μ ( x ) = { 1 <mtext> x=1 </mtext> ( 1 ) k x = p 1 p 2 p 3 . . . p k , p i <mtext> 为素数 </mtext> <mtext> 且 </mtext> p i p j ( i j , i j ) 0 <mtext> 其他情况 </mtext> </mlabeledtr>

莫比乌斯函数 μ ( x ) 性质

1.

<mlabeledtr> <mtext> (899) </mtext> <munder> d | n </munder> μ ( d ) = { 1 n = 1 0 n > 1 </mlabeledtr>

证明
n = 1 , <munder> d | n </munder> μ ( d ) = 1 n > 1 , n n = p 1 k 1 p 2 k 2 p 3 k 3 . . . p m k m d | n d = p 1 v 1 p 2 v 2 p 3 v 3 . . . p m v m ( i ( 1 i m ) , 0 v i k i ) v i 2 , μ ( d ) = 0 , d = p 1 v 1 p 2 v 2 p 3 v 3 . . . p m v m m 0 1 , μ ( d ) 0 m 0 1 d 使 r 1 , μ ( d ) = ( 1 ) r , r 1 C m r <munder> d | n </munder> μ ( d ) = <munderover> 0 m </munderover> C m r ( 1 ) r × 1 m r = ( 1 + 1 ) m = 0

2.

<munder> d | n </munder> μ ( d ) d = ϕ ( n ) n

这个涉及到了欧拉函数,目测我肯定证明不出来,所以就直接记下来好了。而且貌似莫比乌斯反演并未用到这个性质。

开始反演

形式1

<munder> d | n </munder> μ ( d ) F ( n d ) = <munder> d | n </munder> μ ( d ) <munder> d | n d </munder> f ( d ) = <munder> d | n </munder> f ( d ) <munder> d | n d </munder> μ ( d )

第一行到第二行运用的是 F ( x ) f ( x ) 的关系换掉 F ( n d ) .
第二行到第三行的我的理解:
对第二行:
d | n d d | n
d | n d d d | n
显然当且仅当 d d | n 成立时才会对答案有 μ ( d ) × f ( d ) 的贡献
对第三行:
d | n d d d | n
d d | n d | n
所以当且仅当 d d | n 成立时才会对答案有 μ ( d ) × f ( d ) 的贡献
现在我们只差最后一点点了
<munder> d | n d </munder> μ ( d ) = { 0 n d > 1 , n > d 1 n d = 1 , n = d

因此:
<munder> d | n </munder> f ( d ) <munder> d | n d </munder> μ ( d ) = <munder> d | n <mtext> & </mtext> d < n </munder> f ( d ) <munder> d | n d </munder> μ ( d ) + <munder> d | n <mtext> & </mtext> d = n </munder> f ( d ) <munder> d | n d </munder> μ ( d ) = 0 + f ( n ) × 1 = f ( n )

因此我们证明到了莫比乌斯反演的结果:
<munder> d | n </munder> μ ( d ) F ( n d ) = f ( n )

形式2

F ( n ) = <munder> n | d </munder> f ( d ) f ( n ) = <munder> n | d </munder> μ ( d n ) F ( d )

证明
= <munder> n | d </munder> μ ( d n ) F ( d ) = <munder> n | d </munder> μ ( d n ) <munder> d | d </munder> f ( d ) <mtext> 记d=kn </mtext> = <munderover> k = 1 + </munderover> μ ( k ) <munder> k n | d </munder> f ( d ) <mtext> ③ </mtext> = <munder> n | d </munder> f ( d ) <munder> k | d n </munder> μ ( k ) <mtext> ④ </mtext> = f ( n ) <mtext> ⑤ </mtext>

关于③到④的自我理解和解释
对于③,当且仅当 k n | d 时对答案有 μ ( k ) f ( d ) 的贡献。
n 对于要证明的式子为常数, k [ 1 , + ) , d ( k n ) flag A
对与④
k | d n k n | d
k n | d n | d
所以当且仅当 k n | d 成立时才会对答案有 f ( d ) × μ ( k ) 的贡献。
d n , k d n flag B
现在只需要证明
满足 flag A 的所有序偶(数对) < k , d > 构成的集合A

满足flag B的所有序偶(数对) < k , d > 构成的集合B
是相等的即可。
以下字母若无特殊说明,取值范围皆是正整数
A = { < k , d > | k n | d }
B = { < k , d > | n | d k | d n }
k | d n k n | d n | d
所以 B = { < k , d > | k n | d }
显然 A = B
因此③可以到④


④到⑤和前面的类似,当且仅当 d n = 1 , <munder> k | d n </munder> μ ( k ) 0
因此 d = n 才有意义,代入很快化为 f ( n )


莫比乌斯函数的求法

注意到莫比乌斯函数的条件积性,对欧拉筛熟悉的不难时空复杂度皆为 O ( n ) 预求出 μ ( 1 ) ~ μ ( n )


先提交以下,后面再补代码和题目

2018-09-13 11:44:55