【学习笔记】Polya定理
笔者经多番周折终于看懂了定理和定理,特来写一篇学习笔记来记录一下。
群定义
定义:群是一个集合与一个运算·所定义的群。它所需要满足的性质是:
-
结合律:对于任意
-
封闭性:对于任意
-
单位元:存在
-
逆元:
举一个例子:对于正方形旋转组成的群(旋转度数分别为),旋转操作就是群中的元素,单位元就是旋转度数为的操作。结合律显然满足,我们看剩下两个条件:
-
封闭性:先旋转再旋转就相当于旋转即旋转容易证明对于每一种操作都存在这种封闭性。
-
逆元:对于旋转的操作我们可以再旋转将它转换为单位元对其它所有元素均存在逆元。
所以这个由旋转操作构成的集合(操作是连续旋转)可以被证明是一个群。
子群:即一个群
注意,群中的元素不一定满足交换律,所以才有了左陪集和右陪集的区别:
-
左陪集 对于一个子群一个元素称之为的一个左陪集。
-
右陪集 对于一个子群一个元素称之为的一个右陪集。
陪集的一些性质(只讨论右陪集,左陪集同理)
证明:
故得证。
证明:
由于是群,所以包含单位元使得
证明:
群具有封闭性。
证明:
证明:
这条性质意味着的陪集要么不相交要么相等。
设
群作用
我们说一个群作用于集合,当且仅当:
给定一个函数(其中,)有:
有上述函数时才有群作用于
置换
用双行表示法来表示一个置换:
表示一个由序列变为的一个置换。大体就是用第一个元素代替第二个元素...以此类推。
一个长度为的不同置换数为
关于运算:
可以证明,这些置换组成了群。
轨道-稳定子定理
定义:
轨道是通过中所有元素作用可以达到的所有元素的集合。是通过这个元素作用可以达到的所有元素。
稳定子 即群中所有 的 的集合。
定理:
可以得到,每一个状态一定只属于一个轨道。我们把的点看做一个轨道的结尾,这个定理就很好证明了。
Burnside 引理
定义是一个置换群且作用于集合若则属于一个等价类。
注意!这里不是一个函数,而是元素在作用下得到的元素。
则不同等价类的数量为:
文字描述: 在群 作用下的等价类总数等于每一个 作用于 的不动点的算数平均值。
证明待补。
关于这道题:群中元素就是是所有置换所形成的环。
对于旋转个而言,其不动点等价于存在一个长度为的循环节使得又因为必然(转格必然回到原始状态),所以改写判断条件为存在一个长度为的循环节。而前个元素可以任意填(染色,不是排列),所以答案就是
枚举莫比乌斯反演得到可以计算。
#include<bits/stdc++.h>
using namespace std;
const int mod=1e9+7;
inline int add(int x,int y){return (x+y)%mod;}
inline int mul(int x,int y){return 1ll*x*y%mod;}
inline int qpow(int a,int b){
int res=1;
while(b){
if(b&1)res=mul(res,a);
a=mul(a,a);b>>=1;
}
return res;
}
int calc(int x){
int ans=x;
for(int i=2;i*i<=x;++i){
if(x%i)continue;
ans-=ans/i;
while(x%i==0)x/=i;
}
if(x!=1)ans-=ans/x;
return ans;
}
int T,n;
int main(){
scanf("%d",&T);
while(T--){
scanf("%d",&n);
int ans=0;
for(int i=1;i*i<=n;++i){
if(n%i)continue;
ans=add(ans,mul(qpow(n,i-1),calc(n/i)));
if(i*i==n)continue;
ans=add(ans,mul(qpow(n,n/i-1),calc(i)));
}
printf("%d\n",ans);
}
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· .NET Core 中如何实现缓存的预热?
· 三行代码完成国际化适配,妙~啊~
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
2019-09-13 【题解】序列终结者
2019-09-13 【题解】数列