组合学笔记
偶然间发现了所谓的de Bruijn的组合学的课堂笔记, 我有点好奇, 遂读之.
第1章 引论
第2章 生成函数
组合学中一个非常古老的想法是生成函数, 其可以追溯至Laplace.
给定一无穷数列
其生成函数为以下级数
生成函数这种技术的想法在于
这有点像是Laplace积分
其想法在于
记号. 为了避免可能的歧义, 我们定义
以及
例子. Fibonacci数列定义如下
Fibonacci数列的生成函数为
基于其系数的递推关系, 我们发现
于是
将该分式拆分可以得到
其中和是的两根.
若是我们将这些分式再写成幂级数的形式, 然后合并同类项, 就可以得到
我们可用三种方式为这把戏 (hocus-pocus) 进行辩护
- 作为启发式 (heuristic). 反正我们得到了结果, 不论是怎么得到的. 之后我们可以验证其正确与否, 比如说这种情况下我们可以使用数学归纳法.
- 通过收敛幂级数的理论. 我们可以将视为一个定义在平面中的零点的某个小邻域上的解析函数. 这可以澄清我们对于施行的计算. 问题在于我们需要检视其收敛性, 即其具有某个正的收敛半径, 虽然就这个例子而言并不是什么困难. 我们可以用归纳法轻易地验证
根据Cauchy–Hadamard定理, 我们知道收敛半径大于等于.
- 通过建立形式幂级数的理论. 这可以做得相当形式化, 就是非常无聊而已. 当然, 也不会有什么新东西.
形式幂级数的理论概览.
我们将给出复系数幂级数的理论, 虽然仅需很少的调整其也可以对于环成立. 你应该将形式幂级数看成是具有无限次数的多项式. 或者说, 实际上你应该将确定了形式幂级数的序列当成是形式幂级数自身. 也就是说, 我们的形式幂级数不过就是一个映射
加法被定义为逐项之和. 令
那么
乘法被定义为所谓的Cauchy乘积
的系数为. 如果, 那么也是有定义的. 如果, 那么也是有定义的, 甚至我们可以确定一个使得. 我们可以形式化地对于幂级数进行微分. 在特定条件下, 我们可以定义幂级数的无穷级数和无穷乘积.
第2.1节 零钱问题
如果你需要付分钱买一杯咖啡, 而只能以分钱的硬币付款, 假定每种硬币的数量都是足够多的, 那么有多少种付款的方式呢? 我们可以先尝试枚举一些具体的方案.
换言之, 一种方案完全由其频率函数
刻画. 我们的问题是存在多少个总值为的这样的频率函数. 频率函数的总值即
解法.
刚才我们并不成系统. 实际上, 答案是
中的系数, 即.
如果我们用代表"的系数", 那么问题的答案可以记为
以这种方式, 我们可以找出其他系数, 或者研究时的渐近性质.
这种方法的正确性是不言自明的. 在合并幂级数乘积的同类项之前, 每一项的系数都是, 而且其都对应于从每一行的级数里各选出一个项来, 这就从概念上指出了一种挑选方式. 比如说, 项对应于使用枚分硬币, 枚分硬币, 枚分硬币, 枚分硬币的方案. (译注: 当然, 更严格地说, 这里我们考虑的是项的内涵, 因为从外延看, 我们无法区分次数相同的项.) 在合并同类项之后, 的系数显然就等于付分钱的方式数目.
第2.2节 一个求和公式
我们猜读者已经熟悉用表示集合的元素数目的记号了. 如果和是集合, 那么类型为的所有映射构成的集合, 我们记作. 公式是很好的助记方法.
定理. 令是一个含幺交换环, 和是集合. 对于映射, 我们有
证明. 显然, 或许唯一值得注意的是边角情况. 若
, 那么左右皆为
. 若
且
, 那么左右皆为
.
作为定理的应用, 令是上的形式幂级数环, , , , 那么