斯特林数 java实现_斯特林数 - BILL666 - 博客园

第一类斯特林数

定义

\(\left[\begin{matrix}n\\m\end{matrix}\right]\) 表示将\(n\)个带标号的元素放入\(m\)个不带标号的环的方案数

递推式

\[\left[\begin{matrix}n\\m\end{matrix}\right]=\left[\begin{matrix}n-1\\m-1\end{matrix}\right]+(n-1)\left[\begin{matrix}n-1\\m\end{matrix}\right]

\]

组合意义

考虑最后一个元素:要么重新开一个环,要么加入到已经存在的环当中(即选择一个元素加入到它后面)

边界条件

\[\left[\begin{matrix}n\\0\end{matrix}\right]=[n=0]

\]

还有一个

\[\left[\begin{matrix}n\\m\end{matrix}\right]=\sum_{i=1}^n\left[\begin{matrix}n-i\\m-1\end{matrix}\right](i-1)!\binom{n-1}{i-1}

\]

即考虑\(n\) 所在的环,枚举其大小\(i\) ,\((i-1)!\) 代表环的方案数,\(\binom{n-1}{i-1}\) 代表从\(n-1\) 个元素中选出\(i-1\) 个来和\(n\) 在一起(注意不是考虑最后一个环,因为这里的环是不带标号的)

性质

\[\sum_{i=0}^n\left[\begin{matrix}n\\i\end{matrix}\right]=n!

\]

第二类斯特林数

定义

\(\left\{\begin{matrix}n\\m\end{matrix}\right\}\) 表示将\(n\) 个带标号的元素放入\(m\) 个不带标号的集合的方案数

递推式

\[\left\{\begin{matrix}n\\m\end{matrix}\right\}=\left\{\begin{matrix}n-1\\m-1\end{matrix}\right\}+m\left\{\begin{matrix}n-1\\m\end{matrix}\right\}

\]

组合意义

考虑最后一个元素:要么自成一个集合,要么放入之前已有的\(m\) 个集合中

边界条件

\[\left\{\begin{matrix}n\\0\end{matrix}\right\}=[n=0]

\]

还有一个

\[\left\{\begin{matrix}n\\m\end{matrix}\right\}=\sum_{i=1}^n\left\{\begin{matrix}n-i\\m-1\end{matrix}\right\}\binom{n-1}{i-1}

\]

即考虑\(n\) 所在的集合,枚举其大小\(i\) ,\(\binom{n-1}{i-1}\) 代表从\(n-1\) 个元素中选出\(i-1\) 个来和\(n\) 在一起

通项公式

\[\left\{\begin{matrix}n\\m\end{matrix}\right\}=\frac 1{m!}\sum_{k=0}^m(-1)^{m-k}\binom mk k^n

\]

推导:

我们首先有

\[m^n=\sum_{i=0}^m\binom mi\left\{\begin{matrix}n\\i\end{matrix}\right\}i!

\]

左边代表将\(n\) 个带标号元素放入\(m\) 个带标号集合的方案数,其中可能存在空集

右边先枚举\(i\) 代表非空集个数,而后\(\binom mi\) 代表从\(m\) 个集合中选出\(i\) 个作为非空集,\(\left\{\begin{matrix}n\\i\end{matrix}\right\}\) 代表将\(n\) 个带标号元素放入\(i\) 个不带标号的集合,\(i!\) 代表将这\(i\) 个集合带上标号

二项式反演可得

\[\left\{\begin{matrix}n\\m\end{matrix}\right\}m!=\sum_{i=0}^m\binom mi(-1)^{m-i}i^n\\

\left\{\begin{matrix}n\\m\end{matrix}\right\}=\frac 1{m!}\sum_{k=0}^m(-1)^{m-k}\binom mk k^n

\]

第二类斯特林数求行就直接按照上式卷积即可

次幂,下降幂和上升幂

\[x^n=\sum_{i=0}^n\left\{\begin{matrix}n\\i\end{matrix}\right\}x^{\underline i}\\

x^{\underline n}=\sum_{i=0}^n(-1)^{n-i}\left[\begin{matrix}n\\i\end{matrix}\right]x^i\\

x^{\overline n}=\sum_{i=0}^n\left[\begin{matrix}n\\i\end{matrix}\right]x^i\\

x^n=\sum_{i=0}^n(-1)^{n-i}\left\{\begin{matrix}n\\i\end{matrix}\right\}x^{\overline i}

\]

恒等式

\[\sum_k\left[\begin{matrix}n\\k\end{matrix}\right]\left\{\begin{matrix}k\\m\end{matrix}\right\}(-1)^{n-k}=[n=m]\\

\sum_k\left\{\begin{matrix}n\\k\end{matrix}\right\}\left[\begin{matrix}k\\m\end{matrix}\right](-1)^{n-k}=[n=m]\\

\]

斯特林反演

\[f(n)=\sum_k\left\{\begin{matrix}n\\k\end{matrix}\right\}g(k)\Leftrightarrow g(n)=\sum_k(-1)^{n-k}\left[\begin{matrix}n\\k\end{matrix}\right]f(k)\\

f(n)=\sum_k\left[\begin{matrix}n\\k\end{matrix}\right]g(k)\Leftrightarrow g(n)=\sum_k(-1)^{n-k}\left\{\begin{matrix}n\\k\end{matrix}\right\}f(k)\\

\]

可以和以上恒等式互推

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值