容斥原理初步

容斥原理

1.容斥原理

容斥原理用来解决求解|i=1nAi|的问题.

具体的,定义U={i|iZ,i[1,n]},我们有公式:

|i=1nAi|=SU(1)|S|+1|iSAi|

由公式形式也不难观察到容斥原理可以化并为交.

2.欧拉函数

欧拉函数φ(n)=#|{x|xn}|,若n=i=1npiki,则小于等于n中与n不互质的数是p1p2...或pn的倍数,为统计倍数的数量,设f(i)=ni,由于是"或"的关系,我们考虑化并为交.更具体的,举个例子,求φ(12),则为23的倍数,根据容斥原理则为f(2)+f(3)f(6).为了确定符号,我们引入莫比乌斯函数μ(x),其定义为:

μ(x)={1  x=10  x含有平方因子(1)k  k为x中本质不同的质因子数量

当我们发现容斥式子中所有的f(i)i均不含平方因子,即这个i对答案并没有贡献,系数为零,因此:

nφ(n)=n+d|nμ(d)f(d)=n+nd|nμ(d)1d

φ(n)=nd|nμ(d)1d

我们考虑这个式子如何化简,我们发现d含有平方因子时对答案没有贡献,因此若n=i=1kpiki,则d=i=1kpimi,mi{0,1},而此时由于μ(d)d中含有偶数个质数时为1,奇数个质数时为1,那么我们发现这个系数分布与i=1k(11pi)是一致的----枚举每一个可能的质数乘积,偶数质数为正,奇数质数为负,甚至连+1都一模一样,因此我们有结论:

φ(n)=n(1+d|nμ(d)1d)=ni=1k(11pi)

至此,我们推出了欧拉函数的定义式.

3.莫比乌斯反演

我们研究上文所提到的μ(x)的性质,发现当x>1时有:

d|xμ(d)=0

如何证明呢?根据上文欧拉函数定义式的证明,我们已经深刻认识到了μ(x)所对应的容斥原理系数的性质----奇数为负,偶数为正.因此我们尝试构造上述求和式有实际意义的场景.我们假设每个质数pi对应一个集合Ai,而对于一个合数n=i=1kpiki,An=i=1kAi.我们发现在容斥原理公式中,奇数个质数系数应为1,而偶数个质数的乘积应为1,这与μ(x)是相反的.因此根据容斥原理,|i=1kAi|可用如下式子表示:

d|xμ(d)|Ad|

但上面的式子有一个问题:我们在容斥求并集时,并没有定义A1,因此我们应该将额外的μ(1)加回来.

综上所述,我们有公式

|i=1kAi|=μ(1)d|xμ(d)|Ad|

这时,我们发现离目标已经不远了,我们只需要构造Ai即可,我们发现,只要让所有的|Ai|={0},此时所有的A都有且仅有同一个元素0,因此它们的并集也为0,因此上述所有集合的大小均为1,与φ(1)=1一同代入上式可得:

1=1d|xμ(d)

d|xμ(d)=0  (x>1)

证毕.

另外,特殊的,我们发现μ(1)=1,因此有性质:

d|xμ(d)=1

当且仅当x=1成立.

下面来看莫比乌斯反演如何证明.

莫比乌斯反演:若f(x)=d|xg(d),则有g(x)=d|xμ(xd)f(d).

我们尝试将条件式代入右式,发现有:

d|xμ(xd)f(d)=d|xμ(xd)k|dg(k)

我们考虑每一个g(x)对总答案的贡献,发现每一个满足mk|x的二元组(m,k)对答案都有g(k)φ(m)的贡献,更换求和顺序,有:

d|xμ(xd)f(d)=k|xg(k)m|(x/k)μ(m)

由于上面我们证出的性质,xk1时,m|(x/k)μ(m)=0,因此对所有kx,k对答案都没有贡献,只需令k=x即可.因此有:

d|xμ(xd)f(d)=k|xg(k)m|(x/k)μ(m)=g(x)

即证.

4.小结

容斥定理有化并为交的功能,在许多情况下,一些有性质的集合做交集仍有很好的性质,而作并集就会变得乱七八糟.举个例子,A={d|d=2k,kZ},B={d|d=3k,kZ},这时就有AB={d|d=6k,kZ},这与A,B的形式是一致的.我们利用这样的性质,化并为交地求出了欧拉函数的定义式.另外的,我们发现莫比乌斯函数φ(x)与容斥原理有千丝万缕的联系,因此考虑其实际意义,找到这个函数的性质,进而证明了莫比乌斯反演.

posted @   snowycat1234  阅读(58)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示