斯特林数 java实现_斯特林数 - BILL666 - 博客园
第一类斯特林数
定义
\(\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 - 博客园相关推荐
- java 熔断_熔断理解 - THISISPAN - 博客园
服务熔断的理解 服务熔断也称服务隔离,来自于Michael Nygard 的<Release It>中的CircuitBreaker应用模式,Martin Fowler在博文Circuit ...
- java代码画樱花飘落_一行代码引入博客园樱花飘落特效
前言 博客园作为面向大众的博客, 个性新颖可以博得一赞, 简约美观也不失阅读体验, 本文对樱花特效js进行了解读, 发现作者的设计确实秒不可言, 即使没有注释, 思路展示的也很清晰. 那就废话不多说, ...
- 限制会话id服务端不共享_会话控制 - able-woman - 博客园
会话控制是什么? cookie和session都是跟踪整个会话过程的技术手段.而会话,就是用户通过浏览器和服务器的一次通话. 为什么要有会话控制? 因为HTTP协议是无状态的,服务器不知道用户上一次做 ...
- java 粒子滤波_粒子滤波 - gary_123 - 博客园
跟着博主http://blog.csdn.net/heyijia0327/article/details/40899819一起学习 尽管利用高斯逼近能有效解决许多滤波问题,但当滤波分布为多模型或某些状 ...
- 解读java面试_解读王垠博客“一道 Java 面试题”
偶然拜读IT界知名大佬王垠老师的博客,发现一个有意思的题目: 1 //这段代码里面到底哪一行错了?为什么?2 //原文:http://www.yinwang.org/blog-cn/2020/02/1 ...
- 斯特林数 java实现_斯特林数学习笔记
定义 第一类斯特林数\(s(n,m)\)表示把\(n\)个不同元素放到\(m\)个相同圆排列里的方案数. 有转移方程: \[s(n,m)=s(n-1,m-1)+(n-1)\times s(n-1,m) ...
- 对称数java算法_对称数的简单实现
在百度面试题中看到这样一个题,可能比较老套了,这里为了学习,自己写了改写了个简单算法. 我们把一个数字倒着读和原数字相同的数字称之为对称数, (例如1,121,88,8998),不考虑性能,请找出1- ...
- java数字常量_数字常量 - javawebsoa - 博客园
数字常量 shell脚本在默认情况下都是把数字作为10进制数来处理, 除非这个数字采用了特殊的标记或者前缀. 如果数字以0开头的话那么就是8进制数. 如果数字以0x开头的话那么就是16进制数. 如果数 ...
- java原子变量的作用_原子变量 - jock_javaEE - 博客园
一.原子变量的作用:解决并发下多个线程操作共享数据存在,线程安全问题 原子变量 = volatile + CAS算法[又叫无锁机制] 二. 例子 package com.atguigu.juc; im ...
最新文章
- java判断自己活了多少天_用程序计算你活了多少天
- php公告栏系统,PHP系统公告-发送通知给每个人
- web.py 十分钟创建简易博客
- HDOJ(HDU) 1994 利息计算(简单题目)
- Servlet的文件上传
- python table_用python解析word文件(二):table
- piv图像处理文献综述_图像处理文献综述
- python爬取网易云音乐数据
- 数据科学、机器学习和数据挖掘的差异
- Matlab矩阵操作
- 网站建设对企业的好处有哪些?
- 生产稳定:JVM-MySQL-Tomcat-服务调用,调优相关
- https://blog.csdn.net/qq_43412289
- Python:数据类型转换之将Scikit-learn的Bunch数据类型转换为Pandas的DataFrame类型案例及代码实现
- win10商店打不开解决办法
- websocket 爬虫
- 视频文件头解析--mkv
- [11.7日学习记录]多目标优化和帕累托最优解集(未完成)
- Xshell使用root用户连接kali
- 什么是去中心化市场(OpenBazaar)