定义
「容斥原理」和「广义容斥原理」这两章中,将使用以下定义。
A:一个包含 n 个不同元素 a1,a2⋯an 的集合。注意 n 的含义是集合大小。
dm:A 的子集中至少包含 m 个元素的集合的数量。(A 的子集中大小 ≥m 的集合的数量)
fm:A 的子集中恰好包含 m 个元素的集合的数量。(A 的子集中大小 =m 的集合的数量)
gA′:A′ 是 A 的子集,满足钦定选 A′ 中所有元素,其他元素无限制的条件的 A 的子集的数量。
设所有包含元素 ai 的 A 的子集所构成的集合为 Xi,以上定义用韦恩图表达如下:
白色代表这部分被算了 0 次,红色代表这部分被算了 1 次。
可以发现:
gA′=∣∣ai∈A′⋂Xi∣∣
还有一条性质:
A′⊆A,∣A′∣=m∑gA′=i=m∑i≤n(mi)fi
韦恩图表示如下:
蓝色代表这部分被算了 3 次。
以集合的角度来理解容斥原理和广义容斥原理比较利于用韦恩图来数形结合理解。但是在 OI 题目中容斥原理的考察背景一般不是集合,而是有 n 个性质,求恰好或至少满足 m 个性质的方案数,而满足每条性质的方案数会有很多种,这点和集合不同,集合中每个元素如果被选择只有一种被选择的方法 (好像是废话)。
容斥原理
我们都知道容斥原理可以求至少包含一个元素的子集数(或至少包含一条性质的方案数):
d1=i=1∑i≤n(−1)i−1A′⊆A,∣A′∣=i∑gA′
集合论的形式:
∣∣i=1⋃i≤nXi∣∣=i=1∑i≤n(−1)i−1pj<pj+1∑∣∣j=1⋂j≤iXpj∣∣
但是,容斥原理还有另一个形式,可以用于求恰好包含零个元素的子集数:
∵f0=∣U∣−d1∴f0=i=0∑i≤n(−1)iA′⊆A,∣A′∣=i∑gA′
我们的广义容斥定理就是相对于这个公式的广义情况。
广义容斥定理
fm=i=m∑i≤n(−1)i−m(mi)A′⊆A,∣A′∣=i∑gA′
可以看到普通容斥是广义容斥 m=0 是的情况。
广义容斥定理是二项式反演的一种,和「定义」一章中的 f 与 g 的函数关系式互为反演关系。把广义容斥原理从几个二项式反演中单拎出来是因为我只理解这一个公式的组合意义 qwq,而且可以类比普通容斥。
二项式反演
以下的 d,f,a 不按照「定义」一章中的意义,而表示任意数列或变量。
反演在线性代数下的理解很简单,就是逆矩阵:
dm=i=0∑i≤mAm,ifi⟺fm=i=0∑i≤mBm,idi
相当于:
⎣⎡d0d1⋮dn⎦⎤=A⎣⎡f0f1⋮fn⎦⎤⟺⎣⎡f0f1⋮fn⎦⎤=B⎣⎡d0d1⋮dn⎦⎤
显然,A=B−1。
以下所有反演公式均可通过矩阵的逆证明,故省略证明 (太菜了)。
-
首先是广义容斥定理的二项式反演形式:
dm=i=m∑∞(mi)fi⟺fm=i=m∑∞(−1)i−m(mi)di
-
其次是:
dm=i=0∑i≤m(im)fi⟺fm=i=0∑i≤m(−1)m−i(im)di
-
然后是:
dm=i=m∑∞(−1)i(mi)fi⟺fm=i=m∑∞(−1)i(mi)di
-
最后是:
dm=i=0∑i≤m(−1)i(im)fi⟺fm=i=0∑i≤m(−1)i(im)di
可以总结为:上下界不动,组合数不动,奇偶性系数只取决于 i 则不动,否则有变无,无变有。