码迷,mamicode.com
首页 > 其他好文 > 详细

并不对劲的莫比乌斯反演

时间:2019-02-26 13:50:03      阅读:204      评论:0      收藏:0      [点我收藏+]

标签:取值   证明   时间复杂度   htm   正整数   sig   合数   sqrt   mux   

很对劲的莫比乌斯反演 点这里

重要定理1

\(\mu(x)\)是一个定义域为全体正整数的函数,它的定义是:
1.当\(x=p_1*p_2*...*p_k\)\(p_1*p_2*...*p_k\)为互异质数时,\(\mu(x)=(-1)^k\)
2.当\(x=1\)时,\(\mu(x)=1\),也可以看成第1种情况中\(k=0\)
3.当\(x\)存在一个质因子幂次大于等于2时,\(\mu(x)=0\)
它的定义听上去很奇怪,但是它有一个非常重要的性质:
\[\sum_{d|n}\mu(d)=[n=1]\]

即当\(n=1\)时,\[\sum_{d|n}\mu(d)=1\]\(n\neq1\)时,\[\sum_{d|n}\mu(d)=0\]
证明:
\(n=p_1^{a_1}*p_2^{a_2}*...*p_k^{a_k}\)
那么\(d\)可以看成在这\(a_1+a_2+...+a_k\)个质数中选择若干个的乘积
发现当\(p_1,p_2,...,p_k\)中任何一个被选次数超过两次时,\(\mu(d)=0\),对所有\(\mu(d)\)之和没有影响,可以不考虑
那么\(d\)就变成了在\(p_1,p_2,...,p_k\)中,每个数至多选一次,选出若干个数的乘积
设选择了\(m\)个数
\(m\)为偶数时,\(\mu(d)=1\);当\(m\)为奇数时,\(\mu(d)=-1\)
那么\[\sum_{d|n}\mu(d)=(\sum_{i=0}^{\lfloor\frac{k}{2}\rfloor}{C_k^{i*2}})-(\sum_{i=0}^{\lfloor\frac{k-1}{2}\rfloor}{C_k^{i*2+1}})\]
\[f_0(x)=\sum_{i=0}^{\lfloor\frac{k}{2}\rfloor}{C_k^{i*2}},f_1(x)=\sum_{i=0}^{\lfloor\frac{k-1}{2}\rfloor}{C_k^{i*2+1}}\]
则有\[\sum_{d|n}\mu(d)=f_0(k)-f_1(k)\]
那么问题转化为证明\(f_0(k)-f_1(k)=[n=1]\)
\(n=1\)时,\(k=0\)\(f_0(k)=1,f_1(k)=0\),所以\(f_0(k)-f_1(k)=1\)
\(n\neq1\)时,
(1)当\(k\)为奇数时,\(f_0(k)=C_k^0+C_k^2+...+C_k^{k-3}+C_k^{k-1},f_1(k)=C_k^1+C_k^3+...+C_k^{k-2}+C_k^{k-0}\)
根据组合数的性质可得\(C_k^x=\frac{k!}{x!(k-x)!}=C_k^{k-x}\)
则有\(f_0(k)=f_1(k)\)
(2)当\(k\)为偶数且不为0时,考虑从\(k\)个数中去掉一个数
那么 没有选被去掉的数且选了偶数个数的方案数 和 选了被去掉的数且选了奇数个数的方案数 是相等的, 选了被去掉的数且选了偶数个数的方案数 和 没有选被去掉的数且选了奇数个数的方案数 是相等的
由(1)可得, 没有选被去掉的数且选了偶数个数的方案数 和 没有选被去掉的数且选了奇数个数的方案数 是相等的
那么 选了被去掉的数且选了偶数个数的方案数 和 选了被去掉的数且选了奇数个数的方案数 也是相等的
所以 选了奇数个数的方案数 和 选了偶数个数的方案数 相等,即\(f_0(k)=f_1(k)\)
综上所述,当\(n=1\)\(f_0(k)-f_1(k)=1\),当\(n\neq1\)\(f_0(k)-f_1(k)=0\),证毕

重要定理2

证完这个结论后就可以得到一个莫反常用的结论:
\[F(n)=\sum_{d|n}f(d)\]时,
有:\[f(n)=\sum_{d|n}\mu(d)*F(\frac{n}{d})\]

证明:
\[\sum_{d|n}\mu(d)*F(\frac{n}{d})=\sum_{d|n}\mu(d)*(\sum_{i|\frac{n}{d}}f(i))\]
那么问题转换为算出\(f(i)\space(i|\frac{n}{d})\)的系数
\(n=p_1^{a_1}*p_2^{a_2}*...*p_k^{a_k}\)\(d=p_1^{b_1}*p_2^{b_2}*...*p_k^{b_k}\)\(i=p_1^{c_1}*p_2^{c_2}*...*p_k^{c_k}\),则\(\forall i\in[1,k],c_i\leq a_i-b_i\)
\(b_1,b_2,...,b_k\)中存在一个大于1时,\(\mu(d)=0\),对答案没有贡献,不用考虑
那么\(\forall i\in[1,k],b_i\leq min(1,a_i-c_i)\)
\(f(i)\space(i|{n})\)的系数就是\(f_0(\Sigma min(1,a_i-c_i))-f_1(\Sigma min(1,a_i-c_i))\)
\(i=n\)时, \(\forall i\in[1,k],c_i=a_i\)\(\Sigma min(1,a_i-c_i)=0\)\(f_0(\Sigma min(1,a_i-c_i))-f_1(\Sigma min(1,a_i-c_i))=1\),即\(f(n)\)系数为1
\(i\neq n\)时,\(\exists i\in[1,k],c_i<a_i\)\(\Sigma min(1,a_i-c_i)\neq 0\)\(f_0(\Sigma min(1,a_i-c_i))-f_1(\Sigma min(1,a_i-c_i))=0\),即对于\(i\neq n\)\(f(i)\)的系数为0
所以,\[\sum_{d|n}\mu(d)*F(\frac{n}{d})=f(n)\]证毕

相关技巧

数论分块

\(\lfloor \frac{n}{i}\rfloor\)只有\(\sqrt{n}\)种不同的取值,这一点一般用于时间复杂度的证明

求积性函数

先坑着

例题

先坑着

并不对劲的莫比乌斯反演

标签:取值   证明   时间复杂度   htm   正整数   sig   合数   sqrt   mux   

原文地址:https://www.cnblogs.com/xzyf/p/10118290.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!