符号化方法
符号化方法(symbolic method)是将组合对象快速转换成生成函数的一种方法,我们将考虑对于集合上定义的特定运算,然后导出其对应的生成函数的运算。
我们称一个组合类(或简称为类)为
本文是基于 Analytic Combinatorics 一书第一章的简化。
无标号体系
在无标号体系中将使用普通生成函数(OGF)。对于集合
我们约定使用同一组的字母表示同一个类对应的生成函数等,例如用
本文将不讨论可容许性(admissibility),读者可参考文献中的内容。
下面将引入两种特殊的组合类和组合对象:
- 记
为中性对象(neutral object)和 为中性类(neutral class),中性对象的大小为 ,中性类的 OGF 为 。 - 记
或 为原子对象(atom object)和 或 或简写为 为原子类(atom class),原子对象的大小为 ,原子类的 OGF 为 。
对于两个组合类
我们有
其中
集合的(不相交)并构造
对于类
如此定义可以不违背集合论中集合不相交的要求,我们可以想象成将
对应 OGF 为
考虑
对应形式幂级数的加法。
集合的笛卡尔积构造
对于类
对应 OGF 为
我们定义
所以
对应形式幂级数的乘法。
集合的 Sequence 构造
Sequence 构造生成了所有可能的组合。
例
可以看到
我们定义
且要求
对应 OGF 为
其中
例:有序有根树(ordered rooted tree)
我们可以使用 Sequence 构造来定义有序有根树,即孩子之间的顺序有意义的有根树,设该组合类为
对应 OGF 为
前几项系数为 0 1 1 2 5 14 42 132 429 1430 4862 16796
,忽略常数项即 OEIS A000108。
集合的 Multiset 构造
Multiset 构造生成了所有可能的组合,但不区分组成部分的元素之间的顺序。
例
注意到
我们定义其递推式为
即
且要求
其中
对应 OGF 为
注意到
且
其中
例题 LOJ 6268. 分拆数
题意:令
解:设全体正整数类为
对应 OGF 前几项系数为 1 2 3 5 7 11 15 22 30 42
(忽略常数项)即 OEIS A000041。
例题 洛谷 P4389 付公主的背包
题意:给出
解:设商品的组合类为
例题 洛谷 P5900 无标号无根树计数
题意:求出
解:设无标号有根树的组合类为
根据 Richard Otter 的论文 The Number of Trees 中的描述,对应无根树的 OGF 为
前几项系数为 1 1 1 2 3 6 11 23 47 106
(忽略常数项)即 OEIS A000055。
集合的 Powerset 构造
Powerset 构造生成了所有子集。
例
我们定义其递推式为
即
且要求
对应 OGF 为
其中
容易发现
集合的 Cycle 构造
Cycle 构造生成了所有可能的组合,但不区分仅轮换不同的组合。
我们定义为
其中
例
为了简便我们令
其中
其中
对应 OGF 为
其中
由于证明较复杂,读者可参考 Flajolet 的论文 The Cycle Construction 或 Analytic Combinatorics 的附录。
有限制的构造
对于上述所有构造,我们都没有限制其「组成部分」的个数,若在
其中
令
即我们需要对于
设
令
那么
然后我们只要提取出
显然也有
而对于
和
对于
使用上式计算 和 对应 OGF
尝试计算
尝试计算
我们发现
需要注意的是对于有限制的构造
常用有限制的构造
上面的计算方法虽然有效但比较麻烦,读者可阅读 WolframMathWorld 网站的 Pólya Enumeration Theorem 和 Cycle Index 等相关资料,后者 Cycle Index 在 OEIS 的生成函数表达式中也经常出现。
例题 LOJ 6538. 烷基计数 加强版 加强版
题意:求出
解:设组合类为
或令组合类
可得到相同的结果。
参考文献
- Philippe Flajolet and Robert Sedgewick.Analytic Combinatorics.
本页面最近更新:2023/2/18 07:57:07,更新历史
发现错误?想一起完善? 在 GitHub 上编辑此页!
本页面贡献者:Great-designer, hly1204, myeeye, shuzhouliu
本页面的全部内容在 CC BY-SA 4.0 和 SATA 协议之条款下提供,附加条款亦可能应用