[学习笔记]多项式进阶(缓更)

这篇博客探讨了如何计算无标号无向连通图的数目,提出了两种解法,分别是通过组合数学公式推导和利用生成函数进行多项式运算。第一种方法基于图的分解,时间复杂度为O(nlogn),第二种方法通过求解多项式ln的麦克劳林级数,同样达到O(nlogn)的时间复杂度。
摘要由CSDN通过智能技术生成
  • n n n 个点的简单 (无重边无自环) 有标号无向连通图数目。
链接

城市规划

解法 1 1 1

g n g_n gn n n n 个点的无向图数目,显然 g n = 2 ( n 2 ) ( g_n=2^{\binom{n}{2}}( gn=2(2n)(每条边选 / / /不选 ) ) )

f n f_n fn n n n 个点的无向连通图数目,枚举 1 1 1 号点所在连通块大小 i i i,将图分离成两部分,一部分是 1 1 1 号点所在的连通块,一部分是除连通块外的所有点。
g n = ∑ i = 1 n ( n − 1 i − 1 ) f i g n − i g_n=\sum_{i=1}^{n}\binom{n-1}{i-1}f_ig_{n-i} gn=i=1n(i1n1)figni
g n = 2 ( n 2 ) g_n=2^{\binom{n}{2}} gn=2(2n) 代入式子得
2 ( n 2 ) = ∑ i = 1 n ( n − 1 i − 1 ) f i 2 ( n − i 2 ) 2^{\binom{n}{2}}=\sum_{i=1}^{n}\binom{n-1}{i-1}f_i{2^\binom{n-i}{2}} 2(2n)=i=1n(i1n1)fi2(2ni)
将组合数 ( n − 1 i − 1 ) \binom{n-1}{i-1} (i1n1) 拆开得
2 ( n 2 ) = ∑ i = 1 n ( n − 1 ) ! f i 2 ( n − i 2 ) ( i − 1 ) ! ( n − i ) ! 2 ( n 2 ) ( n − 1 ) ! = ∑ i = 1 n f i 2 ( n − i 2 ) ( i − 1 ) ! ( n − i ) ! 2 ( n 2 ) ( n − 1 ) ! = ∑ i = 1 n f i ( i − 1 ) ! ⋅ 2 ( n − i 2 ) ( n − i ) ! ( 1 ) \begin{aligned}{2^{\binom{n}{2}}}&=\sum_{i=1}^{n}\frac{(n-1)!f_i{2^\binom{n-i}{2}}}{(i-1)!(n-i)!}\\\frac{ {2^{\binom{n}{2}}}}{(n-1)!}&=\sum_{i=1}^{n}\frac{f_i{2^\binom{n-i}{2}}}{(i-1)!(n-i)!}\\\frac{ {2^{\binom{n}{2}}}}{(n-1)!}&=\sum_{i=1}^{n}\frac{f_i}{(i-1)!}\cdot\frac{2^\binom{n-i}{2}}{(n-i)!}\qquad(1)\\\end{aligned} 2(2n)(n1)!2(2n)(n1)!2(2n)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值