我們上高中的時候,都學過一種容斥原理吧,表示為以下形式:
\[|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 \]
這個二項式定理的應用,直接展開一下就好了,挺好推的
其實還有廣義容斥原理,那個含義極其廣泛
可以說,所有的反演都是廣義容斥原理的一個特殊情況。。。。