【BZOJ】1478: Sgu282 Isomorphism -Polya计数&dfs

该博客介绍了如何解决BZOJ 1478题目的同构问题,通过Polya计数理论和深度优先搜索(DFS)方法。文章探讨了点的置换与边的置换转换,并讲解了如何根据点转置的循环组来计算边的循环组个数,以及如何避免枚举过程中方案的重复计数。给出了具体的数学公式和代码实现。
摘要由CSDN通过智能技术生成

传送门:bzoj1478


题解

设点数为 n n m 种颜色。很容易想到点的置换方式有 n! n ! 种,直接枚举判断同构复杂度太高显然不行。

polya p o l y a 定理,可以通过求每个边转置群 g g 循环组个数 s s g ,总转置集合为 G G ,答案即为 g G m s s g

复杂度还是没有降下来,但 ccosi c c o s i 学习到了一个巧妙的方法(超神奇!):

考虑利用点置换转化为边置换,且方案只与点转置中每个循环组大小有关,而与具体转置方法无关。

枚举点转置的循环组(有向边形成的环,下文均称其为环),观察性质可以分别得到环内以及环之间的边的转置的循环组个数。这里的转置均考虑为环上的旋转操作。

设环的大小为 v v ,即循环组内点数。则环内的边循环组个数为 v 2 。设另一个环的大小为

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值