第一类斯特林数

定义

\(\left[\begin{matrix}n\\m\end{matrix}\right]\) 表示将\(n\)个带标号的元素放入\(m\)个不带标号的环的方案数

递推式

\[\left[\begin{matrix}n\\m\end{matrix}\right]=\left[\begin{matrix}n-1\\m-1\end{matrix}\right]+(n-1)\left[\begin{matrix}n-1\\m\end{matrix}\right]

\]

组合意义

考虑最后一个元素:要么重新开一个环,要么加入到已经存在的环当中(即选择一个元素加入到它后面)

边界条件

\[\left[\begin{matrix}n\\0\end{matrix}\right]=[n=0]

\]

还有一个

\[\left[\begin{matrix}n\\m\end{matrix}\right]=\sum_{i=1}^n\left[\begin{matrix}n-i\\m-1\end{matrix}\right](i-1)!\binom{n-1}{i-1}

\]

即考虑\(n\) 所在的环,枚举其大小\(i\) ,\((i-1)!\) 代表环的方案数,\(\binom{n-1}{i-1}\) 代表从\(n-1\) 个元素中选出\(i-1\) 个来和\(n\) 在一起(注意不是考虑最后一个环,因为这里的环是不带标号的)

性质

\[\sum_{i=0}^n\left[\begin{matrix}n\\i\end{matrix}\right]=n!

\]

第二类斯特林数

定义

\(\left\{\begin{matrix}n\\m\end{matrix}\right\}\) 表示将\(n\) 个带标号的元素放入\(m\) 个不带标号的集合的方案数

递推式

\[\left\{\begin{matrix}n\\m\end{matrix}\right\}=\left\{\begin{matrix}n-1\\m-1\end{matrix}\right\}+m\left\{\begin{matrix}n-1\\m\end{matrix}\right\}

\]

组合意义

考虑最后一个元素:要么自成一个集合,要么放入之前已有的\(m\) 个集合中

边界条件

\[\left\{\begin{matrix}n\\0\end{matrix}\right\}=[n=0]

\]

还有一个

\[\left\{\begin{matrix}n\\m\end{matrix}\right\}=\sum_{i=1}^n\left\{\begin{matrix}n-i\\m-1\end{matrix}\right\}\binom{n-1}{i-1}

\]

即考虑\(n\) 所在的集合,枚举其大小\(i\) ,\(\binom{n-1}{i-1}\) 代表从\(n-1\) 个元素中选出\(i-1\) 个来和\(n\) 在一起

通项公式

\[\left\{\begin{matrix}n\\m\end{matrix}\right\}=\frac 1{m!}\sum_{k=0}^m(-1)^{m-k}\binom mk k^n

\]

推导:

我们首先有

\[m^n=\sum_{i=0}^m\binom mi\left\{\begin{matrix}n\\i\end{matrix}\right\}i!

\]

左边代表将\(n\) 个带标号元素放入\(m\) 个带标号集合的方案数,其中可能存在空集

右边先枚举\(i\) 代表非空集个数,而后\(\binom mi\) 代表从\(m\) 个集合中选出\(i\) 个作为非空集,\(\left\{\begin{matrix}n\\i\end{matrix}\right\}\) 代表将\(n\) 个带标号元素放入\(i\) 个不带标号的集合,\(i!\) 代表将这\(i\) 个集合带上标号

二项式反演可得

\[\left\{\begin{matrix}n\\m\end{matrix}\right\}m!=\sum_{i=0}^m\binom mi(-1)^{m-i}i^n\\

\left\{\begin{matrix}n\\m\end{matrix}\right\}=\frac 1{m!}\sum_{k=0}^m(-1)^{m-k}\binom mk k^n

\]

第二类斯特林数求行就直接按照上式卷积即可

次幂,下降幂和上升幂

\[x^n=\sum_{i=0}^n\left\{\begin{matrix}n\\i\end{matrix}\right\}x^{\underline i}\\

x^{\underline n}=\sum_{i=0}^n(-1)^{n-i}\left[\begin{matrix}n\\i\end{matrix}\right]x^i\\

x^{\overline n}=\sum_{i=0}^n\left[\begin{matrix}n\\i\end{matrix}\right]x^i\\

x^n=\sum_{i=0}^n(-1)^{n-i}\left\{\begin{matrix}n\\i\end{matrix}\right\}x^{\overline i}

\]

恒等式

\[\sum_k\left[\begin{matrix}n\\k\end{matrix}\right]\left\{\begin{matrix}k\\m\end{matrix}\right\}(-1)^{n-k}=[n=m]\\

\sum_k\left\{\begin{matrix}n\\k\end{matrix}\right\}\left[\begin{matrix}k\\m\end{matrix}\right](-1)^{n-k}=[n=m]\\

\]

斯特林反演

\[f(n)=\sum_k\left\{\begin{matrix}n\\k\end{matrix}\right\}g(k)\Leftrightarrow g(n)=\sum_k(-1)^{n-k}\left[\begin{matrix}n\\k\end{matrix}\right]f(k)\\

f(n)=\sum_k\left[\begin{matrix}n\\k\end{matrix}\right]g(k)\Leftrightarrow g(n)=\sum_k(-1)^{n-k}\left\{\begin{matrix}n\\k\end{matrix}\right\}f(k)\\

\]

可以和以上恒等式互推

斯特林数 java实现_斯特林数 - BILL666 - 博客园相关推荐

  1. java 熔断_熔断理解 - THISISPAN - 博客园

    服务熔断的理解 服务熔断也称服务隔离,来自于Michael Nygard 的<Release It>中的CircuitBreaker应用模式,Martin Fowler在博文Circuit ...

  2. java代码画樱花飘落_一行代码引入博客园樱花飘落特效

    前言 博客园作为面向大众的博客, 个性新颖可以博得一赞, 简约美观也不失阅读体验, 本文对樱花特效js进行了解读, 发现作者的设计确实秒不可言, 即使没有注释, 思路展示的也很清晰. 那就废话不多说, ...

  3. 限制会话id服务端不共享_会话控制 - able-woman - 博客园

    会话控制是什么? cookie和session都是跟踪整个会话过程的技术手段.而会话,就是用户通过浏览器和服务器的一次通话. 为什么要有会话控制? 因为HTTP协议是无状态的,服务器不知道用户上一次做 ...

  4. java 粒子滤波_粒子滤波 - gary_123 - 博客园

    跟着博主http://blog.csdn.net/heyijia0327/article/details/40899819一起学习 尽管利用高斯逼近能有效解决许多滤波问题,但当滤波分布为多模型或某些状 ...

  5. 解读java面试_解读王垠博客“一道 Java 面试题”

    偶然拜读IT界知名大佬王垠老师的博客,发现一个有意思的题目: 1 //这段代码里面到底哪一行错了?为什么?2 //原文:http://www.yinwang.org/blog-cn/2020/02/1 ...

  6. 斯特林数 java实现_斯特林数学习笔记

    定义 第一类斯特林数\(s(n,m)\)表示把\(n\)个不同元素放到\(m\)个相同圆排列里的方案数. 有转移方程: \[s(n,m)=s(n-1,m-1)+(n-1)\times s(n-1,m) ...

  7. 对称数java算法_对称数的简单实现

    在百度面试题中看到这样一个题,可能比较老套了,这里为了学习,自己写了改写了个简单算法. 我们把一个数字倒着读和原数字相同的数字称之为对称数, (例如1,121,88,8998),不考虑性能,请找出1- ...

  8. java数字常量_数字常量 - javawebsoa - 博客园

    数字常量 shell脚本在默认情况下都是把数字作为10进制数来处理, 除非这个数字采用了特殊的标记或者前缀. 如果数字以0开头的话那么就是8进制数. 如果数字以0x开头的话那么就是16进制数. 如果数 ...

  9. java原子变量的作用_原子变量 - jock_javaEE - 博客园

    一.原子变量的作用:解决并发下多个线程操作共享数据存在,线程安全问题 原子变量 = volatile + CAS算法[又叫无锁机制] 二. 例子 package com.atguigu.juc; im ...

最新文章

  1. java判断自己活了多少天_用程序计算你活了多少天
  2. php公告栏系统,PHP系统公告-发送通知给每个人
  3. web.py 十分钟创建简易博客
  4. HDOJ(HDU) 1994 利息计算(简单题目)
  5. Servlet的文件上传
  6. python table_用python解析word文件(二):table
  7. piv图像处理文献综述_图像处理文献综述
  8. python爬取网易云音乐数据
  9. 数据科学、机器学习和数据挖掘的差异
  10. Matlab矩阵操作
  11. 网站建设对企业的好处有哪些?
  12. 生产稳定:JVM-MySQL-Tomcat-服务调用,调优相关
  13. https://blog.csdn.net/qq_43412289
  14. Python:数据类型转换之将Scikit-learn的Bunch数据类型转换为Pandas的DataFrame类型案例及代码实现
  15. win10商店打不开解决办法
  16. websocket 爬虫
  17. 视频文件头解析--mkv
  18. [11.7日学习记录]多目标优化和帕累托最优解集(未完成)
  19. Xshell使用root用户连接kali
  20. 什么是去中心化市场(OpenBazaar)

热门文章

  1. Java、六边形面积
  2. 内存不能为read大全
  3. 115网盘里的资源转存百度网盘
  4. 图解PKCS#1(合)
  5. 工具类 - 思维导图
  6. 找工作必看!!!关于什么叫做三方协议
  7. 如何修改PPT中左下方状态栏的主题名称
  8. 常规创业公司股权分配参考
  9. 语义分割之边缘准确率提升
  10. linux 进程间界面嵌套,WPF 同一窗口内的多线程/多进程 UI(使用 SetParent 嵌入另一个窗口)...