1 生成函数
- $a_n$的ordinary generating function(ODF):
1.1 组合
- 例1: $(x_0+x_1)^3$的展开式表示了3元集的所有子集, $(1+x)^3$的展开式的$x_k$系数表示了$k-$子集的数量
- 例2: 3红4蓝5绿球, 选$k$球的方法, 即$(1+x+x^2+x^3)(1+x+x^2+x^3+x^4)(1+x+x^2+x^3+x^4+x^5)$展开式中$x^k$的系数
1.2 斐波那契数
其中$\phi = \frac{1+\sqrt 5}{2}$, $\phi = \frac{1-\sqrt 5}{2}$
因此
2 解递归式
- 步骤如下:
- 给出$a_n$递归式:
- 求$G(x)=\sum_{n\ge 0}a_nx^n$, 将右侧处理至含$G(x)$
- 解出$G(x)$的表达式
- 展开后, $x_n$的系数为$a_n$
2.1 生成函数的代数操作
2.2 展开生成函数
2.2.1 泰勒展开
2.2.2 几何序列
- 例如$G(x)=\sum_{i=1}^k\frac{a_i}{1-b_ix}$, 因此$a_n=\sum_{i=1}^k a_ib_i^n$
2.2.3 二项式定理
例子: 多重集$S=\{x_1,x_2,\cdots, x_n\}$
其中$m$是$S$中可能的多重集中的$x_i$的重数
而
因此
3 卡特兰数
- $C_n$例子:
- $n$对括号合法匹配的个数
- $n+1$个数相乘, 不同的加括号方法
- $n+1$叶节点的full binary tree的数量
- $n\times n$方格中不超过对角线上方的monotonic paths的数量
- $n+2$边凸多边形的三角形分割数
- stack-sortable permutations of $\{1,\cdots, n\}$
- tile a stairstep shape of height n with n rectangles
3.1 解卡特兰数
卡特兰数递归式: $C_0=1$, 对于$n\ge 1$, $C_n=\sum_{k=0}^{n-1}C_kC_{n-1-k}$
因为$\lim _{x\to 0}G(x)=C_0=1$
所以
4 快排分析
递归式
$T_0=T_1=0$, 而 $T_n = \frac{1}{n}\sum_{k=1}^n(n-1+T_{k-1}+T_{n-k})$
解OGF
- 详见讲义, 注意卷积的使用