preparing

容斥原理

引入

假设一个班中有 \(n\) 个人,每个人都参加至少参加了 \(A\)\(B\) 两组中的至少一个,已知有 \(15\) 人参加 \(A\) 组,\(20\) 人参加 \(B\) 组,\(5\) 人同时参加了两个组,求总人数 \(n\)

显然,总人数并不是 \(15+20=35\),因为有人同时参加了两个组,我们画出 Venn 图,显然,总人数为 \(30\)。实际上,我们可以直接用 \(15+20-5\) 得到相同的答案,可以理解为,\(15+20\) 是两个小组的人数之和,但是中间同时参加两个组的 \(5\) 人被重复算了两遍(\(A\)\(B\) 中各一遍),所以要把他们减掉。
一般地,假如 \(A\) 组有 \(a\) 人,\(B\) 组有 \(b\) 人,同时参加两组的有 \(c\) 人,我们也能用和刚刚一样的思路算出总人数 \(n=a+b-c\)
更加一般地,我们不妨将 \(A\)\(B\) 两“组”看成两个集合,我们刚刚的结论就是:\(\left|A\cup B\right|=\left|A\right|+\left|B\right|-\left|A\cap B\right|\)\(\left|S\right|\) 表示集合 \(S\) 的元素个数,即 \(\operatorname{card}(S)\))。

如果有 \(3\) 个集合呢?
我们再画出 \(Venn\) 图,发现此时 \(\left|A\cup B\cup C\right| = \left|A\right|+\left|B\right|+\left|C\right|-\left|A\cup B\right|-\left|A\cup C\right|-\left|B\cup C\right|+\left|A\cup B\cup C\right|\) ,因为 \(\left|A\right|+\left|B\right|+\left|C\right|\) 中,集合两两相交的地方都被加了两次,所以我们减去 \(\left|A\cup B\right|+\left|A\cup C\right|+\left|B\cup C\right|\) ,但是这样三个集合都相交的地方,即 \(\left|A\cup B\cup C\right|\) 开始时被加了三次,然后又被减了三次,我们还需要加上一次。

容斥原理


根据刚刚的规律,我们推测,四个集合的并集的元素个数应该是四个集合的元素个数和,减去两两相交的元素个数,加上三三相交的元素个数,最后减去四四相交的元素个数;而 \(n\) 个集合时,我们推测,\(n\) 个集合的并集的元素个数应该是这 \(n\) 个集合的元素个数和,减去两两相交的元素个数,加上三三相交的元素个数……
于是,我们给出容斥原理的式子:

\[\left|\bigcup\limits_{i=1}^{n}{A_i}\right| = \sum\limits_{1\le i\le n}{\left|A_i\right|}\,-\,\sum\limits_{1\le i<j\le n}{\left|A_i\cap A_j\right|}\,+\,\sum\limits_{1\le i<j<k\le n}{\left|A_i\cap A_j\cap A_k\right|}-…+(-1)^{n-1}\left|\bigcap\limits_{i=1}^{n}{A_i}\right| \]

即:

\[\left|\bigcup\limits_{i=1}^{n}{A_i}\right| = \sum\limits_{k=1}^{n}{\,((-1)^{k-1}\times\sum\limits_{1\le i_1<i_2<…<i_k\le n}{\left|A_{i_1}\cap A_{i_2}\cap…\cap A_{i_k}\right|})} \]

证明如下:

利用排列组合(二项式定理)证明

主要思路:我们只需要证明在式子 \(\left|\bigcup\limits_{i=1}^{n}{A_i}\right| = \sum\limits_{k=1}^{n}{\,((-1)^{k-1}\times\sum\limits_{1\le i_1<i_2<…<i_k\le n}{\left|A_{i_1}\cap A_{i_2}\cap…\cap A_{i_k}\right|})}\) 中,任意元素都被且只被算了一遍即可。

任取元素 \(x\in U\)\(U\) 为全集),假设 \(x\) 在集合 \(A_1,A_2,…,A_n(n\in \N^*)\) 中。我们枚举上式的 \(k\)
\(k=1\) 时,因为 \(x\)\(n\) 个集合中,故会被加 \(n\) 次;
\(k=2\) 时,同理,只有选到的两个集合都有 \(x\) 时才会减去一次,故会减去 \(C_n^2\) 次;
\(k=3\) 时,同理,只有选到的三个集合都有 \(x\) 时才会加上一次,故会加上 \(C_n^3\) 次;
……
\(k=n\) 时,同理,只有选到的 \(n\) 个集合都有 \(x\) 时才会加上(或减去,这取决于 \(n\))一次,故会加上(或减去)\(C_n^n\) 次;
\(k>n\) 时,同理,只有选到的 \(k\) 个集合都有 \(x\) 时才会加上(或减去,这取决于 \(n\))一次,而 \(x\) 只在 \(n\) 个集合出现过,所以不会加或减。
所以,\(x\) 一共会被加 \(n-C_n^2+C_n^3-C_n^4+…+(-1)^{n-1}C_n^n = C_n^1-C_n^2+C_n^3-C_n^4+…+(-1)^{n-1}C_n^n\) 次。

又因为二项式定理告诉我们:\((a+b)^n = C_n^0a^nb^0+C_n^1a^{n-1}b^1+C_n^2a^{n-2}b^2+…+C_n^na^0b^n\)
\(\therefore\)\(b=-b\) 时,有:\((a-b)^n = C_n^0a^nb^0-C_n^1a^{n-1}b^1+C_n^2a^{n-2}b^2-…+(-1)^{n}\cdot C_n^na^0b^n\)
再取 \(a=b=1\) 时,有:\((1-1)^n = C_n^0-C_n^1+C_n^2-…+(-1)^{n}\cdot C_n^n=0\)
\(\therefore\,C_n^0-C_n^1+C_n^2-…+(-1)^{n}\cdot C_n^n=C_n^0-(C_n^1-C_n^2+…+(-1)^{n-1}\cdot C_n^n)=0\)
\(\therefore\,1-(C_n^1-C_n^2+…+(-1)^{n-1}\cdot C_n^n)=0\)
\(\therefore\,C_n^1-C_n^2+…+(-1)^{n-1}\cdot C_n^n=1\)
所以 \(x\) 只被加了 \(1\) 次,命题得证。

利用数学归纳法证明

主要思路:数学归纳法。先证明了 \(n=2\) 时可行,再证明 \(n=p\) 可行时 \(n=p+1\) 也可行(\(p\in\N^*\)\(p\ge 2\))。

\(n=2\) 时,显然成立。

\(n=p(p\in\N^*\)\(p\ge 2)\) 成立,即 \(\left|\bigcup\limits_{i=1}^{p}{A_i}\right| = \sum\limits_{k=1}^{p}{\,((-1)^{k-1}\times\sum\limits_{1\le i_1<i_2<…<i_k\le p}{\left|A_{i_1}\cap A_{i_2}\cap…\cap A_{i_k}\right|})}\) 成立时:
\(\left|\bigcup\limits_{i=1}^{p+1}{A_i}\right| = \left|\big(\bigcup\limits_{i=1}^{p}{A_i}\big)\cup A_{p+1}\right|\)
\(\bigcup\limits_{i=1}^{p}{A_i}\)\(A_{p+1}\) 看作两个整体,使用 \(n=2\) 时的结论:
\(=\left|\big(\bigcup\limits_{i=1}^{p}{A_i}\big)\right|+\left|A_{p+1}\right|-\left|\big(\bigcup\limits_{i=1}^{p}{A_i}\big)\cap A_{p+1}\right|\)
使用分配律:
\(=\left|\big(\bigcup\limits_{i=1}^{p}{A_i}\big)\right|+\left|A_{p+1}\right|-\left|\bigcup\limits_{i=1}^{p}{\big(A_i\cap A_{p+1}\big)}\right|\)
使用 \(n=p\) 时的结论:
\(=\sum\limits_{k=1}^{p}{\,((-1)^{k-1}\times\sum\limits_{1\le i_1<i_2<…<i_k\le p}{\left|A_{i_1}\cap A_{i_2}\cap…\cap A_{i_k}\right|})} + \left|A_{p+1}\right| - \big(\sum\limits_{k=1}^{p}{\,((-1)^{k-1}\times\sum\limits_{1\le i_1<i_2<…<i_k\le p}{\left|A_{i_1}\cap A_{i_2}\cap…\cap A_{i_k}\cap A_{p+1}\right|})}\big)\)
提出第一项 \(k=1\) 的情况,与第二项结合;第三项变号并提出最后一项:
\(=\sum\limits_{1\le i_1\le p+1}{\left|A_{i_1}\right|} + \sum\limits_{k=2}^{p}{\,((-1)^{k-1}\times\sum\limits_{1\le i_1<i_2<…<i_k\le p}{\left|A_{i_1}\cap A_{i_2}\cap…\cap A_{i_k}\right|})} + \big(\sum\limits_{k=1}^{p-1}{\,((-1)^k\times\sum\limits_{1\le i_1<i_2<…<i_k\le p}{\left|A_{i_1}\cap A_{i_2}\cap…\cap A_{i_k}\cap A_{p+1}\right|})}\big) + (-1)^p\left|A_1\cap A_2\cap A_3\cap…\cap A_p\cap A_{p+1}\right|\)
将第三项的第一个 \(\sum\) 的自变量 \(k\) 总体加一变为 \(k+1\)
\(=\sum\limits_{1\le i_1\le p+1}{\left|A_{i_1}\right|} + \sum\limits_{k=2}^{p}{\,((-1)^{k-1}\times\sum\limits_{1\le i_1<i_2<…<i_k\le p}{\left|A_{i_1}\cap A_{i_2}\cap…\cap A_{i_k}\right|})} + \big(\sum\limits_{k=2}^{p}{\,(-1)^{k-1}\times\sum\limits_{1\le i_1<i_2<…<i_{k-1}\le p}{\left|A_{i_1}\cap A_{i_2}\cap…\cap A_{i_{k-1}}\cap A_{p+1}\right|}}\big) + (-1)^p\left|A_1\cap A_2\cap A_3\cap…\cap A_p\cap A_{p+1}\right|\)
合并第二、三项(理由在证明结束之后):
\(=\sum\limits_{1\le i_1\le p+1}{\left|A_{i_1}\right|} + \sum\limits_{k=2}^{p}{(-1)^{k-1}\sum\limits_{1\le i_1<i_2<…<i_k\le p+1}{\left|A_{i_1}\cap A_{i_2}\cap…\cap A_{i_k}\right|}} + (-1)^p\left|A_1\cap A_2\cap A_3\cap…\cap A_p\cap A_{p+1}\right|\)
合并:
\(=(-1)^{1-1}\sum\limits_{1\le i_1\le p+1}{\left|A_{i_1}\right|} + \sum\limits_{k=2}^{p}{(-1)^{k-1}\sum\limits_{1\le i_1<i_2<…<i_k\le p+1}{\left|A_{i_1}\cap A_{i_2}\cap…\cap A_{i_k}\right|}} + (-1)^{p+1-1}\left|A_1\cap A_2\cap A_3\cap…\cap A_p\cap A_{p+1}\right|\)
\(=\sum\limits_{k=1}^{p+1}{(-1)^{k-1}\sum\limits_{1\le i_1<i_2<…<i_k\le p+1}{\left|A_{i_1}\cap A_{i_2}\cap…\cap A_{i_k}\right|}}\)

也就是说:
\(\left|\bigcup\limits_{i=1}^{p+1}{A_i}\right|=\sum\limits_{k=1}^{p+1}{(-1)^{k-1}\sum\limits_{1\le i_1<i_2<…<i_k\le p+1}{\left|A_{i_1}\cap A_{i_2}\cap…\cap A_{i_k}\right|}}\)
所以 \(n=p+1\) 时结论仍成立。
所以命题得证。

过程中倒数第二步能合并第二、三项的原因是:
第二项为 \(\sum\limits_{k=2}^{p}{\,(-1)^{k-1}\times\sum\limits_{1\le i_1<i_2<…<i_k\le p}{\left|A_{i_1}\cap A_{i_2}\cap…\cap A_{i_k}\right|}}\)
第三项为 \(\sum\limits_{k=2}^{p}{\,(-1)^{k-1}\times\sum\limits_{1\le i_1<i_2<…<i_{k-1}\le p}{\left|A_{i_1}\cap A_{i_2}\cap…\cap A_{i_{k-1}}\cap A_{p+1}\right|}}\)
我们发现,第二项中算的是在 \(A_1\sim A_p\) 中找 \(k\) 个求交集元素个数和,而第三项算的是在 \(A_1\sim A_p\) 中找 \(k-1\) 个求它们与 \(A_{p+1}\) 的交集元素个数和,两个合起来刚好就是在 \(A_1\sim A_{p+1}\) 中找 \(k\) 个求它们的交集元素个数和,即可以合并为 \(\sum\limits_{k=2}^{p}{(-1)^{k-1}\sum\limits_{1\le i_1<i_2<…<i_k\le p+1}{\left|A_{i_1}\cap A_{i_2}\cap…\cap A_{i_k}\right|}}\)

例题

\(1\):计算不超过 \(120\) 的合数和质数的个数。

$Hint$ 考虑不超过 $120$ 的合数的质因数构成,利用容斥原理计算得出结果。
$Ans$ 合数 $89$ 个,质数 $30$ 个。

\(2\):将与 \(105\) 互质的数从小到大排成一列,求这一列数的第 \(1000\) 个。

$Hint$ 考虑到每 $105$ 个数中出现与 $105$ 互质的数的个数应一样。
$Ans$ 2186

\(3\):求由 \(1,2,3\) 构成的 \(n\) 位数中,\(1,2,3\) 都至少出现一次的个数。

$Hint$ 考虑总个数减去不符合条件的数的个数。
$Ans$ $3^n-3\times 2^n+3$

\(4\):若集合 \(A,B,C\) 满足 \(A\cap B\cap C = \varnothing\),求证 \(\left|A\cup B\cup C\right|\ge\dfrac{1}{2}(\left|A\right|+\left|B\right|+\left|C\right|)\) 并举例说明可以取等。

$Hint$ 考虑利用容斥原理拆开左边的式子,然后逆向推出答案。
$Ans$ 见下面的解析。

\(1\):计算不超过 \(120\) 的合数和质数的个数。
显然,我们可以采取枚举法,但是下面我们给出利用容斥原理的方法。
由于 \(11^2>120\),所以不超过 \(120\) 的合数必定有至少一个小于 \(11\) 的质因数(因为若所有质因数都大于等于 \(11\) 的话,这个数至少是 \(11*11=121>120\),故不存在)。
所以,不超过 \(120\) 的合数的质因数一定有 \(2,3,5,7\) 中的至少一个。
不妨设 \(A_i\) 为不超过 \(120\)\(i\) 的倍数的集合,所以原题所求即为 \(\left|A_2\cup A_3\cup A_5\cup A_7\right| - 4\)(因为 \(2,3,5,7\) 这四个数是质数,要把它们除去)。
由容斥原理:
\(\left|A_2\cup A_3\cup A_5\cup A_7\right|\\=\sum\limits_{i\in\{2,3,5,7\}}{\left|A_i\right|}-\sum\limits_{i,j\in\{2,3,5,7\},i<j}{\left|A_i\cap A_j\right|}+\sum\limits_{i,j,k\in\{2,3,5,7\},i<j<k}{\left|A_i\cap A_j\cap A_k\right|}+\left|A_2\cap A_3\cap A_5\cap A_7\right|\)
显然 \(\left|A_2\right| = \left\lfloor\dfrac{120}{2}\right\rfloor=60\),同理 \(\left|A_3\right| = 40,\left|A_5\right| = 24,\left|A_7\right| = 17\)
显然 \(\left|A_2\cap A_3\right| = \left\lfloor\dfrac{120}{2\times 3}\right\rfloor = 20\),同理可得其它。
所以原式 \(=[(60+40+24+17)-(20+12+8+8+5+3)+(4+2+1+1)-0]-4=93-4=89\)
质数个数为 \(120-1-89=30\)\(1\) 既不是质数也不是合数)

\(2\):将与 \(105\) 互质的数从小到大排成一列,求这一列数的第 \(1000\) 个。
因为 \(105=3\times 5\times7\),所以每 \(105\) 中,由容斥原理,与 \(105\) 互质的数个数为:
\(105-[(35+21+15)-(3+5+7)+1] = 48\) 个。
所以 \(1000\) 个数可以被划分为 \(\left\lfloor\dfrac{1000}{48}\right\rfloor=20\) 组多 \(1000-20\times 48 = 40\) 个。
通过枚举,第 \(40\) 个数为 \(86\)
所以第 \(1000\) 个数为 \(105\times 20 + 86 = 2186\)

\(3\):求由 \(1,2,3\) 构成的 \(n\) 位数中,\(1,2,3\) 都至少出现一次的个数。
我们记 \(A_i\) 为由 \(1,2,3\) 构成的不含 \(i\)\(n\) 位数的集合(\(i\in\{1,2,3\}\)),\(U\) 为由 \(1,2,3\) 构成的所有 \(n\) 位数的集合。
显然答案为 \(\left|\,\overline{A_1\cup A_2\cup A_3}\,\right|\)
由容斥原理,得到:
\(\left|\,\overline{A_1\cup A_2\cup A_3}\,\right|\\= \left|U\right|-\left[(\left|A_1\right|+\left|A_2\right|+\left|A_3\right|)-(\left|A_1\cap A_2\right|+\left|A_1\cap A_3\right|+\left|A_2\cap A_3\right|)+\left|A_1\cap A_2\cap A_3\right|\right]\)
又因为 \(\left|U\right| = 3^n,\left|A_i\right| = 2^n(i\in\{1,2,3\}),\\\left|A_i\cap A_j\right| = 1(i,j\in\{1,2,3\},i\neq j),\left|A_1\cap A_2\cap A_3\right|=0\)
所以个数为 \(3^n-[3\times 2^n-3+0] = 3^n-3\times 2^n+3\)

\(4\):若集合 \(A,B,C\) 满足 \(A\cap B\cap C = \varnothing\),求证 \(\left|A\cup B\cup C\right|\ge\dfrac{1}{2}(\left|A\right|+\left|B\right|+\left|C\right|)\) 并举例说明可以取等。
逆推。
\(\left|A\cup B\cup C\right|\ge\dfrac{1}{2}(\left|A\right|+\left|B\right|+\left|C\right|) \\\Rightarrow (\left|A\right|+\left|B\right|+\left|C\right|)-(\left|A\cap B\right|+\left|A\cap C\right|+\left|B\cap C\right|)+\left|A\cap B\cap C\right|\ge\dfrac{1}{2}(\left|A\right|+\left|B\right|+\left|C\right|) \\\Rightarrow (\left|A\right|+\left|B\right|+\left|C\right|)-(\left|A\cap B\right|+\left|A\cap C\right|+\left|B\cap C\right|\ge\dfrac{1}{2}(\left|A\right|+\left|B\right|+\left|C\right|) \\\Rightarrow 2\left|A\right|+2\left|B\right|+2\left|C\right|-2\left|A\cap B\right|-2\left|A\cap C\right|-2\left|B\cap C\right|\ge\left|A\right|+\left|B\right|+\left|C\right| \\\Rightarrow \left|A\right|+\left|B\right|+\left|C\right|-2\left|A\cap B\right|-2\left|A\cap C\right|-2\left|B\cap C\right|\ge 0 \\\Rightarrow (\left|A\right|-\left|A\cap B\right|-\left|A\cap C\right|)+(\left|B\right|-\left|A\cap B\right|-\left|B\cap C\right|)+(\left|C\right|-\left|A\cap C\right|-\left|B\cap C\right|)\ge 0 \\\Rightarrow (\left|A\right|-\left|A\cap B\right|-\left|A\cap C\right|+\left|A\cap B\cap C\right|)+(\left|B\right|-\left|A\cap B\right|-\left|B\cap C\right|+\left|A\cap B\cap C\right|)+(\left|C\right|-\left|A\cap C\right|-\left|B\cap C\right|+\left|A\cap B\cap C\right|)\ge 0\)
显然 \((\left|A\right|-\left|A\cap B\right|-\left|A\cap C\right|+\left|A\cap B\cap C\right|)\)\((\left|B\right|-\left|A\cap B\right|-\left|B\cap C\right|+\left|A\cap B\cap C\right|)\)\((\left|C\right|-\left|A\cap C\right|-\left|B\cap C\right|+\left|A\cap B\cap C\right|)\) 都大于等于 \(0\)(如图着色部分),所以原命题得证,证明过程即为上述过程从后往前写。

取等条件即为上图着色部分无元素,例如 \(A=B=C=\varnothing\)\(A=\{1,2\},B=\{1,3\},C=\{1,3\}\) 等。

posted @ 2022-03-08 18:42  qzhwlzy  阅读(906)  评论(0编辑  收藏  举报