在组合数学,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. POJ - 1661 - Help Jimmy - 简单dp

    http://poj.org/problem?id=1661 一般化处理,把一开始的落地和大地都视作平台,设计平台类的属性.dp的时候显然是从上往下dp的,而且要小心Jimmy不能够穿过平台,也就是从 ...

  2. (水题)洛谷 - P1022 - 计算器的改良

    https://www.luogu.org/problemnew/show/P1022 服了,居然还有+0.000和-0.000的不同,真的服了. #include<bits/stdc++.h& ...

  3. HDU6035:Colorful Tree(树形DP)

    传送门 题意 给出一棵最小生成树及每个节点的颜色,询问\(\frac{n(n-1)}2\)条路径的权值和,一条路径的权值为该路径的颜色种数 分析 勉强理解了ftae的做法,但是代码还是不太会,还是太弱 ...

  4. Windows API 搭建OpenGL窗口

    步骤: 1.创建windows窗口,得到窗口句柄hwnd 2.获取该窗口的设备环境hDC(当然也可以获取其他的设备环境,但我们一般是在创建的窗口上绘制) 3.创建OpenGL绘制环境RC,这个只能从h ...

  5. macos php安装扩展sqlsrv连接sqlserver

    Install the PHP Drivers for SQL Serve sudo pecl install pdo_sqlsrv   sudo pecl install sqlsrv 微软官方文档 ...

  6. WOJ1019 所有的M数

    题目链接: WOJ1019 题目分析: 单调栈维护,读一个进来,如果前面的比它大就弹出来,然后压栈里(反正它在最右边) 压进栈里输出它前面那个数就好了 O(n)扫一遍就能过 真的水得不能再水的题了-- ...

  7. Chef and Graph Queries CodeChef - GERALD07

    https://vjudge.net/problem/CodeChef-GERALD07 可以用莫队+带撤销并查集做 错误记录: 1.调试时数组开小了,忘了改大就交了 2.88行和91行少了备份num ...

  8. 莫比乌斯函数 && HDU-1695

    莫比乌斯函数定义: $$\mu(d)=\begin{cases}1 &\text{d = 1}\\(-1)^r &\text{$d=p_1p_2...p_r,其中p_i为不同的素数$} ...

  9. JavaScript-获取当前元素的相关元素或节点--方法总结

    1.获取当前元素中的第一个子节点 document.getElementById("uu").firstChild 2.获取当前元素中的第一个子元素 document.getEle ...

  10. adb shell报错:error: insufficient permissions for device的解决办法

    1.错误描述 执行 adb shell 时,报错如下; error: insufficient permissions for device  2.解决办法 1,终端执行 lsusb 结果如下,注意绿 ...