在组合数学,Stirling数可指两类数,第一类Stirling数和第二类Stirling数。

stirling常应用于许多组合枚举问题中。

第一类stirling数:

对第一类Stirling数

  ,也可记为 
s(n,m)的一个的组合学解释是:而个人分成m组做环排列的方法数目。

递推式:

$$\begin{align*}s(n+1,2)&=s(n,1)+s(n,2)\cdot n\\&=(n-1)!+n(n-1)!\sum _{i=1}^{n-1}\frac{1}{i}\\&=(n-1)!+n!\sum _{i=1}^{n-1}\frac{1}{i}\\&=\frac{n!}{n}+n!\sum _{i=1}^{n-1}\frac{1}{i}\\&=n!\sum _{i=1}^{n}\frac{1}{i}\\ \end{align*}$$

s(p,k)的递推公式: $s(p,k)=(p-1) \times s(p-1,k)+s(p-1,k-1) ,1<=k<=p-1$

边界条件:s(p,0)=0 ,p>=1  s(p,p)=1  ,p>=0

性质:

 

 

 

 

 

 

 

第二类stirling数:

  ,同时可记为 
将p个物体划分成k个非空的不可辨别的(可以理解为盒子没有编号而物品有编号)集合的方法数。
 
第二类Stirling数要求盒子是无区别的,所以可以得到其方案数公式:

递推式:

$$\begin{Bmatrix} n \\ k \end{Bmatrix}=\begin{Bmatrix} n-1 \\ k-1 \end{Bmatrix}+\begin{Bmatrix} n-1 \\ k \end{Bmatrix}*k$$

S(p,k)的递推公式是:$S(p,k)=k \times 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

通项递推式:

$S(n,m)=\frac{1}{m!} \sum _{k=0}^m (-1)^kC_m^k(m-k)^n$

性质:

  • $s(0,0)=1$;
  • $S(n,0)=0,n>0$
  • $S(n,n)=1$
  • $S(n,2)=S(n-1,1)+S(n-1,2)*2=1+S(n-1,2)*2=2^{n-1}-1$
  • $S(n,n-1)=C_n^2$
  • $S(n,n-2)=C_n^3+3C_n^4$

简单巧妙的证明:我们分成两种情况,把n个不同的元素分成n?2个集合有两种情况,分别是有一个集合有三个元素和有两个集合有两个元素。对于前者,我们选出三个元素为一个集合,

其他的各成一个集合,这种情况的方案数就是C(n,3)。对于后者,先选出四个元素来,考虑怎么分配。当其中一个元素选定另一个元素形成同一个集合时,这种情况就确定了,

所以是$3 \times C(n,4)$。加法原理计算和即得证。

  • $S(n,3)=\frac{1}{2}(3^{n-1}+1)-2^{n-1}$

  • $S(n,n-3)=C_n^4+10C_n^5+15C_n^6$

浅谈stiring数的更多相关文章

  1. 浅谈卡特兰数(Catalan number)的原理和相关应用

    一.卡特兰数(Catalan number) 1.定义 组合数学中一个常出现在各种计数问题中出现的数列(用c表示).以比利时的数学家欧仁·查理·卡特兰的名字来命名: 2.计算公式 (1)递推公式 c[ ...

  2. 浅谈JavaScript--函数重载

    个人认为重载就是一组具有相同名字.不同参数列表的函数(方法). 从语言角度来说,javascript不支持函数重载,不能够定义同样的函数然后通过编译器去根据不同的参数执行不同的函数. 但是javasc ...

  3. python浅谈正则的常用方法

    python浅谈正则的常用方法覆盖范围70%以上 上一次很多朋友写文字屏蔽说到要用正则表达,其实不是我不想用(我正则用得不是很多,看过我之前爬虫的都知道,我直接用BeautifulSoup的网页标签去 ...

  4. 浅谈HTML5单页面架构(一)——requirejs + angular + angular-route

    心血来潮,打算结合实际开发的经验,浅谈一下HTML5单页面App或网页的架构. 众所周知,现在移动Webapp越来越多,例如天猫.京东.国美这些都是很好的例子.而在Webapp中,又要数单页面架构体验 ...

  5. 浅谈php生成静态页面

    一.引 言 在速度上,静态页面要比动态页面的比方php快很多,这是毫无疑问的,但是由于静态页面的灵活性较差,如果不借助数据库或其他的设备保存相关信息的话,整体的管理上比较繁琐,比方修改编辑.比方阅读权 ...

  6. 浅谈c语言结构体

    对于很多非计算机专业来说,c语言课程基本上指针都不怎么讲,更别说后面的结构体了.这造成很多学生对结构体的不熟悉.这里我就浅谈一下我对结构体的认识. 结构体,就是我们自己定义出一种新的类型,定义好之后, ...

  7. 浅谈产品测试人员的KPI

                                                                                                   浅谈产品测 ...

  8. 浅谈JAVA集合框架

    浅谈JAVA集合框架 Java提供了数种持有对象的方式,包括语言内置的Array,还有就是utilities中提供的容器类(container classes),又称群集类(collection cl ...

  9. Android性能优化的浅谈

    一.概要: 本文主要以Android的渲染机制.UI优化.多线程的处理.缓存处理.电量优化以及代码规范等几方面来简述Android的性能优化 二.渲染机制的优化: 大多数用户感知到的卡顿等性能问题的最 ...

随机推荐

  1. python __builtins__ 函数

    dir(__builtins__) 1.'abs', 对传入参数取绝对值 abs(x, /) Return the absolute value of the argument. >>&g ...

  2. Jquery+ajaxfileupload上传文件

    1.说明 ajaxfileupload.js是一款jQuery插件,用于通过ajax上传文件. 下载地址:http://files.cnblogs.com/files/lengzhan/ajaxfil ...

  3. 黑客攻防技术宝典web实战篇:攻击会话管理习题

    猫宁!!! 参考链接:http://www.ituring.com.cn/book/885 随书答案. 1. 登录一个应用程序后,服务器建立以下 cookie:Set-cookie: sessid=a ...

  4. web.xml中classpath*:与classpath:的区别

    classpath对应src目录,该目录下的文件会在编译后被存放到WEB-INF文件夹下的classes目录. classpath:只会到你的class路径中查找配置文件,对于多个同名的配置文件,只会 ...

  5. jqgrid 分级标题

    参考地址:http://www.trirand.com/jqgridwiki/doku.php?id=wiki:groupingheadar Grouping of the header should ...

  6. dubbo中Hessian方法重载问题处理

    dubbo中Hessian方法重载,报出如下错误信息: 十一月 , :: 下午 org.apache.catalina.core.StandardWrapperValve invoke 严重: Ser ...

  7. eclipse快捷键,移动和复制一段代码

    移动代码:alt+上或下箭头 复制加移动代码:ctrl + alt + 上或下箭头

  8. 通用mapper的generator

    <plugin> <groupId>org.mybatis.generator</groupId> <artifactId>mybatis-genera ...

  9. 小程序java解密

    <dependency> <groupId>org.bouncycastle</groupId> <artifactId>bcprov-jdk16< ...

  10. 使用css3 制作switch开关

    使用css3来实现switch开关的效果: html代码: <!--switch开关--><div class="switch-btn"> <inpu ...