Chapter 1
normal generating function
生成函数的意义
对于一个数列, 例如斐波那契数列, 我们也许没法给出一个较为简便的通项公式, 但我们可以通过生成函数, 用比较简便的公式表达数列的和
比如斐波那契数列的第
求某一项系数
用
我们有两个基本运算法则
one variable
three terms
对于
设
两边同乘
即
所以
令
则可以代入
应用: 样条插值 Spline interpolation
对于
假设在
可以通过
和
找出这样的
不加证明的给出
其中
这个式子可以用上面的
这里
那么
这样我们求出了所有的
two variables
组合数
假设
我们想求出
可以构造
那么原式同乘
得到
所以
现在对于
即
同时, 对上式取
所以
第二类斯特林数 stirling number of the second kind
把
先求递推式
如果最大的元素
如果最大的元素
所以
这样我们可以像上面一样找出
计算
先求第二个式子, 两边同乘
注意边界条件是
所以有
得出
一串连乘的
为了得到
看到右边的
但是这样做只有
所以可以固定这个
就得到
所以
计算
对于
所以由递推式
expotential generating function
对于上面的第二类斯特林数, 如果固定
那么代入上面的第二类斯特林数公式:
对于这样的
可以看到多了一个系数
这种形式的生成函数
普通的
那么我们就可以计算出
注意
所以
由生成函数得到递推式
对于
得到
对于左边, 可以得出
对于右边, 需要将
计算过程略, 我们有:
Chapter 2
形式幂级数
我们可以用形式幂级数及其系数列来研究生成函数
一个形式幂级数长成如下形式
将序列
这样的形式幂级数满足普通的加法, 乘法法则 (对于乘法:
所以构成了一个形式幂级数环
或者说, 定义了下面两种元后, 这样的幂级数构成一个环
0x00 倒数
我们利用乘法法则, 可以得到一个常用的式子:
那么对于幂级数
命题: 形式幂级数
存在倒数当且仅当
假设存在倒数
所以有
同时
所以可以求出所有的
0x01 逆
与倒数不同, 幂级数
我们想要确定何时
具体展开
如果
也就是说,
所以这样的
相反, 如果
所以我们说
命题: 如果
且 , 那么 存在当且仅当 , 即
假设
那么
同时可以发现
计算普通形式幂级数生成函数
0x00 定义
我们说
如果
- ordinary power series generating function = opsgf
0x01 下标迭代
计算
对于
拓展一下, 对于
具体推导略了罢
0x02 系数乘以下标
计算
看到这个
所以对
将算子
例1
对于递推式
右边为
左边对
所以加上
所以
拓展一下, 对于
例2
计算
也就是说, 对于一个关于
例3
计算
对于
所以可以构造
则
但是这个计算过程是否有问题?
我们前面所说的形式幂级数环并没有 “取
所以说, 我们给出一个修正:
如果根据递推式计算形式幂级数后, 发现这个级数收敛到以复平面的某个域为定义域的分析函数上, 那么就可以将这个形式幂级数作为普通分析函数来操作
上面看起来啥也没做, 但其实是必要的
只有这样我们才能严谨地使用我们得出的分析函数来进行求值操作
例4
使用生成函数求
由上面的
所以
评价为多此一举, 但是豪丸
0x03 幂级数相乘
两个幂级数
拓展一下有如下法则:
例5
计算将整数
可以使用
即
每个
注意这是个常用的公式
0x04 前缀和幂级数
根据前面
所以
即
例6 (例4++)
用前缀和的方式求
由
左边等于
并且由
例7
求调和级数
令
例8
利用 Fibonacci 数列性质
左边等于
右边等于
可得
例9
你是一个旅客, 你要往许愿喷泉里 doinb (丢硬币)
一个硬币喷泉, 从下往上放硬币, 每行的硬币都连续; 从第二行开始每个硬币都要与下面两个硬币相邻, 即硬币数不比下面一行多
对于最下面一行
令
如果第二行一个硬币没有, 则方案数为
则有递推式
两边同乘
右边第一项等于
所以有
得到
序列
对, 这是隔项 Fibonacci 数列
练习
证明上面的
数学归纳法
首先
假设
那么由递推式
我们来凑
再凑
以此类推, 最后得到
最后一步是 例8 的那个式子
所以
证毕
用生成函数的方式来做
记
所以可以用
第二个式子得到
代入一式得到
那么
这说明
所以
计算指数形式幂级数生成函数
0x00 定义
用
0x01 下标迭代
所以拓展一下
0x02 系数乘以下标
我们发现对
这与普通生成函数是一样的
所以类似于
0x03 幂级数相乘
对于两个
所以
即
这是很有趣的结果, 两项相乘后为二项展开
同时类似于
例10
对于第一章的 Bell number 递推式:
求指数生成函数
对于递推式同乘
可以得到
例11
括号匹配方案数
设
怎么求递推式呢?
我们发现
如
称第一次闭合组成的串为初级串, 即不能被拆成两个串拼接的串
那么只要知道前
假设一共有
这是因为初级串可以由任意串两端加一个括号组成, 所以方案数恰好等于
那么有递推式
对, 这是 Catalan 数
要想求 ops, 递推式两边乘
左边等于
所以得到
有意思的是这个
将
例12
完全错排
假设完全错排的指数生成函数是
对于全排列
那么两边同乘
所以
求错位级数
有级数
我们可以构造
因为
所以这样的
拓展一下, 我们想求
我们构造单位根
则
符合条件
计算 Dirichlet 幂级数生成函数
定义
为 Dirichlet 幂级数生成函数
(Dirichlet series generating function = Dsgf)
记为
注意是从
0x00 幂级数相乘
即
所以
进一步有
0x01 全 1 系数
对于
具体为
对于两个全
其中
这是个很有趣的公式, 用这样看起来复杂的生成函数表示这样相对简单的函数
0x02 积性函数
如果一个函数满足
就说他是积性函数
并且一个数可以唯一分解成
例如, 我们可以发现上面的
那么, 将积性函数的性质应用到生成函数上
0x03 分解定理
假设 Dsgf 的系数
将右边的式子展开:
如果我们要找出
由于
只需要从一行中挑出对应的
同时, 每个
所以
那么由
0x04 黎曼函数的倒数
我们想求
可以构造积性函数
对于
即只有
进一步, 对于任意的
如果
如果
从这个定义可以看出
事实上它是莫比乌斯函数
那么由
有趣的是, 这恰好是前面
我们可以用这个式子来做莫比乌斯反演
具体地, 已知
我们想求出
那么可以利用
记
所以
展开得到
这就是莫比乌斯反演公式
于是, 黎曼
例13
我们说一个二进制串是原始串, 如果它不能拆成
记
并且长度为
所以有
所以用
- 注意这种将全集表示成子集的和的方法可以用来求出子集中包含的表达式, 上面的完全错排和下面的例子也是这样干的
例14
方程
记
如果这个根
即满足
这样的原始根恰好有
假设这些原始单位根为
那么构造多项式
这个多项式称为分圆多项式
(cyclotimic = circle-cutting)
我们发现
这是因为任意一个单位根
因为记
所以
所以我们接着用
只不过先取对
那么
练习
试着用上面的式子导出:
其中第一个式子可以用来做欧拉反演
事实上由
根据这一数量关系即得
进而对
或者你可以通过
先由
两边同除