组合数学相关
排列组合数
排列:\(A_n^m=\frac{n!}{(n-m)!}\) 表示 \(n\) 个不同物品,选 \(m\) 个按一定的顺序的情况数。
组合:\(C_n^m=\frac{n!}{m!(n-m)!}\) 表示 \(n\) 个不同物品,选 \(m\) 个的情况数。
几个简单的式子:
- \(C_n^m=\frac{n!}{m!(n-m)!}\)
定义。
- \(C_n^m=C_n^{n-m}\)
组合意义:选 \(m\) 个等于 \(n\) 个中挑 \(n-m\) 个不选。
- \(C_n^m=C_{n-1}^m+C_{n-1}^{m-1}\)
组合意义:固定一个物品选或不选,选的话剩下 \(n-1\) 个还要选 \(m-1\) 个,不选则剩下 \(n-1\) 个选 \(m\) 个。
- \(\sum_{i=0}^{\min(n,m,k)}C_n^iC_m^{k-i}=C_{n+m}^k\)
范德蒙德卷积。类似第三条,从 \(n+m\) 个中取 \(m\) 个单独考虑,枚举这 \(m\) 个中选的个数。
- \(C_n^m=C_n^{m-1}\times\frac{n-m+1}{m}\)
证明:
- \(\sum_{i=0}^{n}C_n^i=2^n\)
组合意义:\(n\) 个中选任意个,相当于每个物品有选或不选两种可能,乘法原理。
- \(\sum_{i=0}^{n}(-1)^iC_n^i=[n=0]\)
证明:
\(\sum_{i=0}^{n}(-1)^iC_n^i=\sum_{i=0}^{n}(-1)^i(C_{n-1}^i+C_{n-1}^{i-1})\)
裂项相消。
- \(\sum_{i=0}^{n}iC_n^i=n2^{n-1}\)
证明:
- \(\sum_{i=0}^{n}i^2C_n^i=n(n-1)2^{n-2}+n2^{n-1}=n(n+1)2^{n-1}\)
证明:
- \(\sum_{i=n}^kC_i^n=C_{k+1}^{n+1}\)
证明:
- \(C_n^mC_m^k=C_n^kC_{n-k}^{m-k}\)
组合意义:等号左边表示 \(n\) 个中选 \(m\) 个,再从 \(m\) 个中选 \(k\) 个。等价于等号右边先从 \(n\) 个中选 \(k\) 个,再从剩下的 \(n-k\) 个中选 \(m-k\) 个与之前的 \(k\) 个组合成 \(m\) 个。
可重集排列组合
设可重集中有 \(n_1\) 个 \(a_1\),\(n_2\) 个 \(a_2\),\(n_k\) 个 \(a_k\),那么其全排列为 \(\frac{n!}{\prod_{i=1}^kn_i!}\),表示先不考虑重复,再对每一种元素分别去重。
从可重集选出 \(m\) 个元素,不考虑元素用尽的情况,通过插板法可得 \(C_{m+k-1}^{k-1}\)。
错排列
对于一个 \(1\sim n\) 的排列 \(P\),如果所有元素都不在对应位置上,即 \(P_i\ne i\),称 \(P\) 为 \(n\) 元错位排列。
设 \(n\) 元错位排列有 \(D_n\) 种,考虑如何转移:
若前 \(n-1\) 个全部错位,那么在前 \(n-1\) 个中挑一个位置与第 \(n\) 个交换,共 \(nD_{n-1}\) 种;
若前 \(n-1\) 个只有一个没错位,那么将这个位置与第 \(n\) 个交换,共 \(D_{n+2}\) 种。
得到错位排列数的递推式 \(D_n=nD_{n-1}+D_{n-2}\)。前几项为 \(0,1,2,9,44,265\)。
圆排列
\(n\) 个物品中选 \(m\) 个排列并围成一个圈,称为圆排列。此处方案数记为 \(Q_n^m\)
如果不考虑去重,那么有\(A_n^m\) 种。而选出任意 \(m\) 个物品都有 \(m\) 种循环位移,因此 \(Q_n^m=\frac{A_n^m}{m}=\frac{n!}{m(n-m)!}\)。
抽屉原理
\(n\) 个物品划分为 \(k\) 组,存在一组有至少 \(\lfloor\frac{n}{k}\rfloor\) 个物品。用反证法容易证明。
反过来同样成立,划分 \(n\) 组保证存在一组有至少 \(k\) 个物品,最少需要 \(nk+1\) 个物品。
二项式定理
二项式定理描述了二项式幂的系数:
组合意义:\(a^{n-i}b^i\) 项的系数相当于在 \(n\) 个括号中选 \(n-i\) 个 \(a\) 与 \(i\) 个 \(b\) 相乘。
上面的很多性质可以用二项式定理证明。比如(6)为 \(a=1,b=1\),(7)为 \(a=1,b=-1\)。
容斥原理
设元素有 \(n\) 种不同的属性,而第 \(i\) 种属性称为 \(P_i\),拥有属性 \(P_i\) 的元素构成集合 \(S_i\),那么 \( \left|\bigcup_{i=1}^{n}S_i\right|=\sum_{m=1}^n(-1)^{m-1}\sum_{a_i<a_{i+1} }\left|\bigcap_{i=1}^mS_{a_i}\right| \)。
比如二元的容斥原理:\(|A\cup B|=|A|+|B|-|A\cap B|\);三元容斥原理:\(|A\cup B\cup C|=|A|+|B|+|C|-|A\cap B|-|B\cap C|-|A\cap C|+|A\cap B\cap C|\)。
卡特兰数
一个问题:\(n\) 个不同的元素,求入栈出栈顺序方案数。
设入栈为 \(1\),出栈为 \(0\),形成一个长 \(2n\) 的 \(01\) 串,有 \(n\) 个 \(0\) 和 \(1\),一个合法的 \(01\) 串应满足任意位置前缀 \(1\) 的个数大于前缀 \(0\) 的个数。
对于一个不合法的串,将第一个前缀 \(0\) 的个数大于前缀 \(1\) 的个数的位置后面翻转。这样形成一个新的 \(01\) 串,有 \(n+1\) 个 \(0\) 和 \(n-1\) 个 \(1\)。
同样对于一个有 \(n+1\) 个 \(0\) 和 \(n-1\) 个 \(1\) 的 \(01\) 串,也将第一个前缀 \(0\) 的个数大于前缀 \(1\) 的个数的位置后面翻转,形成的序列有 \(n\) 个 \(0\) 和 \(1\),并且一定不合法。
那么这两种 \(01\) 串的集合形成双射,因此不合法的情况共 \(C_{2n}^{n-1}\) 种,合法情况 \(C_{2n}^{n}-C_{2n}^{n-1}\) 种。
前面这个问题的答案就是卡特兰数。通项公式 \(H_n=C_{2n}^{n}-C_{2n}^{n-1}\)。常用于组合计数。这个问题有以下一些等价形式:
长度为 \(2n\) 的合法的括号序列方案数(左括号 \(1\),右括号 \(0\))。
网格图上 \((0,0)\) 走到 \((n,n)\),中途不越过直线 \(y=x\) 的方案数(向右 \(1\),向上 \(0\))。
\(n+1\) 个节点的二叉树,满足非叶节点有两个儿子,有多少种(dfs 时向左为 \(1\),向右为 \(0\))。
卡特兰数有以下一些公式:
[[数学]]

浙公网安备 33010602011771号