通过MCP连接 →

输入计算

数学公式

广告

结果

Stirling Number of the Second Kind S(5, 2)
15
ways to partition 5 labeled elements into 2 non-empty subsets
n(集合大小) 5
k(子集数) 2
记号 S(n, k)

什么是第二类斯特林数?

第二类斯特林数记作 \(S(n,k)\),表示把 \(n\) 个互不相同(有标记)的元素,恰好划分成 \(k\) 个非空、无标记子集的方案数。它是组合数学中的基础概念,广泛出现在集合划分、满射计数以及贝尔数等问题中。这是一个纯数学工具,在任何国家、任何场景下的算法都完全一致。

四个有标号的球分入两个无标号的箱中,展示一种集合划分
\(S(n,k)\) 计算把 \(n\) 个有标号物件分成 \(k\) 个非空无标号组的方法数。

如何使用本计算器

输入集合大小 \(n\) 和子集个数 \(k\),两者都必须为非负整数。点击计算,即可得到 \(S(n,k)\),也就是划分方案的精确数量。如果 \(k\) 大于 \(n\),结果为 0——因为元素总数不够,无法填满更多的非空子集。

公式详解

显式公式为:

$$S(n,k) = \frac{1}{k!}\sum_{j=0}^{k} (-1)^{k-j}\binom{k}{j} j^{n}$$

其中 \(C(k,j)\) 为二项式系数。另一种在数值上更稳定的写法是递推式

$$S(n,k) = k\cdot S(n-1,k) + S(n-1,k-1)$$

其初始条件为 \(S(0,0)=1\)、当 \(n>0\) 时 \(S(n,0)=0\)、当 \(k>0\) 时 \(S(0,k)=0\)。本计算器采用递推式,以避免浮点数相减时的精度损失。几个常用的特殊情形:\(S(n,1)=1\),\(S(n,n)=1\),\(S(n,2)=2^{n-1}-1\)。

Advertisement

实例演算

以 \(n=5\)、\(k=2\) 为例:套用特殊情形

$$S(5,2)=2^{5-1}-1=16-1=15$$

用递推式同样可以验证:

$$S(5,2)=2\cdot S(4,2)+S(4,1)=2\cdot 7+1=15$$

也就是说,把一个含 5 个元素的集合分成两个非空小组,共有 15 种方法。

像帕斯卡三角一样排列的小斯特林数三角形网格
由 \(S(n,k)\) 值组成的三角形,每个值都由其上方的两个值得到。

常见问题

为什么 \(S(0,0)=1\)?按照约定,空集恰好有一种划分成零个部分的方式,即空划分。

当 \(k > n\) 时会怎样?结果为 0。因为每个子集都必须非空,而此时元素数量不足。

它和贝尔数有什么关系?把 \(S(n,k)\) 对所有 \(k\)(从 0 到 \(n\))求和,就得到贝尔数 \(B(n)\),即一个含 \(n\) 个元素的集合的全部划分总数。

最后更新: