【组合数学部分笔记】

  1. 扰动法

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

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

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

等比数列求和即可。

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

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

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

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

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

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

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

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

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

二项式系数:

  • 求 (sum_{0leq kleq m}inom{m}{k}/inom{n}{k})

[sum_{0leq kleq m}inom{m}{k}/inom{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!}inom{n-k}{m-k} \ =frac{m!(n-m)!}{n!}sum_{k=0}^minom{n-(m-k)}{k} ]

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

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

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

继续上指标求和。

  • (sum_{kleq n}inom{n-k}{k}(-1)^k)

[sum_{kleq n}inom{n-k}{k}(-1)^k\ =sum_{kleq n}(inom{n-k-1}{k}+inom{n-k-1}{k-1})(-1)^k ]

  • (sum_k inom{n}{k}inom{s}{k}k)

[sum_k inom{n}{k}inom{s}{k}k \ =sum_k sinom{n}{k}inom{s-1}{k-1} \ =ssum_kinom{n}{n-k}inom{s-1}{k-1} \ =sinom{n+s-1}{n-1} ]

  • (sum_{kge 0}inom{n+k}{2k}inom{2k}{k}frac{(-1)^k}{k+1})

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

生成函数:

常见幂级数:

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

定义复合:

[Gcirc F=G(F)=sum_{ige 0}g_iF^i ]

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

复合逆:定义若 (Gcirc 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^Fcdot 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^{0cdots k}(mod x^n))

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

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

展开柿子就可以递推了。

关于 微分有限 的定义:

(F) 满足 ODE :

[sum_{0leq ileq 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) 是代数的 则其复合 (fcirc g) 微分有限。

线性递推

生成函数(解析组合)

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

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

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

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

序列构造 SEQ

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

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

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

注意一些理解:

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

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

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

例子:

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

[T=xfrac{1}{1-T} ]

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

  • 儿子有顺序的多叉树

[T=1+xfrac{1}{1-(T-1)} ]

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

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

  • 括号序列的生成函数

[T=xfrac{1}{1-T}\ ]

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

  • CF755G

(f_{i,j}) 为前 (i) 个球划分了 (j) 组的方案数,对于一个球,我们可以选或不选,选的情况又对应两个一组或者一个一组,设其生成函数为 (F(x,y)=sumsum 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-zfrac{1-z^k}{1-z}} ight) ]

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

幂集

定义:全部子集

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

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

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

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

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

[expleft(sum A_isum_{kge 1}frac{(-1)^{k+1}}{k}z^{ik} ight) ]

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

继续:

[=expleft(sum_{kge 1}frac{(-1)^{k+1}}{k}sum_{i}A_iz^{ki} ight) \ =expleft(sum_{kge 1}frac{(-1)^{k+1}}{k}A(z^k) ight) ]

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

多重集

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

按照上面推:

[F=prod_{ain mathcal{A}}left(frac{1}{1-x^{|a|}} ight) \ =prod_{i=1}^infty left(1-x^i ight)^{-A_i} \ =expleft(sum -A_i-sum_{kge 1}frac{1}{k}x^{ki} ight) \ =expleft(sum_{kge 1}frac{1}{k}sum A_ix^{ki} ight) \ =expleft(sum_{kge 1}frac{1}{k}A(x^k) ight) ]

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

[T=xexp(sum_{kge 1}frac{1}{k}T(x^k)) ]

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

复合

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

例子 CF438E

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

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

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

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

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

EGF

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

对应有标号计数

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

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

集合 (SET)

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

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

所以对应 ( ext{SET(x)}=sum_{ige 0}frac{A^i}{i!}x^i=exp(A))

  • 有标号非空有根树计数

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

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

于是, (T=xexp(T))

  • 错排的 EGF

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

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

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

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

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

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

[T=expleft(frac{1}{1-x}-x ight) ]

  • 有标号连通图计数

考虑有标号图计数。

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

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

  • 有标号仙人掌计数
原文地址:https://www.cnblogs.com/h-lka/p/15181889.html