置换群,Polya引理和burnside引理(等价类计数问题)

参考文章:
等价类计数问题
Burnside引理&Pólya定理
Burnside引理与Polya定理
置换群和Burnside引理,Polya定理

概念引入:

离散数学应该学过置换群的相关概念,置换本质就是映射,可以理解成一个正方形绕其中心逆时针旋转90度,就可以看作是正方形四个顶点的置换。
置换会形成一个环。且如果一个状态经过置换后跟原来相同,可以认为该状态为f的不动点。
有些题目中经常出现”本质不同的方案数“,一般是指等价类的数目,题目定义一个等价关系,满足等价关系的元素属于同一等价类。等价关系通常是一个置换集合F,如果一个置换能把其中一个方案映射到另一个方案中,就认为两者是等价的。

题目引入:

问题描述

一个由2*2方格组成的正方形,每个格子上可以涂色或不涂色,问共有多少种本质不同的涂色方案。
(若两种方案可通过旋转互相得到,称作本质相同的方案)

解法:

先看一共有多少方案,不考虑本质不同,一共16种

在这里插入图片描述
现在我们开始将本质相同的方案合并归类:
方案1:{1}
方案2:{2}
方案3:{3,4,5,6}
方案4:{7,8,9,10}
方案5:{11,12}
方案6:{13,14,15,16}
一共六种不同的方案
这里结合我们上面说的,旋转可以看作是置换,所有置换组成置换群。
如果x通过置换(旋转)得到y,说明x和y等价。
与x互相等价的一组元素组成一个集合,称为x的等价类。
不动元为旋转一定角度,图形不发生改变

在这个问题中,我们要求的就是有多少个等价类?
我们引入一个引理:burnside引理
burnside引理:
∣X/G∣=∣G∣−1⋅∑g∈G∣xg∣|X/G|=|G|^{−1}⋅∑_{g∈G}|x^g|X/G=G1gGxg
等价类的个数 = 每个置换中不动元的个数和 ➗置换群的大小
我们统计不动元的个数
不旋转(逆时针360度):不动元16个
逆时针90度,不动元2个{1,2}
逆时针180度,不动元4个{1,2,11,12}
逆时针270度,不动元2个{1,2}
置换群大小为4
∣X/G∣=16+2+4+24|X/G|=\frac{16+2+4+2}{4}X/G=416+2+4+2

Burnside’s引理:

∣X/G∣=∣G∣−1⋅∑g∈G∣xg∣|X/G|=|G|^{−1}⋅∑_{g∈G}|x^g|X/G=G1gGxg
等价类的个数 = 每个置换中不动元的个数和 ➗置换群的大小
等价类的个数=不动元个数的平均数
Burnside引理是一种计数方法,用来计算含有不等价类的数量
burnside算法的关键是找好“置换群”。
burnside引理首先就要列出所有nmn^mnm种可能的染色方案,然后找出每个置换下保持不变的方案数
如果当m或n很大的时候,这个方法就会非常繁琐,这时候就要用到Polya定理

Pólya引理:

Polya定理是Burnside引理的具体化,提供了计算不动点的具体方法
假设一个置换有k个循环,每个循环对应的所有位置颜色需要一致,而任意两个循环之间选色互不影响。因此,如果有m种可选颜色,则该置换对应的不动点个数为mkm^kmk,用其代替Burnside,就得到等价类数目为:
∣YXG∣=1∣G∣∑g∈G∣Y∣c(g)|\frac{Y^X}{G}|=\frac{1}{|G|}∑_{g∈G}|Y|^{c(g)}GYX=G1gGYc(g)
染色方案数(等价类个数)=1珠子数(总置换数)∑对于每种置换颜色数(映射数)循环节数染色方案数(等价类个数)=\frac{1}{珠子数(总置换数)}\sum_{对于每种置换}颜色数(映射数)^{循环节数}()=()1()
c(g)表示第i个置换包含的循环个数
此时需要考虑的图如下:
在这里插入图片描述

颜色情况={不染色,染色}
G={逆时针90度,逆时针180度,逆时针270度,不转}
不转:a1=(1)(2)(3)(4) ,四个循环节
逆时针90度:(1,4,3,2)
逆时针180度:(1,3)(4,2)
逆时针270度:(1,2,3,4)
这个(1,3)就相当于逆时针旋转180,1会到3,3会到1,而与(2,4)互不相关
由Polya定理得:24+21+22+214=6\frac{2^4+2^1+2^2+2^1}{4}=6424+21+22+21=6
为什么Burnside引理种循环节里面是1 ~ 16种,而到Ploya考虑就成1 ~ 4了?
Burnside是对正方形染色后状态的置换(16种状态即16个元素),而Ploya是四个方格的置换(因此是4个元素)。m的k次方的计算方法正来自每个循环内的方格可以遍历m种颜色,而一共有k个循环。如果循环内的方格颜色不同就不是不动点了

例题:

luogu 1446
luogu 4980
UVA11255
UVA10601

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/315940.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

时隔两年的重大更新,微软发布.NET Framework 4.8

微软发布了.NET Framework 4.8,这是两年来.NET 框架的第一个重大更新。新版本包含多个产品领域的改进,其中包括 Windows 窗体、WCF、WorkFlow 和 WPF。它还在基类库(BCL)和通用语言运行时(CLR)中有一些更新…

EventStore文件存储设计

背景ENode是一个CQRSEvent Sourcing架构的开发框架,Event Sourcing需要持久化事件,事件可以持久化在DB,但是DB由于面向的是CRUD场景,是针对数据会不断修改或删除的场景,所以内部实现会比较复杂,性能也相对比…

.NET Core 如何禁止.resx文件自动生成Designer.cs

点击上方蓝字关注“汪宇杰博客”在 Visual Studio 中,如果我们在一个 .NET Core 工程里加入了一个资源文件(.resx),那么你会发现有个对应的 .Designer.cs 文件被自动生成了,每次资源文件的内容有变化,这个设…

P1450 [HAOI2008]硬币购物

P1450 [HAOI2008]硬币购物 题意: 共有 4 种硬币。面值分别为c1,c2,c3,c4c_1,c_2,c_3,c_4c1​,c2​,c3​,c4​。 某人去商店买东西,去了 n 次,对于每次购买,他带了 did_idi​枚 i 种硬币,想购买 s 的价值的东西。请问…

.net core百万设备连接服务和硬件需求测试

随着物联网的普及,服务应用将面对大量物联设备处理;早期.NET在通讯上的处理能力一直给人的印像并不怎样,但net core经历过大量的优化后在各个模块的处理性能都有着比较出色的提升,针对网络方向的处理模块也有着显著的提升。以下主…

字符串匹配(多模式匹配篇)

字符串匹配(多模式匹配篇)摘要:问题的提出:众所周知,KMP算法在O(n)的时间中solve单模式串匹配问题。但怎样solve多模式串匹配问题呢?Solve:本文用简要记叙了使用trie树&a…

.net core编写转发服务

我有个小伙伴问我,他需要写一个转发服务的他有很多功能要通过他的服务转发~技术栈又不一定asp.net core,我就想起泥水老前辈的BeetleX.FastHttpApi中午午休,折腾了一会儿前辈,问清楚了FastHttpApi如何配置控制器依赖注入和控制器的…

数据结构(终极线段树篇)

数据结构(终极线段树篇) 摘要: 问题的提出:如何解决多样化的区间操作问题? solve:线段树!!! 关键字: 线段树,可持久化线段树,权值线段…

.NET Core 3.0之深入源码理解Configuration(一)

微软在.NET Core里设计出了全新的配置体系,并以非常灵活、可扩展的方式实现。从其源码来看,其运行机制大致是,根据其Source,创建一个Builder实例,并会向其添加Provider,在我们使用配置信息的时候&#xff0…

摊还分析

摊还分析 1何为摊还分析? 摊还分析主要求解数据结构维护序列执行的所有操作的平均时间,来评价操作的代价,从而保证最坏情况下每个操作的平均性能。 2聚合分析 2.1何为聚合分析? 若长度为n的操作序列最坏情况下所花费时间为T(…

Bigraph Extension

Bigraph Extension 题意: 有2n个点,n为偶数,n个点属于集合A,n个点属于集合B。起初在途中有m个无向边,边的两侧端点分别在两个集合里,任何两个边都没有公共交点。 现在你可以执行任意次操作: 在…

微服务划分的姿势

我们知道微服务是一种理念,没有确切的定义和边界,好比设计原则,是属于抽象的概念。在定义不明确的情况下谈划分也是一种各说各话,具体问题需要具体分析,所以这篇文章谈到的划分也不是绝对标准,仅供参考。有…

点(树)分治

0.引言 对于树上问题&#xff0c;有许多特殊的求解方法&#xff0c;如&#xff1a;树链剖分。点分治算法也是其中之一&#xff0c;常用于解决树上路径问题。 1.0.问题的引入 给定一棵树&#xff0c;求这棵树的直径&#xff08;树上最长链长度&#xff0c;n<10^5&#xff…

斜率优化Convex Hull Trick

斜率优化 一、简单DP 首先从一道简单题引入。 [IOI2002]任务安排 Description N个任务排成一个序列在一台机器上等待完成&#xff08;顺序不得改变&#xff09;&#xff0c;这N个任务被分成若干批&#xff0c;每批包含相邻的若干任务。从时刻0开始&#xff0c;这些任务被分…

分布式部署携程Apollo构建配置中心

一、开场白在系统设计里我们有很多配置希望独立于系统之外&#xff0c;而又能够被系统实时读取。但是在传统的系统设计里&#xff0c;配置信息通常是耦合在系统内的&#xff0c;比如.net里通常会放在App.config或者web.config里&#xff0c;.net core则是appsettings.json里&am…

[COCI 2017-2018-2]-San

[COCI 2017-2018-2]-San san(1s64M) 游戏世界中有N个楼从左到右排列&#xff0c;从左到右编号为1到N&#xff0c;第i幢楼的高度为Hi,楼上的金币数为Gi,游戏可以从任意一个楼开始且包涵几步。每一步玩家可以从当前位置向右跳&#xff08;可以跳过一些楼&#xff09;但必须跳到…

领域模型架构 eShopOnWeb项目分析 上

一.概述本篇继续探讨web应用架构&#xff0c;讲基于DDD风格下最初的领域模型架构&#xff0c;不同于DDD风格下CQRS架构&#xff0c;二者架构主要区别是领域层的变化。 架构的演变是从领域模型到CQRS, 一开始DDD是用领域模型的分层架构&#xff0c;用单一的领域模型处理业务逻辑…

最小生成树--Boruvka算法

参考文章 介绍 第一次听说这个算法。。 对于最小生成树一定学过prim和krusal&#xff0c;prim复杂度是O(n2)或者O(elogn)O(n^2)或者O(elogn)O(n2)或者O(elogn),krusal复杂度是O(eloge)O(eloge)O(eloge)&#xff0c;这里介绍一下Boruvka算法 Boruvka算法解决某些特定问题非常好…

[NOIP2016]愤怒的小鸟(状压DP)

[NOIP2016]愤怒的小鸟&#xff08;状压DP&#xff09; 题目描述 输入输出格式 输入格式&#xff1a; 第一行包含一个正整数 T&#xff0c;表示游戏的关卡总数。 下面依次输入这 T个关卡的信息。每个关卡第一行包含两个非负整数 n,m&#xff0c;分别表示该关卡中的小猪数量和…

给 asp.net core 写一个简单的健康检查

给 asp.net core 写一个简单的健康检查Intro健康检查可以帮助我们知道应用的当前状态是不是处于良好状态&#xff0c;现在无论是 docker 还是 k8s 还是现在大多数的服务注册发现大多都提供了健康检查机制来检测应用的健康状态&#xff0c;如果应用本身就提供一个健康检查的机制…