我们上高中的时候,都学过一种容斥原理吧,表示为以下形式:
\[|A\cup B|=|A|+|B|-|A\cap B| \]A表示事件A发生的概率或者方案数,B同理
其实这个叫做单步容斥,因为这个仅仅有一次加减,
而在信息学领域,多见的是多步容斥,就是有很多次加加减减,形式如下
\[\left|\bigcup\limits_{i=1}^{n}S_i\right|=\sum\limits_{C\subseteq M}^{n}(-1)^{|C|-1}\left|\bigcap\limits_{T\subseteq C}T\right| \]这里S表示一个集合或者一个元素,M表示S的集合也就是集合的集合
C枚举的就是集合M中的所有大小为一个定值的集合,T是C中的每一个元素
左侧就是所有S的并集,也就是所有S中包含的元素总和
右侧的就表示C的每一个元素的交集,加多了的减去,减多了再加上
展开之后就是:
\[|A_1\cup A_2\cup...\cup A_n|=\sum\limits_{1\le i\le n}|A_i|-\sum\limits_{1\le i<j\le n}|A_i\cap A_j|+...+(-1)^{n-1}\times |A_1\cap A_2\cap ...\cap A_n| \]这个其实可以用二项式定理证明的,
设一个元素在m个集合中出现过,那么就有:
\[\sum\limits_{i=1}^m(-1)^{i-1}{m\choose i}=-\sum\limits_{i=1}^m(-1)^i{m\choose i}=1-\sum\limits_{i=0}^m(-1)^i{m\choose i}=1-(1-1)^m=1 \]这个二项式定理的应用,直接展开一下就好了,挺好推的
其实还有广义容斥原理,那个含义极其广泛
可以说,所有的反演都是广义容斥原理的一个特殊情况。。。。