组合数学学习笔记

今天(2019.5.23)有幸能听到组合十段的陈通学长讲解组合数学知识。

part1:组合数

约定:

则有:

二项式定理:

则有:

将$x=w_3^0,w_3^1,w_3^2$带入$(1+x)^k$可以计算

(课后练习1:解决一类$\sum\binom{n}{ak}$的问题)

fandemengde行列式:

Lucas定理:

证明:

之后再二项式转回去就ok了。

杨辉三角性质:

e.g.

若$f(x)$为次数小于n的多项式,则有:$\sum_{k=0}^{n}(-1)^kf(k)\binom{n}{k}=0$

考虑将普通多项式转化成下降幂多项式来证明(课后练习2)。

$Stirling$公式:

性质:$\binom{n}{n/2}\approx\frac{2^n}{\sqrt{n}}$

part2:生成函数

生成函数是数列的另一种表达方式(形式幂级数)

{$a_n$}的普通生成函数为$\sum_{n\geq 0}a_nx_n$

e.g.

组合数对应的生成函数:$(1+x)^n=\sum_{k \geq 0}\binom{n}{k}x^k$

阶乘的倒数对应的生成函数:$e^x=\sum_{k\geq 0}\frac{x^k}{k!}$

生成函数求解递推:

e.g.0

求$Fibonacci$的通项公式:

令$F(x)=\sum_{k\geq 0}f_kx^k$

则有$F(x)=1+x+x^2F(x)+x(F(x)-1)$

$F(x)=\frac{1}{1-x-x^2}=\frac{A}{1-\alpha x}+\frac{B}{1-\beta x}=…$

后两项又是等比数列的生成函数,就可以得到通项公式了。

e.g.1

考虑每个元素为1,2的n元组,求和为3的倍数的n元组个数。

设$F(X),g(x),h(x)$为模3余数为0,1,2的生成函数:

$F(x)=1+xG(x)+xH(x)$

$G(x)=1+xF(x)+xH(x)$

$H(x)=1+xF(x)+xG(x)$

得:$F(x)=\frac{1-x}{1-x-x^2}=\sum_{k\geq 0}(-1)^k\frac{2}{3}+\sum_{k\geq 0}\frac{1}{3}2^k$

用生成函数求解通项公式的方法:用生成函数描述数列的递推公式,得到生成函数方程并求,然后将生成函数转回通项公式。

e.g.2

考虑每个元素为0,1,2的n元组,求有奇数个1,偶数个2的n元组个数。

所以$f_n$的指数生成函数可以用三个函数的卷积来表示。

(后面两项就是阶乘奇数项与偶数项的生成函数)

所以$f_n=\frac{3^n-(-1)^n}{4}$。

part3:catlan数

定义:括号序列方案数。

递推公式:

生成函数:

通项公式:

part4:Stirling数

这部分参见这一篇

part5:拆分数

将n个相同的小球放入k个相同的盒子(非空)的方案数称作拆分数,记作$p(n,k)$。

如果不限定盒子的个数,则定义拆分数为$p(n)$。

性质:

$p(n)<p(n+1)$

$p(n)-p(n-1)<p(n+1)-p(n)$

$p(2n,n)=p(n)$

Ferrers图

把n拆成若干个正整数之和,其中最大值恰为k的方案数为$p(n,k)$。

可以利用这一结论dp求$p(n,k)$

法1:

法2:

法3:

$A=${$1,2,…,s$}

$B=${$s+1,s+2,…n$}

法4:

生成函数:$p(x)=\prod_{k\geq 1}\frac{1}{1-x^k}$

法5:

$p(x)=p(n-1)+p(n-2)-p(n-5)-p(n-7)$,其中项上减去的常数为广义的五边形数。

广义五边形数即为$(1-x)(1-x^2)(1-x^3)…$的系数。

即:$\sum_{k=0} (-1)^kx^{3k\pm{}1}$

拆分数大小估计

估计复杂度用,在十二省联考 希望 中间有所应用(暴力部分的复杂度分析)