数学还是太菜了 \kk 。
组合数和排列数
定义
高中数学选修三内容。
定义排列数 $A_n^m$ 为从 $n$ 个不重复的元素中选 $m$ 个按一定顺序排列的方案数。
根据乘法原理易得
定义排列数 $C_n^m$ 为从 $n$ 个不重复的元素中选 $m$ 个的方案数。
由排列数公式易得
也就输排列数除去 $n!$ ,简单易懂。
推广
- 二项式定理
- 二项式反演
若
则
常用于解决一类形如 “恰好……” 的问题。这类问题中,一般将其转化为 “钦定……” 的问题便于求解,最后使用二项式反演即可。
- 常用的组合恒等式
(一)
证明:显然。
(二)
证明:显然。
(三) 基本求和公式
证明:由组合意义易证。
(四) 交错和
证明:套用二项式定理即可。
(五)
证明:
总结
在大多数情况下,组合数学最常用的方面是计数问题,或直接根据题面公式计算。
在进行推导时,需灵活使用上述组合恒等式和定理进行代换和化简,必要时,也可以直接通过组合意义抽象出具体问题,需要大量的做题经验。
卡特兰数
卡特兰数是组合数学中的一种常见数列,前几项如下:
1,1,2,5,14,42,132,429,1430,4862,……
公式
从最经典的进出栈问题开始理解,通常大多数卡特兰数问题可以转化为这个。
由简单容斥可得,合法出栈序列 = 总序列个数 - 非法序列个数。
进栈抽象为 + 1 ,出栈抽象为 - 1 。
则序列总个数为 $C_{2n}^n$ 。
非法序列个数比较麻烦,需要转化一下。
找到每个非法序列第一个前缀和小于 0 的地方,将这之前的序列全部反转,容易证明这和原序列一一对应。
那么非法序列总个数即为 $C_{2n}^{n+1}$ 。
合法序列总个数即为: ($C_n$ 即为卡特兰数的第 $n$ 项)
由组合恒等变换得到递推公式:
顺便给一下最基础的通式吧:
组合意义/应用
- $n$ 个元素入栈序列为 $1$ 至 $n$ ,出栈序列的总个数。
- $n$ 对括号所能组合成的合法括号序列的个数。
- $n+1$ 个节点所能构成的形状不同的满二叉树的总个数。
- $n$ 个节点的形状不同的二叉树的总个数。
- ……
斯特林数
前置知识
上升幂:
下降幂:
第一类斯特林数
- 定义
把 1 到 $n$ 排列成 $k$ 个非空循环(或者叫做圆排列?)的方案数,写作 $s(n,k)$ 或 $\begin{bmatrix}n\k\end{bmatrix}$ 。
- 公式
加入 $n$ 即可看作自身构成循环或加入到前 $n$ 个数前,易得递推公式:
- 推广
$s(0,0)=1$
$s(n,0)=0$
$s(n,1)=(n-1)!$
$s(n,n-1)=C_n^2$
第二类斯特林数
比第一类斯特林数更为常用。
- 定义
把 1 到 $n$ 分成 $k$ 个集合的方案数,写作 $S(n,k)$ 或 $\begin{Bmatrix}n\k\end{Bmatrix}$ 。
- 公式
和第一类斯特林数类似的:
- 推广
- $S(0,0)=S(n,1)=1$
- $S(n,0)=S(n,0)=0$
- $S(n,2)=2^{n-1}-1$
斯特林数和上升/下降幂的应用
原本是打算自己找资料的,但看到几篇博文写的实在太好,就摆了。
https://www.luogu.com.cn/blog/wangrx/finite-calculus
https://www.luogu.com.cn/blog/command-block/sheng-cheng-han-shuo-za-tan