生成函数
Abstract
定义
常生成函数(Ordinary Generating Function, OGF)
实数序列 的生成函数是无穷级数
对于有限序列 ,通过令 将其扩展为无穷序列,其生成函数为多项式:
在组合数学中,生成函数被当作形式幂级数(formal power series)处理, 只是一个占位符,其作用是将序列的项编码为系数,无需关心收敛性。
生成函数的运算规则(Theorem 1)
设 和 ,则
加法:
乘法(Cauchy 乘积 / 卷积):
乘法公式表明:两个生成函数乘积的第 个系数,等于两个序列前 项的卷积。
指数生成函数(Exponential Generating Function, EGF)
序列 的指数生成函数是
EGF 的乘法对应于排列的复合(有序选择),适用于排列计数等场景。经验法则:如果问题涉及”选若干个”(组合),用 OGF;如果涉及”排列”或”标签分配”,用 EGF。
核心性质
核心幂级数公式表
| 编号 | 生成函数 | 展开式 | 系数 |
|---|---|---|---|
| 1 | |||
| 2 | |||
| 3 | |||
| 4 | |||
| 5 | |||
| 6 | |||
| 7 | |||
| 8 | |||
| 9 |
计数问题的因式对应关系
| 约束条件 | 对应因式 | 说明 |
|---|---|---|
| 可选 个(无上限) | 最常见的情况 | |
| 可选 或 个 | 每种物品至多选一个 | |
| 至少选 个 | 每种物品必须选 | |
| 可选 到 个 | 有上下限约束 |
关系网络
graph LR A["生成函数"] -->|"编码序列"| B["[[离散数学/concepts/序列与求和]]"] A -->|"求解"| C["[[离散数学/concepts/递推关系]]"] A -->|"核心工具"| D["[[离散数学/concepts/广义二项式定理]]"] A -->|"展开系数"| E["[[离散数学/concepts/二项式系数]]"] A -->|"特殊情形"| F["[[离散数学/concepts/二项式定理]]"] A -->|"证明"| G["[[离散数学/concepts/排列组合恒等式]]"] A -->|"OGF"| H["常生成函数<br/>G(x) = Σ a_k x^k"] A -->|"EGF"| I["指数生成函数<br/>G_e(x) = Σ a_k x^k/k!"] A -->|"代数工具"| J["部分分式分解"] A -->|"应用"| K["整数分拆"] A -->|"理论"| L["形式幂级数"] D -->|"推导"| E F -->|"推广"| D style A fill:#5cb85c,color:#fff style H fill:#4a90d9,color:#fff style I fill:#d9534f,color:#fff
章节扩展
第08章 高级计数技术 — 8.4 生成函数
生成函数是 8.4 节的核心主题,涵盖以下内容:
用生成函数解决计数问题
核心思路是”编码-代数-解码”三步法:
- 编码:将每种选择用一个多项式因式表示, 的系数表示选择 个该类物品的方式数
- 代数:将所有因式相乘,利用代数工具求出乘积的闭式
- 解码:从闭式中提取目标幂次的系数,即为答案
典型应用:
- 方程解的计数:(有上下界约束) 构造因式乘积,提取 的系数
- 分配问题:将 8 个相同饼干分给 3 个不同孩子(每人 2-4 个) ,提取 的系数
- 允许重复的组合数:,由广义二项式定理得系数
用生成函数求解递推关系
- 设 为序列的生成函数
- 将递推关系两边乘以 并求和,利用递推关系消去部分项
- 解关于 的方程,得到 的闭式(有理函数形式)
- 将 用部分分式分解展开为幂级数,提取系数
示例:, 部分分式分解
用生成函数证明组合恒等式
找到同一个生成函数的两种展开方式,比较同次幂的系数即可证明恒等式。例如 中 的系数,既等于 ,又等于 ,由此证明 。
补充
生成函数为什么有效
生成函数的威力在于它将计数问题转化为代数问题。复杂的约束条件被自然地编码为多项式的因式结构,而幂级数的乘法自动处理了”不同选择之间的组合”这一计数核心操作。这种方法的理论基础可追溯到 18 世纪 Euler 对整数分拆问题的研究,后经 Laplace 在概率论中的应用而广泛传播。现代组合数学中,生成函数是核心工具之一(Wilf, 2006, generatingfunctionology)。
常生成函数 vs 指数生成函数
特性 常生成函数 OGF 指数生成函数 EGF 定义 乘法含义 无序选择(组合) 有序选择(排列) 典型应用 组合计数、方程解数 排列计数、分配问题 核心公式