符号化方法
符号化方法(symbolic method)是将组合对象快速转换成生成函数的一种方法,我们将考虑对于集合上定义的特定运算,然后导出其对应的生成函数的运算。
我们称一个组合类(或简称为类)为 (A,| ⋅|) ,其中 A
,其中 A 为组合对象的集合,函数 | ⋅|
 为组合对象的集合,函数 | ⋅| 将每一个组合对象映射为一个非负整数,一般称为大小函数。需要注意的是这个非负整数不能是无限大的。例如对于字符集为 {0,1}
 将每一个组合对象映射为一个非负整数,一般称为大小函数。需要注意的是这个非负整数不能是无限大的。例如对于字符集为 {0,1} 的字符串,可以将字符串的长度设置为其大小函数;对于树或图可将节点的数量设置为其大小函数,注意这并非绝对,也可能将某些特定节点的大小函数设置为 0
 的字符串,可以将字符串的长度设置为其大小函数;对于树或图可将节点的数量设置为其大小函数,注意这并非绝对,也可能将某些特定节点的大小函数设置为 0 等。
 等。
本文是基于 Analytic Combinatorics 一书第一章的简化。
无标号体系
在无标号体系中将使用普通生成函数(OGF)。对于集合 A 其对应 OGF 记为
 其对应 OGF 记为
𝐴(𝑧)=∑𝛼∈A𝑧|𝛼|=∑𝑛≥0𝑎𝑛𝑧𝑛
我们约定使用同一组的字母表示同一个类对应的生成函数等,例如用 𝑎𝑛 表示 [𝑧𝑛]𝐴(𝑧)
 表示 [𝑧𝑛]𝐴(𝑧) 即 𝐴(𝑧)
 即 𝐴(𝑧) 中 𝑧𝑛
 中 𝑧𝑛 的系数,用 A𝑛
 的系数,用 A𝑛 表示 A
 表示 A 中大小函数为 𝑛
 中大小函数为 𝑛 的对象的集合(所以 𝑎𝑛 =card(A𝑛)
 的对象的集合(所以 𝑎𝑛 =card(A𝑛) 其中 card
 其中 card 为基数(cardinality))。
 为基数(cardinality))。
本文将不讨论可容许性(admissibility),读者可参考文献中的内容。
下面将引入两种特殊的组合类和组合对象:
- 记 𝜖 为中性对象(neutral object)和 E ={𝜖} 为中性对象(neutral object)和 E ={𝜖} 为中性类(neutral class),中性对象的大小为 0 为中性类(neutral class),中性对象的大小为 0 ,中性类的 OGF 为 𝐸(𝑧) =1 ,中性类的 OGF 为 𝐸(𝑧) =1 。 。
- 记 ∘ 或 ∙ 或 ∙ 为原子对象(atom object)和 Z∘ ={ ∘} 为原子对象(atom object)和 Z∘ ={ ∘} 或 Z∙ ={ ∙} 或 Z∙ ={ ∙} 或简写为 Z 或简写为 Z 为原子类(atom class),原子对象的大小为 1 为原子类(atom class),原子对象的大小为 1 ,原子类的 OGF 为 𝑍(𝑧) =𝑧 ,原子类的 OGF 为 𝑍(𝑧) =𝑧 。 。
对于两个组合类 A 和 B
 和 B 在组合意义上同构记为 A =B
 在组合意义上同构记为 A =B 或 A ≅B
 或 A ≅B ,但仅当该同构不平凡时才使用后者的记号。
,但仅当该同构不平凡时才使用后者的记号。
我们有
A≅E×A≅A×E
其中 × 为二元运算,表示集合的笛卡尔积。
 为二元运算,表示集合的笛卡尔积。
集合的(不相交)并构造
对于类 A 和 B
 和 B 的并记为
 的并记为
A+B=(E1×A)+(E2×B)
如此定义可以不违背集合论中集合不相交的要求,我们可以想象成将 A 中的对象染色成红色,将 B
 中的对象染色成红色,将 B 中的对象染色成蓝色。
 中的对象染色成蓝色。
对应 OGF 为
𝐴(𝑧)+𝐵(𝑧)
考虑
𝐴(𝑧)+𝐵(𝑧)=∑𝛼∈A𝑧|𝛼|+∑𝛽∈B𝑧|𝛽|=∑𝑛≥0(𝑎𝑛+𝑏𝑛)𝑧𝑛
对应形式幂级数的加法。
集合的笛卡尔积构造
对于类 A 和 B
 和 B 的笛卡尔积记为
 的笛卡尔积记为
A×B={(𝛼,𝛽)∣𝛼∈A,𝛽∈B}
对应 OGF 为
𝐴(𝑧)⋅𝐵(𝑧)
我们定义 (𝛼,𝛽) 的大小为其组成部分的大小之和,那么显然也有
 的大小为其组成部分的大小之和,那么显然也有
𝛾=(𝛼1,𝛼2,…,𝛼𝑛)⟹|𝛾|=|𝛼1|+|𝛼2|+⋯+|𝛼𝑛|
所以
𝐴(𝑧)⋅𝐵(𝑧)=(∑𝛼∈A𝑧|𝛼|)(∑𝛽∈B𝑧|𝛽|)=∑(𝛼,𝛽)∈(A×B)𝑧|𝛼|+|𝛽|=∑𝑛≥0∑𝑖+𝑗=𝑛𝑎𝑖𝑏𝑗𝑧𝑛
对应形式幂级数的乘法。
集合的 Sequence 构造
Sequence 构造生成了所有可能的组合。
例
 SEQ({𝑎})={𝜖}+{𝑎}+{(𝑎,𝑎)}+{(𝑎,𝑎,𝑎)}+⋯SEQ({𝑎,𝑏})={𝜖}+{𝑎,𝑏}+{(𝑎,𝑏)}+{(𝑏,𝑎)}+{(𝑎,𝑎)}+{(𝑏,𝑏)}+{(𝑎,𝑏,𝑎)}+{(𝑎,𝑏,𝑏)}+{(𝑎,𝑎,𝑏)}+{(𝑏,𝑏,𝑎)}+{(𝑏,𝑎,𝑏)}+{(𝑏,𝑏,𝑏)}+{(𝑎,𝑎,𝑎)}+{(𝑏,𝑎,𝑎)}+⋯ 
 可以看到 {(𝑎,𝑏)},{(𝑏,𝑎)} 这样组成部分的顺序不同的元素被生成了,可以认为 Sequence 构造生成了有序的组合。
 这样组成部分的顺序不同的元素被生成了,可以认为 Sequence 构造生成了有序的组合。
我们定义
SEQ(A)=E+A+(A×A)+(A×A×A)+⋯
且要求 A0 =∅ ,也就是 A
,也就是 A 中没有大小为 0
 中没有大小为 0 的对象。
 的对象。
对应 OGF 为
𝑄(𝐴(𝑧))=1+𝐴(𝑧)+𝐴(𝑧)2+𝐴(𝑧)3+⋯=11−𝐴(𝑧)
其中 𝑄 为 Pólya 准逆(quasi-inversion)。
 为 Pólya 准逆(quasi-inversion)。
例:有序有根树(ordered rooted tree)
 我们可以使用 Sequence 构造来定义有序有根树,即孩子之间的顺序有意义的有根树,设该组合类为 T 那么一棵树为一个根节点和树的 Sequence,即
 那么一棵树为一个根节点和树的 Sequence,即
 T={∙}×SEQ(T) 
 对应 OGF 为
 𝑇(𝑧)=𝑧1−𝑇(𝑧) 
 前几项系数为 0 1 1 2 5 14 42 132 429 1430 4862 16796,忽略常数项即 OEIS A000108。
集合的 Multiset 构造
Multiset 构造生成了所有可能的组合,但不区分组成部分的元素之间的顺序。
例
 MSET({𝑎})={𝜖}+{𝑎}+{(𝑎,𝑎)}+{(𝑎,𝑎,𝑎)}+⋯MSET({𝑎,𝑏})={𝜖}+{𝑎}+{(𝑎,𝑎)}+{(𝑎,𝑎,𝑎)}+⋯+{𝑏}+{(𝑎,𝑏)}+{(𝑎,𝑎,𝑏)}+⋯+{(𝑏,𝑏)}+{(𝑎,𝑏,𝑏)}+{(𝑎,𝑎,𝑏,𝑏)}+⋯+⋯ 
 注意到 {(𝑏,𝑎)},{(𝑎,𝑏,𝑎)} 在 SEQ({𝑎,𝑏})
 在 SEQ({𝑎,𝑏}) 中出现,但在 MSET({𝑎,𝑏})
 中出现,但在 MSET({𝑎,𝑏}) 没有出现,可以认为 Multiset 生成了无序的组合。
 没有出现,可以认为 Multiset 生成了无序的组合。
我们定义其递推式为
MSET({𝛼0,𝛼1,…,𝛼𝑛})=MSET({𝛼0,𝛼1,…,𝛼𝑛−1})×SEQ({𝛼𝑛})
即
MSET(A)=∏𝛼∈ASEQ({𝛼})
且要求 A0 =∅ 。或者也可以给出等价的
。或者也可以给出等价的
MSET(A)=SEQ(A)/𝐑
其中 𝐑 为等价关系,我们说 (𝛼1,…,𝛼𝑛)𝐑(𝛽1,…,𝛽𝑛)
 为等价关系,我们说 (𝛼1,…,𝛼𝑛)𝐑(𝛽1,…,𝛽𝑛) 当且仅当存在任一置换 𝜎
 当且仅当存在任一置换 𝜎 对于所有 𝑗
 对于所有 𝑗 满足 𝛽𝑗 =𝛼𝜎(𝑗)
 满足 𝛽𝑗 =𝛼𝜎(𝑗) 。
。
对应 OGF 为
Exp(𝐴(𝑧))=∏𝛼∈A(1−𝑧|𝛼|)−1=∏𝑛≥1(1−𝑧𝑛)−𝑎𝑛
注意到
ln(1+𝑧)=𝑧1−𝑧22+𝑧33−⋯=∑𝑛≥1(−1)𝑛−1𝑧𝑛𝑛
且 𝐴(𝑧) =exp(ln(𝐴(𝑧))) 所以
 所以
Exp(𝐴(𝑧))=exp(∑𝑛≥1−𝑎𝑛⋅ln(1−𝑧𝑛))=exp(∑𝑛≥1−𝑎𝑛⋅∑𝑚≥1−𝑧𝑛𝑚𝑚)=exp(𝐴(𝑧)1+𝐴(𝑧2)2+𝐴(𝑧3)3+⋯)
其中 Exp 为 Pólya 指数,也被称为 Euler 变换。
 为 Pólya 指数,也被称为 Euler 变换。
例题 LOJ 6268. 分拆数
 题意:令 𝑓(𝑛) 表示将 𝑛
 表示将 𝑛 进行分拆的方案数,求 𝑓(1),𝑓(2),…,𝑓(105)
 进行分拆的方案数,求 𝑓(1),𝑓(2),…,𝑓(105) 对 998244353
 对 998244353 取模的值。
 取模的值。
 解:设全体正整数类为 I ,那么 I =SEQ≥1(Z) =Z ×SEQ(Z)
,那么 I =SEQ≥1(Z) =Z ×SEQ(Z) (下标 ≥1
(下标 ≥1 为有限制的构造,见后文)。所求即
 为有限制的构造,见后文)。所求即
 MSET(I) 
 对应 OGF 前几项系数为 1 2 3 5 7 11 15 22 30 42(忽略常数项)即 OEIS A000041。
例题 洛谷 P4389 付公主的背包
 题意:给出 𝑛 种体积分别为 𝑣1,…,𝑣𝑛
 种体积分别为 𝑣1,…,𝑣𝑛 的商品和正整数 𝑚
 的商品和正整数 𝑚 ,求体积为 1,2,…,𝑚
,求体积为 1,2,…,𝑚 的背包装满的方案数(商品数量不限,有同体积的不同种商品)对 998244353
 的背包装满的方案数(商品数量不限,有同体积的不同种商品)对 998244353 取模的值。约定 1 ≤𝑛,𝑚 ≤105
 取模的值。约定 1 ≤𝑛,𝑚 ≤105 且 1 ≤𝑣𝑖 ≤𝑚
 且 1 ≤𝑣𝑖 ≤𝑚 。
。
 解:设商品的组合类为 A ,所求即 MSET(A)
,所求即 MSET(A) 对应 OGF 的系数。
 对应 OGF 的系数。
例题 洛谷 P5900 无标号无根树计数
 题意:求出 𝑛 个节点的无标号无根树的个数对 998244353
 个节点的无标号无根树的个数对 998244353 取模的值。约定 1 ≤𝑛 ≤2 ×105
 取模的值。约定 1 ≤𝑛 ≤2 ×105 。
。
 解:设无标号有根树的组合类为 T ,那么
,那么
 T={∙}×MSET(T) 
 根据 Richard Otter 的论文 The Number of Trees 中的描述,对应无根树的 OGF 为
 𝑇(𝑧)−12𝑇2(𝑧)+12𝑇(𝑧2) 
 前几项系数为 1 1 1 2 3 6 11 23 47 106(忽略常数项)即 OEIS A000055。
集合的 Powerset 构造
Powerset 构造生成了所有子集。
例
 PSET({𝑎})={𝜖}+{𝑎}PSET({𝑎,𝑏})={𝜖}+{𝑎}+{𝑏}+{(𝑎,𝑏)}PSET({𝑎,𝑏,𝑐})={𝜖}+{𝑎}+{𝑏}+{(𝑎,𝑏)}+{𝑐}+{(𝑎,𝑐)}+{(𝑏,𝑐)}+{(𝑎,𝑏,𝑐)}
我们定义其递推式为
PSET({𝛼0,𝛼1,…,𝛼𝑛})=PSET({𝛼0,𝛼1,…,𝛼𝑛−1})×({𝜖}+{𝛼𝑛})
即
PSET(A)≅∏𝛼∈A({𝜖}+{𝛼})
且要求 A0 =∅ 。
。
对应 OGF 为
―――Exp(𝐴(𝑧))=∏𝛼∈A(1+𝑧|𝛼|)=∏𝑛≥1(1+𝑧𝑛)𝑎𝑛=exp(∑𝑛≥1𝑎𝑛⋅ln(1+𝑧𝑛))=exp(∑𝑛≥1𝑎𝑛⋅∑𝑚≥1(−1)𝑚−1𝑧𝑛𝑚𝑚)=exp(𝐴(𝑧)1−𝐴(𝑧2)2+𝐴(𝑧3)3−⋯)
其中 ―――Exp 为 Pólya 指数·改。
 为 Pólya 指数·改。
容易发现 PSET(A) ⊂MSET(A) 。
。
集合的 Cycle 构造
Cycle 构造生成了所有可能的组合,但不区分仅轮换不同的组合。
我们定义为
CYC(A)=(SEQ(A)∖{𝜖})/𝐒
其中 𝐒 为等价关系,我们说 (𝛼1,…,𝛼𝑛)𝐒(𝛽1,…,𝛽𝑛)
 为等价关系,我们说 (𝛼1,…,𝛼𝑛)𝐒(𝛽1,…,𝛽𝑛) 当且仅当存在任一循环移位 𝜏
 当且仅当存在任一循环移位 𝜏 对于所有 𝑗
 对于所有 𝑗 都满足 𝛽𝑗 =𝛼𝜏(𝑗)
 都满足 𝛽𝑗 =𝛼𝜏(𝑗) 。
。
例
 为了简便我们令 𝚊,𝚋 均为大小为 1
 均为大小为 1 的字符,这里仅列举大小为 3
 的字符,这里仅列举大小为 3 和 4
 和 4 的字符串:
 的字符串:
 CYC({𝚊,𝚋})3={𝚊𝚊𝚊}+{𝚊𝚊𝚋}+{𝚊𝚋𝚋}+{𝚋𝚋𝚋} 
 其中 𝚊𝚊𝚋𝐒𝚋𝚊𝚊𝐒𝚊𝚋𝚊 只保留其一,同样的 𝚊𝚋𝚋𝐒𝚋𝚊𝚋𝐒𝚋𝚋𝚊
 只保留其一,同样的 𝚊𝚋𝚋𝐒𝚋𝚊𝚋𝐒𝚋𝚋𝚊 只保留其一。
 只保留其一。
 CYC({𝚊,𝚋})4={𝚊𝚊𝚊𝚊}+{𝚊𝚊𝚊𝚋}+{𝚊𝚊𝚋𝚋}+{𝚊𝚋𝚋𝚋}+{𝚋𝚋𝚋𝚋}+{𝚊𝚋𝚊𝚋} 
 其中 𝚊𝚊𝚊𝚋𝐒𝚋𝚊𝚊𝚊𝐒𝚊𝚋𝚊𝚊𝐒𝚊𝚊𝚋𝚊 ,𝚊𝚊𝚋𝚋𝐒𝚋𝚊𝚊𝚋𝐒𝚋𝚋𝚊𝚊𝐒𝚊𝚋𝚋𝚊
,𝚊𝚊𝚋𝚋𝐒𝚋𝚊𝚊𝚋𝐒𝚋𝚋𝚊𝚊𝐒𝚊𝚋𝚋𝚊 ,𝚊𝚋𝚋𝚋𝐒𝚋𝚊𝚋𝚋𝐒𝚋𝚋𝚊𝚋𝐒𝚋𝚋𝚋𝚊
,𝚊𝚋𝚋𝚋𝐒𝚋𝚊𝚋𝚋𝐒𝚋𝚋𝚊𝚋𝐒𝚋𝚋𝚋𝚊 和 𝚊𝚋𝚊𝚋𝐒𝚋𝚊𝚋𝚊
 和 𝚊𝚋𝚊𝚋𝐒𝚋𝚊𝚋𝚊 。
。
对应 OGF 为
Log(𝐴(𝑧))=∑𝑛≥1𝜑(𝑛)𝑛ln11−𝐴(𝑧𝑛)
其中 𝜑 为 Euler 函数,Log
 为 Euler 函数,Log 为 Pólya 对数。
 为 Pólya 对数。
由于证明较复杂,读者可参考 Flajolet 的论文 The Cycle Construction 或 Analytic Combinatorics 的附录。
有限制的构造
对于上述所有构造,我们都没有限制其「组成部分」的个数,若在 SEQ 的下标给一个作用于整数的谓词用于约束其组成部分,如
 的下标给一个作用于整数的谓词用于约束其组成部分,如
SEQ=𝑘(B),SEQ≥𝑘(B),SEQ1..𝑘(B)
其中 SEQ=𝑘(B) 也常简写为 SEQ𝑘(B)
 也常简写为 SEQ𝑘(B) ,SEQ1..𝑘(B)
,SEQ1..𝑘(B) 表示在区间 [1..𝑘]
 表示在区间 [1..𝑘] 上。
 上。
令 𝔎 为任意上述 SEQ,PSET,MSET,CYC
 为任意上述 SEQ,PSET,MSET,CYC 之一,以及
 之一,以及
A=𝔎𝑘(B)
即我们需要对于 𝛼 ∈A 有
 有
𝛼={(𝛽1,𝛽2,…,𝛽𝑘)∣𝛽∈B}
设 𝜒 函数作用于组合对象上为其组成部分的个数,也就是要令 𝜒(𝛼) =𝑘
 函数作用于组合对象上为其组成部分的个数,也就是要令 𝜒(𝛼) =𝑘 ,不妨增加一元来「跟踪」组成部分的个数。
,不妨增加一元来「跟踪」组成部分的个数。
令
𝐴𝑛,𝑘=card{𝛼∈A∣|𝛼|=𝑛,𝜒(𝛼)=𝑘}
那么
𝐴(𝑧,𝑢)=∑𝑛,𝑘𝐴𝑛,𝑘𝑢𝑘𝑧𝑛=∑𝛼∈A𝑧|𝛼|𝑢𝜒(𝛼)
然后我们只要提取出 𝑢𝑘 的系数即可获得对应表达式,例如 A =SEQ𝑘(B)
 的系数即可获得对应表达式,例如 A =SEQ𝑘(B) 可直接导出
 可直接导出
𝐴(𝑧,𝑢)=∑𝑘≥0𝑢𝑘𝐵(𝑧)𝑘=11−𝑢𝐵(𝑧)⟹𝐴(𝑧)=𝐵(𝑧)𝑘
显然也有
A=SEQ≥𝑘(B)⟹𝐴(𝑧)=𝐵(𝑧)𝑘1−𝐵(𝑧)
而对于 MSET𝑘(B) 和 PSET𝑘(B)
 和 PSET𝑘(B) 已经有
 已经有
𝐴(𝑧,𝑢)=∏𝑛(1−𝑢𝑧𝑛)−𝑏𝑛⟹𝐴(𝑧)=[𝑢𝑘]exp(𝑢1𝐵(𝑧)+𝑢22𝐵(𝑧2)+𝑢33𝐵(𝑧3)+⋯)
和
𝐴(𝑧,𝑢)=∏𝑛(1+𝑢𝑧𝑛)𝑏𝑛⟹𝐴(𝑧)=[𝑢𝑘]exp(𝑢1𝐵(𝑧)−𝑢22𝐵(𝑧2)+𝑢33𝐵(𝑧3)−⋯)
对于 CYC𝑘(B) 同理。
 同理。
使用上式计算 MSET3(B) 和 MSET4(B)
 和 MSET4(B) 对应 OGF
 对应 OGF
 尝试计算 A =MSET3(B) 为
 为
 [𝑢3]𝐴(𝑧,𝑢)=10!([𝑢3]1)+11!([𝑢3](𝑢1𝐵(𝑧)+𝑢22𝐵(𝑧2)+𝑢33𝐵(𝑧3)+⋯))+12!([𝑢3](𝑢1𝐵(𝑧)+𝑢22𝐵(𝑧2)+⋯)2)+13!([𝑢3](𝑢1𝐵(𝑧)+⋯)3)=𝐵(𝑧)36+𝐵(𝑧)𝐵(𝑧2)2+𝐵(𝑧)33 
 尝试计算 A =MSET4(B) 为
 为
 [𝑢4]𝐴(𝑧,𝑢)=10!([𝑢4]1)+11!([𝑢4](𝑢1𝐵(𝑧)+𝑢22𝐵(𝑧2)+𝑢33𝐵(𝑧3)+𝑢44𝐵(𝑧4)+⋯))+12!([𝑢4](𝑢1𝐵(𝑧)+𝑢22𝐵(𝑧2)+𝑢33𝐵(𝑧3)+⋯)2)+13!([𝑢4](𝑢1𝐵(𝑧)+𝑢22𝐵(𝑧2)+⋯)3)+14!([𝑢4](𝑢1𝐵(𝑧)+⋯)4)=𝐵(𝑧4)4+12!(𝐵(𝑧2)24+2𝐵(𝑧)𝐵(𝑧3)3)+13!(3𝐵(𝑧)2𝐵(𝑧2)2)+𝐵(𝑧)44!=𝐵(𝑧)424+𝐵(𝑧)2𝐵(𝑧2)4+𝐵(𝑧)𝐵(𝑧3)3+𝐵(𝑧2)28+𝐵(𝑧4)4
我们发现 A =𝔎𝑘(B) 中 𝐴(𝑧)
 中 𝐴(𝑧) 是关于 𝐵(𝑧),𝐵(𝑧2),…,𝐵(𝑧𝑘)
 是关于 𝐵(𝑧),𝐵(𝑧2),…,𝐵(𝑧𝑘) 的一个表达式。
 的一个表达式。
需要注意的是对于有限制的构造 𝔎𝑘(B) 并没有要求 B0 =∅
 并没有要求 B0 =∅ 。
。
常用有限制的构造
 PSET2(A):𝐴(𝑧)22−𝐴(𝑧2)2MSET2(A):𝐴(𝑧)22+𝐴(𝑧2)2CYC2(A):𝐴(𝑧)22+𝐴(𝑧2)2 PSET3(A):𝐴(𝑧)36−𝐴(𝑧)𝐴(𝑧2)2+𝐴(𝑧3)3MSET3(A):𝐴(𝑧)36+𝐴(𝑧)𝐴(𝑧2)2+𝐴(𝑧3)3CYC3(A):𝐴(𝑧)33+2𝐴(𝑧3)3
 PSET3(A):𝐴(𝑧)36−𝐴(𝑧)𝐴(𝑧2)2+𝐴(𝑧3)3MSET3(A):𝐴(𝑧)36+𝐴(𝑧)𝐴(𝑧2)2+𝐴(𝑧3)3CYC3(A):𝐴(𝑧)33+2𝐴(𝑧3)3 PSET4(A):𝐴(𝑧)424−𝐴(𝑧)2𝐴(𝑧2)4+𝐴(𝑧)𝐴(𝑧3)3+𝐴(𝑧2)28−𝐴(𝑧4)4MSET4(A):𝐴(𝑧)424+𝐴(𝑧)2𝐴(𝑧2)4+𝐴(𝑧)𝐴(𝑧3)3+𝐴(𝑧2)28+𝐴(𝑧4)4CYC4(A):𝐴(𝑧)44+𝐴(𝑧2)24+𝐴(𝑧4)2
 PSET4(A):𝐴(𝑧)424−𝐴(𝑧)2𝐴(𝑧2)4+𝐴(𝑧)𝐴(𝑧3)3+𝐴(𝑧2)28−𝐴(𝑧4)4MSET4(A):𝐴(𝑧)424+𝐴(𝑧)2𝐴(𝑧2)4+𝐴(𝑧)𝐴(𝑧3)3+𝐴(𝑧2)28+𝐴(𝑧4)4CYC4(A):𝐴(𝑧)44+𝐴(𝑧2)24+𝐴(𝑧4)2
上面的计算方法虽然有效但比较麻烦,读者可阅读 WolframMathWorld 网站的 Pólya Enumeration Theorem 和 Cycle Index 等相关资料,后者 Cycle Index 在 OEIS 的生成函数表达式中也经常出现。
例题 LOJ 6538. 烷基计数 加强版 加强版
 题意:求出 𝑛 个节点的有根且根节点度数不超过 3
 个节点的有根且根节点度数不超过 3 ,其余节点度数不超过 4
,其余节点度数不超过 4 的无序树的个数对 998244353
 的无序树的个数对 998244353 取模的值。约定 1 ≤𝑛 ≤105
 取模的值。约定 1 ≤𝑛 ≤105 。
。
 解:设组合类为 T 那么
 那么
 T={∙}×MSET0,1,2,3(T) 
 或令组合类 ˆT =T +{𝜖} 那么
 那么
 ˆT={𝜖}+{∙}×MSET3(ˆT) 
 可得到相同的结果。
参考文献
本页面最近更新:2025/10/13 16:54:57,更新历史
发现错误?想一起完善? 在 GitHub 上编辑此页!
本页面贡献者:c-forrest, Great-designer, hly1204, myeeye, shuzhouliu
本页面的全部内容在 CC BY-SA 4.0 和 SATA 协议之条款下提供,附加条款亦可能应用