微积分和组合计数

关键词 : 生成函数 微分有限

仅供各位看一看信息学竞赛中的数学技巧。

以下默认求导是对$z$求导,求和符号的上指标默认为$\infty$(或根据语境决定)。

由于时间过于紧张,有问题请下课后问我。

代数幂级数

称一个幂级数$F(x)$在$\mathbf{K}[x]$上是代数的,当且仅当在$\mathbf{K}[x,y]$上存在二元非零多项式$G(x,y)$,使得$G(x,F(x))=0$,也就是$(x,F(x))$是$G$的一个根。这里$\mathbf{K}[x]$是系数在$\mathbf{K}$的多项式组成的环,$\mathbf{K}[x,y]$就是二元多项式。

线性齐次微分方程,微分有限和P-递归

如果一个幂级数满足一个线性齐次微分方程,那么它就是微分有限的,注意微分方程里的系数可以是多项式,而不必是常数。代数幂级数都是微分有限的。

呃你说什么是线性齐次微分方程?线性大家都知道,齐次就是除了$f^{(i)}$的项以外没有别的项了,比如不会有常数或者常多项式。

容易知道所有代数生成函数都是微分有限的,它们的微分方程甚至不需要包含它们的导数。

根据这个微分方程容易推出它系数的递推式,由于求导相当于平移一位再乘上某些系数,这个递推式的形式一定是

$$ p_0(n)f_n+p_1(n)f_{n-1}+...=0 $$

,其中$p_i$是一个多项式,这个形式被称为P-递归。事实上,一个幂级数的系数是P-递归的,当且仅当它微分有限,这是容易理解的。

接下来我们会用到一个超几何函数,超几何函数是一类重要的微分有限生成函数,由于时间关系我们不作过多解释,这里只写出它满足的微分方程。

$$ F(z)=\sum_{i=0}i!z^i\ :\ z^2F^\prime(z)+(z-1)F(z)+1=0 $$

关于微分有限,有以下的封闭性 :

微分有限生成函数之间进行四则运算,结果仍然是微分有限的。

微分有限生成函数复合代数生成函数,结果仍然是微分有限的。

这可以成为我们做一些推导的理论基础。

试看看!例题1.7

计数长为$n$,且没有两个相邻的数在数值上也相邻的排列数量。$n\leq 10^7$,答案对$10^9+7$取模。

题目来源 : 知乎

容斥。钦定$k$个不符合要求的间隔(就是让这些间隔两边的数在数值上相邻),容斥系数就是$(-1)^k$。

然后考虑这样搞的方案数,发现有些钦定的间隔可能造成了一些连续段(呃就是对于每个钦定的间隔,我们把它两边的东西连起来),每一段有两种排法,不过如果长为$1$则只有一种。如果长是$l$,它对容斥系数的贡献是$(-1)^{l-1}$(,这个情况对答案的贡献就是这些东西乘起来)。

考虑这么做 : 我们对于每一段求出它的普通生成函数(OGF),然后直接枚举有多少段,做一个幂来拼接。这个OGF就是 :

$$ T(z)=z+2\sum_{i=2}(-z)^{i-1}=z+2\frac{-z}{1+z}=\frac{z(1-z)}{1+z} $$

至于拼接,我们考虑枚举段数,可以写出

$$ G(z)=\sum_{i=0}i!z^i $$

,这个东西含义是,对于每一段分配一个rank,另外这就是刚才我们说的那个微分有限生成函数,它满足方程

$$ G(z)=\sum_{i=0}i!z^i\ :\ z^2G^\prime(z)+(z-1)G(z)+1=0 $$

直接代入$T$!过程过于繁琐,总之利用复合的求导法则,最后可以得到

$$ F^\prime(z)=\frac{z^2+2z-1}{z^4-2z^3+z^2}\left(\frac{1+z^2}{1+z}F(z)-1\right) $$

先干掉分数,转成看起来可以提取系数的形式,然后直接两边取$[z^n]$,过程也很繁琐故省略 :

$$ \begin{aligned} f_n&=(n+1)f_{n-1}-(n-2)f_{n-2}-(n-5)f_{n-3}\\&+(n-3)f_{n-4}+[n=0]-[n=1]-3[n=2]-[n=3] \end{aligned} $$

这就得到了简单的的递推式。是不是很刺激?

Thanks for Listening!