[笔记]组合数学的符号化方法

组合的符号化方法

使用 \(\mathcal{ABCDEFG}\) 来表示组合类,使用 \(a, b, c, d \in \mathcal{ABCDEF\cdots}\) 表示组合对象。使用 \(|a|\) 表示组合对象的大小。

定义两个组合类 \(\mathcal{A, B}\) 的笛卡尔积为 \(\mathcal{A \times B} = \{(a, b) \ |\ a \in \mathcal{A}, b \in \mathcal{B} \}\)

定义代数对象 \(z\)\(a\) 的幂表示记做 \(z ^ {|a|}\)

无符号体系

定义组合类 \(\mathcal{A}\)\(\mathbf{OGF}\) 为:

\[A(z) = \sum_{a \in \mathcal{A}} z ^ {|a|} = \sum_{i \le n} a_i z ^ i \]

不难发现有下面等价关系:

  • \(C(z) = A(z) + B(z) \Longleftrightarrow \mathcal{C} = \mathcal{A} + \mathcal{B}\)
  • \(C(z) = A(z) \times B(z) \Longleftrightarrow \mathcal{C} = \mathcal{A} \times \mathcal{B}\)

其中 \(\times\) 操作表示两个组合类之间的笛卡尔积。


接下来定义一些基本的组合类。

  • \(\mathcal{E} = \{\epsilon\}\),其中 \(\epsilon\) 表示中性对象,\(\mathcal{E}\) 为中性类。其大小为 \(0\)\(E(z) = z ^ {|\epsilon|} = 1\)
  • \(\mathcal{Z} = \{\circ\}\),其中 \(\circ\) 为原子对象,\(\mathcal{Z}\) 为原子类。其大小为 \(1\)\(Z(z) = z\)

Example 1.1 :求卡特兰数的 \(\mathbf{OGF}\)

一个广为人知的卡特兰数定义方法是通过 \(n\) 个点的二叉树数量。

对于一个二叉树,其一个节点为一个原子对象。空树可以看做中性对象。

对于一个节点,需要考虑左右儿子,本身节点以及空集的情况。因此有:

\[\mathcal{C} = \mathcal{E} + \mathcal{C} \times \mathcal{Z} \times \mathcal{C} \]

因此有 \(C(z) = E(z) + C(z) \times Z(z) \times C(z) = 1 + z \times C(z) ^ 2\)。移项得:

\[z \times C(z) ^ 2 - C(z) +1 = 0 \]

集合的不相交并构造 / 可重集构造

定义 \(\mathcal{E_1}, \mathcal{E_2}\) 表示两个不同的中性类。那么

\[\mathcal{A +B} = (\mathcal{E_1} \times A) +(\mathcal{E_2} \times B) \]

这样有效区分了两个集合。这个定义可以起到一个类似多重集的效果。

集合的 Sequence 构造

集合的 Sequence 构造生成所有可能的排列(有序)。

例如:

  • \(\mathrm{SEQ(\{a\})} = \{\epsilon\} + \{a\} + \{(a, a)\} +\{(a, a, a)\} + \cdots\)

  • \(\mathrm{SEQ(\{a, b\})} = \{\epsilon\} + \{a, b\} + \{(a, a)\} +\{(a, b)\} +\{(b, a)\} + \{(b, b)\} \\ +\{(a, a, a)\} +\{(a, a, b)\}+\{(a, b, a)\} + \cdots\)

可以看出,\(\mathrm{SEQ}\) 生成了所有可能的不同有序组合。

我们定义,\(\mathrm{SEQ(\mathcal{A})} = \mathcal{E +A + (A \times A) +(A \times A \times A) +\cdots}\)

对应 \(\mathbf{OGF}\) 的语言为:\(Q(A(z)) = 1 + A(z) + A(z) ^ 2 + A(z) ^ 3 +\cdots = \dfrac{1}{1 - A(z)}\)

Example 3.1:求长度为 \(n\)\(01\) 串有多少种。

使用 \(\mathrm{SEQ}\) 构造,不难得出,\(Q(A(z)) = Q(\{z, z\}) = \dfrac{1}{1 - 2z}\)

答案显然是 \([z ^ n]\dfrac{1}{1 - 2z} = 2 ^ n\)

Example 3.2:大小为 \(n\) 的有序有根树个数。

考虑组合类 \(\mathcal{T}\),考虑任意一个节点,有:

\[\mathcal{T} = \{\circ\} \times \mathrm{SEQ}(\mathcal{T}) \]

也就是

\[T(z) = \dfrac{z}{1 - T(z)} \]

image-20240331161523669

所以这个玩意实际上就是少了一个点的卡特兰数。

集合的 Multiset 构造

Multiset 构造生成了所有无序的组合。如:

\[\mathrm{SEQ(\{a, b\})} = \{\epsilon\} + \{a\} +\{b\} + \{(a, a)\} +\{(a, b)\} + \{(b, b)\} \\ +\{(a, a, a)\} +\{(a, a, b)\} + \cdots \]

注意到形如 \(\{(a, b)\}, \{(b, a)\}\) 的都在 \(\mathrm{SEQ}\) 中出现了,但是在 \(\mathrm{MSET}\) 中都没有出现。

我们定义其递推式为:

\[\mathrm{MSET}(\{\alpha_1, \alpha_2, \alpha_3 \cdots \alpha_n\}) = \mathrm{MSET}(\{\alpha_1, \alpha_2 \cdots \alpha_{n - 1}\}) \times \mathrm{SEQ}(\alpha_n) \]

\[\mathrm{MSET}(\{\alpha_1, \alpha_2, \alpha_3 \cdots \alpha_n\}) = \mathrm{SEQ}(\alpha_1) \times \mathrm{SEQ}(\alpha_2) \times \mathrm{SEQ}(\alpha_3) \times \cdots \times \mathrm{SEQ}(\alpha_n) \]

也即

\[\mathcal{M} = \mathrm{MSET}(\mathcal{A}) = \prod_{\alpha \in \mathcal{A}} \mathrm{SEQ}(\alpha) \]

改写成生成函数就是

\[M(z) = \prod_{\alpha \in \mathcal{A}} \left ( \dfrac{1}{1 - z ^ {|\alpha|}} \right ) = \prod_{i = 1} \left ( \dfrac{1}{1 - z ^ i} \right ) ^ {A_i} \]

特别的,当 \(\alpha = \{\circ\}\) 时,\(M(z) = \left ( \dfrac{1}{1 - z} \right ) ^ n\)

对于计算,我们可以将 \(M\)\(\ln\) 后再做 \(\exp\)。也就是

\[M(z) = \exp \ln \prod_{i = 1} \left ( \dfrac{1}{1 - x ^ i} \right) ^ {A_i}\\ = \exp \sum_{i = 1} A_i \ln \left ( \dfrac{1}{1 - x ^ i} \right) \]

注意到有

\[\ln (1+z) = \dfrac{z}{1} - \dfrac{z^2}{2} +\dfrac{z^3}{3} - \dfrac{z^4}{4} + \cdots = \sum_{i \ge 1} \dfrac{(-1) ^ {i - 1}z^i}{i} \]

因此有

\[\exp \sum_{i = 1} A_i \ln \left ( \dfrac{1}{1 - x ^ i} \right) = \exp \left ( \sum_{i \ge 1} (-A_i \ln (1 - x_i))\right ) \\ = \exp \left ( \sum_{i \ge 1} (-A_i \ln (1 + (-x_i)) \right ) \\ = \exp \left ( \sum_{i \ge 1} \left (-A_i \sum_{j \ge 1} \dfrac{(-1)^{j - 1}z^{ij}}{j} \right ) \right )\\ = \exp \left ( \sum_{i \ge 1} \left (A_i \sum_{j \ge 1} \dfrac{z^{ij}}{j} \right ) \right )\\ = \exp \left ( \sum_{i \ge 1} \left (\sum_{j \ge 1} \dfrac{A_i z^{ij}}{j} \right ) \right )\\ = \exp \left ( \sum_{i \ge 1} \dfrac{A(z ^ i)}{i} \right )\\ \]

\(\mathrm{Exp}(A(z)) = M(z)\),称为 Pólya 指数。其逆变换为 \(\mathrm{Ln}\)

posted @ 2024-11-28 21:06  Link-Cut-Y  阅读(6)  评论(0编辑  收藏  举报