zoukankan      html  css  js  c++  java
  • polya定理

       polya定理的内容好多啊,虽然公式很简单,但是前面关于群论与置换群的内容就要理解一会儿了。。

       详细的话就看下组合数学,也可看下这个课件http://wenku.baidu.com/view/3dc7027602768e9951e738ca.html

      下面就说一下自己的见解:

         1)关于群与置换群:

             群:就是经过二元运算后还满足 封闭性、结合律、单位元存在、逆元存在性质的集合就是群。。

                  这里的二元运算很广泛,当然也包括+-*/什么的。。。

                举个例子:a,b属于R集,那么,那么a*b当然也属于R了。。那么R对这个运算当然是一个群了

           置换群:实际上就是排列的变化,如 这个就是一个排列到另外一个排列的变化就是一个置换。。a1->ai1

                     a2-->ai2.........

       2)Burnside引理:

            实际上就是把所有的方案列出来,对于每一个置换,把置换下不变的方案数统计出来,累加起来

            最后除以置换总数。。

       3)polya定理:

           就是burnside的优化而已,因为所有的进行一次,时间复杂度o(nsp)太高了,所以得优化

           方法:

               把每种置换写成若干个不想交循环的乘积,比如(1 2 3 4) ->(2 1 4 3) 这个置换就可以写成 (1 2)*(3 4),那么求本质不同的时候,只要每个循环

              里涂一种颜色(想想为什么,因循环内部必须一样,这样在该置换下才是一种方案啊,不然就变成多种了),这样的话就变成2(循环的个数)个位置的染色,所以该置换            下为M^2中方案本质不同的(M为颜色数)

             所以就变成了求每种置换下的循环个数,然后每种对应M^T个方案,T为循环个数,其他跟burnside一样。。

      4)polya与burnside联系:

              两者本质相同,结合起来用是解题是最需要的,因为单纯的burnside复杂度太高,polya适用范围较小,遇到颜色有限制条件时,

              就应该用结合的方法, 用(方案总数) / 置换数 的思想,

                                          用每种置换下找循环个数并 染色的方法求方案的技巧,

                                         从而求出最后答案啊。

  • 相关阅读:
    poj3278 Catch That Cow
    poj2251 Dungeon Master
    poj1321 棋盘问题
    poj3083 Children of the Candy Cor
    jvm基础知识—垃圾回收机制
    jvm基础知识1
    java面试基础必备
    java soket通信总结 bio nio aio的区别和总结
    java scoket aIO 通信
    java scoket Blocking 阻塞IO socket通信四
  • 原文地址:https://www.cnblogs.com/yzcstc/p/3060448.html
Copyright © 2011-2022 走看看