【汉化】筛分法
5 筛分法
筛分法本质上有两个变体。为确定一个集合的大小,我们会多算,然后从这个数中减去,再加上,再减去……直到元素的个数最终被精确确定。一个典例就是 容斥原理。 在第二个变体中,我们会通过合适的权重筛掉不想要的元素。这就是对合原理背后的本质思路。
5.1 容斥
考虑一个有限集 \(X\) 和三个子集 \(A,B,C.\) 要算出 \(|A \cup B \cup C|\),我们会求和 \(|A|+|B|+|C|.\) 除非 \(A,B,C\) 互无交集,否则我们就多算了,因为 \(A \cap B,A \cap C,B \cap C\) 被算了两次。所以我们减去 \(|A \cap B|+|A \cap C|+|B \cap C|.\) 现在这个数就对了,除了 \(A \cap B \cap C\) 里的元素。他们被加上了三次,又被减去了三次。因此答案为
或者说,
下面是通式。
使 \(A_1,A_2, \dots ,A_n\) 为 \(X\) 的子集,那么
为证明,我们检查一个元素 \(x \in X\) 被算重了几次。如果 \(x \not \in \bigcup_{i=1}^n A_i\),那么它在方程的两边都算了一次。假设 \(x \in \bigcup_{i=1}^n A_i\),更精确来说, \(x\) 恰好在 \(A_i\) 的 \(m\) 个中。方程左边为 \(0,\) 对右边,由于 \(m \geq 1,\) 我们由 \((1)\) 得
由这个基本的解释可得容斥原理。假设给定一个集合 \(X,\) 称为 总集,和一个属性集 \(E=\{ e_1, \dots ,e_n \},X\) 可能有,也可能没有这些属性。使 \(A_i\) 为享有属性 \(e_i\)(可能还有其他属性)的元素的集合。那么 \(\left| X \setminus \bigcup_{i=1}^n A_i \right|\) 就是 不 拥有 任何 属性的元素的数量。现在考虑 \((1)\) 右边的写法。显而易见,\(A_{i_1} \cap \cdots \cap A_{i_t}\) 就是拥有属性 \(e_{i_1}, \dots, e_{i_t}\) (可能还有其他属性) 的集合。使用如下记法:
我们得到了容斥原理。
容斥原理. 使 \(X\) 为一个集合,且 \(E= \{ e_1, \dots , e_n \}\) 为属性集。那么
在 \(N_{\supseteq T}\) 只取决于集合大小 \(\left| T \right| = k\) 时,这个方程甚至会变得更简单。由于 \(\left| T \right| = k,\) 我们就可以写作 \(N_{\supseteq T} = N_{\geq k},\) 并称呼 \(E\) 为 同质 属性集。我们马上可得在这种情况下 \(N_{=T} = N_{=k}\) 也只取决于 \(T\) 的势。因此对于同质属性集,有