什么是第一类斯特林数?
带符号的第一类斯特林数记作 \(s(n,k)\),它是把下降阶乘 \(x(x-1)(x-2)\cdots(x-n+1)\) 展开成 \(x\) 的普通幂时所对应的各项系数。它们的绝对值 \(c(n,k) = |s(n,k)|\) 表示:将 \(n\) 个元素的全排列恰好分解为 \(k\) 个不相交循环(轮换)的方案数。两者之间通过符号公式 $$s(n,k) = (-1)^{n-k}\, c(n,k)$$ 相互关联。本计算器返回的是带符号的数值,与下降阶乘系数的约定保持一致。
使用方法
输入两个非负整数:\(n\)(规模参数)和 \(k\)(循环个数,也即幂指数)。点击计算,工具便会返回 \(s(n,k)\)。需要注意几条特殊规则:当 \(k\) 大于 \(n\) 时,结果为 0;\(s(n,n)\) 恒等于 1;按照定义,\(s(0,0)\) 也等于 1。
公式详解
我们借助一张小型的动态规划表,利用递推关系 $$s(n+1,k) = s(n,k-1) - n\cdot s(n,k)$$ 来逐步求解,初始条件为 \(s(0,0)=1\),并规定当 \(n>0\) 时 \(s(n,0)=0\),当 \(k>0\) 时 \(s(0,k)=0\)。每一行都由上一行推算得到,因此无需庞大的查询表。递推式中的负号项,正是导致结果正负交替的根本原因。
计算示例
计算 \(s(5,2)\)。第 5 行无符号的循环计数依次为 \(c(5,1)=24\)、\(c(5,2)=50\)、\(c(5,3)=35\)、\(c(5,4)=10\)、\(c(5,5)=1\)。其符号为 \((-1)^{5-2} = -1\),因此 \(s(5,2) = -50\)。验证一下:$$x(x-1)(x-2)(x-3)(x-4) = x^5 - 10x^4 + 35x^3 - 50x^2 + 24x,$$ 其中 \(x^2\) 的系数确实是 \(-50\)。
常见问题
为什么结果会是负数?因为这是带符号的版本;下降阶乘中 \(x^k\) 的系数会按照 \((-1)^{n-k}\) 的规律正负交替。
如何得到无符号的循环计数?取绝对值即可:\(c(n,k) = |s(n,k)|\)。
同一行所有无符号值之和是多少?对某一行所有 \(k\) 求和,\(c(n,k)\) 之和等于 \(n!\)(\(n\) 的阶乘)。