zoukankan      html  css  js  c++  java
  • 【$Polya$定理·入门篇】浅尝辄止的$Polya$定理

    (Preface)

    群论里的东西。

    感觉跟着论文一步步看下来还是挺好理解的吧。

    前置知识

    群论的基本知识

    自然是群论中最为基础的定义。

    若对于一个集合(G)以及一个给定的二元运算(*),满足以下条件:

    • 封闭性: (forall a,bin G,a*bin G)
    • 结合律: (forall a,b,cin G,(a*b)*c=a*(b*c))
    • 单位元: (exists ein G,forall ain G,a*e=e*a=a)
    • 逆元: (forall ain G,exists bin G,a*b=b*a=e)

    就称集合(G)在运算(*)之下是一个群

    置换群

    置换群中的元素是置换(置换是什么相信大家都知道),运算就是置换的连接。

    这是一个相对简单的概念,余就不多说了。

    (Polya)定理的推导

    公式:(|E_k| imes |Z_k|=|G|)

    此处(G)是一个(1sim n)的置换群,而(k)(1sim n)的某个元素。

    (Z_k)(k)不动置换类): (G)中使(k)保持不变的所有置换记作(Z_k)。(简称(k)不动置换类)

    (E_k)等价类):(k)(G)的作用下能够变化得到的所有元素的集合记作(E_k)

    根据定义,其实很容易就能证明上面公式的正确性。

    (Burnside)引理

    首先介绍一个新的定义:

    (D(a_j)):在置换(a_j)下不变的元素个数。

    由于(|Z_k|)表示的是使(k)不变的置换个数,(D(a_j))表示的是置换(a_j)下不变的元素个数,二者显然可以建立一个等量关系:

    [sum_{k=1}^n|Z_k|=sum_{j=1}^sD(a_j) ]

    然后,假设共有(N={1,2,...,n})中共有(L)个等价类(注意,(L)就是一般情况下要求的东西),即设(N=E_1+E_2+...+E_L)

    重新考虑(sum_{k=1}^n|Z_k|),就可以发现:

    [sum_{k=1}^n|Z_k|=sum_{i=1}^Lsum_{kin E_i}|Z_k|=sum_{i=1}^L|E_i| imes|Z_i| ]

    根据最早的那个公式,(|E_k| imes |Z_k|=|G|),得到:

    [sum_{k=1}^n|Z_k|=L imes |G| ]

    简单移项得到:

    [L=frac1{|G|}sum_{k=1}^n|Z_k|=frac1{|G|}sum_{j=1}^sD(a_j) ]

    (Polya)定理

    考虑到在(Burnside)引理中的(D(a_j))依旧不好算。

    定义一个置换(g_i)的循环个数为(c(g_i))

    容易发现,对于(g_i)同一循环节中的元素涂上相同颜色所得方案数(m^{c(g_i)}),就等于(a_i)作用下不变的图象数。

    也就是说:

    [L=frac1{|G|}sum_{i=1}^sm^{c(g_i)} ]

    这就是(Polya)定理的公式了。

    (Polya)定理模板题

    题目链接:【洛谷4980】【模板】Polya定理

    考虑本质不同只需要判旋转,因此共有(n)种置换方式,其中第(i)种置换方式就是将所有数转(i)位。

    显然,第(i)种置换中环的个数应该是(gcd(i,n)),因此得到答案的式子为:

    [frac1nsum_{i=1}^nn^{gcd(i,n)} ]

    看到(gcd),自然而然想到莫比乌斯反演,按照它的经典套路,枚举(gcd)

    [frac1nsum_{d|n}n^dsum_{i=1}^{frac nd}[gcd(i,frac nd)=1] ]

    其中,后半部分的式子显然就是(phi(frac nd)),也就是:

    [frac 1nsum_{d|n}n^dphi(frac nd) ]

    因此,枚举(d),然后暴力计算(phi(frac nd)),这道题就做完了。

    参考文献

    2001 - 符文杰:《Pólya原理及其应用》

    (Postscript)

    (Polya)定理感觉应该是一个很有用的计数工具,但它的题目也都很难,余还要多加研究。。。

  • 相关阅读:
    红黑树(二)之 C语言的实现
    红黑树(一)之 原理和算法详细介绍
    Design and Evaluation of an RDMA-aware Data Shuffling Operator for Parallel Database Systems
    RDMA Technology White Paper
    InfiniBand: An Introduction + Simple IB verbs program with RDMA Write
    crc32_offload_api_example
    Programming Examples Using IBV Verbs
    15. RDMA之RoCE & Soft-RoCE
    14. RDMA之Memory Window
    13. RDMA之用户态与内核态交互
  • 原文地址:https://www.cnblogs.com/Nero-Claudius/p/Polya1.html
Copyright © 2011-2022 走看看