【组合数学部分笔记】

  1. 扰动法

考虑将求和式收尾拆出来并对其和的形式找到对应方程。

  • \(\sum_{0\leq k<n}kr^k\)

\[ S=\sum_{0\leq k<n}kr^k\\ = \sum_{1\leq k\leq n}kr^ k-nr^n\\ = S+\sum_{1\leq k\leq n}r^k -nr^n \]

等比数列求和即可。

  • \(\sum_{0\leq k<n} k^m\)

\[S=\sum_{0\leq k<n}k^m \\ =\sum_{1\leq k\leq n}k^m-n^m \\ =\sum_{0\leq k<n}(k+1)^m-n^m \\ =\sum_{0\leq k<n}\sum_{i=0}^m \binom{m}{i}k^{i}-n^m \\ =\sum_{i=0}^m\binom{m}{i}\sum_{0\leq k<n}k^i-n^m \]

单独计算出 \(i=m\) 的值,往下递归即可。

  • \(\sum_{0\leq k<n}k^m r^k\)

\[S=\sum_{0\leq k<n}k^m r^k \\ =\sum_{1\leq k\leq n}k^mr^k-n^mr^n \\ =\sum_{0\leq k<n}(k+1)^m r^{k+1}-n^mr^n \\ =\sum_{0\leq k<n}\sum_{i=0}^m \binom{m}{i}k^ir^{k+1}-n^mr_n \\ =r\sum_{i=0}^m\binom{m}{i}\sum_{0\leq k<n}k^ir^k-n^mr^n \]

同样手算出来 \(k=m\) 的部分即可暴力递归。

  • \(\sum_{1\leq j<k\leq n}\frac{1}{k-j}\)

换元,用 \(d=k-j,j+d=k\)

\[S=\sum_{1\leq j<k\leq n}\frac{1}{k-j} \\ =\sum_{1\leq j<j+d\leq n}\frac{1}{d} \\ =\sum_{1\leq d\leq n-1}\frac{d-1}{d} \\ =(n-1)\sum_{1\leq d\leq n-1}\frac{1}{d} \]

二项式系数:

  • 求 \(\sum_{0\leq k\leq m}\binom{m}{k}/\binom{n}{k}\)

\[\sum_{0\leq k\leq m}\binom{m}{k}/\binom{n}{k} \\ =\sum_{k=0}^m \frac{m!(n-k)!}{n!(m-k)!} \\ =\sum_{k=0}^m \frac{m!(n-k)!(n-m)!}{n!(m-k)!(n-m)!} \\ =\sum_{k=0}^m \frac{m!(n-m)!}{n!}\binom{n-k}{m-k} \\ =\frac{m!(n-m)!}{n!}\sum_{k=0}^m\binom{n-(m-k)}{k} \]

平行求和得到 \(=\frac{m!(n-m)!}{n!}\binom{n+1}{m}\)

  • \(\sum_{k=0}^n k\binom{m-k-1}{m-n-1}\)

\[\sum_{k=0}^n k\binom{m-k-1}{m-n-1}\\ =\sum_{k=0}^n (m-(m-k)){\binom{m-k-1}{m-n-1}}\\ =\sum_{k=0}^n m\binom{m-k-1}{m-n-1}-(m-k)\binom{m-k-1}{m-n-1}\\ =m\binom{m}{m-n}-\sum_{k=0}^n (m-n)\binom{m-k}{m-n} \]

继续上指标求和。

  • \(\sum_{k\leq n}\binom{n-k}{k}(-1)^k\)

\[\sum_{k\leq n}\binom{n-k}{k}(-1)^k\\ =\sum_{k\leq n}(\binom{n-k-1}{k}+\binom{n-k-1}{k-1})(-1)^k \]

  • \(\sum_k \binom{n}{k}\binom{s}{k}k\)

\[\sum_k \binom{n}{k}\binom{s}{k}k \\ =\sum_k s\binom{n}{k}\binom{s-1}{k-1} \\ =s\sum_k\binom{n}{n-k}\binom{s-1}{k-1} \\ =s\binom{n+s-1}{n-1} \]

  • \(\sum_{k\ge 0}\binom{n+k}{2k}\binom{2k}{k}\frac{(-1)^k}{k+1}\)

\[\sum_{k\ge 0}\binom{n+k}{2k}\binom{2k}{k}\frac{(-1)^k}{k+1}\\ =\sum_{k\ge 0}\binom{n+k}{k}\binom{n}{k}\frac{(-1)^k}{k+1}\\ =\frac{1}{n+1}\sum_{k\ge 0}\binom{n+k}{k}\binom{n+1}{k+1}(-1)^k\\ =\frac{1}{n+1}\sum_{k\ge 0}\binom{-n-1}{k}\binom{n+1}{k+1}\\ =\frac{1}{n+1}\binom{0}{-n}=[n=0] \]

生成函数:

常见幂级数:

\[\sum_{i\ge 0}\binom{i+k-1}{i}x^i=\frac{1}{(1-x)^k} \\ \ln \frac{1}{1-x}=\sum_{i\ge 1}\frac{x^i}{i} \\ e^x=\sum_{i\ge 0}\frac{x^i}{i!} \]

定义复合:

\[G\circ F=G(F)=\sum_{i\ge 0}g_iF^i \]

\([z^0]F\not =0,\) 只有 \(G\) 有限才可以定义。

复合逆:定义若 \(G\circ F=x,\)\(G\)\(x\) 的左复合逆。同样定义右逆。

\(F\) 常数项是 \(0\)\(1\) 次项为 \(1\) 则可以证明左右逆存在并相等。

求复合逆:拉格朗日反演。只能求单项。

给出两个反演柿子:

\[[x^n]F^{-1}\frac{1}{n}[x^{n-1}](\frac{x}{F})^n \]

\[[x^n]H(F^{-1})=\frac{1}{n}[x^{n-1}]H'(\frac{x}{F})^n \]

证明:待补

多项式除法:考虑做带余除法求出其商式和余式。

\[A(x)\equiv Q(x)B(x)+R(x) \]

其中 \(A,B\) 已知。

带入 \(x=x^{-1},\) 并两边同时乘以 \(x^n\)

\[A^{rev}(x)\equiv B^{rev}(x)Q^{rev}(x)+x^{n-m+1}R^{rev}(x) \]

两边对 \(x^{n-m+1}\) 取模。由于 \(deg(Q)=n-m\) 所以上述柿子对 \(Q\) 保留信息完整,直接求逆即可。

ODE(常微分方程):

考虑计算一个复合 \(h(F)\) 的情况,可以求导构造方程。

例子:求 \(G(F)=e^{F}\)

考虑 \(G'=e^F\cdot F'=GF'\) 这里的右边就不再是复合而是卷积了。考虑对比系数有

\[(n+1)g_{n+1}=\sum_{i=0}^n (i+1)f_{i+1}g_{n-i} \]

就可以分治 NTT 了。

还有一些应用的例子:如求 \((1+x+x^2)^k\) 求导之后可以线性计算。

还有:求 \(F=\sum_{i=0}^m \frac{x^i}{i!}\)\(F^{0\cdots k}(\bmod x^n)\)

考虑求导 \(F'(x)=F-\frac{x^m}{m!},\) 故而有:

\[(F^k)'=kF^{k-1}\cdot (F-\frac{x^m}{m!}) \]

展开柿子就可以递推了。

关于 微分有限 的定义:

\(F\) 满足 ODE :

\[\sum_{0\leq i\leq k}p_i(x)F^{(i)}=0 \]

则称其为 微分有限。

\(p_i\)\(O(1)\) 次多项式, \(k=O(1),\) 就可以 \(O(\sqrt{n}\log n)\) 计算 \([x^n]F\) 或者 \(O(n)\) 计算前 \(n\) 项。

一些微分有限的函数: \(x^{\alpha},\ln x,e^x,\) 超几何级数。

\(f,g\) 微分有限,则其和、卷积都微分有限。

\(f\) 微分有限,\(g\) 是代数的 则其复合 \(f\circ g\) 微分有限。

线性递推

生成函数(解析组合)

组合类:定义一个组合类 \(\mathcal{A}\) 是一个有限集或可数集。对每一个元素又有一个大小 \(|\alpha|\) 的定义。其非负且个数有限。

对应生成函数 \(\mathcal{A}(x)=\sum_{\alpha \in \mathcal{A}} x^{|\alpha|}\)

这个地方是加法的形式。这里实际上是对上述所有情况求的并。

乘法(笛卡尔积) 对应于其元素大小相加。用乘法刻画

序列构造 SEQ

对于一个可数集 \(\mathcal{A},\) 其序列构造的生成函数为:

\[\{\}+\mathcal{A}+\mathcal{A}\times\mathcal{A}+\cdots\\ =\frac{1}{1-\mathcal{A}} \]

注意:这里是把 整个组合集 的所有组合进行了序列构造。

注意一些理解:

SEQ 对应于 拼接组合对象的 顺序

意为:对于每一个组合对象都表示了一个固定位置的对象拼接。

比如对于 \(d\) 叉树的子树组合,对应乘起来的第 \(i\) 个就是第 \(i\) 棵子树的组合对象。

例子:

  • 儿子有顺序的非空多叉树

\[T=x\frac{1}{1-T} \]

含义:选择一个根,然后拼儿子

  • 儿子有顺序的多叉树

\[T=1+x\frac{1}{1-(T-1)} \]

含义:同上,注意其非空的时候拼上的儿子。

儿子不能是空的含义:由于本身 \(T-1\) 的生成函数中就可以选择空了,所以只要拼接就必须拼上非空的儿子

  • 括号序列的生成函数

\[T=x\frac{1}{1-T}\\ \]

这里和上述非空儿子有顺序多叉树的生成函数一样。

  • CF755G

\(f_{i,j}\) 为前 \(i\) 个球划分了 \(j\) 组的方案数,对于一个球,我们可以选或不选,选的情况又对应两个一组或者一个一组,设其生成函数为 \(F(x,y)=\sum\sum f_{i,j}x^iy^j,\) 答案就是 \([x^ny^k]F(x,y)\)

考虑应用 SEQ的含义,简记上述生成函数为 \(F,\) 则有:

\[F=\frac{1}{1-(x+xy+xy^2)} \]

其中,\(x\) 计量前多少个球,\(y\) 计量划分成几组。

那么其组合意义可以解释为:如果 \(x\) 没有被选择,那当前 \(F\) 中所有 \(y\) 项不变;如果它被单独划分为一组,那所有 \(y\) 都会平移一位;而如果它和它前一个球一起被划分成一组,那 \(y\) 就需要平移两个位置了。或者说对应那个位置的点值由这一位转移过去。

  • 求 01 序列,\(0\) 的连续段长度 \(\leq k-1\) 的方案数。

考虑对本质进行划分,其必然可以表示为一个 \(1\) 后面拼接若干不超过 \(k-1\)\(0,\) 但其开头可以是不超过 \(k-1\)\(0.\) 记录一个单位长度\(Z,\) 则其生成函数为:

\[F=\frac{1-z^k}{1-z}\cdot \left( \frac{1}{1-z\frac{1-z^k}{1-z}}\right) \]

括号前面是考虑拼接了几个 \(0,\) 后面是考虑拼接了多少段 \(1000\cdots\)

幂集

定义:全部子集

对于组合类 \(\mathcal{A},\) 其幂集组合类记为 \(\text{PSET}(\mathcal{A})\)

考虑枚举每一个元素是否存在,则容易得到:

\[F(\mathcal{A})=\prod_{\alpha\in \mathcal{A}}(1+z^{|\alpha|}) \]

意义很简单,就是不选对应 \(1,\) 选就对应其元素大小,然后乘在一起。

那么就可以对其取 \(\ln\) 再逆回去:

\[\exp\left(\sum A_i\sum_{k\ge 1}\frac{(-1)^{k+1}}{k}z^{ik}\right) \]

其中 \(i\) 是元素大小,\(A_i\) 是大小为 \(i\) 的元素有多少个。

继续:

\[=\exp\left(\sum_{k\ge 1}\frac{(-1)^{k+1}}{k}\sum_{i}A_iz^{ki}\right) \\ =\exp\left(\sum_{k\ge 1}\frac{(-1)^{k+1}}{k}A(z^k)\right) \]

其中 \(A(z)\)\(A_i\) 的生成函数。

多重集

实际上就是上述幂集每一个元素不再只是选或不选了,变成可以选择无数个了。也就自成了 SEQ 对应每一个位置有序

按照上面推:

\[F=\prod_{a\in \mathcal{A}}\left(\frac{1}{1-x^{|a|}}\right) \\ =\prod_{i=1}^\infty \left(1-x^i\right)^{-A_i} \\ =\exp\left(\sum -A_i-\sum_{k\ge 1}\frac{1}{k}x^{ki}\right) \\ =\exp\left(\sum_{k\ge 1}\frac{1}{k}\sum A_ix^{ki}\right) \\ =\exp\left(\sum_{k\ge 1}\frac{1}{k}A(x^k)\right) \]

  • 非空无标号有根树生成函数

\[T=x\exp(\sum_{k\ge 1}\frac{1}{k}T(x^k)) \]

组合意义:考虑先上一个根,然后观察其儿子特点,其儿子的数目不限,大小也不限。那么 \(T\) 本质上对于节点数为 \(i\) 的非空无标号有根树计数,那我直接将 \(T\) 进行 \(\text{MSET}\) 即多重集选取即可。这里也注意一下儿子没有顺序,所以子树大小也是没有顺序的,直接按从小到大选择即可,对应了上述的 多重集。

复合

考虑两个组合类复合的意义 \(A\circ B\),实际就是把 \(A\) 的元素的单位大小替换为 \(B.\)

例子 CF438E

考虑有根无标号二叉树区分左右儿子的生成函数:

\[T=1+TxT=T^2x+1 \]

那么现在考虑对单点进行复合权值的操作,其对应生成函数为:

\[W(x)=\sum_{1\leq i\leq n}x^{c_i} \]

然后求 \(T(W(x))\) 即可。

EGF

这样表示实际上是为了把二项卷积变成普通卷积

对应有标号计数

通常有标号计数都比无标号简单,因为有标号没有那么多等价类需要判重

它的运算对应:\(\text{SET}\)

集合 \(SET\)

考虑把一个有标号组合类组合成大小不定集合的方案数。注意这里是集合,考虑先用 \(\text{SEQ}\) 运算组合后去重。

观察到,\(\text{SEQ}\) 组合实际上是对应一个大小为 \(L\) 的集合算了 \(L!\) 遍,实际上集合只能算一遍。因为 \(\text{SEQ}\) 对应顺序计数,在有标号情况下其对应计算了所有的排列可能。

所以对应 \(\text{SET(x)}=\sum_{i\ge 0}\frac{A^i}{i!}x^i=\exp(A)\)

  • 有标号非空有根树计数

考虑把一个根塞到一堆有根非空有标号森林里面形成一棵树。

那么,森林计数就是相当于求了 \(T\) 的一个集合。注意 \(\text{SET}\) 运算也对应着 有标号

于是, \(T=x\exp(T)\)

  • 错排的 EGF

考虑错排本质如何划分:其对应了若干置换环。

注意错排本身是带标号的。

那么错排本质就是找一堆环组成排列,并且环的大小至少为 \(2.\)

考虑关于环大小的 \(EGF:\)

\[F(x)=\sum \frac{(n-1)!}{n!}x^n=\frac{1}{1-x} \]

接下来考虑关于错排的组合:实际上是所有大小非 \(1\) 的环的组合,即

\[T=\exp\left(\frac{1}{1-x}-x\right) \]

  • 有标号连通图计数

考虑有标号图计数。

\[F(x)=\sum_{i=0}^\infty 2^{\binom{\frac{i(i-1)}{2}}{i}}x^i \]

图是由许多连通图组合而成的,对上式取 \(\ln\) 即可。

  • 有标号仙人掌计数
posted @ 2021-08-24 19:43  Refined_heart  阅读(139)  评论(0编辑  收藏  举报