【汉化】筛分法

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\) 里的元素。他们被加上了三次,又被减去了三次。因此答案为

\[\left| A \cup B \cup C \right|=\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|, \]

或者说,

\[\left| X \setminus (A \cup B \cup C) \right|=\left| X \right|-\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|. \]

下面是通式。

使 \(A_1,A_2, \dots ,A_n\)\(X\) 的子集,那么

\[\left| X \setminus \bigcup \limits_{i=1}^{n} A_i \right| = \left| X \right|- \sum \limits_{i=1}^{n} \left| A_i \right| + \sum \limits_{i<j} \left| A_i \cap A_j \right| \mp \cdots + (-1)^n \left| A_1 \cap \cdots \cap A_n \right|. \quad (1) \]

为证明,我们检查一个元素 \(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)\)

\[1 - \dbinom{m}{1} + \dbinom{m}{2} - \dbinom{m}{3} \pm \cdots + (-1)^m \dbinom{m}{m}=0. \]

由这个基本的解释可得容斥原理。假设给定一个集合 \(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}\) (可能还有其他属性) 的集合。使用如下记法:

\[\begin{aligned} N_{\supseteq T} := \# \{ x \in X : x \text{ 至少拥有 } T \textsf{ 中的属性} \}, \\ N_{= T} := \# \{ x \in X : x \text{ 有且仅有 } T \textsf{ 中的属性} \}, \end{aligned} \quad (2) \]

我们得到了容斥原理。

容斥原理. 使 \(X\) 为一个集合,且 \(E= \{ e_1, \dots , e_n \}\) 为属性集。那么

\[N_{= \emptyset} = \sum \limits_{T \subseteq E} (-1)^{\left| T \right|} N_{\supseteq T} = \sum \limits_{k=0}^{n} (-1)^k \sum \limits_{T: \left| T \right| = k} N_{\supseteq T}. \quad (3) \]

\(N_{\supseteq T}\) 只取决于集合大小 \(\left| T \right| = k\) 时,这个方程甚至会变得更简单。由于 \(\left| T \right| = k,\) 我们就可以写作 \(N_{\supseteq T} = N_{\geq k},\) 并称呼 \(E\)同质 属性集。我们马上可得在这种情况下 \(N_{=T} = N_{=k}\) 也只取决于 \(T\) 的势。因此对于同质属性集,有

\[N_{=0} = \sum \limits_{k=0}^{n} (-1)^k \dbinom{n}{k} N_{\geq k}. \quad (4) \]

例 1. 最早的例子聚焦于欧拉函数 \(\varphi = \# \{ d: 1 \leq d \leq n, \gcd (d,n)=1 \}\) 的计算。令 $n=p_1^{a_1} \cdots p_t^{a_t} $ 为 \(n\) 的质因数分解。让 \(X= \{ 1,2, \dots ,n \}\)\(e_i\) 代表 \(d\) 整除 \(p_i.\) 显而易见,\(N_{= \emptyset} = \varphi (n),N_{\supseteq T}\)\(\leq n\) 且是 \(\prod_{e_i \in T} p_i\) 的倍数的整数个数。因此 \(N_{\supseteq T} = \dfrac{n}{\prod_{e_i \in T} p_i},\) 且由 \((3)\)

\[\begin{aligned} \varphi (n) & = n - \sum \limits_{i=1}^{t} \dfrac{n}{p_i} + \sum \limits_{i<j} \dfrac{n}{p_i p_j} \mp \cdots + (-1)^t \dfrac{n}{p_1 \cdots p_t}\\ & = n \left( 1 - \sum \limits_{i=1}^{t} \dfrac{1}{p_i} + \sum \limits_{i<j} \dfrac{1}{p_i p_j} \mp \cdots + (-1)^t \dfrac{1}{p_1 \cdots p_t} \right), \end{aligned}\]

\[\varphi (n) = n \prod \limits_{i=1}^{t} \left( 1- \dfrac{1}{p_i} \right) . \quad (5) \]

举个例子,对于 \(n=20=2^2 \cdot 5,\)

\[\varphi (20) = 20 \cdot \dfrac{1}{2} \cdot \dfrac{4}{5} = 8. \]

小于 \(20\) 且与 \(20\) 互质的数有 \(1,3,7,9,11,13,17,19. \ (5)\) 暗示了当 \(m\)\(n\) 互质时 \(\varphi (mn) = \varphi (m) \varphi (n).\)

image
image
image

posted @ 2023-05-09 20:57  二两碘酊  阅读(79)  评论(0)    收藏  举报