Unverified Commit 481cfe6a authored by Xeonacid's avatar Xeonacid Committed by GitHub
Browse files

Merge pull request #2530 from OI-wiki/combination-refactor

refactor stirling.md
parents c6a0d2a3 562749cf
Loading
Loading
Loading
Loading
+44 −33
Original line number Diff line number Diff line
## 第一类斯特林数(Stirling Number)

设有多项式 $x(x-1)(x-2) \cdots (x-n+1)$ ,它的展开式形如 $s_nx^n - s_{n-1}x^{n-1}+s_{n-2}x^{n-2}-\cdots$ 
 **第一类斯特林数** (斯特林轮换数) $\begin{bmatrix}n\\ k\end{bmatrix}$ 表示将 $n$ 个两两不同的元素,划分为 $k$ 个非空圆排列的方案数

不考虑各项系数的符号,将 $x^r$ 的系数的绝对值记做 $s(n, r)$ ,称为第一类 Stirling 数。
### 递推式

 $s(n, r)$ 也是把 $n$ 个不同的球排成 $r$ 个非空循环排列的方法数。
$$
\begin{bmatrix}n\\ k\end{bmatrix}=\begin{bmatrix}n-1\\ k-1\end{bmatrix}+(n-1)\begin{bmatrix}n-1\\ k\end{bmatrix}
$$

关于第一类斯特林数的性质可以阅读 [Stirling Number of the First Kind](http://mathworld.wolfram.com/StirlingNumberoftheFirstKind.html)
边界是 $\begin{bmatrix}n\\ 0\end{bmatrix}=[n=0]$

### 递推形式
该递推式的证明可以考虑其组合意义。

$$
s(n,r) = (n-1)s(n-1,r)+s(n-1,r-1),\ n > r \geq 1
$$
我们插入一个新元素时,有两种方案:

考虑最后一个球,它可以单独构成一个非空循环排列,也可以插入到前面的某一个球的一侧。
- 将该新元素置于一个单独的圆排列中,共有 $\begin{bmatrix}n-1\\ k-1\end{bmatrix}$ 种方案;
- 将该元素插入到任何一个现有的圆排列中,共有 $(n-1)\begin{bmatrix}n-1\\ k\end{bmatrix}$ 种方案。

若单独放,则有 $s(n-1,r-1)$ 种放法;若放在某个球的一侧,则有 $(n-1)s(n-1,r)$ 种放法
根据加法原理,将两式相加即可得到递推式

## 第二类斯特林数(Stirling Number)

 $n$ 个不同的球放到 $r$ 个相同的盒子里,假设没有空盒,则放球方案数记做 $S(n, r)$ ,称为第二类 Stirling 数。
 **第二类斯特林数** (斯特林子集数) $\begin{Bmatrix}n\\ k\end{Bmatrix}$ 表示将 $n$ 个两两不同的元素,划分为 $k$ 个非空子集的方案数。

关于第二类斯特林数的性质可以阅读 [Stirling Number of the Second Kind](http://mathworld.wolfram.com/StirlingNumberoftheSecondKind.html)

### 递推形式
### 递推式

$$
S(n,r) = r S(n-1,r) + S(n-1,r-1),\ n > r \geq 1
\begin{Bmatrix}n\\ k\end{Bmatrix}=\begin{Bmatrix}n-1\\ k-1\end{Bmatrix}+k\begin{Bmatrix}n-1\\ k\end{Bmatrix}
$$

考虑最后一个球,若它单独放一个盒子,有 $S(n-1,r-1)$ 种放法;若是和前面的某一个球放在同一个盒子里,则有 $r S(n-1,r)$ 种放法
边界是 $\begin{Bmatrix}n\\ 0\end{Bmatrix}=[n=0]$ 

## 例题
还是考虑组合意义来证明。

(2007 普及)将 $n$ 个数 $(1,2,…,n)$ 分成 $r$ 个部分。每个部分至少一个数。将不同划分方法的总数记为 $S_n^r$ 。例如, $S_4^2=7$ ,这 7 种不同的划分方法依次为 $\{\ (1) , (234) \}\,\{\ (2) ,  (134) \}\,\{\ (3) , (124) \}\,\{\ (4) , (123) \}\,\{\ (12) , (34) \}\,\{\ (13) , (24) \}\,\{\ (14) , (23) \}$ 。当 $n=6,r=3$ 时, $S_6^3$ =()
我们插入一个新元素时,有两种方案:

> 提示:先固定一个数,对于其余的 5 个数考虑 $S_5^3$ 与 $S_5^2$ ,再分这两种情况对原固定的数进行分析。
- 将新元素单独放入一个子集,有 $\begin{Bmatrix}n-1\\ k-1\end{Bmatrix}$ 种方案;
- 将新元素放入一个现有的非空子集,有 $k\begin{Bmatrix}n-1\\ k\end{Bmatrix}$ 种方案。

题解:在近几年算法竞赛中,递推算法越来越重要:
根据加法原理,将两式相加即可得到递推式。

$$
S_6^3=3 \times S_5^3 + S_5^2
$$
## 应用

$$
S_5^3=3 \times S_4^3 + S_4^2
$$
### 上升幂与普通幂的相互转化

我们记上升阶乘幂 $x^{\overline{n}}=\prod_{k=0}^{n-1} (x+k)$ 。

则可以利用下面的恒等式将上升幂转化为普通幂:

$$
S_5^2=2 \times S_4^2 + S_4^1
x^{\overline{n}}=\sum_{k} \begin{bmatrix}n\\ k\end{bmatrix} x^k
$$

第二类 stirling 数,显然拥有这样的性质
如果将普通幂转化为上升幂,则有下面的恒等式

$$
S_n^m = m \times S_{n-1}^{m} + S_{n-1}^{m-1}
x^n=\sum_{k} \begin{Bmatrix}n\\ k\end{Bmatrix} (-1)^{n-k} x^{\overline{k}}
$$

### 下降幂与普通幂的相互转化

我们记下降阶乘幂 $x^{\underline{n}}=\dfrac{x!}{(x-n)!}=\prod_{k=0}^n-1 (x-k)$ 。

则可以利用下面的恒等式将普通幂转化为下降幂:

$$
S_n^1 = 1,S_n^0 = 0,S_n^n = 1
x^n=\sum_{k} \begin{Bmatrix}n\\ k\end{Bmatrix} x^{\underline{k}}
$$

而这些性质就可以总结成
如果将下降幂转化为普通幂,则有下面的恒等式

$$
S_n^3 = \frac{1}{2} \times (3^{n-1}+1) - 2^{n-1}
x^{\underline{n}}=\sum_{k} \begin{bmatrix}n\\ k\end{bmatrix} (-1)^{n-k} x^k
$$

## 习题

 [HDU3625](http://acm.hdu.edu.cn/showproblem.php?pid=3625) 
 [HDU3625 Examining the Rooms](http://acm.hdu.edu.cn/showproblem.php?pid=3625) 

## 参考资料与注释

1.  [Stirling Number of the First Kind - Wolfram MathWorld](http://mathworld.wolfram.com/StirlingNumberoftheFirstKind.html) 
2.  [Stirling Number of the Second Kind - Wolfram MathWorld](http://mathworld.wolfram.com/StirlingNumberoftheSecondKind.html)