有机化学
前置芝士:牛顿迭代、BrunsideBrunsideBrunside 定理:
L=1∣G∣∑τc1(τ) L = \frac{1}{|G|}\sum_{\tau}c_1(\tau) L=∣G∣1τ∑c1(τ)
也就是置换群 GGG 能引出的不同等价类的个数等于每个置换下不动点的个数之和除以置换群大小。
本人高一,最近正在学习有机化学。看到各种同分异构体计数就抑制不住想推通项公式的欲望。但是网上一查,似乎没有找到通项,然后 luogu 上一搜,好家伙,烷基计数是一道黑题。这么看来要弄出通项看来是不太可能的了,那就试试生成函数吧~
烷基计数
设含有 nnn 个碳原子的烷基的同分异构体有 ana_nan 种。那么这就构成了一个数列 {an}\{ a_n \}{an}。设这个数列的生成函数为 F(x)=∑i=1naixiF(x) = \sum\limits_{i=1}^na_ix^iF(x)=i=1∑naixi。
有一点有机化学基础的同学应该能想到,烷基的同分异构体本质上就是有根的的无编号的每个节点的度不超过 444 的树的异构(根节点度数不超过 333)。那么我们就能想到用 BrunsideBrunsideBrunside 定理解决这个问题。
想必大家都应该知道 两棵树是同构的当且仅当两棵树能通过交换子树互相得到。又考虑到我们要构造的是度数不超过 444 的树,所以我们只需要考虑 333 个子树的交换。那么顺利成章的我们能得到 666 个置换:
(1,2,3),(1,3,2),(2,1,3),(2,3,1),(3,1,2),(3,2,1) (1, 2, 3), (1, 3, 2), (2, 1, 3), (2, 3, 1), (3, 1, 2), (3, 2, 1) (1,2,3),(1,3,2),(2,1,3),(2,3,1),(3,1,2),(3,2,1)
我们考虑对这几个置换进行分类讨论。
- (1,2,3)(1, 2, 3)(1,2,3),显然对于这种置换,所有的都是不动点(因为根本就没有动qwq),那么我们只需要计算所有方案的个数。因为有三棵子树而且每棵子树都是 F(x)F(x)F(x),那么三棵子树就是 F(x)3F(x)^3F(x)3,并且因为是子树所以要乘上一个 xxx。所以总共的种数就是 xF(x)3xF(x)^3xF(x)3。
- (1,3,2),(3,2,1),(2,1,3)(1, 3, 2), (3, 2, 1), (2, 1, 3)(1,3,2),(3,2,1),(2,1,3) 这三种置换,因为只交换了两棵子树,第三棵子树没有动,所以只有置换中成环的两颗子树是同构的时候是不动点。这个时候的贡献就是 xF(x2)F(x)xF(x^2)F(x)xF(x2)F(x)(第三棵子树任意就是 F(x)F(x)F(x),循环中的两棵要相同就是 F(x2)F(x^2)F(x2)),又因为是三种所以就是 3xF(x2)F(x)3xF(x^2)F(x)3xF(x2)F(x)。
- (2,3,1),(3,1,2)(2, 3, 1), (3, 1, 2)(2,3,1),(3,1,2) 这两种置换中三棵子树都交换了,所以贡献就是 2xF(x3)2xF(x^3)2xF(x3)
于是套一下 BrunsideBrunsideBrunside 定理就能得到:
F(x)=xF(x)3+3F(x2)F(x)+2F(x3)6+1 F(x) = x\frac{F(x)^3 + 3F(x^2)F(x) + 2F(x^3)}{6} +1 F(x)=x6F(x)3+3F(x2)F(x)+2F(x3)+1
现在我们就只需要解方程就行了。怎么解方程呢,牛顿迭代qwq。





