首页 > 其他分享 >容斥原理初步

容斥原理初步

时间:2024-04-18 20:36:59浏览次数:23  
标签:mu frac sum 容斥 varphi 初步 原理 质数

容斥原理

1.容斥原理

容斥原理用来解决求解\(|\bigcup_{i=1}^{n}A_i|\)的问题.

具体的,定义\(U=\{i|i\in \mathbb{Z},i\in[1,n]\}\),我们有公式:

\[|\bigcup_{i=1}^{n}A_i|=\sum_{S\in U}(-1)^{ |S| + 1}|\bigcap_{i\in S}A_i| \]

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

2.欧拉函数

欧拉函数\(\varphi(n)=\#|\{x|x \perp n\}|\),若\(n=\prod_{i=1}^np_i^{k_i}\),则小于等于\(n\)中与\(n\)不互质的数是\(p_1\)或\(p_2\)...或\(p_n\)的倍数,为统计倍数的数量,设\(f(i)=\lfloor \frac{n}{i} \rfloor\),由于是"或"的关系,我们考虑化并为交.更具体的,举个例子,求\(\varphi(12)\),则为\(2\)或\(3\)的倍数,根据容斥原理则为\(f(2) + f(3) - f(6)\).为了确定符号,我们引入莫比乌斯函数\(\mu(x)\),其定义为:

\[\mu(x)= \begin{cases} 1 \ \ x = 1\\ 0 \ \ \text{x含有平方因子} \\ (-1)^k \ \ \text{k为x中本质不同的质因子数量} \end{cases} \]

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

\[n-\varphi(n)=\sum_{d | n}-\mu(d)f(d) = -n \sum_{d | n}\mu(d)\frac{1}{d} \]

\[\varphi(n) = n(1+\sum_{d | n}\mu(d)\frac{1}{d}) \]

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

\[\varphi(n) = n(1+\sum_{d | n}\mu(d)\frac{1}{d}) = n\prod_{i=1}^k(1-\frac{1}{p_i}) \]

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

3.莫比乌斯反演

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

\[\sum_{d|x}\mu(d) = 0 \]

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

\[-\sum_{d|x}\varphi(d)|A_d| \]

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

综上所述,我们有公式

\[|\bigcup_{i=1}^kA_i|= \varphi(1)-\sum_{d|x}\varphi(d)|A_d| \]

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

\[1=1-\sum_{d|x}\varphi(d) \]

\[\sum_{d|x}\varphi(d)=0 \ \ (x> 1) \]

证毕.

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

\[\sum_{d|x}\mu(d) = 1 \]

当且仅当\(x=1\)成立.

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

莫比乌斯反演:若\(f(x)=\sum_{d|x}g(d)\),则有\(g(x)=\sum_{d|x}\varphi(\frac{x}{d})f(d)\).

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

\[\sum_{d|x}\varphi(\frac{x}{d})f(d) =\sum_{d|x}\varphi(\frac{x}{d})\sum_{k|d}g(k) \]

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

\[\sum_{d|x}\varphi(\frac{x}{d})f(d) =\sum_{k|x}g(k)\sum_{m|(x/k)}\varphi(m) \]

由于上面我们证出的性质,\(\frac{x}{k}\neq1\)时,\(\sum_{m|(x/k)}\varphi(m)=0\),因此对所有\(k\neq x\),\(k\)对答案都没有贡献,只需令\(k=x\)即可.因此有:

\[ \sum_{d|x}\varphi(\frac{x}{d})f(d) =\sum_{k|x}g(k)\sum_{m|(x/k)}\varphi(m)=g(x) \]

即证.

4.小结

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

标签:mu,frac,sum,容斥,varphi,初步,原理,质数
From: https://www.cnblogs.com/snowycat1234/p/18144339

相关文章

  • 光学雨量计雨量传感器的工作原理与实时数据采集
    光学雨量计雨量传感器的工作原理与实时数据采集光学雨量计是一种常用的雨量传感器,它通过光学原理实现对降水量的测量。其工作原理主要包括两个方面:雨滴传感和数据采集。在雨滴传感方面,光学雨量计利用红外线传感器或者激光器发射出的光束穿过空气,当光束遇到雨滴时,会由于雨滴的散......
  • 达梦数据库-初步学习
    达梦数据库-初步学习sql连接方式su-dmdbacd/data//data/dm/bin/disqlSYSDBA/[email protected]:5236数据库信息查看查看当前数据库中存在的模式​select*fromSYSOBJECTStwheret."TYPE$"='SCH';​查看所有表空间​SELECT*FROMV$TABLESPACE;​表空间信息......
  • MyBatis-07-插件原理
    MyBatis插件MyBatis的插件实际上就是Interceptor,拦截器,拦截并重写SQLInterceptor:拦截器InterceptorChain:拦截器链Invocation:封装Object.method(args),反射调用Plugin:JDK代理处理器InvocationHandler,封装一个Interceptor及其拦截的方法,及拦截对象+拦截方......
  • 编译原理(清华大学版)第三章
    第三章词法分析正规式、正规文法设\(G=(V_N,V_T,P,S)\),如果P中每一个产生式的形式都是\(A\rightarrowaB\)或\(A\rightarrowa\),其中\(A,B\)都是非终结符,\(a\inV_T^*\),则是3型或正规文法。正规文法所描述的是\(V_T\)上的正规集,即通过\(V_N,V_T,P,S\)来表示。正规式也称正则......
  • 【编译原理】正则式转NFA转DFA 代码实现(C/C++)
    直接上代码:#include<bits/stdc++.h>usingnamespacestd;//nfa结构定义structnst{vector<int>a[26],e;//接收a-z会到达的状态,接收eps会到达的状态boolf=0;//=0为可接受态};vector<nst>nfa;set<char>alp;stringstr;set<int>accepted;struc......
  • FPGA器件实现逻辑运算的基本原理是(   )。
    选项:A、采用最小项相加的电路形式实现逻辑运算B、采用与非门电路实现逻辑运算C、采用异或门电路实现逻辑运算D、采用查找表的方式实现逻辑运算答案:D解析:组成FPGA的两个最基本的部分是组合逻辑以及时序逻辑,分别实现这两个基本部分的结构就是FPGA的基本单元。组合逻辑......
  • nova rescue原理笔记
    说明:场景示例,虚机的启动盘的一个文件被误删除了导致无法再次启动了,或者admin的密码忘记了。Rescue功能提供一个解决这类问题的手段。备注:不能rescue一个volume-backedinstance前提默认情况下,实例从提供的救援映像或新的映像启动原始实例映像的副本(如果未提供救援映像)。......
  • React的核心原理:组件化开发深度解析
    React的核心原理:组件化开发深度解析React,作为当今最流行的前端框架之一,其成功的背后离不开其核心原理——组件化开发。组件化开发不仅简化了前端开发的复杂性,还提高了代码的可重用性和可维护性。本文将深入探讨React组件化开发的原理、优势以及实践中的注意事项。一、组件化开发......
  • redis哨兵模式的原理及部署
    目录一、什么是哨兵模式1、为什么需要哨兵机制2、哨兵架构拓扑3、RedisSentinel的功能:二、搭建哨兵架构1、涉及主机2、拓扑结构3、设置一主两从4、master服务器状态5、编辑哨兵的配置文件6、启动哨兵7、验证哨兵端口8、查看哨兵日志9、验证当前sentinel状态三、故障转移1、redis......
  • 02、OSPFv3基本原理
    OSPFv3基本原理 OSPFv3是运行于IPv6的OSPF路由协议(RFC2740),它在OSPFv2基础上进行了增强,是一个独立的路由协议。OSPFv3在Hello报文、状态机、LSDB、洪泛机制和路由计算等方面的工作原理和OSPFv2保持一致。OSPFv3协议把自治系统划分成逻辑意义上的一个或多个区域,通过LSA(Lin......