Burnside引理与Polya定理

Burnside引理与Polya定理

Burnside引理与Polya定理是有关组合数学的两条十分重要的定理(引理),但是网上的一些资料大多晦涩难懂或者与实际并不相关联,因此在这里做一些浅显的解读,希望通过此文章可以让这两条定理(引理)能够发挥其作用。

PS:引理与定理的区别:

Ψ引理是数学中为了取得某个更好的定理而作为步骤被证明的命题,其意义并不在于自身被证明,而在于为达成最终定理作出贡献.

Ψ一个引理可用于证明多个定理.数学中存在很多著名的引理,这些引理可能对很多问题的解决有帮助.例如欧几里得引理等。

Burnside引理:

提到这个引理的人:

·1845年德国法国数学家Cauchy

·1887年德国数学家Frobenius

·1897年英国数学家Burnside

·1937年匈牙利数学家Polya

Burnside引理的众多名称:

·轨道计数定理

·Burnside计数定理

·Cauchy—Frobenius引理

·Polya—Burnside引理

定义:

设G={a1,a2,…ag}是目标集[1,n]上的置换群。每个置换都写成不相交循环的乘积。是在置换ak的作用下不动点的个数,也就是长度为1的循环的个数。通过上述置换的变换操作后可以相等的元素属于同一个等价类。

若G将[1,n]划分成l个等价类,则:

等价类个数为: —— [ 百度百科 ]

理解:

如果上面看不懂没关系,下面我们来用几个例子来体会一下:

一正方形分成4格,2着色,有多少种方案?其中,经过转动相同的图象算同一方案。

解析:

对于每种格子我们都有两种选择,所以会有一下16种方案:

但是对于这16种方案可以归一下类:

Θ不动:a1=(1)(2)…(16)

Θ逆时针转90度 :a2=(1)(2)(3 4 5 6)(7 8 9 10) (11 12)(13 14 15 16)

Θ顺时针转90度 :a3=(1)(2)(6 5 4 3)(10 9 8 7)(11 12)(16 15 14 13)

Θ转180度:a4=(1)(2)(3 5)(4 6)(7 9)(8 10)(11)(12) (13 15)(14 16)

(a,b,c)表示a,b,c可以通过旋转得到。

由Burnside引理,共有(16+2+2+4)/4=6(种方案)

这里的4就是题目中的“置换群”,也就是我们分的类,而括号里的加数就是每一类种长度为一的个数,如(2)√,(2 4)×

Summary:

·burnside是一种计数方法,用来计算含有不等价类的数量

·burnside算法的关键是找好“置换群”,要做到不重不漏,考虑充分。

·存在的问题:置换是作用在所有方案上的,如果颜色数上升,方案数也与之递增,这种情况下Burnside引理就有些力不能及了。

小例题:POJ2154


Polya定理

利用Burnside引理要首先列出所有n^m种可能的染色方案,然后找出在每个置换下保持不变的方案数。显然当m或n很大的时候,这个方法会非常繁琐。

?我们希望找到其它的方法来计算c1(ak)。

那就是Polya定理

polya定理适用于染色问题方案数问题。

我们设用m种元素涂N中的元素,则不同的方案数M表示为:

还是上面的例子:

Θ不动:a1=(1)(2)(3)(4)

Θ旋转90度 :a2=(1 2 3 4)

Θ旋转180度 :a3=(1 3)(2 4)

Θ旋转270度:a4=(1 4 3 2)

可以看到Burnside引理和Polya定理在某些方面是处处调和的。只不过Polya定理是Burnside的引理的优化罢了。

例题:

POJ1286 Necklace of Beads —题目链接

Description

Beads of red, blue or green colors are connected together into a circular necklace of n beads ( n < 24 ). If the repetitions that are produced by rotation around the center of the circular necklace or reflection to the axis of symmetry are all neglected, how many different forms of the necklace are there?

Input

The input has several lines, and each line contains the input data n.

-1 denotes the end of the input file.

Output

The output should contain the output data: Number of different forms, in each line correspondent to the input data.

Sample Input

4

5

-1

Sample Output

21

39

Picture:

旋转

当n = 4时,可顺时针旋转0、1、2、3格

0格:(1)(2)(3)(4)互相转化

1格:(1,2,3,4)互相转化

2格:(1,3)(2,4)互相转化

3格:(1,2,3,4)互相转化

So,answer = (1/4) * (3^4+3^1+3^2+3^1)=24

当n=5时,answer = (1/5) * (3^5+3^1*4)=51

以此类推。

对称

当n = 4时,有4条对称轴

其中2条,(1,2)(3,4)互相变化

另2条,(1)(3)(2,4)互相

answer= (1/4) * (2*3^2+2*3^3)=18

当n = 5时,有5条对称轴

每一条,(1)(2,5)(3,4)

answer=(1/5) * (5*3^3)=27

以此类推。

最终answer=(旋转+对称)/ 2。

Code:

#include<stdio.h>
#include<string.h>
typedef long long ll;
ll n,ans;
ll pow(ll x,ll y)
{
    ll ans=1;
    while(y)
    {
        if(y&1)
        {
            ans=(ans*x);;
        }
        y/=2;
        x*=x;
    }
    return ans;
}
ll gcd(ll x,ll y)
{
    return y ? gcd(y, x%y) : x;
}
int main()
{
    while(~scanf("%lld",&n),n!=-1)
    {
        if(n==0)
        {
            puts("0");
            continue;
        }
        ans=0;
        if(n&1)
        {
            ans+=pow(3,n/2+1)*n;
        }
        else
        {
            ans+=pow(3,n/2+1)*(n/2)+pow(3,n/2)*(n/2);
        }
        for(int i=1;i<=n;i++)
        {
            ans+=pow(3,gcd(i,n));
        }
        printf("%lld\n",ans/(2*n));
    }
    return 0;
}

一般解题思路:

  • 寻找“置换”——旋转、翻转等
  • 寻找每种置换下的等价状态
  • 应用Polya定理直接计数


Thanks for reading.

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-08-26 23:21:19

Burnside引理与Polya定理的相关文章

置换群和Burnside引理,Polya定理

定义简化版: 置换,就是一个1~n的排列,是一个1~n排列对1~n的映射 置换群,所有的置换的集合. 经常会遇到求本质不同的构造,如旋转不同构,翻转交换不同构等. 不动点:一个置换中,置换后和置换前没有区别的排列 Burnside引理:本质不同的方案数=每个置换下不动点的个数÷置换总数(一个平均值) Polya定理:一个置换下不动点的个数=颜色^环个数.(辅助Burnside引理,防止枚举不动点复杂度过高) 这篇文章写得很详细了(具体的在此不说了): Burnside引理与Polya定理 **特

【bzoj1004】[HNOI2008]Cards Burnside引理+背包dp

题目描述 用三种颜色染一个长度为 $n=Sr+Sb+Sg$ 序列,要求三种颜色分别有 $Sr,Sb,Sg$ 个.给出 $m$ 个置换,保证这 $m$ 个置换和置换 ${1,2,3,...,n\choose 1,2,3,...,n}$ 构成一个置换群,求置换后不同构的序列个数模 $p$ . $0\le Sr,Sb,Sg\le 20,0\le m\le 60,m+1\le p\le 100$ ,$p$ 是质数. 输入 第一行输入 5 个整数:Sr,Sb,Sg,m,p(m<=60,m+1<p<

【POJ2888】Magic Bracelet Burnside引理+欧拉函数+矩阵乘法

[POJ2888]Magic Bracelet 题意:一个长度为n的项链,有m种颜色的珠子,有k个限制(a,b)表示颜色为a的珠子和颜色为b的珠子不能相邻,求用m种珠子能串成的项链有多少种.如果一个项链在旋转后与另一个项链相同,则认为这两串珠子是相同的. $n\le 10^9,m\le 10,k\le \frac{m(m-1)} 2 $ 题解:好题. 依旧回顾从Burnside引理到Pólya定理的推导过程.一个置换中的不动点要满足它的所有循环中的点颜色都相同,那么在旋转i次的置换中,循环有gc

【BZOJ1004】[HNOI2008]Cards Burnside引理

[BZOJ1004][HNOI2008]Cards 题意:把$n$张牌染成$a,b,c$,3种颜色.其中颜色为$a,b,c$的牌的数量分别为$sa,sb,sc$.并且给出$m$个置换,保证这$m$个置换加上本身的置换能构成一个置换群,两种染色方案被认为是相同的当且仅当一种方案可以通过某个置换变成另一种.求不同的染色方案数.答案对$P$取模. $sa,sb,sc\le 20,m\le 60$ 题解:这里对每种颜色都有一个限制,怎么办呢? 回顾从Burnside引理到Pólya定理的推导过程. 如果

Polya定理,Burnside引理(转)

设G是一个集合,*是G上的二元运算,如果(G,*)满足下面的条件: 封闭性:对于任何a,b∈G,有a*b∈G; 结合律:对任何a,b,c∈G有(a*b)*c=a*(b*c); 单位元:存在e∈G,使得对所有的a∈G,都有a*e=e*a=a; 逆元:对于每个元素a∈G,存在x∈G,使得a*x=x*a=e,这个时候记x为a-1,称为a的逆元,那么则称(G,*)为一个群. 例:G={0,1,2,3,4....n-1}那么它在mod n加法下是一个群. 群元素的个数有限,称为有限群,且其中元素的个数称为

Polya定理与Burnside引理

Burnside引理 公式 \(L=\frac{1}{|G|}\sum_{i=1}^{|G|}D_{G_i}\) 一些定义 \(E_i\) 表示与\(i\)同类的方案 \(Z_i\) 表示使\(i\)不变的置换 \(G\) 表示所有的置换方法 \(D_i\) 表示第\(i\)种置换能使多少方案不变 \(n\) 表示方案总数 \(L\) 表示本质不同的方案数 引理的引理 \(|E_i|*|Z_i|=|G|\) \(\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \

Polya 定理入门[Burnside引理,Polya定理,欧拉函数]

$这篇blog重点讨论Polya的应用, 更详细的证明请百度 .$ ___ $Burnside引理$ $$L=\frac{1}{|G|}\sum_{i=1}^{|G|}D(a_i)$$ $L$: 本质不同的方案数. $G$: 置换群集合. $a_i$: 置换群中的第 $i$ 个置换. $D(a_i)$: 进行 $a_i$ 这个置换, 状态不会变化的方案 数量. 该引理与下方内容没有太大关系, 可以暂时忽略. ___ $Problem$ 链接 有 $N$ 个石子围成一圈, 使用 $M$ 种颜色染色

hdu 5868 2016 ACM/ICPC Asia Regional Dalian Online 1001 (burnside引理 polya定理)

Different Circle Permutation Time Limit: 3000/1500 MS (Java/Others)    Memory Limit: 262144/262144 K (Java/Others)Total Submission(s): 208    Accepted Submission(s): 101 Problem Description You may not know this but it's a fact that Xinghai Square is

BZOJ_[HNOI2008]_Cards_(置换+Burnside引理+乘法逆元+费马小定理+快速幂)

描述 http://www.lydsy.com/JudgeOnline/problem.php?id=1004 共n个卡片,染成r,b,g三种颜色,每种颜色的个数有规定.给出一些置换,可以由置换得到的染色方案视为等价的,求等价类计数. 分析 给出置换求等价类计数,用Burnside引理:等价类计数=(每一个置换不动点的和)/置换数.(不知道的建议去看白书) 其中不动点是指一个染色方案经过置换以后染色与之前完全相同. 1.求不动点个数. 不动点的话同一个循环内的每一个点的颜色必须相同(否则不同颜色