莫比乌斯反演学习笔记
引子
很久以前就听说过了莫比乌斯反演这个名词,每次都看的稀里糊涂,但一直没能学下去。也碰到不少莫比乌斯反演的题目,无奈只能跳过。最近各种爆炸,心态极端不好,几度想放弃,想来想去还是应该坚持下去,学点新东西。于是再次百度一些以前遗留下来没学完的知识点。
主要学习了
@litble 初涉莫比乌斯反演(附带例题)
@outer_form 莫比乌斯反演定理证明(两种形式)
基本知识
莫比乌斯反演初始是两个相互关联的函数 F(x) F ( x ) 和 f(x) f ( x ) ,
形式1
一种形式是已知
即 F(n) F ( n ) 是所有 f(d) f ( d ) 的和,其中d是n的因数
莫比乌斯反演的结果是:
形式2
另一种形式是已知
即 F(n) F ( n ) 是所有 f(d) f ( d ) 的和,其中d是n的倍数
莫比乌斯反演的结果是:
其中 μ(x) μ ( x ) 是莫比乌斯函数,网上都可以看到这么一个公式:
莫比乌斯函数 μ(x) μ ( x ) 性质
1.
证明
2.
这个涉及到了欧拉函数,目测我肯定证明不出来,所以就直接记下来好了。而且貌似莫比乌斯反演并未用到这个性质。
开始反演
形式1
第一行到第二行运用的是 F(x) F ( x ) 与 f(x) f ( x ) 的关系换掉 F(nd) F ( n d ) .
第二行到第三行的我的理解:
对第二行:
d|n⟹dd′|n d | n ⟹ d d ′ | n
d′|nd⟺dd′|n d ′ | n d ⟺ d d ′ | n
显然当且仅当 dd′|n d d ′ | n 成立时才会对答案有 μ(d)×f(d′) μ ( d ) × f ( d ′ ) 的贡献
对第三行:
d|nd′⟺dd′|n d | n d ′ ⟺ d d ′ | n
dd′|n⟹d′|n d d ′ | n ⟹ d ′ | n
所以当且仅当 dd′|n d d ′ | n 成立时才会对答案有 μ(d)×f(d′) μ ( d ) × f ( d ′ ) 的贡献
现在我们只差最后一点点了
因此:
因此我们证明到了莫比乌斯反演的结果:
形式2
证明
关于③到④的自我理解和解释
对于③,当且仅当
kn|d′
k
n
|
d
′
时对答案有
μ(k)∗f(d′)
μ
(
k
)
∗
f
(
d
′
)
的贡献。
且
n
n
对于要证明的式子为常数, flag A
对与④,
k|d′n⟺kn|d′
k
|
d
′
n
⟺
k
n
|
d
′
kn|d′⟹n|d′
k
n
|
d
′
⟹
n
|
d
′
所以当且仅当
kn|d′
k
n
|
d
′
成立时才会对答案有
f(d′)×μ(k)
f
(
d
′
)
×
μ
(
k
)
的贡献。
d′取遍n的所有倍数,k取遍d′n的所有因数
d
′
取
遍
n
的
所
有
倍
数
,
k
取
遍
d
′
n
的
所
有
因
数
flag B
现在只需要证明
满足 flag A
的所有序偶(数对)
<k,d′>
<
k
,
d
′
>
<script type="math/tex" id="MathJax-Element-16924">
</script>构成的集合A
和
满足
flag B
的所有序偶(数对)
<k,d′>
<
k
,
d
′
>
<script type="math/tex" id="MathJax-Element-16925">
</script>构成的集合B
是相等的即可。
以下字母若无特殊说明,取值范围皆是正整数
A={<k,d′>|kn|d′}
A
=
{
<
k
,
d
′
>
|
k
n
|
d
′
}
B={<k,d′>|n|d′且k|d′n}
B
=
{
<
k
,
d
′
>
|
n
|
d
′
且
k
|
d
′
n
}
又
k|d′n⟺kn|d′⟹n|d′
k
|
d
′
n
⟺
k
n
|
d
′
⟹
n
|
d
′
所以
B={<k,d′>|kn|d′}
B
=
{
<
k
,
d
′
>
|
k
n
|
d
′
}
显然
A=B
A
=
B
因此③可以到④
④到⑤和前面的类似,当且仅当
d′n=1
d
′
n
=
1
,
∑k|d′nμ(k)≠0
∑
k
|
d
′
n
μ
(
k
)
≠
0
因此
d′=n
d
′
=
n
才有意义,代入很快化为
f(n)
f
(
n
)
莫比乌斯函数的求法
注意到莫比乌斯函数的条件积性,对欧拉筛熟悉的不难时空复杂度皆为 O(n) O ( n ) 预求出 μ(1) μ ( 1 ) ~ μ(n) μ ( n )
先提交以下,后面再补代码和题目
逃
2018-09-13 11:44:55