集合 A = { 1 , 2 , . . . , n } A=\{1,2,...,n\} A={1,2,...,n},它含有 n n n个元素,可以说这个集合的基数是 n n n,记做 c a r d   A card\ A card A所谓基数,是表示集合中所含元素多少的量。如果 A A A的基数是 n n n,也可以记做 ∣ A ∣ = n |A|=n A=n,显然空集的基数是 0 0 0,即 ∣ ∅ ∣ = 0 |\varnothing|=0 =0.

文氏图

A A A为集合,若存在自然数 n n n,使得 ∣ A ∣ = c a r d   A = n |A|=card\ A=n A=card A=n,则称 A A A为又穷集,否则称 A A A为无穷集。

例如, { a , b , c } \{a,b,c\} {a,b,c}为又穷集,而 N , Z , Q , R N,Z,Q,R N,Z,Q,R为无穷集。其中有穷集的计数问题可以使用文氏图很方便地解决。

容斥定理(包含排斥定理)

S S S是有穷集, p 1 , p 2 p_1,p_2 p1,p2分别代表两种性质,对于 S S S中的任何一个元素 s s s,只能处于以下4种情况之一:

  1. 只具有性质 p 1 p_1 p1
  2. 只具有性质 p 2 p_2 p2
  3. 同时具有性质 p 1 , p 2 p_1,p_2 p1,p2
  4. 不具有性质 p 1 , p 2 p_1,p_2 p1,p2中的任何一种

P 1 , P 2 P_1,P_2 P1,P2分别表示 S S S中具有性质 p 1 , p 2 p_1,p_2 p1,p2的元素的集合,可以得到: ∣ P ‾ 1 ∩ P ‾ 2 ∣ = ∣ S ∣ − ( ∣ P 1 ∣ + ∣ P 2 ∣ ) + ∣ P 1 ∩ P 2 ∣ |\overline P_1\cap\overline P_2|=|S|-(|P_1|+|P_2|)+|P_1\cap P_2| P1P2=S(P1+P2)+P1P2这便是容斥定理的一种简单形式

如果涉及三条性质,则包含排斥原理的公式变为: ∣ P ‾ 1 ∩ P ‾ 2 ∩ P ‾ 3 ∣ = ∣ S ∣ − ( ∣ P 1 ∣ + ∣ P 2 ∣ + ∣ P 3 ∣ ) + ( ∣ P 1 ∩ P 2 ∣ + ∣ P 1 ∩ P 3 ∣ + ∣ P 2 ∩ P 3 ∣ ) − ∣ P 1 ∩ P 2 ∩ P 3 ∣ |\overline P_1\cap\overline P_2\cap\overline P_3|=|S|-(|P_1|+|P_2|+|P_3|)+(|P_1\cap P_2|+|P_1\cap P_3|+|P_2\cap P_3|)-|P_1\cap P_2\cap P_3| P1P2P3=S(P1+P2+P3)+(P1P2+P1P3+P2P3)P1P2P3以此类推,可以得到容斥定理的一般形式: ∣ P ‾ 1 ∩ P ‾ 2 ∩ . . . ∩ P ‾ n ∣ = ∣ S ∣ − ∑ i = 1 n ∣ P i ∣ + ∑ 1 ⩽ i &lt; j ⩽ n ∣ P i ∩ P j ∣ − ∑ 1 ⩽ i &lt; j &lt; k ⩽ n ∣ P i ∩ P j ∩ P k ∣ + . . . + ( − 1 ) n ∣ P 1 ∩ P 2 ∩ . . . ∩ P n ∣ \begin{aligned} &amp; |\overline P_1\cap\overline P_2\cap...\cap\overline P_n| \\ &amp; = |S|-\sum_{i=1}^{n}|P_i|+\sum_{1\leqslant i&lt;j\leqslant n}^{}|P_i\cap P_j| -\sum_{1\leqslant i&lt;j&lt;k\leqslant n}^{}|P_i\cap P_j\cap P_k|\\ &amp;\quad+...+(-1)^n|P_1\cap P_2\cap...\cap P_n|\\ \end{aligned} P1P2...Pn=Si=1nPi+1i<jnPiPj1i<j<knPiPjPk+...+(1)nP1P2...Pn容斥定理表示 S S S不具有性质 p 1 , p 2 , . . . , p m p_1,p_2,...,p_m p1,p2,...,pm的元素数量为 ∣ P ‾ 1 ∩ P ‾ 2 ∩ . . . ∩ P ‾ n ∣ |\overline P_1\cap\overline P_2\cap...\cap\overline P_n| P1P2...Pn

因此,与之对应的,在 S S S中至少具有 p 1 , p 2 , . . . , p m p_1,p_2,...,p_m p1,p2,...,pm其中一条性质的元素数量为: ∣ P 1 ∪ P 2 ∪ . . . ∪ P n ∣ = ∑ i = 1 n ∣ P i ∣ + ∑ 1 ⩽ i &lt; j ⩽ n ∣ P i ∩ P j ∣ + ∑ 1 ⩽ i &lt; j &lt; k ⩽ n ∣ P i ∩ P j ∩ P k ∣ − . . . + ( − 1 ) n ∣ P 1 ∩ P 2 ∩ . . . ∩ P n ∣ \begin{aligned} &amp; |P_1\cup P_2\cup ...\cup P_n| \\ &amp; =\sum_{i=1}^{n}|P_i|+\sum_{1\leqslant i&lt;j\leqslant n}^{}|P_i\cap P_j| +\sum_{1\leqslant i&lt;j&lt;k\leqslant n}^{}|P_i\cap P_j\cap P_k|\\ &amp;\quad-...+(-1)^n|P_1\cap P_2\cap...\cap P_n|\\ \end{aligned} P1P2...Pn=i=1nPi+1i<jnPiPj+1i<j<knPiPjPk...+(1)nP1P2...Pn即: ∣ P ‾ 1 ∩ P ‾ 2 ∩ . . . ∩ P ‾ n ∣ = ∣ S ∣ − ∣ P 1 ∪ P 2 ∪ . . . ∪ P n ∣ |\overline P_1\cap\overline P_2\cap...\cap\overline P_n| = |S|-|P_1\cup P_2\cup ...\cup P_n| P1P2...Pn=SP1P2...Pn

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐