【笔记】组合数学:从阶乘幂到斯特林数

OI-wiki 抄一点,《具体数学》抄一点,抄抄你的,抄抄他的

斯特林数 - OI Wiki (oi-wiki.org)

斯特林数及斯特林反演 - y2823774827y - 博客园 (cnblogs.com)

阶乘幂

我们记下降阶乘幂

\[x^{\underline{n}}=\dfrac{x!}{(x-n)!}=\prod_{k=0}^{n-1} (x-k) \]

上升阶乘幂

\[x^{\overline{n}}=\dfrac{(x+n-1)!}{(x-1)!}=\prod_{k=0}^{n-1} (x+k) \]

特别地有 \(x^\underline 0=x^\overline 0=1\),如果不能算负整数的阶乘,那么就用最右边的定义。

吸收恒等式

\[m^{\underline k}\binom n m=n^{\underline k}\binom {n-k}{m-k} \]

组合证明:有 \(n\) 个有标号小球,先无序地选出 \(m\) 个,再从 \(m\) 个中有序地选出 \(k\) 个,等价于选从 \(n\) 个中有序地选出 \(k\) 个,再从剩下的小球中无序地选出 \(m-k\) 个。

代数证明:两边都等于 \(n^{\underline m}/(m-k)!\)。需要用到的公式:

\[\binom n m=n^{\underline m}/m!\iff n^{\underline m}= m!\binom n m \]

\[n^\underline k(n-k)^\underline{m-k}=n^\underline m \]

第二条由其因式分解形式容易证明。

上下阶乘幂互转

由因式分解形式可以发现

\[x^\underline k=(-1)^k(-x)^\overline k \]

或另一个感觉没啥用的

\[x^\underline k=(x-k+1)^\overline k \]

下降幂的差分

\[(x+1)^\underline m-x^\underline m=mx^\underline{m-1} \]

这个涉及的是《具体数学》中提到的“有限微积分”。

下降幂二项式定理

\[(x+y)^{\underline n}=\sum_{i=0}^n \binom{n}{i}x^{\underline i}y^{\underline {n-i}} \]

\[(x+y)^{\overline n}=\sum_{i=0}^n \binom{n}{i}x^{\overline i}y^{\overline {n-i}} \]

与范德蒙德卷积进行对比,发现事实上范德蒙德卷积可以看作是“组合数二项式定理”。下降幂二项式定理可以由范德蒙德卷积推导得到。

\[\binom{a+b}{n}=\sum_{i=0}^n\binom a i\binom b {n-i} \]

第二类斯特林数

第二类斯特林数(斯特林子集数)记作 \(\begin{Bmatrix}n\\ k\end{Bmatrix}\) 可读作“\(n\) 子集 \(k\)”,表示将 \(n\) 个两两不同的元素划分为 \(k\) 个互不区分的非空子集的方案数。

递推式

\[\begin{Bmatrix}n\\ k\end{Bmatrix}=k\begin{Bmatrix}n-1\\ k\end{Bmatrix}+\begin{Bmatrix}n-1\\ k-1\end{Bmatrix} \]

边界是 \(\begin{Bmatrix}n\\ 0\end{Bmatrix}=[n=0]\)

组合意义证明

考虑用组合意义来证明。

我们插入一个新元素时,有两种方案:

  • 将新元素单独放入一个子集,有 \(\begin{Bmatrix}n-1\\ k-1\end{Bmatrix}\) 种方案;
  • 将新元素放入一个现有的非空子集,有 \(k\begin{Bmatrix}n-1\\ k\end{Bmatrix}\) 种方案。

根据加法原理,将两式相加即可得到递推式。

重要公式:普通幂转下降幂

\[x^n=\sum_{k}\begin{Bmatrix}n\\ k\end{Bmatrix}x^\underline k \]

\(k\in [0, n]\),因为根据定义其它位置不可能有值。证明是归纳法。

证明(来源《具体数学》)

\(n=0\) 时显然成立;若已知 \(n-1\) 情况成立,则因为 \(x^\underline {k+1}=x^\underline {k}(x-k)\),所以 \(x^\underline {k+1}+kx^\underline {k}=x\cdot x^\underline {k}\)

\[\begin{aligned} x\cdot x^{n-1}&=x\sum_{k}\begin{Bmatrix}n-1\\ k\end{Bmatrix}x^\underline k\\ &=\sum_{k}\begin{Bmatrix}n-1\\ k\end{Bmatrix}x^\underline {k+1}+\sum_{k}\begin{Bmatrix}n-1\\ k\end{Bmatrix}kx^\underline k\\ &=\sum_{k}\left(\begin{Bmatrix}n-1\\ k-1\end{Bmatrix}+k\begin{Bmatrix}n-1\\ k\end{Bmatrix}\right)x^\underline k=\sum_{k}\begin{Bmatrix}n\\ k\end{Bmatrix}x^\underline k\\ \end{aligned} \]

第一类斯特林数

第一类斯特林数(斯特林轮换数)记作 \(\begin{bmatrix}n\\ k\end{bmatrix}\) 可读作“\(n\) 轮换 \(k\)”,表示将 \(n\) 个两两不同的元素划分为 \(k\) 个互不区分的非空轮换的方案数。轮换指的是首尾相接的排列(圆排列)。

递推式

\[\begin{bmatrix}n\\ k\end{bmatrix}=(n-1)\begin{bmatrix}n-1\\ k\end{bmatrix}+\begin{bmatrix}n-1\\ k-1\end{bmatrix} \]

边界是 \(\begin{bmatrix}n\\ 0\end{bmatrix}=[n=0]\)

组合意义证明

考虑用组合意义来证明。

我们插入一个新元素时,有两种方案:

  • 将新元素单独放入一个轮换,有 \(\begin{bmatrix}n-1\\ k-1\end{bmatrix}\) 种方案;
  • 将新元素放入一个现有的非空轮换。这部分有点智慧,你需要知道将一个数插入到 \(j\) 阶轮换中有 \(j\) 种方法(随意选一个间隔插进去),所以考虑所有轮换的阶数和,有 \((n-1)\begin{bmatrix}n-1\\ k\end{bmatrix}\) 种方案。

根据加法原理,将两式相加即可得到递推式。

重要公式:上升幂转普通幂

\[x^\overline n=\sum_{k}\begin{bmatrix}n\\ k\end{bmatrix}x^ k \]

证明(来源《具体数学》)

\(n=0\) 时显然成立;若已知 \(n-1\) 情况成立,则因为 \((x+n-1)x^k=x^{k+1}+(n-1)x^k\),所以

\[\begin{aligned} (x+n-1)\cdot x^\overline{n-1}&=(x+n-1)\sum_{k}\begin{bmatrix}n-1\\ k\end{bmatrix}x^ k\\ &=\sum_{k}\begin{bmatrix}n-1\\ k\end{bmatrix}x^ {k+1}+\sum_{k}\begin{bmatrix}n-1\\ k\end{bmatrix}(n-1)x^ k\\ &=\sum_{k}\left(\begin{bmatrix}n-1\\ k-1\end{bmatrix}+(n-1)\begin{bmatrix}n-1\\ k\end{bmatrix}\right)x^ k=\sum_{k}\begin{bmatrix}n\\ k\end{bmatrix}x^ k\\ \end{aligned} \]

同一行或列的斯特林数的计算

同一行第二类斯特林数的计算

这个可能是较重要的。

现在有 \(n\) 个有标号的球,令 \(f(m)\) 表示将它们放入 \(m\) 个有标号的盒子中且要求盒子非空,\(g(m)\) 表示将它们放入 \(m\) 个有标号的盒子中且要求盒子非空,则有

\[g(m)=m^n=\sum_{k=0}^m\binom m k f(k) \]

施二项式反演:

\[f(m)=\sum_{k=0}^m\binom m k (-1)^{m-k}g(k) \]

因为

\[f(m)=m!\begin{Bmatrix}n \\ m\end{Bmatrix} \]

所以

\[\begin{Bmatrix}n \\ m\end{Bmatrix}=\frac 1{m!}\sum_{k=0}^m\binom m k (-1)^{m-k}k^n \]

两类斯特林数的比较与联系

递推式

\[\begin{Bmatrix}n\\ k\end{Bmatrix}=k\begin{Bmatrix}n-1\\ k\end{Bmatrix}+\begin{Bmatrix}n-1\\ k-1\end{Bmatrix} \]

\[\begin{bmatrix}n\\ k\end{bmatrix}=(n-1)\begin{bmatrix}n-1\\ k\end{bmatrix}+\begin{bmatrix}n-1\\ k-1\end{bmatrix} \]

幂的转换

首先有一个直观感受,当 \(x>m>0\)

\[x^\underline m<x^m<x^\overline m \]

这里为了美观折叠一大段推导

然后有普通幂转下降幂公式,记为 \(x^\underline m\to x^m\)

\[x^n=\sum_{k}\begin{Bmatrix}n\\ k\end{Bmatrix}x^\underline k \]

我们很早就发现了

\[(-x)^\underline k=(-1)^kx^\overline k \]

公式 \(x^\underline m\to x^m\) 带入 \(-x\)

\[(-1)^nx^n=\sum_{k}\begin{Bmatrix}n\\ k\end{Bmatrix}(-1)^kx^\overline k \]

所以推出了公式 \(x^m\gets x^\overline k\)

\[x^n=\sum_{k}\begin{Bmatrix}n\\ k\end{Bmatrix}(-1)^{n-k}x^\overline k \]

同样道理,可以由 \(x^m\to x^\overline k\) 推出 \(x^\underline k\gets x^m\)

下面可以看一下阶乘幂和普通幂相互转化的四条公式:

\[x^n=\sum_{k}\begin{Bmatrix}n\\ k\end{Bmatrix}x^\underline k\quad(x^\underline m\to x^m) \]

\[x^\overline n=\sum_{k}\begin{bmatrix}n\\ k\end{bmatrix}x^ k\quad(x^m\to x^\overline m) \]

\[x^n=\sum_{k}\begin{Bmatrix}n\\ k\end{Bmatrix}(-1)^{n-k}x^\overline k\quad(x^ m\gets x^\overline m) \]

\[x^\underline n=\sum_{k}\begin{bmatrix}n\\ k\end{bmatrix}(-1)^{n-k}x^ k\quad(x^\underline m\gets x^ m) \]

总的来说:

  • \(x^\underline m\to x^m\to x^\overline m\) 这一条链上,从左往右逐渐往大的幂靠近,用小的幂组合成大的幂,不带负号,先子集数再轮换数。
  • \(x^\underline m\gets x^m\gets x^\overline m\) 这一条链上,从右往左逐渐往小的幂靠近,用大的幂组合成小的幂,带负号,也是先子集数再轮换数。

反转公式

\[\sum_{k=m}^n (-1)^{n-k}\begin{Bmatrix}n\\k\end{Bmatrix} \begin{bmatrix}k\\m\end{bmatrix}=[m=n] \]

\[\sum_{k=m}^n (-1)^{n-k}\begin{bmatrix}n\\k\end{bmatrix} \begin{Bmatrix}k\\m\end{Bmatrix}=[m=n] \]

所有 \((-1)^{n-k}\)\((-1)^{k-m}\) 也都是对的。

证明

对于第一个:非常简单,将公式 \(x^\underline m\gets x^ m\) 代入到 \(x^\underline m\to x^m\),得到

\[x^n=\sum_{m}\begin{Bmatrix}n\\ m\end{Bmatrix}\sum_{k}\begin{bmatrix}m\\ k\end{bmatrix}(-1)^{m-k}x^ k \]

左式展开之后,必然只有 \(x^n\) 项系数有值,而且是 \(1\),其它项都是 \(0\),仅当 \(k=n\) 时对应的系数是 \(1\),然后改写一下字母就得到了原式。

这个 \(-1\) 上面的指数到底是 \(k-m\) 还是 \(n-k\),其实这应该是没关系的,给一个零取相反数不会导致什么,而当 \(n=m\) 时左边就只有一项。

或者将公式 \(x^\overline m\gets x^ m\) 带入到 \(x^\overline m\to x^m\)

\[x^n=\sum_{k}\begin{Bmatrix}n\\ k\end{Bmatrix}(-1)^{n-k}x^\overline k=\sum_{k}\begin{Bmatrix}n\\ k\end{Bmatrix}(-1)^{n-k}\sum_{m}\begin{bmatrix}k\\ m\end{bmatrix}x^m \]

得到原式,也就是说 \(-1\) 的指数是无所谓的。

对于第二个:应该是相同的,将公式 \(x^m\gets x^\overline m\) 代入 \(x^m\to x^\overline m\),后面反正都一样就不写了。

斯特林数反演

\[f(n)=\sum\limits_{k=0}^n \begin{Bmatrix}n\\k \end{Bmatrix}g(k)\iff g(n)=\sum\limits_{k=0}^n(-1)^{n-k}\begin {bmatrix} n\\k \end{bmatrix}f(k) \]

\[f(n)=\sum\limits_{k=0}^n \begin{bmatrix}n\\k \end{bmatrix}g(k)\iff g(n)=\sum\limits_{k=0}^n(-1)^{n-k}\begin {Bmatrix} n\\k \end{Bmatrix}f(k) \]

证明

反转公式的直接应用。以第一个为例。

\[\begin{aligned} f(n)&=\sum\limits_{k=0}^n \begin{Bmatrix}n\\k \end{Bmatrix}g(k)\\ &=\sum\limits_{k=0}^n \begin{Bmatrix}n\\k \end{Bmatrix}\sum\limits_{m=0}^k(-1)^{k-m}\begin {bmatrix} k\\m \end{bmatrix}f(m)\\ &=\sum\limits_{m=0}^n\sum\limits_{k=m}^n \begin{Bmatrix}n\\k \end{Bmatrix}(-1)^{k-m}\begin {bmatrix} k\\m \end{bmatrix}f(m)\\ &=\sum\limits_{m=0}^n[n=m]f(m)\\ &=f(n) \end{aligned} \]

应用

posted @ 2024-09-11 22:13  caijianhong  阅读(167)  评论(1)    收藏  举报