写在前面
一直想梳理一下这部分的知识,借此机会写一下学习的笔记。
面向读者:有一定代数基础(似乎有代数基础的同学都会这个,哭唧唧
由于我也是照着书在写,所以谢绝转载,仅供学习交流。
集合
什么是集合?相信这是个可以甩上知乎问,并能得到许多优质答案的问题。
我们不必在此研究得太深,我们只需要知道,集合是具有某种特定性质的事物的总体。
比如喜欢逛知乎的人,或者小于100的所有正偶数。
我们用 来表示具备性质
的集合。
容斥原理
容斥原理呢,可能是我们在小学就会学到的数学知识,即使它是如此的浅显易懂,但也是组合数学中非常强有力的工具。
在形式化定义之前,先来感受一些例子。
我们有两个集合 (喜欢刷知乎的人,喜欢逛B站的人)。
我们想计算他们并的大小 (喜欢刷知乎或者喜欢逛B站的人)。
一个傻傻的做法就是直接把两个集合的大小加起来: ,显然这是算多了的,他们重复的部分被计算了两次,所以我们得减去重复计算的部分:
(既喜欢刷知乎,又喜欢逛B站)。
如下图(通常叫做文氏图)所示:
于是我们就得到了计算 的方式:
现在我们考虑三个集合 ,我们依然想知道他们的并的大小
,相似得,我们画个文氏图:
不难观察出三个集合时得计算方法:
既是,加上被覆盖一次得,减去被覆盖两次的,加上被覆盖三次的。
有了这些观察,我们就能得出容斥原理求并版本的公式:
定理1(容斥原理,求并):如果 时有限集合,那么:
其中 表示集合
。
证明:考虑任意一个元素 。他有性质
,当然,也被包括在了集合
中。我们观察
在等式右边的贡献。如果
,当且仅当性质集合
是
的性质集合的子集,即
。所以
对等式右边的贡献应当是:
所以每个元素在等式的左右两边都只贡献了 ,所以等式成立。
证毕。
有了定理1,我们就能计算求并的容斥原理啦,同样的,我们也能给出求交模式的容斥原理:
定理2(容斥原理,求交):给出集合 ,并且定义
,那么:
证明留作练习。