(转) [组合数学] 第一类,第二类Stirling数,Bell数
一.第二类Stirling数
定理:第二类Stirling数S(p,k)计数的是把p元素集合划分到k个不可区分的盒子里且没有空盒子的划分个数。
证明:元素在哪些盒子并不重要,唯一重要的是各个盒子里装的是什么,而不管哪个盒子装了什么。
递推公式有:S(p,p)=1 (p>=0) S(p,0)=0 (p>=1) S(p,k)=k*S(p-1,k)+S(p-1,k-1) (1<=k<=p-1) 。考虑将前p个正整数,1,2,.....p的集合作为要被划分的集合,把
{1,2,.....p}分到k个非空且不可区分的盒子的划分有两种情况:
(1)那些使得p自己单独在一个盒子的划分,存在有S(p-1,k-1)种划分个数
(2)那些使得p不单独自己在一个盒子的划分,存在有 k*S(p-1,k)种划分个数
考虑第二种情况,p不单独自己在一个盒子,也就是p和其他元素在一个集合里面,也就是说在没有放p之前,有p-1个元素已经分到了k个非空且不可区分的盒子里面(划
分个数为S(p-1,k),那么现在问题是把p放在哪个盒子里面呢,有k种选择,所以存在有k*S(p-1,k)。
模板:
注意:要用long long类型,当元素个数>20,就超int类型了。
扩展:k! *S(p,k) 计数的是把p元素集合划分到k个可区分的盒子里且没有空盒子的划分个数。
二.Bell数
定理:Bell数B(p)是将p元素集合分到非空且不可区分盒子的划分个数(没有说分到几个盒子里面)。
B(p)=S(p,0)+S(p,1)+.....+S(p,k)
所以要求Bell数就要先求出第二类Stiring数。
三.第一类Stirling数
定理:第一类Stirling数s(p,k)计数的是把p个对象排成k个非空循环排列的方法数。
证明:把上述定理叙述中的循环排列叫做圆圈。递推公式为:
s(p,p)=1 (p>=0) 有p个人和p个圆圈,每个圆圈就只有一个人
s(p,0)=0 (p>=1) 如果至少有1个人,那么任何的安排都至少包含一个圆圈
s(p,k)=(p-1)*s(p-1,k)+s(p-1,k-1)
设人被标上1,2,.....p。将这p个人排成k个圆圈有两种情况。第一种排法是在一个圆圈里只有标号为p的人自己,排法有s(p-1,k-1)个。第二种排法中,p至少和另一个人在一
个圆圈里。这些排法可以通过把1,2....p-1排成k个圆圈再把p放在1,2....p-1任何一人的左边得到,因此第二种类型的排法共有(p-1)*s(p-1,k)种排法。
在证明中我们所做的就是把{1,2,...,p}划分到k个非空且不可区分的盒子,然后将每个盒子中的元素排成一个循环排列。
(转) [组合数学] 第一类,第二类Stirling数,Bell数的更多相关文章
- Stirling数,Bell数,Catalan数,Bernoulli数
组合数学的实质还是DP,但是从通式角度处理的话有利于FFT等的实现. 首先推荐$Candy?$的球划分问题集合: http://www.cnblogs.com/candy99/p/6400735.ht ...
- 自然数幂和——第一类Stirling数和第二类Stirling数
第一类Stirling数 首先设 $$S_k(n)=\sum_{i=0}^ni^k$$ 根据第一类斯特林数的定义(P是排列数,C是组合数,s是Stirling) $$C_n^k={P_n^k\over ...
- 第一类和第二类Stirling数
做了老是忘…… 实际问题: 找维基百科.百度百科…… 第一类Stirling数 n个元素构成m个圆排列 S(n,m)=S(n-1,m-1)+(n-1)*S(n-1,m) 初始 S(0,0)=1 S(n ...
- Bell数和Stirling数
前面说到了Catalan数,现在来了一个Bell数和Stirling数.什么是Bell数,什么是Stirling数呢?两者的关系如何,有用于解决什么算法问题呢? Bell数是以Bell这个人命名的,组 ...
- [总结] 第二类Stirling数
上一道例题 我们来介绍第二类Stirling数 定义 第二类Stirling数实际上是集合的一个拆分,表示将n个不同的元素拆分成m个集合的方案数,记为 或者 .和第一类Stirling数不同的是,集合 ...
- 第二类Stirling数
第二类斯特林数 第二类Stirling数:S2(p, k) 1.组合意义:第二类Stirling数计数的是把p个互异元素划分为k个非空集合的方法数 2.递推公式: S2(0, 0) = 1 S2(p, ...
- Bell(hdu4767+矩阵+中国剩余定理+bell数+Stirling数+欧几里德)
Bell Time Limit:3000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Submit Status ...
- 第二类Stirling数初探 By cellur925
上午noi.ac崩崩崩了,栽在组合数学上,虽说最后在辰哥&Chemist的指导下A掉了此题,也发现自己组合数学太弱了qwq. 在luogu上找题,结果找到了一个第二类斯特林数的题(还是双倍经验 ...
- lightOJ 1326 Race(第二类Stirling数)
题目链接:http://lightoj.com/volume_showproblem.php?problem=1326 题意:有n匹马赛跑.问有多少种不同的排名结果.可以有多匹马的排名相同. 思路:排 ...
随机推荐
- 原理分析dubbo分布式应用中使用zipkin做链路追踪(转)
作者:@nele本文为作者原创,转载请注明出处:https://www.cnblogs.com/nele/p/10171794.html 目录 zipkin是什么为什么使用Zipkinzipkin架构 ...
- CentOS上安装GlassFish4.0
1. 安装jdk 2. 下载并安装glassfish4 [root@linuxidc ~]# mv glassfish-4.0-ml.zip /usr/share/glassfish-4.0-ml. ...
- Tomcat中用JNDI方式加载JDBC DataSource以连接数据库
概括一下,大致分为四步:安装驱动,填充context.xml,填充web.xml,编写程序取得连接.通过一个小DEMO对这种配置方式有了一点了解,以tomcat6.0连接mysql5.0.8数据库为例 ...
- flutter DataTable数据表格
数据表显示原始数据集.它们通常出现在桌面企业产品中.DataTable Widget实现这个组件 文档:https://api.flutter.dev/flutter/material/DataTab ...
- python获取风和天气城市数据 ID
import requestsurl='https://cdn.heweather.com/china-city-list.csv'strhtml=requests.get(url)strhtml.e ...
- libfacedetection
libfacedetection测试 #include <stdio.h> #include <opencv2/opencv.hpp> #include <facedet ...
- 了解美杜莎(Medusa)
(1).美杜莎介绍 Medusa(美杜莎)是一个速度快,支持大规模并行,模块化的暴力破解工具.可以同时对多个主机,用户或密码执行强力测试.Medusa和hydra一样,同样属于在线密码破解工具.Med ...
- Django自定义用户认证系统之自定义用户模型
参考文档:http://python.usyiyi.cn/django/topics/auth/customizing.html Django 自带的认证系统足够应付大多数情况,但你或许不打算使用现成 ...
- 【kubernetes secret 和 aws ecr helper】kubernetes从docker拉取image,kubernetes docker私服认证(argo docker私服认证),no basic auth credentials错误解决
aws ecr helper: https://aws.amazon.com/blogs/compute/authenticating-amazon-ecr-repositories-for-dock ...
- curl命令测试网络请求中DNS解析、响应时间
https://blog.csdn.net/dreamer2020/article/details/78152576