重新认知了一遍关于EGF(指数生成函数)的理论。
两个对象A和B的拼接对等于EGF的乘积,这里的拼接是区分A和B的。
因此如果要将同类的对象拼接起来,例如如果要拼接k次,那么对等于
A
k
k
!
\frac{A^k}{k!}
k!Ak。
因此,若一个对象B是若干A自身拼接而成,那么:
B
=
∑
i
≥
0
A
i
i
!
=
e
A
B=\sum_{i\geq0}\frac{A^i}{i!}=e^A
B=i≥0∑i!Ai=eA
这里的A和B都是EGF。
几个例子,例如置换是轮换拼接若干次得到的,而轮换的EGF是:
A
(
x
)
=
∑
i
≥
1
(
i
−
1
)
!
i
!
x
i
=
∑
i
≥
1
1
i
x
i
=
−
ln
(
1
−
x
)
A(x)=\sum_{i\geq1}\frac{(i-1)!}{i!}x^i=\sum_{i\geq1}\frac{1}{i}x^i=-\ln(1-x)
A(x)=i≥1∑i!(i−1)!xi=i≥1∑i1xi=−ln(1−x)因此置换的EGF是
B
(
x
)
=
e
A
(
x
)
=
e
−
ln
(
1
−
x
)
=
1
1
−
x
=
∑
i
≥
0
x
i
B(x)=e^{A(x)}=e^{-\ln(1-x)}=\frac1{1-x}=\sum_{i\geq0}x^i
B(x)=eA(x)=e−ln(1−x)=1−x1=i≥0∑xi可以验证置换数量是
n
!
n!
n!。
上述例子可以直接加强为求所有轮换大小在S集合中的置换数量,这样只要将轮换的EGF中在S集合的项保留即可。
再例如无向图B是无向连通图A的若干次拼接,因此可以直接通过
A
=
ln
B
A=\ln B
A=lnB得到(实测竟然比多项式求逆快???)
再例如这个题:
问有多少
n
n
n个点的有标号的图,其有
m
m
m个联通块,且每个联通块都是一条链。(链不分首尾,即
1
−
2
−
3
1-2-3
1−2−3和
3
−
2
−
1
3-2-1
3−2−1认为是相同的)。要求线性。
其实直接套用上文方法即可:
显然答案
H
m
H_m
Hm是由一条链的情况
F
F
F的拼接
m
m
m次,而:
F
(
x
)
=
∑
n
≥
1
n
!
+
[
n
=
=
1
]
2
n
!
x
n
=
x
+
1
2
∑
n
≥
2
x
i
=
x
2
(
1
+
1
1
−
x
)
F(x)=\sum_{n\geq1}\frac{\frac{n!+[n==1]}{2}}{n!}x^n=x+\frac{1}{2}\sum_{n\geq2}x^i=\frac x2\left(1+\frac 1{1-x}\right)
F(x)=n≥1∑n!2n!+[n==1]xn=x+21n≥2∑xi=2x(1+1−x1)
因此:
h
m
,
n
=
n
!
[
x
n
]
H
m
(
x
)
=
n
!
[
x
n
]
F
m
(
x
)
m
!
=
n
!
[
x
n
]
x
m
2
m
m
!
(
1
+
1
1
−
x
)
m
=
n
!
2
m
m
!
∑
i
=
0
m
(
m
i
)
[
x
n
−
m
]
(
1
1
−
x
)
i
h_{m,n}=n!\left[x^n\right]H_m(x)=n!\left[x^n\right]\frac{F^m(x)}{m!}\\=n!\left[x^n\right]\frac{x^m}{2^mm!}\left(1+\frac{1}{1-x}\right)^m=\frac{n!}{2^mm!}\sum_{i=0}^m\binom{m}{i}\left[x^{n-m}\right]\left(\frac1{1-x}\right)^i
hm,n=n![xn]Hm(x)=n![xn]m!Fm(x)=n![xn]2mm!xm(1+1−x1)m=2mm!n!i=0∑m(im)[xn−m](1−x1)i
然后:
[
x
k
]
(
1
1
−
x
)
m
=
(
k
+
m
−
1
m
−
1
)
\left[x^k\right]\left(\frac1{1-x}\right)^m=\binom{k+m-1}{m-1}
[xk](1−x1)m=(m−1k+m−1)
(注意对m=0特判)
那么带入上式,可以得知答案是:
h
m
,
n
=
n
!
2
m
m
!
(
[
n
=
=
m
]
+
∑
i
=
1
m
(
m
i
)
(
n
−
m
+
i
−
1
i
−
1
)
)
h_{m,n}=\frac{n!}{2^mm!}\left([n==m]+\sum_{i=1}^m\binom{m}{i}\binom{n-m+i-1}{i-1}\right)
hm,n=2mm!n!([n==m]+i=1∑m(im)(i−1n−m+i−1))
然后就可以
O
(
n
+
m
)
O(n+m)
O(n+m)的计算出答案了。
[学习笔记]Mys_C_K的链接好题 - 组合计数 - 多项式理论 - EGF学习笔记
最新推荐文章于 2020-10-21 11:36:58 发布