斯特林数(Siteling_Number)

article/2025/9/22 22:09:22

一、基本概念

斯特林数出现在许多组合枚举问题中. 

第一类斯特林数 StirlingS1[n,m], 给出恰包含 m 个圈的 n 个元素 的排列数目. 斯特林数满足母函数关系 . 注意某些 的定义与 Mathematica 中的不同,差别在于因子 .

第二类斯特林数 StirlingS2[n,m]给出把 n 个可区分小球分配到m个不可区分的的盒子,且盒子没有空盒子的方法的数量. 它们满足关系 . 划分函数 PartitionsP[n]给出把整数 n 写为正整数的和,不考虑顺序的方法的数目. PartitionsQ[n]给出把整数 n 写为正整数的和,并且和中的整数是互不相同的 写法的数目

设S(p,k)是斯特林数

S(p,k)的一个组合学解释是:将p个物体划分成k个非空的不可辨别的(可以理解为盒子没有编号)集合的方法数。

S(p,k)的递推公式是:

 S(p,k) = k*S(p-1,k) + S(p-1,k-1) ,1<= k <=p-1

边界条件:

S(p,p) = 1 ,p>=0

S(p,0) = 0 ,p>=1

递推关系的说明:考虑第p个物品,p可以单独构成一个非空集合,此时前p-1个物品构成k-1个非空的不可辨别的集合,方法数为S(p-1,k-1);也可以前p-1种物品构成k个非空的不可辨别的集合,第p个物品放入任意一个中,这样有k*S(p-1,k)种方法。

第一类斯特林数和第二类斯特林数有相同的初始条件,但递推关系不同。引用Brualdi《组合数学》里的一段注释“对于熟悉线性代数的读者,解释如下:具有(比如)实系数,最多为p次的那些各项式形成一个p+1维的向量空间。组1,n,n^2,...。n^p和组A(n, 0),A(n,1),A(n,2),... ,A(n,p)都是该空间的基。第一类Stirling数和第二类Stirling数告诉我们如何用其中的一组基表示另一组基。”

二、解释

第一类Siteling_Number

第一类Stirling数是有正负的,其绝对值是n个元素的项目分作k个环排列的方法数目。常用的表示方法有s(n,k) , \left[\begin{matrix} n \\ k \end{matrix}\right]

换个较生活化的说法,就是有n个人分成k组,每组内再按特定顺序围圈的分组方法的数目。例如s(4,2)

  1. {A,B},{C,D}
  2. {A,C},{B,D}
  3. {A,D},{B,C}
  4. {A},{B,C,D}
  5. {A},{B,D,C}
  6. {B},{A,C,D}
  7. {B},{A,D,C}
  8. {C},{A,B,D}
  9. {C},{A,D,B}
  10. {D},{A,B,C}
  11. {D},{A,C,B}

这可以用有向图来表示。

给定s(n,0)=0,s(1,1)=1,有递归关系s(n+1,k)=s(n,k-1) + n \; s(n,k)

递推关系的说明:考虑第n+1个物品,n+1可以单独构成一个非空循环排列,这样前n种物品构成k-1个非空循环排列,方法数为s(n,k-1);也可以前n种物品构成k个非空循环排列,而第n+1个物品插入第i个物品的左边,这有n*s(n,k)种方法。

 

| s(n,1) | =(n-1)!

s(n,k) = (-1)^{n+k} | s(n,k) |

s(n,n-1) = - C(n,2)

s(n,2) = (-1)^n (n-1)!\; H_{n-1}

s(n,3) = \frac{1}{2} (-1)^{n-1} (n-1)! [ (H_{n-1})^2 - H_{n-1}^{(2)} ]

H_n^{(m)}是调和数的推广。

s(n,k)是递降阶乘多项式的系数:

x^{\underline{n}}= x(x-1)(x-2)\ldots(x-n+1) = \sum_{k=1}^n s(n,k)x^k

性质

 

第二类Siteling_Number

第二类Stirling数是n个元素的集定义k个等价类的方法数目。常用的表示方法有S(n,k) , S_n^{(k)} ,  \left\{\begin{matrix} n \\ k \end{matrix}\right\}

换个较生活化的说法,就是有n个人分成k组的分组方法的数目。例如有甲、乙、丙、丁四人,若所有人分成1组,只有所有人在同一组这个方法,因此S(4,1)=1;若所有人分成4组,只可以人人独立一组,因此S(4,4)=1;若分成2组,可以是甲乙一组、丙丁一组,或甲丙一组、乙丁一组,或甲丁一组、乙丙一组,或其中三人同一组另一人独立一组,即是:

  1. {A,B},{C,D}
  2. {A,C},{B,D}
  3. {A,D},{B,C}
  4. {A},{B,C,D}
  5. {B},{A,C,D}
  6. {C},{A,B,D}
  7. {D},{A,B,C}

因此S(4,2)=7

 

给定S(n,n)=S(n,1)=1,有递归关系S(n,k) = S(n-1,k-1) + k S(n-1,k)

递推关系的说明:考虑第n个物品,n可以单独构成一个非空集合,此时前n-1个物品构成k-1个非空的不可辨别的集合, 方法数为S(n-1,k-1);也可以前n-1种物品构成k个非空的不可辨别的 集合,第n个物品放入任意一个中,这样有k*S(n-1,k)种方法。

S(n,n-1)=C(n,2)=n(n-1)/2

S(n,2)=2^{n-1} - 1

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

B_n=\sum_{k=1}^n S(n,k)

C(k,j)是二项式系数,B_n是贝尔数。

两者关系

\sum_{n=0}^{\max\{j,k \}} S(n,j) s(k,n) = \sum_{n=0}^{\max\{j,k \}} s(n,j) S(k,n) = \delta_{jk}

\delta_{jk}是克罗内克尔δ。

三、例题

http://acm.hdu.edu.cn/showproblem.php?pid=3625

https://www.luogu.org/problemnew/show/P3904

四、参考文章

https://www.cnblogs.com/owenyu/p/6724661.html


http://chatgpt.dhexx.cn/article/3xhjDsJI.shtml

相关文章

斯特林数(数论)

斯特林数&#xff1a;stirling 概念&#xff1a; 1、第一类斯特林数&#xff1a;把1~n排列成k个非空循环的方案数&#xff0c;用小写s(n,k)或[n k]表示 2、第二类斯特林数&#xff1a;将1~n排成k个非空集合的方案数&#xff0c;用大写S(n,k)或{n,k}表示 第一类斯特林数&…

组合数学 —— 斯特林数(Stirling)

【第一类斯特林数】 1.定理 第一类斯特林数 S1(n,m) 表示的是将 n 个不同元素构成 m 个圆排列的数目。 2.递推式 设人被标上1,2,.....p&#xff0c;则将这 p 个人排成 m 个圆有两种情况&#xff1a; 在一个圆圈里只有标号为 p 的人自己&#xff0c;排法有 S1(n-1,m-1) 个。…

Linux Debian11创建新用户和删除用户

一、 Debian 创建 新用户 1.创建新用户 首先&#xff0c;要创建用户&#xff0c;当前用户必须是 root 用户或者 sudo 用户。 使用下面adduser 命令创建一个用户名为test的sudo用户&#xff0c;按照提示输入密码&#xff0c;使用 adduser 命令&#xff0c;还会创建用户的主目…

Linux中创建新用户,设置ID与密码

如&#xff1a;新建用户admin&#xff0c;指定在/root家目录下&#xff0c;并指定用户id为6666&#xff0c;设置密码&#xff1a;admin123 添加用户 add&#xff1a;用于创建新的系统用户 语法&#xff1a;useradd[选项] 用户名 -d 指定用户的家目录&#xff08;默认用户名目录…

Linux手工创建新用户

准备工作&#xff08;配置流程的理解&#xff09; Linux中useradd命令即一系列文件操作的结合体&#xff0c;所以我们可以通过查看useradd命令来确认我们手工创建新用户需要完成的文件配置 找到man useradd中涉及的文件部分 对于手工创建用户有用的文件&#xff1a; /etc/pas…

linux创建/删除新用户

为了完成本关任务&#xff0c;你需要掌握如下知识&#xff1a; Linux创建用户命令Linux删除用户命令 Linux创建用户命令 Linux中使用useradd命令来创建一个新用户。 命令格式格式&#xff1a; useradd [命令参数] 参数 常见命令参数&#xff1a; -d<登入目录>&…

Linux如何创建一个新的用户?

1. useradd -d /root/admin admin -u 6666 把一个用户名为admin&#xff0c;id为6666的新用户创建在指定 /root 家目录下。 2. passwd admin 给新用户admin设置密码。

Linux下如何创建新用户并设置密码及删除用户

一&#xff1a;演示创建新用户binbin 在命令行输入useradd binbin&#xff0c;表示创建新用户binbin 回车后&#xff0c;直接 ll 回车查看到 binbin 就已经创建好了 二&#xff1a;设置密码 1.1输入命令&#xff1a; passwd binbin&#xff0c;回车&#xff0c;设置用户 binb…

linux服务器创建新用户

无论是创建新用户还是删除某个用户&#xff0c;都需要拿到root用户的密码&#xff0c;才有权限创建删除。 创建新用户 首先进入root账户&#xff0c;输入以下指令&#xff0c;created_name 是我们创建的用户名&#xff0c;可以换成你想要创建的用户名称。 useradd -m -s /bi…

LINUX--创建新用户为新用户设置权限

文章目录 【一张图总结】【详细说明】1、登录root2、新建用户并创建家目录3、更改为bash命令4、设置密码5、设置sudo权限 【关于本文Linux命令的说明】1、useradd -d /home/xpt -m xpt2、usermod -s /bin/bash xpt3、sudo passwd xpt4、sudo chmod uw /etc/sudoers5、sudo vi /…

Linux系统通过命令行创建新的普通用户

以下操作在root账户或权限下执行&#xff01;&#xff01;&#xff01; 目录 1. 创建用户 2. 删除用户 1. 创建用户 创建用户分两步&#xff1a; (1) 使用adduser创建用户名 adduser 创建的用户名 (2) 设置创建用户名的密码 passwd 创建的用户名 然后就可以使用创建的用户登…

Linux-创建用户组和用户

目录 1.前提 2.用户组 3.用户 4.其他 1.前提 创建用户组和用户均需要管理员权限&#xff0c;要么是 root 用户&#xff0c;要么是现用户有 sudo 权限。 下面的命令大部分是基于 sudo 权限 2.用户组 创建用户组 sudo groupadd 组名 查看用户组 cat /etc/group 删除用…

Citespace教程笔记

1 Citespace分析和解读策略 课程连接&#xff1a;citespace教程-陈超美老师亲自教学_哔哩哔哩_bilibili 分析结果那些重要&#xff0c;那些次要&#xff0c;要从主到次地分析。 2 Citespace软件界面简介 2.1 Citespace功能参数界面 2.2 Citespace可视化界面 可视化界面的简介…

TLS Ciphers

传输层安全性协议&#xff08;英语&#xff1a;Transport Layer Security&#xff0c;缩写作TLS&#xff09;&#xff0c;及其前身安全套接层&#xff08;Secure Sockets Layer&#xff0c;缩写作SSL&#xff09;是一种安全协议 定义 协议 年份 SSL 1.0 未知 SSL 2.0 199…

NO Ciphertext RSA -BugkuCTF

题目 附件 这里给了dp&#xff0c;可以根据dp爆破出p&#xff0c;q n dp e 65537 for x in range(1, e):if(e*dp%x1):p(e*dp-1)//x1if(n%p!0):continue print(p,p) q n//p print(q,q) 现在来到了难点&#xff0c;c不知如何去求&#xff0c;这里给了leak_c1&#xff0c…

[DiceCTF 2023] rSabin

一点点学习别人的WP&#xff0c;这回看到一个大姥(r3kapig)的帖子&#xff0c;DiceCTF第二名&#xff0c;不过有好多东西一时还理解不了&#xff0c;得慢慢来。 题目 这个题有3个功能&#xff1a; rsa加密功能&#xff0c;p,q,N未知&#xff0c;e17低加密指数 解密&#xff0c;…

[密码学复习]Cryptography

整合 Week 2对称加密 Two requirements: A strong encryption algorithmA secret key known only to participants. 1. 有三部分构成&#xff1a; 1.加密算法 2.可能使用的密钥数量&#xff1a;数量越大越安全 3.text文本的处理&#xff1a;分为stream ciphers整段传输和…

python实现凯撒加密和暴力破解凯撒加密(源码及运行结果截图)

文章目录 原理太简单就不赘述了&#xff01; 一、凯撒加密&#xff08;源码&#xff09;二、暴力破解凯撒加密&#xff08;源码&#xff09;三、运行结果截图 原理太简单就不赘述了&#xff01; 一、凯撒加密&#xff08;源码&#xff09; plaintext input("请输入明文…

【Python】cryptography和pycryptodome库使用

题目&#x1f447; &#xff08;1&#xff09;使用cryptography模块&#xff0c;编写完整的AES-CBC加解密函数&#xff0c;函数接口为&#xff1a; def encrypt_CBC(key, plaintext, iv)、def decrypt_CBC(key, ciphertext, iv)&#xff1b; &#xff08;2&#xff09;使用p…

《A Graduate Course in Applied Cryptography》Chapter 12 Chosen ciphertext secure pkc(4)finish

原文教材 与 参考资料&#xff1a; Boneh Dan , Shoup Victor . A Graduate Course in Applied Cryptography[J]. 该书项目地址&#xff08;可以免费获取&#xff09;&#xff1a;http://toc.cryptobook.us/ 博客为对该书的学习笔记&#xff0c;并非原创知识&#xff0c;帮助理…