首页 > 其他分享 >斯特林数学习笔记

斯特林数学习笔记

时间:2023-02-11 08:33:26浏览次数:70  
标签:begin end bmatrix 斯特林 sum 笔记 学习 Bmatrix

斯特林数学习笔记

注:本篇只为作者自己看懂,方便以后复习。

注意:如无特殊说明,以下公式的范围皆为 \(n\ge0\) 且 \(n\) 为整数。

因为我太菜啦,所以很多东西都只有最浅显的部分。

Part 1.定义

斯特林数分为两种,分别是第一类、第二类。其中第二类较为常用。

第二类斯特林数

定义:第二类斯特林数\(\begin{Bmatrix} n \\k \end{Bmatrix}\)表示把 \(n\) 个不同元素划分成 \(m\) 个相同的集合中(不能有空集)的方案数。

通项公式:

1.1 第二类斯特林数通项

\[\begin{Bmatrix}n\\k\end{Bmatrix}=\begin{Bmatrix}n-1\\k-1\end{Bmatrix}+(k-1)\begin{Bmatrix}n-1\\k\end{Bmatrix} \]

推导的话考虑第 \(n\) 个数独立放在新的集合,此时系数为 \(1\)。或者放在新的集合,有 \(k-1\) 种可能。

第一类斯特林数

定义:第一类斯特林数\(\begin{bmatrix}n\\ m\end{bmatrix}\)表示将 \(n\) 个不同元素构成 \(m\) 个轮换的数目。

其中,轮换也可称作原排列,既如果两个排列可以通过旋转相等,那么他们就是相等的。感性理解一下就好。

通项公式:

1.2 第一类斯特林数通项

\[\begin{bmatrix}n\\k\end{bmatrix}=\begin{bmatrix}n-1\\k-1\end{bmatrix}+(n-1)\begin{bmatrix}n-1\\k\end{bmatrix} \]

对比一下的话,发现这两个式子十分的相像。实际上,这两类斯特林数关系非常紧密(不然为啥名字一样呢)

推导的话类似,考虑第 \(n\) 个数。然后插入的话考虑轮换对应排列就差不多。

注意:轮换与排列是双射关系,考虑排列 \(a_i\) 与 \(i\) 连边组成的连通块组成的环即为不同的轮换。


注意,斯特林数通常出现在各种神秘推式子题,所以各种恒等式才是最重要的。

Part 2.恒等式

2.1

\[\sum_{k=0}^n \begin{bmatrix}n\\k\end{bmatrix}=n! \]

轮换与排列双射。

2.2

\[x^n=\sum_{k=0}\begin{Bmatrix}n\\k\end{Bmatrix}x^\underline{k} \]

证明的话考虑有 \(x\) 种颜色,\(n\) 个格子,那么两边的意义都是给 \(n\) 个格子染成 \(x\) 种颜色的方案数。当然,用数学归纳法证明也是可以的。

\(k\) 得有意义范围为 \(\operatorname{min}(n,x)\),因此这个式子常常用来优化一些 \(n\) 很大的问题,把枚举上限优化。

2.3

\[x^\overline{n}=\sum_{k=0}\begin{bmatrix}n\\k\end{bmatrix}x^k \]

\(x^\overline{n}=x(x+1)(x+2)...(x+n-2)(x+n-1)\),然后考虑这个多项式的系数,发现刚好就是第一类斯特林数。证明的话可以归纳法证明,但是我们直接设 dp \(f_{i,j}\) 表示 \([x^j]x^\overline{i}\),然后推一下递推式发现刚好是第一类斯特林数,就证完了。这里感谢码学长教我这个方法。

2.2 和 2.3 两个式子的样子很是相似。实际上,他们也可以作为斯特林数的定义式,人们需要研究上升幂、下降幂以及正常幂运算的关系,然后发现可以用斯特林数来将他们连接起来。

2.4

\[x^n=\sum_{k=0}\begin{Bmatrix}n\\k\end{Bmatrix}(-1)^{n-k}x^\overline{k} \]

这个式子不会,开摆

2.5

\[x^\underline{n}=\sum_{k=0}\begin{bmatrix}n\\k\end{bmatrix}(-1)^{n-k}x^k \]

发现与 2.3 很相似。原因:

\[x^\underline{4}=x(x-1)(x-2)(x-3)=x^4-6x^3+11x^2-6x \]

\[x^\overline{4}=x(x+1)(x+2)(x+3)=x^4+6x^3+11x^2+6x \]

发现相差的只有符号,因此改一下符号即可。

以上四个属于较为常见的。

从通常幂转换到上下降次幂一般用第二类,反之则用第一类。然后从小的转换到大的则需要加符号。

斯特林反演

2.6

\[f(n)=\sum_{k=0}^n\begin{Bmatrix}n\\k\end{Bmatrix}g(k)\Longleftrightarrow g(n)=\sum_{k=0}^n\begin{bmatrix}n\\k\end{bmatrix}(-1)^{n-k}f(k) \]

证明的话参考这个

首先由结论:

2.6.1

\[\sum_{k=0}\begin{Bmatrix}n\\k\end{Bmatrix}\begin{bmatrix}k\\m\end{bmatrix}(-1)^{n-k}=[n=m] \]

证明:

2.6 证明

\[\begin{aligned} f(n)&=\sum_{i=0}^n[i=n]f(i)\\ &=\sum_{i=0}^nf(i)\sum_{j=i}^n\begin{Bmatrix}n\\j\end{Bmatrix}\begin{bmatrix}j\\i\end{bmatrix}(-1)^{n-k}\\ &=\sum_{j=0}^n\begin{Bmatrix}n\\j\end{Bmatrix}\sum_{i=0}^j \begin{bmatrix}j\\i\end{bmatrix}(-1)^{j-i}f(i)\\ &=\sum_{k=0}^n\begin{Bmatrix}n\\k\end{Bmatrix}g(k) \end{aligned} \]

建议不要看这个证明,有错误。只是给我自己看的

Part 3.求法

首先,我们可以 \(O(nk)\) 暴力递推,一些题目是可以的。

但是我们可以在 \(O(n\log n)\) 的复杂度内求出两种斯特林数的某一行、某一列,总共四种算法。

我不会,摆了

标签:begin,end,bmatrix,斯特林,sum,笔记,学习,Bmatrix
From: https://www.cnblogs.com/One-coder/p/17110839.html

相关文章

  • PLC入门笔记5
    定时器指令及其应用定时器指令介绍设备启动预热时间、化学反应时间、电机星三角转换时间?我们需要定时器。PLC计时器指令由时间续电器演变而来。定时器本质是一个输出指......
  • c++学习6 指针变量
    一指针变量的定义*是用来修饰指针变量的,通常情况下我们定义的手法都是“类型名”+“*”+“指针变量名称”。有一种简单无脑的“替换法”,作用是防止小括号遗漏而导致定义出......
  • Python 学习爬虫---更改目录位置以及创建新文件
    学习爬虫第N天 今天想着将爬虫获取到的内容放在桌面,所以去学习了下os的操作。 学习如下:importos,os.path (经常性喜欢将文件放在桌面来查看......
  • 《分布式技术原理与算法解析》学习笔记Day07
    分布式锁什么是分布式锁?为了实现分布式互斥,我们需要在某个地方做个标记,这个标记是每个线程都可以看到,当标记不存在时可以设置该标记,当标记被设置后,其他线程只能等待拥有......
  • Java学习之File类的删除功能
    publicbooleandelete()删除由此抽象路径名表示的文件或目录绝对路径和相对路径的区别绝对路径:完整的路径名,不需要任何其他信息就可以定位它所表示的文件,例如:/Users/St......
  • 我的2022——有点卷、没学习、还羊了
    夜幕下的北京,迎来全新的一年,屏幕前的我,又到了该做年终总结的时候了。MacBook的摄像头像Moss一样,注视着我,注视着红尘。在Moss的眼中,可能所有的悲欢离合都没有什么大不了,世间......
  • 关于顺达react主管笔记之学习之创建表单
    顺达主管86378678是当回事的发挥importLogsfrom"./Components/Logs/Logs";importLogsFormfrom"./Components/LogsForm/LogsForm";import'./App.css';constApp=......
  • python学习——【第六弹】
    前言上篇文章​​python学习——【第五弹】​​中我们了解了python中的不可变序列元组,这篇文章接着介绍可变序列字典和集合。字典字典的实现原理:字典,顾名思义其实现原理和......
  • 学习C++第四天
    操作符算数操作符:+-*/%移位操作符:>><<位操作符:&--按位与^--按位异或|--按位或赋值操作符:=+=-=*=/=&=^=|=......
  • 小梅哥课程学习——(5)(设计一个以不同频率闪烁的4个LED灯,闪烁时间分别位0.1s,0.2s,0.3
    //单个LED灯以一秒闪烁的源代码//利用单个的闪烁源代码,来实例化不同频率闪烁的灯moduleled_run8(clk,reset_n,led);inputclk;inputreset_......