• Burnside引理


    参考了神仙gzy的博客

    置换:把一个排列变成另外一个排列,简单来说就是一一映射。
    置换群:置换的集合。

    置换即给定一个排列({f_1,f_2,...,f_n}),若其作用在一个排列上,则这个排列置换后的第(i)个位置上的数变为置换前的第(f_i)个位置上的数,实质是一个从一个排列到另一排列的一一映射。

    • 置换之间可以进行乘法

    • 置换可以分解成若干循环的乘积

      以上两点可参考gzy的博客,其中第二点是等价类计数中常用的方法,在我有关排列计数的文章中会提到

    Burnside引理

    设G为置换集合,且对于任意(f,gin G),有(fgin G)

    (C(f))为置换(f)的不动点个数,即一个排列进行置换(f)后还是这个排列

    L为置换(G)下等价类个数,若排列a可以通过G中的置换得到b,则a,b属于同一等价类

    [L=frac{sum_{fin G}C(f)}{|G|} ]

    证明:

    (Z_i)为使(i)为不动点的置换集合大小,(E_i)为第(i)个等价类的大小。

    [sum_{fin G}C(f)=sum_{i=1}^{n}Z_i ]

    又因为对于一个等价类(j),其中所有点(i)(Z_i)都相等,设其为(H_j)

    (sum_{i=1}^{n}Z_i=sum_{i=1}^{L}E_iH_i)

    又因为每一个点经过(G)中的任意一个置换都会置换到它所在的等价类中的一个点,而置换到每一个点都有(H_i)种不同的置换方式

    所以

    [|G|=E_iH_i ]

    [ herefore sum_{i=1}^{n}Z_i=sum_{i=1}^{L}|G|=L|G| ]

    [sum_{fin G}C(f)=L|G| ]

    所以

    [L=frac{sum_{fin G}C(f)}{|G|} ]

    引理得证。

    Polya定理也可以用Burnside引理证出来,详细可见Polya定理模板

  • 相关阅读:
    线段树小结
    线段树 区间合并
    线段树
    线段树离散化+区间修改
    线段树模板

    geatpy
    基于Anaconda 安装 geatpy 和 tensorflow
    Python 求“元组、列表、字典、数组和矩阵”的大小
    np.array()和np.mat()区别
  • 原文地址:https://www.cnblogs.com/lishuyu2003/p/11289997.html
Copyright © 2020-2023  润新知