[笔记]组合数学的符号化方法
组合的符号化方法
使用 \(\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}\) 为:
不难发现有下面等价关系:
- \(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\) 个点的二叉树数量。
对于一个二叉树,其一个节点为一个原子对象。空树可以看做中性对象。
对于一个节点,需要考虑左右儿子,本身节点以及空集的情况。因此有:
因此有 \(C(z) = E(z) + C(z) \times Z(z) \times C(z) = 1 + z \times C(z) ^ 2\)。移项得:
集合的不相交并构造 / 可重集构造
定义 \(\mathcal{E_1}, \mathcal{E_2}\) 表示两个不同的中性类。那么
这样有效区分了两个集合。这个定义可以起到一个类似多重集的效果。
集合的 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}\),考虑任意一个节点,有:
也就是
所以这个玩意实际上就是少了一个点的卡特兰数。
集合的 Multiset 构造
Multiset 构造生成了所有无序的组合。如:
注意到形如 \(\{(a, b)\}, \{(b, a)\}\) 的都在 \(\mathrm{SEQ}\) 中出现了,但是在 \(\mathrm{MSET}\) 中都没有出现。
我们定义其递推式为:
即
也即
改写成生成函数就是
特别的,当 \(\alpha = \{\circ\}\) 时,\(M(z) = \left ( \dfrac{1}{1 - z} \right ) ^ n\)。
对于计算,我们可以将 \(M\) 取 \(\ln\) 后再做 \(\exp\)。也就是
注意到有
因此有
记 \(\mathrm{Exp}(A(z)) = M(z)\),称为 Pólya 指数。其逆变换为 \(\mathrm{Ln}\)。