← 全部文章

组合计数 学习笔记

本文目录(17 节)
  1. 排列组合
  2. 排列
  3. 组合
  4. 计算组合数的方法
  5. 隔板法
  6. 二项式定理
  7. 一般二项式定理
  8. 扩展二项式定理
  9. 广义二项式定理
  10. 特殊数列
  11. Fibonacci\text{Fibonacci} 数
  12. Catalan\text{Catalan} 数
  13. 第一类 Stirling\text{Stirling} 数
  14. 第二类 Stirling\text{Stirling} 数
  15. Bell\text{Bell} 数
  16. 分拆数
  17. Bernoulli\text{Bernoulli} 数

其实不是什么学习笔记,只是稍微整理一下。

排列组合

排列

从 nn 个元素中有序的选择 kk 个元素的方案数: n(n−1)(n−2)⋯(n−k+1)=n!(n−k)!=nk‾ n(n-1)(n-2)\cdots(n-k+1) = \frac{n!}{(n-k)!} = n^{\underline{k}}

组合

从 nn 个元素中选出无序的 kk 个元素的方案数: n(n−1)(n−2)⋯(n−k+1)k!=n!(n−k)!k!=(nk) \frac{n(n-1)(n-2)\cdots(n-k+1)}{k!} = \frac{n!}{(n-k)!k!} = \binom{n}{k}

计算组合数的方法

  1. 根据杨辉三角递推,时间复杂度 O(n2)−O(1)\mathcal O(n^2) - \mathcal O(1)。

  2. 预处理阶乘、逆元、阶乘逆元,时间复杂度 O(n)−O(1)\mathcal O(n) - \mathcal O(1)。

  3. Lucas 定理:
    当 pp 为质数时,有: (nm)≡(n mod pm mod p)⋅(⌊np⌋⌊mp⌋)(modp) \binom nm \equiv \binom {n \bmod p}{m \bmod p} \cdot \binom{\lfloor \frac np \rfloor}{\lfloor \frac mp \rfloor} \pmod p 时间复杂度 O(p)−O(log⁡pn)\mathcal O(p) - \mathcal O(\log_pn)。

隔板法

将 nn 个一样的小球放进 mm 个不同的盒子内的方案数,
等价于将 nn 个小球划分成 mm 段,段可以为空的方案数,
等价于将 n+mn+m 个小球划分成 mm 段,段不能为空的方案数,
等价于从 n+m−1n+m-1 个空隙中选 m−1m-1 个空隙作为划分点的方案数: (n+m−1m−1) \binom {n+m-1}{m-1}

二项式定理

一般二项式定理

nn 为非负整数: (x+y)n=∑k=0n(nk)xkyn−k (x+y)^n = \sum_{k=0}^n \binom nk x^ky^{n-k}

扩展二项式定理

nn 为非负整数: (∑i=1txi)n=∑∑i=1tni=n((nn1,n2,⋯ ,nt)∏j=1txjnj) \left(\sum_{i=1}^t x_i\right)^n = \sum_{\sum_{i=1}^tn_i = n} \left(\binom{n}{n_1,n_2,\cdots,n_t} \prod_{j=1}^t x_j^{n_j}\right)

广义二项式定理

nn 为实数: (x+y)n=∑knk‾k!xkyn−k (x+y)^n = \sum_{k} \frac{n^{\underline{k}}}{k!} x^ky^{n-k}

特殊数列

Fibonacci\text{Fibonacci} 数

A000045
递推公式: Fn={nn≤1Fn−1+Fn−2n≥2 F_{n} = \begin{cases}n & n \le 1 \\\\ F_{n-1} + F_{n-2} & n \ge 2 \end{cases} 通项公式: Fn=(1+52)n−(1−52)n5 F_n = \frac{\left(\frac{1+\sqrt{5}}{2}\right)^{n}-\left(\frac{1-\sqrt{5}}{2}\right)^{n}}{\sqrt{5}} OGF: F(x)=x1−x−x2=(11−1+52x−11−1−52x)5 F(x) = \frac x{1-x-x^2} = \frac{\left(\frac{1}{1-\frac{1+\sqrt5}{2}x} - \frac{1}{1-\frac{1-\sqrt5}{2}x}\right)}{\sqrt5} 性质:

  • Fn−1Fn+1−Fn2=(−1)nF_{n-1}F_{n+1} - F_n^2 = (-1)^n。
  • gcd⁡(Fn,Fm)=Fgcd⁡(n,m)\gcd(F_n, F_m) = F_{\gcd(n,m)}。
  • ∑i=0nFi=Fn+2−1\sum_{i=0}^n F_i = F_{n+2}-1。
  • Fibonacci\text{Fibonacci} 数列模 mm 意义下循环节长度 ≤6m\le 6m。

Catalan\text{Catalan} 数

A000108

意义:CnC_n 表示 nn 对括号的合法括号序列数,以及延伸出来的无数种意义。

递推公式: Cn={1n=0∑i=0n−1CiCn−1−in≥1 C_{n} = \begin{cases}1 & n = 0 \\\\ \sum_{i=0}^{n-1} C_{i}C_{n-1-i} & n \ge 1 \end{cases} 通项公式: Cn=(2nn)−(2nn−1)=(2nn)n+1=Cn−1(4n−2)n+1 C_{n} = \binom {2n}{n} - \binom {2n}{n-1} = \frac{\binom{2n}{n}}{n+1} = \frac{C_{n-1}(4n-2)}{n+1} OGF: C(x)=1−1−4x2x C(x)=\frac{1 - \sqrt{1-4 x}}{2 x}

第一类 Stirling\text{Stirling} 数

意义:S1(n,m)S_1(n,m) 表示 nn 个元素构成恰好 mm 个圆排列的方案数。

递推公式: S1(n,m)=S1(n−1,m−1)+(n−1)⋅S1(n−1,m) S_1(n,m) = S_1(n-1,m-1)+(n-1) \cdot S_1(n-1,m) 性质:

  • n!=∑i=0nS1(n,i)n! = \sum_{i=0}^n S_1(n,i)。
  • 上升幂 →\to 常幂:xnˉ=∑i=0nS1(n,i)xix^{\bar{n}}=\sum_{i=0}^{n} S_1(n, i) x^{i}。
  • 下降幂 →\to 常幂:xn‾=∑i=0n(−1)n−iS1(n,i)xix^{\underline{n}}=\sum_{i=0}^{n}(-1)^{n-i} S_1(n, i) x^{i}。
  • 上面两个同时成立是因为:(−x)n‾=(−1)nxnˉ(-x)^{\underline{n}}=(-1)^{n} x^{\bar{n}}。

第二类 Stirling\text{Stirling} 数

意义:S2(n,m)S_2(n,m) 表示 nn 个元素构成恰好 mm 个非空集合的方案数。

递推公式: S2(n,m)=S2(n−1,m−1)+m⋅S2(n−1,m) S_2(n,m) = S_2(n-1,m-1) + m \cdot S_2(n-1,m) 通项公式: S2(n,m)=∑k=0m(−1)k(mk)(m−k)nm! S_2(n,m) = \frac{\sum_{k=0}^m (-1)^k \binom mk (m-k)^n}{m!}

性质:

  • 常幂 →\to 下降幂:xn=∑i=0nS2(n,i)xi‾x^{n}=\sum_{i=0}^{n} S_2(n,i) x^{\underline{i}}。
  • 常幂 →\to 上升幂:xn=∑i=0n(−1)n−iS2(n,i)xiˉx^n = \sum_{i=0}^n (-1)^{n-i}S_2(n,i)x^{\bar{i}}。
  • 广义上:S2(n,m)=S1(−m,−n)S_2(n,m) = S_1(-m,-n)。

Bell\text{Bell} 数

A000110

意义:BnB_n 表示将 nn 个集合划分成若干个非空集合的方案数。

递推公式: Bn=∑i=0n−1(n−1i)Bi B_{n} = \sum_{i=0}^{n-1} \binom {n-1}{i} B_i 通项公式: Bn=1e∑i≥0ini! B_n = \frac 1e \sum_{i \ge 0} \frac{i^n}{i!} 性质:

  • Bn=∑i=0nS2(n,i)B_n = \sum_{i=0}^n S_2(n,i)。
  • 对于质数 pp,Bpm+n=mBn+Bn+1B_{p^m+n} = mB_{n}+B_{n+1}。
  • Bell\text{Bell} 数列模质数 pp 意义下循环节长度为 pp−1p−1\frac {p^p-1}{p-1}。

EGF: B(x)=eex−1 B(x) = e^{e^x-1} Bell\text{Bell} 三角 A011971:

  • b0,0=1b_{0,0} = 1。
  • 对于 n>0n > 0,an,1=an−1,n−1a_{n,1} = a_{n-1,n-1}。
  • 对于 n,m>0n,m > 0,an,m=an,m−1+an−1,m−1a_{n,m} = a_{n,m-1} + a_{n-1,m-1}。
  • Bn=bn,0B_{n} = b_{n,0}。

分拆数

A000041 LOJ6268

意义:将 nn 进行整数分拆的方案数。

递推公式: Fn={0n<01n=0∑k≥1−(−1)k(Fn−k(3k−1)2+Fn−k(3k+1)2)n>0 F_{n} = \begin{cases} 0 & n < 0 \\\\ 1 & n = 0 \\\\ \sum_{k \ge 1} -(-1)^k (F_{n-\frac{k(3k-1)}{2}} + F_{n-\frac{k(3k+1)}{2}}) & n > 0 \end{cases} 按照递推公式求分拆数是 O(nn)\mathcal O(n \sqrt n) 的。

OGF: F(x)=∏n>011−xn=1∑k≥1(−1)k(xk(3k−1)+xk(3k+1)) F(x) = \prod_{n > 0} \frac{1}{1-x^n} = \frac1{\sum_{k\ge 1}(-1)^k(x^{k(3k-1)} + x^{k(3k+1)})}

Bernoulli\text{Bernoulli} 数

设等幂和 Sm(n)=∑k=1nkmS_m(n) = \sum_{k=1}^n k^m,有公式: Sm(n)=1m+1∑k=0m(m+1k)Bk+nm+1−k S_m(n) = \frac1{m+1} \sum_{k=0}^m \binom {m+1}{k} B^+_k n^{m+1-k} 其中 Bk+B^+_k 为 Bernoulli\text{Bernoulli} 数,Bn+B^+_n 与 Bn−B^-_n 为两种不同的定义,仅在 n=1n=1 时有区别:B1+=12B^+_1 = \frac 12,B1−=−12B^-_1 = -\frac 12。

递推公式: ∑k=0m(m+1k)Bk−=0 \sum_{k=0}^m \binom {m+1}{k} B^-_k = 0 边界为 B0−=1B^-_0 = 1。

EGF: B(x)=xex−1 B(x) = \frac x{e^x-1}

评论

    填写昵称即可留言。评论经站主审核后公开,请勿提交私人信息。

    正在连接评论服务…