群论学习笔记

写在前面

之前写过一个辣鸡,以为会板子就好了,结果在ABC284H中寄了。所以决定重写个完整的。

参考文章

概念性的东西

群论研究的是对称性,为了方便描述,我们举个例子。

比如对于一个正方形而言,可以发现我们把它顺时针旋转 \(90^{\circ}\) 后,可以发现它和原来相同,同理,旋转 \(180^{\circ},270^{\circ},0^{\circ}\) 也相等(不考虑超过 \(360^{\circ}\) 的旋转)。

因此为了叙述正方形旋转的对称性,我们定义一个,及 \(S=\{旋转 0^{\circ},旋转 90^{\circ},旋转 180^{\circ},旋转 270^{\circ}\}\)

但是这还不够,注意到这些操作是可以叠加的,比如旋转 \(90^{\circ}\) 后再旋转 \(180^{\circ}\),那么相当于旋转 \(270^{\circ}\),那么这个叠加运算需要定义一下,姑且称其为 \(+\) 吧。

那么 \((S,+)\),就构成了正方形旋转的一个群。

举完了个简单的例子,再来说明形式化的定义:

若一个非空集合 \(S\) 上的运算 \(\times\) 满足以下条件,那么称 \((S,\times)\) 是一个群。

  • 封闭性:\(\forall a,b\in S,a\times b\in S\)。比如上面的例子中,无论这个群中的变换怎样叠加,一定还在这个集合中。
  • 结合律: \(\forall a,b,c\in S,(a\times b)\times c=a\times (b\times c)\),运算顺序无影响。
  • 存在单位元:\(\exists e\in S,\forall a\in S,a\times e=e\times a=a\),上面的例子中,\(旋转 0^{\circ}\) 就是单位元。
  • 存在逆元:\(\forall a\in S,\exists b\in S,a\times b=b\times a=e\)\(b\)\(a\) 的逆元,也可以表示为 \(a^{-1}\)

可以通过上面的例子,发现群内的元素一般来说都是某种操作,而不是简单的元素。

其他定义:

  • 阿贝尔群:满足交换律的群,也就是 \(\forall a,b\in S,a\times b=b\times a\)
  • 半群:\((S,\times )\) 只满足封闭性和结合律。
  • 幺半群:半群的基础上还存在单位元。
  • 有限群:元素个数有限的群。注意群的个数可以无限,比如圆的旋转,转任意度都和原来一样。

举一些例子:

  • \((R,+)\)\((R,\times )\) 都是无限群。
  • \((R,\max)\) 是半群,不存在单位元和逆元。但是 \((N,\max)\) 是幺半群,单位元是 \(0\)

一些简单性质

  • 群的单位元唯一

反证法,假设有两个单位元 \(a,b,a\ne b\),那么 \(a=a\times b=b\)

  • 一个群中 \(x\) 的逆元唯一

假设有两个逆元 \(a,b\),那么 \(a=a\times (x\times b)=b\)

子群与陪集

子群:对于一个群 \((S,\times )\),如果存在一个 \(T \subseteq S\)\((T,\times )\) 是一个群,\((T,\times )\) 就是 \((S,\times )\) 的子群,可以记为 \(T\le S\)

陪集:

  • 如果 \(H\le S\),对于一个 \(a\in G\),定义 \(H\) 的一个左陪集为 \(aH=\{a\times h,h\in H\}\)
  • 如果 \(H\le S\),对于一个 \(a\in G\),定义 \(H\) 的一个右陪集为 \(Ha=\{h\times a,h\in H\}\)

陪集可能不是一个群,因为可能没有单位元。

陪集的一些性质:

  • \(\forall a\in S,|H|=|Ha|\)

只需要证明陪集中元素两两不同,反证一下即可。

  • \(\forall a\in S,a\in Ha\)

因为 \(H\) 中一定有单位元。

  • \(Ha=H\Leftrightarrow a\in H\)

  • \(Ha=Hb\Leftrightarrow ab^{-1}\in H\)

\(Ha=Hb\) 可以推出 \(Hab^{-1}=H\)

  • \(Ha\cap Hb\ne \empty,Ha=Hb\)

也就是两个陪集要么相等,要么完全不交。

证明可以简单反证。

拉格朗日定理

如果 \(H\le S\),那么 \(|H|\) 整除 \(|S|\),也就是:

\[|S|=|H|\times [S:H] \]

此处 \([S:H]\) 表示 \(H\) 不同的陪集数量。

证明:不同的陪集两两不交,且大小相等。

周期相关

对于一个元素 \(a\in S\),定义周期 \(o(a)=\min \{x|a^x=e,x\in N^{+}\}\),这里 \(a^{x}=a^{x-1}\times a\)

  • \(o(a) | |G|\)

因为是个子群,拉格朗日定理即可。

  • \(a^{|G|}=e\)

  • \(|G|\) 为素数,则 \(o(a)=|G|\)

置换群

有限集合自身的双射称为置换。

简单的表示为 \((p_1,p_2,p_3,...,p_n)\)\(p\) 是一个排列,这个置换作用在 \(a\) 上表示 \(f(a_i)=a_{p_i}\)

置换的总个数为 \(n!\)

那么定义一下两个置换的运算,假设有 \(f=(p_1,p_2,...,p_n),g=(q_1,q_2,...,q_n)\)

那么 \(f\times g=(p_{q_1},p_{q_2},...,p_{q_n})\),也就是先做 \(g\) 再做 \(f\)

显然,这样所有长度为 \(n\) 的置换构成了一个群,称为 \(n\) 元对称群 \(S_n\),这个群的任意一个子群被称为置换群。

置换群的单位元是 \(I=(1,2,3,...,n)\)

轨道-稳定子定理

\(A,B\) 是两个有限集合,令 \(X=B^A\) 表示 \(A\)\(B\) 的全部映射,\(G\) 是作用在 \(A\) 上的一个群。

比如给一个正方形的四条边染色,那么 \(A\) 就是四条边,\(B\) 就是颜色集合,\(G\) 就表示令四条边等价的置换群,\(X\) 就表示所有染色方案(不去重)。

对于一个 \(x\in X\),也就是一种染色方案,定义 \(g(x)\) 表示对 \(x\) 进行 \(g\) 置换后的结果。

  • 稳定子:\(G^x=\{g|g(x)=x,g\in G\}\),即置换后和原来相等。

  • 轨道:\(G(x)=\{g(x)|g\in G\}\),注意此处 \(|G(x)|\ne G\),因为可能有 \(g(x)\) 相同。

  • 轨道-稳定子定理:

\[|G|=|G^x|\times |G(x)| \]

证明,先考虑 \(G^x\)\(G\) 的子群。

  • 封闭性:\(g(x)=x,f(x)=x,g(f(x))=g(x)=x\)
  • 结合律:显然满足。
  • 单位元:\(I(x)=x\)
  • 逆元:\(f(x)=x,x=f^{-1}(x),f^{-1}\in G^x\)

用拉格朗日定理,接下来只需要证明 \([G:G^x]=|G(x)|\)

这个考虑对轨道里每一个元素求一个陪集 \(aG^x\)。容易证明他们两两不交即可。

Burnside 引理

\(X/G\) 表示在 \(X\)(所有染色方案中),在 \(G\) 作用下的所有等价类的集合(如果两种方案通过 \(G\) 中置换的作用下相等,则它们在一个等价类中),也就是对于所有 \(x\in X\),轨道的数量。

\[|X/G|=\frac{1}{|G|}\sum_{g\in G} |X^g| \]

这里,\(X^g=\{x|g(x)=x,x\in X\}\),也就是 \(g\) 作用下 不动点集合。

证明:

\[|X/G|=\sum_{y\in X/G}1\\ = \sum_{y\in X/G} \sum_{x\in y}\frac{1}{|y|}\\ = \sum_{y\in X/G} \sum_{x\in y}\frac{1}{|G(x)|} \]

这里用一下轨道-稳定子定理。

\[=\frac{1}{|G|} \sum_{y\in X/G} \sum_{x\in y}|G^x|\\ =\frac{1}{|G|} \sum_{x\in X}|G^x| \]

此时考虑每个置换的贡献,就可以得到:

\[=\frac{1}{|G|} \sum_{g\in G}|X^g| \]

Pólya 定理

考虑在染色问题中,如果每个点都可以任意染色,也就是 \(|X|=|B|^{|A|}\),那么 \(g(x)=x\) 可以发现对于 \(g\) 的每一个置换环都需要然一种颜色,因此令 \(c(g)\) 表示 \(g\) 的置换环数量,\(m=|B|\),可以得到:

\[|X/G|=\frac{1}{|G|} \sum_{g\in G}m^{c(g)} \]

做题记录

P4980

给定一个 \(n\) 个点,\(n\) 条边的环,有 \(n\) 种颜色,给每个顶点染色,问有多少种本质不同的染色方案,答案对 \(10^9+7\) 取模。

注意本题的本质不同,定义为:只需要不能通过旋转与别的染色方案相同

\(n\le 10^9,t\le 10^3\)

直接用 Pólya 即可,\(G\) 中每个元素都是形如 \((i+1,i+2,...,n,1,2,...,i)\) 这样的排列,\(|G|=n\),它的置换环数量显然就是 \(、gcd(n,i)\)

\[|X/G|=\frac{1}{|G|} \sum_{g\in G}m^{c(g)}\\ = \frac{1}{n}\sum_{i=1}^n n^{\gcd(n,i)}\\ = \frac{1}{n}\sum_{d|n}n^{d}\sum_{i=1}^n [\gcd(i,n)=d]\\ =\frac{1}{n}\sum_{d|n}n^{d} \varphi(\frac{n}{d}) \]

大力求即可,复杂度 \(tn^{\frac{3}{4}}\)

code


P4128

已知 \(n\) 个点的无向完全图,给每条边染色,一共 \(m\) 种颜色,两种染色方案相同仅当将点编号置换后对应边颜色相同,求方案数。

\(n\le 60\)

无向图的计数问题是群论的一个重要应用。

由于是给所有边进行染色,但是置换是对于点的,所以需要把置换改成对于边的操作。

即对于置换 \((p_1,p_2,...,p_n)\),相当于 \(p_{(i,j)}=(p_i,p_j)\) 这个置换,相当于求这个的置换环数量。

考虑对于一种方案,求其置换环数量。

先考虑原排列 \(p\) 的置换环,假设大小分别为 \(a_1,a_2,...,a_k\)

对于所有边,相当于两个端点在置换环上分别走,那么分类讨论一下。

  • 如果两端点在同一个置换环内,那么考虑两端点在环上的距离 \(x\),每个距离对应着一个置换环,而且 \(x\)\(a_i-x\) 等价,所以数量为 \(\left\lfloor\frac{a_i}{2}\right\rfloor\)

  • 如果两端点不在一个置换环内,从一条边出发走 \(\text{lcm}(a_i,a_j)\) 次后会走回来,所以置换环数量为 \(\frac{a_ia_j}{\text{lcm}}=\gcd(a_i,a_j)\)

加起来就好了,假设是 \(f(p)\)

那么答案就是

\[|X/G|=\frac{1}{|G|}\sum_{g\in G}X^g=\frac{1}{n!}\sum_{p\in S_n} m^{f(p)} \]

暴力求复杂度 \(O(n!)\),寄。

但是注意到对于每个排列,如果其置换环大小集合 \(a\) 相同,则它们等价,因此可以直接分拆数去求,可以通过 \(n=60\),此时总分拆方案数是 \(966467\)

code

双倍经验:P4727

相当于 \(m=2,p=997\)

三倍经验:ABC284Ex

在图计数的基础上加了个点染色。

那么只需要在式子后面乘一个点染色方案数,因为点和边独立。

\[|X/G|=\frac{1}{|G|}\sum_{g\in G}X^g=\frac{1}{n!}\sum_{p\in S_n} m^{g(p)}2^{f(p)} \]

\(g(p)\) 表示 \(p\) 的置换环数量。

但是求的是恰好用 \(k\) 种颜色,只需要容斥一下,暴力跑 \(k\) 遍 dfs 即可。

但是太慢了,由于发现上面的 \(g(p)\le n\),可以一次 dfs 求出 \(m^i\) 前面乘的系数,这样就只需要一次 dfs,可以跑 \(n\le 60\) 了。


loj6519

先直接上公式,相当于求 \(|X^g|\)

注意到这个环上的排列很有特征,对于 \(P_i=(i+1,i+2,...,n,1,2,...,i)\) 而言,\(|X^g|\) 中的染色方案满足存在长度为 \(\frac{n}{\gcd(n,i)}\) 的周期。

每个周期的黑色点数量相同,问题转化为子问题,也就是去掉了环等价的限制。

连续 \(k\) 个黑比较难搞,转化一下就是两个白之间距离不能超过 \(k\),这个可以插板了。

先枚举最左和最右用了多少,然后中间的大力容斥即可。

\[\sum_{d=0}^k (d+1)\sum_{i=0}^{n-m} (-1)^i \binom{n-m}{i}\binom{m-d+n-m-2-i(k+1)}{n-m-2} \]

注意到第二个循环只需要枚举到 \(\frac{m}{k+1}\) 即可,因此总复杂度 \(\frac{m}{k}\times k=m\),可过。

code

实现里没有用莫比乌斯反演,因为暴力就行了。

一开始以为这个过不去,怒推生成函数。

\[[x^m](1+x+x^2+...+x^k)^{n-m-1}(1+2x+3x^2+...+(k+1)x^k)\\ =[x^m](\frac{1-x^{k+1}}{1-x})^{n-m-1}\frac{\frac{1-x^{k+1}}{1-x}-(k+1)x^{k+1}}{1-x} \\ =[x^m]\frac{(1-x^{k+1})^{n-m}}{(1-x)^{n-m+1}}-(k+1)[x^{m-k-1}]\frac{(1-x^{k+1})^{n-m-1}}{(1-x)^{n-m}} \]

问题相当于只需要求解

\[[x^a]\frac{(1-x^{k+1})^b}{(1-x)^c}\\ =[x^a](1-x^{k+1})^b\sum \binom{c-1+i}{i}x^i \]

只需要枚举左边选了几个,那么右边的就可以直接算了,所以这部分可以 \(O(\min(b,\frac{a}{k+1}))\),所以综上,这部分复杂度就变成了 \(O(\frac{m}{k})\)

code

确实快了一些。

posted @ 2023-01-08 22:08  houzhiyuan  阅读(204)  评论(0编辑  收藏  举报