并不平凡的生成函数
组合类
- 组合对象指满足某一性质的树、图、串等可数的对象。组合对象组成的集合成为组合类。
我们用 \(\mathcal{ABCDEFGHIJKLMNOPQRSTUVWXYZ}\) 来表示组合类。
我们将大小为 \(n\) 的组合类集合记作 \(\mathcal{A_n}\)
我们的任务很多是求出 \(|\mathcal{A_n}|\)
笛卡尔积
每个集合中各取一个元素形成有序多元组的集合。
记作 \(A \times B\)
我们显然有 \(|A \times B| = |A| \times |B|\)。
我们定义 \(\mathcal{E}=\{\epsilon\}\) 表示一个为空的组合类。我们显然有 \(E(x)=0\)。\(\mathcal{Z}=\{z\}\) 表示一个大小为 \(1\) 的组合类。\(Z(x)=x\)。
01 串
我们发现有 \(S=\mathcal{E}+ \{0,1\} \times S\)
故 \(F(x) = 1 + 2x\times F(x) \to F(x) = \frac{1}{1-2F(x)}\)
卡特兰数
我们发现有 \(S=\mathcal{E}+ S \times \mathcal{Z} \times S\)
故 \(F(x)=1+F(x) \times x \times F(x)\)
等一下我们是不是还没有定义加法。
注意可能有相同的组合对象,所以我们略微操作。
(无标号)经典的组合构造
为了一些必要,略去了一些证明和动机。因为需要熟练的掌握群论,
Sequence 构造
对于 \(\mathcal{F}=\mathcal{E}+\mathcal{A^1}+\mathcal{A^2}+\mathcal{A^3}+\mathcal{A^4}\dotsb\),此时我们定义 \(\mathbf{SEQ}(\mathcal{A}) = \mathcal{F}\)。
显然有 \(F(x) = \frac{1}{1-A(x)}\)。
对于 01 串,我们可以将 \(\mathcal{A} = \{0,1\}\),那们 \(A(x)=2x,F(x)=\frac{1}{1-2x}\)
Multset 构造。
即生成集合构造。
这里的 \(G_A\) 是指的全体置换组成的置换群列。什么意思呢,对于一个 \(\{1,2,3\}\{1,3,2\}\{3,1,2\}\{3,2,1\}\{2,1,3\}\{2,3,1\}\),直接转化成为,转化为字典序不降组合的数目。
我们有 \(\mathcal{B}=\mathbf{MSET}(\mathcal{A})=\prod\limits_{a \in \mathcal{A}} \sum\limits_{k=0} \{a\}^k\)
翻译一下,完全背包。
写出 GF:
我们熟知
有一个惊人的东西
这个东西我们叫做 Euler 变换。
小练习:P4389,loj6268,P5900(有点困难)
Power Set 构造
“生成(无序)幂集构造”为 : \(\mathbf{PSET} = \prod\limits_{a \in \mathcal{A}} (\{\epsilon\} + \{a\})\)
意义很显然,01 背包。
\(\mathcal{B} = \mathbf{PSET}(\mathcal{A}) \to G(x) =\prod_{a \in \mathcal{A}}(1+x^{|a|}) = \prod_{i=0} (1+z^i)^{A[i]}\)
可以使用类似上面的方法计算,这里就贺了一个。

有标号的构造
挂了一个链接,其实差不多,指的一提的是,对于 \(\exp\) 的组合意义的构造叫做 \(\mathbf{SET}\)。
分式域
我们熟知,对于分式\(F(x)\),\(\frac{1}{F(x)}\),不一定是有逆的,即引入负整数次项。对于无法求逆的整式,在分式域中只需适当平移即可转化为常系数非 0 的整式求逆。
拉格朗日反演
若 \(G(F(x))=x\),则 \(F,G\) 互为复合逆。
\(F,G\) 应常系数为 \(0\) 且 \([x^1]\) 系数非 \(0\)。
由此可知
扩展拉格朗日反演
P2767
P2767
不妨直接令 \(n\) 个节点(无标号)的有根 \(m\) 叉树的组合类为 \(\mathcal{T}\)。
则显然有 \(\mathcal{T} = \mathcal{Z} \times (1+\mathcal{T})^m\)。
那我们则有 \(G(x) = x(1+G(x))^m\)。
此时构造复合逆 \(F(x)\),则有 \(F(G(x))=x\)。
所以 \([x^n]G(x) =\frac{1}{n} [x^{n-1}] (\frac{F(x)}{x})^{-n} = \frac{1}{n} [x^{n-1}] (1+x)^{mn} = \frac{1}{n} {nm \choose n-1}\)。
注意模数很小,Lucas 定理即可。
P5828
P5828
设 \(\mathcal{F}\) 为有根连通图,\(\mathcal{G}\) 为有根边双连通图。
考虑直接考虑缩点后的树,钦定一个根,考虑 \(\mathcal{G_i}\) 的贡献。它只能此时每个外部连通块能且只能向根连通块连一条边,少了就会不连通,多了就会产生更大的边双。
此时根连通块一共有 \(i\) 个节点可以连边,外部的每个有根连通块连接到根边双都有 \(i\) 种方法。
应为是结构化,所以不妨令 \(\mathcal{R_i}\) 此时能连为描述某个连通块连到大小为 \(i\) 的根连通块的方案树。
对于一个连通块挂上去的组合类就是 \(\mathcal{R_i} \circ \mathcal{F}\)。
这个时候就是直接算了,可以把每个连通块给拼起来,用结构化的视角来看就是 \(\mathbf{SET}\)。
直接写出 GF:
不妨设 \(H(z) =ze^{F(z)}\), \(F(z) =G(H(z)) \to F(H^{-1}(z)) =G(x),H(H^{-1}(z))=z\)。
所以我们有 \([z^n]G(z) = [z^n] F(H^{-1}(z))= \frac{1}{z}[z^{n-1}]F'(z) (\frac{z}{H(z)})^n\)
所以就有 \([z^n]G(z)=\frac{1}{n}F'(z) e^{-nF(x)}\)。
注意实际上答案还要 \(\times \frac{1}{n}\)。第一步的时候钦定了根。
递推关系:https://zhuanlan.zhihu.com/p/664378069
不知道能不能将。

浙公网安备 33010602011771号