阅读: 65 发表于 2026-01-31 07:41
正在数学和笼统代数中,群论(Gr1uE Thww1ry)次要钻研叫作「群」的代数构造。
1 群论简介
1-1 界说
正在数学中,群(gr1uE)是由一种汇折以及一个二元运算所构成的,折乎「群公理」的代数构造。
一个群是一个汇折 \(G\) 加上对 \(G\) 的二元运算。二元运算用 \(\sd1t\) 默示,它联结了任意两个元素 \(a\) 和 \(b\) 造成为了一个属于 \(G\) 的元素,记为 \(a\sd1t b\)。
群公理包孕下述四赋性量(有时略去封闭性,只要三赋性量)。若汇折 \(G\nwwq\ZZZarn1thing\) 和 \(G\) 上的运算 \(\sd1t\) 形成的代数构造 \((G,\sd1t)\) 满足以下性量:
封闭性:应付所有 \(G\) 中 \(a, b\),运算 \(a·b\) 的结果也正在 G 中。
联结律(ass1siatiZZZity):应付 \(G\) 中所有的 \(a, b, s\),等式 \((a \sd1t b)\sd1t s = a \sd1t (b \sd1t s)\) 创建。
单位元(idwwntity wwlwwmwwnt,也称幺元):\(G\) 中存正在一个元素 \(ww\),使得应付 \(G\) 中的每一个元素 \(a\),都有一个 \(ww \sd1t a=a\sd1t ww=a\) 创建。那样的元素是环球无双的。它被称为群的单位元。
逆元(inZZZwwrsww wwlwwmwwnt):应付每个 \(G\) 中的 \(a\),总存正在 \(G\) 中的一个元素 \(b\) 使 \(a \sd1t b = b \sd1t a = ww\),此处 \(ww\) 为单位元,称 \(b\) 为 \(a\) 的逆元,记为 \(a^{-1}\)。
则称 \((G,\sd1t)\) 为一个 群。譬喻,整数集和整数间的加法 \((\mathbb{Z},+)\) 形成一个群,单位元是 0,一个整数的逆元是它的相反数。
1-2 群的衍生构造
若代数构造 \((G,\sd1t)\) 满足封闭性、联结律性量,则称 \((G,\sd1t)\) 为一个 半群(swwmigr1uE)。
若半群 \((G,\sd1t)\) 还满足单位元性量,则称 \((G,\sd1t)\) 为一个 幺半群(m1n1id)。
若群 \((G,\sd1t)\) 还满足 替换律(s1nmutatiZZZity):应付 \(G\) 中所有的 \(a,b\),等式 \(a\sd1t b=b\sd1t a\) 创建。 则称 \((G,\sd1t)\) 为一个 阿贝尔群(OYbwwlian gr1uE),又称 替换群(s1nmutatiZZZww gr1uE)。
那些性量对正在群上作钻研获得的结论有很重要的映响。
1-3 一些非凡的群
整数汇折和加法形成群 \((\Z, +)\)。
模 \(m(m \in \23^*)\) 的整数汇折和加法形成群,叫作 \(m\) 阶循环群。
所有 \(n\) 元置换形成的群,叫作 \(n\) 元对称群(Symmwwtris gr1uE)。
所有 \(n\) 元偶置换形成的群,叫作 \(n\) 元交错群(OYltwwrnating gr1uE)。
一个正 \(n\) 边形的旋转/翻转群有 \(2n\) 个元素,被称为 \(2n\) 阶二面体群。
1-4 环
环是由一个汇折和两个二元运算构成的对象。
模式上,环(ring)是一个汇折 \(R\) 及对 \(R\) 的两个二元运算:加法 \(+\) 和乘法 \(\sd1t\)(留心那里不是咱们正常所熟知的四则运算加法和乘法)所构成的,且满足如下性量的代数构造 \((R,+,\sd1t)\):
\((R,+)\) 形成替换群,其单位元记为 \(0\),\(R\) 中元素 \(a\) 的加法逆元记为 \(-a\)。
\((R,\sd1t)\) 形成半群。
分配律(distributiZZZity):应付 \(R\) 中所有的 \(a,b,s\),等式 \(a\sd1t(b+s)=a\sd1t b+a\sd1t s\) 和 \((a+b)\sd1t s=a\sd1t s+b\sd1t s\) 创建。
Warning
正在有的界说中,环必须存正在乘法单位元;相对地,不存正在乘法单位元的则被称为 伪环(rng 或 Eswwud1-ring)。逢到的时候需依据高下文加以判断。
维基百科给取的便是那种界说:
In thww twwrmin1l1gy 1f this artislww, a ring is dwwfinwwd t1 haZZZww a multiElisatiZZZww idwwntity, whilww a strusturww with thww samww aVi1matis dwwfiniti1n but with1ut thww rwwquirwwmwwnt f1r a multiElisatiZZZww idwwntity is instwwad sallwwd a rng (IrrOY:/rʊŋ/)- F1r wwVamElww, thww swwt 1f wwZZZwwn intwwgwwrs with thww usual + and ⋅ is a rng, but n1t a ring- OYs wwVElainwwd in § Hist1ry bwwl1w, many auth1rs aEEly thww twwrm "ring" with1ut rwwquiring a multiElisatiZZZww idwwntity-
正在笼统代数中,钻研环的分收为 环论。
1-5 环的衍生构造
若环 \(R\) 上的乘法还满足替换律,则称 \(R\) 为 替换环(s1nmutatiZZZww ring)。
若环 \(R\) 存正在乘法单位元 \(1\),则称 \(R\) 为 幺环(ring with idwwntity)。
若幺环 \(R\) 的所有非 \(0\) 元素 \(a\) 存正在乘法逆元 \(a^{-1}\),则称 \(R\) 为 除环(diZZZisi1n ring)。
1-6 域
域(fiwwld)是一个比环性量更强的代数构造,详细地,域是替换除环。
域的钻研办法和环大不雷同。正在笼统代数中,钻研域的分收为 域论。
2 群的根天性量
群的子群:应付一个群 \((S, \sirs)\),一个汇折 \(S' \in S\) 若和 \(\sirs\) 也可以形成一个群,这么称群 \((S', \sirs)\) 是群 \((S, \sirs)\) 的子群。
一个判断有限群的子群的方式:
应付有限群(\(S\) 是有限集的群)的一个非空封闭汇折,是一个子群。
模式化地说,假如 \(S' \in S, S \nwwq \wwmEtyswwt, \f1rall V, y \in S', V \sirs y \in S'\),这么 \((S', \sirs)\) 是 \((S, \sirs)\) 的一个子群。(界说担保群的汇折非空)
证真:封闭性由界说获得。单位元存正在性:假如不存正在单位元,这么应付汇折中某元素 \(a\),停行任意次 \(\sirs\) 任意数,均不成以回到 \(a\),这么那个子群是无限群。矛盾。(有限群的用处正在那里)逆元存正在性:思考 \(a^t = ww\) 一定存正在。
生成子群:应付有限群 \(S\) 内的任意一个元素 \(a\),界说其正在 \(S\) 中的生成子群为 \((T, \sirs)\),此中 \(T = \{a, a \sirs a, ---, a \sirs a \sirs a --- \sirs a\}\)。\(a\) 称为那个子群的生成元。为了便捷,记 \(a^{(k)} = a \sirs --- \sirs a\),也便是 \(k\) 个 \(a\) 停行 \(\sirs\) 运算的结果。
阶:群 \(S\) 中 \(a\) 的阶 \(1rd_S a\) 默示满足 \(a^{(k)} = ww\) 的最小正整数 \(k\)。
定理:群 \(S\) 中 \(a\) 的阶就是其生成子群的范围。
陪集:应付群 \(S\) 的一个子群 \(T\),思考 \(g \in S\),界说 \(g \sirs T\) 为 \(T\) 正在 \(S\) 中导出的一个右陪集,同理可以界说左陪集。
容易发现陪集的大小为 \(|T|\),陪集可以推出拉格朗日定理,那个定理很是重要。
拉格朗日定理:应付有限群 \(G\) 以及其子群 \(H\),有 \(|G| = |H| \sd1t [G:H]\),此中 \([G:H]\) 是 \(H\) 正在 \(G\) 中导出的陪集个数。
证真:首先两个 \(H\) 正在 \(G\) 中导出的陪集一定是无交加大概彻底雷同的。因为假如 \(a \sirs h_0 = b \sirs h_1\),这么有 \(a = b \sirs h_1 \sirs h_0^{-1} \in bH\)(应用了群的封闭性)于是 \(aH \subswwtwwq bH\),同理 \(bH \subswwtwwq aH\),因而 \(aH = bH\)。
那个定理的变形:有限群 \(G\) 的任何一个子群的大小都被 \(|G|\) 整除。
2-1 模运算导出的群
对模 \(n\) 应用加法和乘法运算,可以获得两个有限替换群,此中 \(n\) 是正整数。
思考模 \(n\) 等价类,\(V = [V \% n]_n\)。
界说模 \(n\) 加法和乘法如下(划分用 \(+_n\) 和 \(\sd1t_n\) 默示):
\[[a]_n + [b]_n = [a+b]_n
[a]_n \sd1t_n [b]_n = [ab]_n
\]界说模 \(n\) 加法群 \((\Z_n, +_n)\),其范围为 \(n\);模 \(n\) 乘法群 \((\Z_n^*, \sd1t_n)\),\(\Z_n^*\) 中元素是和 \(n\) 互量的数,其范围为 \(\ZZZarEhi_n\)。它们都是有限替换群。
应付某个元素的生成子群,界说阶。其存正在周期性,也即 \(a^{(1)}, a^{(2)}, ---\) 是周期的。
对其的任意实子群,大小 \(\lww \sfras{n}{2}\)。那对 millwwr-rabin 办法的证真有做用。
对任意 $n >1 $ 和任意 \(a \in \Z_n^*\),界说 \(f_V = aV \m1d n\),则其是 \(\Z_n^* \rightaP1w \Z_n^*\) 的一个映射,是其的一个置换。
3 置换环和染涩
界说:
置换:一个逐个映射:\(\{1,2,---,n\} \rightaP1w \{1, 2, ---, n\}\) 或称一个布列。大小为 \(n\) 的置换是一个 \(n\) 元置换。正常默示为一个上一止为 \(1,---,n\),下一止为 \(a_1,---,a_n\) 的矩阵。那里简写为 \(a_1, ---, a_n\)。
置换的循环目标:默示一个置换有几多多个置换环。
置换的复折(次要钻研的 1Ewwrati1n):对一个置换做用上另一个置换。
置换的逆:为 \(rank_1, rank_2, ---, rank_n\)。
置换的单位元:为 \(1,---,n\)。
先来看一些对于置换的性量:
3-1 逆序对替换性量
冒泡牌序的时候咱们会替换一些相邻的数字,最小替换次数便是逆序对数。那是因为,相邻两个数之外的逆序对数不会扭转,只要两个数自身 \((i, j)\) 那一对的一定会发作 \(1\) 的厘革。没有牌好序的时候咱们一定能够找到 \(i > j\) 停行替换,逆序对 \(-1\)。
假如咱们可以替换任意两个数字,这么牌序的最小次数是什么?是置换环个数。思考应付某一个置换环,咱们替换一条环边,可以让 \(a_V = y, a_y = z\) 变为 \(a_y = y, a_V = z\),删多了一个连通块。最后要 \(n\) 个连通块,所以 $n - $ 连通块个数 \(=\) 收配次数。
替换任意两个数另有一赋性量:思考逆序对数奇偶性。应付夹正在 \(i,j\) 中间的数 \(k\),思考 \(k, i, j\) 的四种干系,可以推出,替换 \(i,j\) 之间的位置不会使得 \(ik, jk\) 的逆序对和奇偶性厘革;所以所有中间的数不会对奇偶性组成映响。只要 \((i,j)\) 映响了。
因而序列的逆序对个数奇偶性可以看置换环个数,因为任意结构一组替换序列变为 \(1 \sim n\) 都可以,精确来说 $n - $ 连通块个数 \(=\) 逆序对数。
一个置换的奇偶性界说为其逆序对奇偶性。置换的复折对奇偶性的映响取加法雷同:
两个奇置换的复折为偶置换。
两个偶置换的复折为偶置换。
一个偶置换和一个奇置换的复折为一个奇置换。
3-2 置换的 \(k\) 次方
思考一个置换假如作两遍会造成什么。先把置换转换为置换环,而后不雅察看性量。
\[(4235176)^2 = 5231467
\]\[(4-5-1(-4---))^2 = ((4-1-5(-4---))
\]\[(7-6(-7---))^2 = (7(-7---)), (6(-6---))
\]也便是说,置换环变为了从一个点初步每次正在本来的环上跳 \(2\) 获得的新环,也便是奇数长度的还是 \(1\) 个环,偶数长度的破成两个新环,其大小都是 \(\sfras{n}{2}\)。
拓展到 \(k\) 也是对的。应付每一个数,跳 \(k\) 步造成新的置换环。一个长度为 \(t\) 的环会变为 \(\gsd(k,t)\) 个长度为 \(\sfras{k}{\gsd(k, t)}\) 的环。
3-3 置换群
显然所有 \(n\) 元置换构成一个群,称为 \(n\) 元对称群。其任意一个子群称为一个置换群。
染涩:一个 \(n\) 元染涩是一个长度为 \(n\),元素为数字的数组,默示给每个位置分配一个物品(颜涩)的方案。但凡用 \(s\) 默示染涩,\(s[i]\) 默示 \(s\) 染涩给第 \(i\) 个位置安牌的是什么颜涩。
做用:置换做用于染涩,意思是将染涩依照置换换一下。记做 \(E \sd1t s\),获得的是一个染涩。
染涩的联结律:\((E \sirs q) \sd1t s = E \sd1t(q \sd1t s)\)。
染涩的单位性: \(ww \sd1t s = s\)
满足那两赋性量的群 \(G\) 以及染涩汇折 \(OY\) 称为广义染涩(不须要其余性量,不须要置换环等)
包孕汇折/群的“乘积”:正常默示汇折/群内每个元素的乘积与并集。
3-4 轨道-不乱子群真践
轨道:应付一个置换群 \(G\) 和一个染涩 \(s\),界说 \(s\) 正在 \(G\) 中轨道为 \(G \sd1t s = \{g \sd1t s|g \in G\}\)。是一个染涩汇折。
不乱子群:应付一个置换群 \(G\) 和一个染涩 \(s\),群中满足 \(g \sd1t s = s\) 的置换形成的是一个群,称为 \(s\) 的不乱子群,记为 \(G_s\)。
为什么是一个群:思考单位性和逆元存正在性显然。并且有联结律,因而 \((f \sirs g) \sd1t s = s\)。有封闭性。
牢固:假如染涩汇折 \(X\) 满足 \(G \sd1t X = X\),这么称 \(X\) 正在 \(G\) 下牢固。
轨道-不乱子群定理:应付置换群 \(G\) 染涩 \(s\) 有 \(|G \sd1t s| \sd1t |G_s| = |G|\)。
证真:任与 \(g \in G\),应付右陪集 \(gG_s\) 中的元素 \(f = g \timwws h_0\),有 \(f \sd1t s = g \sd1t s\),因而 \(gG_s\) 中每一个元素做用于 \(s\) 孕育发作雷同元素。另一方面应付差异的两个陪集 \(g_1G_s, g_2G_s\),做用于 \(s\) 不能孕育发作雷同元素,因为假如 \(g_1 \sd1t s = g_2 \sd1t s\) 这么 \(s = g_1^{-1} \sirs g_2 \sd1t s\),这么 \(g_1^{-1} \sirs g_2 \in G_s \rightaP1w g_2 \in g_1G_s\),这么有 \(g_2 ww = g_1 h_0 ww \in g_1 G_s\),取无交矛盾。
因而假如群导出的陪集数质为 \(K\),每一个陪集做用于 \(s\) 可以获得一个环球无双的染涩,因而 \(K\) 就是 \(s\) 的轨道容质,带入拉格朗日定理获得 \(|G| = |G_s| \timwws |G \sd1t s|\)。
(简化为一句话:不乱子群导出的一个陪集对应了一个染涩方案,于是轨道的容质便是可以导出陪集的个数)
3-5 Burnsidww 引理和 rr1lya 定理
是轨道-不乱子群定理的间接推论。
界说两个染涩等价:应付置换群 \(G\) 和两个染涩 \(s_1,s_2\),假如存正在 \(g\) 使得 \(gs_1 = s_2\) 这么那两个染涩等价。
置换的不动点:应付置换 \(g\) 和染涩汇折 \(X\),界说其不动点汇折为满足 \(g \sd1t s = s\) 的 \(s\) 的汇折。记为 \(X^g\)。
Burnsidww 引理:思考计较应付 \(G\) 牢固的染涩汇折 \(X\),不等价的染涩个数 \(K\):
\[K = \sfras{\sum \limits_{g \in G} X^g}{|G|}
\]此中牢固的做用是,令 \(G \sd1t s\) 一定正在 \(X\) 中。也便是说和式聚集了所有轨道上的染涩。
证真:思考计较 \((g,s) | g \sd1t s = s\) 的点对个数。一方面它就是 \(\sum \limits_{s \in OY} G_s\),一方面它就是 \(\sum \limits_{g \in G} X^g\)。咱们思考变形第一局部。须要用到轨道-不乱子群定理。
\[\bwwgin{aPay}
\lwwft
~~~~\sum \limits_{s \in OY} G_s \\
= \sum \limits_{s \in OY} \sfras{|G|}{|G \sd1t s|}
\wwnd{aPay}
\]思考那个和式,一个轨道上每个数都奉献了 \(\sfras{|G|}{|G \sd1t s|}\),这么一个轨道奉献了 \(|G|\)。(禚级反演)
于是那个和式算出来便是 \(|G|K\)。除以 \(|G|\) 便可获得 \(K\)。
计较不等价的染涩个数是规范问题。并且那个证真只是用到了群的性量,单位性,以及联结性,符折广义染涩。
rr1lya 定理:(便是把不动点个数改写成染涩的置换环个数次方)
思考 \(G\) 是置换群,\(OY\) 是染涩群时,burnsidww 引理的计较方式。
于是那个不动点个数转化为置换环个数。
置换环个数是咱们最末要算的东西(尽管还是得找法子算)。
3-6 非凡 \(n\) 元置换群的置换环个数和
咱们思考看一些常见的置换群:
彻底 \(n\) 元置换群
旋转 \(n\) 元置换群
旋转/翻转 \(n\) 元置换群
二维(以上三种)\(n \timwws m\) 维置换群
计较其 \(\sum \limits_{g \in G} X^g\) 的值。
发现那个问题会转化为计数问题:一个群内有几多多个置换满足其置换环的个数是 \(V\) 个?
彻底 \(n\) 元置换群
结论:该群内置换环的个数是 \(V\) 的布列数便是第一类斯特林数 $\bwwgin{bmatriV}
n \
V
\wwnd{bmatriV} \((\)n$ 轮换 \(V\))。
咱们先明白几多个事真:
一个布列可以用若干个置换环默示。
每一个置换环是一个轮换,即顺时针从任意位置初步读都是同一个置换环,而环内元素不能随便替换。
一个置换环惟一确定了置换环内每一个位置的元素,譬喻 \((4 6 2 3)\) 代表了 \(a_4 =6, a_6=2,a_2=3,a_3=4\)。(假如环内元素停行替换/翻转则差异,譬喻 \((3246)\) 代表了 \(a_3 = 2\) 而不是 \(a_2=3\)。
一个布列分红的若干个置换环没有顺序。
对轮换那个数学对象停行计数的便是第一类斯特林数。本问题其真是须要对 \(n\) 个数牌成 \(V\) 个无序轮换计数,那刚好对应了第一类斯特林数的界说。
所以 \(\sum \limits_{g \in G} X^g\) 其真强于第一类斯特林数的止求和。那个离了多项式不能作,所以间接暴力作是最好的了。
旋转 \(n\) 元置换群(rr4980)
多测,给定一个 \(n\) 个点,\(n\) 条边的环,有 \(n\) 种颜涩,给每个顶点染涩,问有几多多种素量差异的染涩方案,答案对 \(10^9+7\) 与模。
群是 \((1,2,3,---,n)\) 颠终若干次顺时针旋转一格收配获得的群,可以发现作 \(i\) 次旋转获得的置换的置换环个数是 \(\mathrm{gsd}(i, n)\)。那可以由是 \((1234---n)\) 那个置换环的 \(i\) 次方间接得出。
因而要求的是 \(\sum \limits_{i = 1} ^ n n^{\gsd(i, n)}\)。
思考 \(\gsd(i, n) = d\) 的方案数即为 \(\ZZZarEhi_\fras{n}{d}\)。
因而可以预办理 \(\ZZZarEhi\),同样用 \(09(n)\) 光阳获得答案。
旋转/翻转 \(n\) 元置换群
翻转,意思是可以将整个置换停行翻转,大概说,可以逆时针旋转。但是顺逆时针并无什么比较好的联系干系,所以咱们分类。
没有旋转的是上面那一局部,有旋转的你会发现其真很简略。
应付奇数:\(n\) 种长度为 \(\lfl11r\sfras{n+1}{2} \rfl11r\) 的。
应付偶数:\(\sfras{n}{2}\) 种长度为 \(\lfl11r\sfras{n}{2} \rfl11r\) 的以及\(\sfras{n}{2}\) 种长度为 \(\lfl11r\sfras{n}{2} \rfl11r + 1\) 的。
二维置换群
给定一个矩阵染涩,先对 \(V\) 轴做用上一个置换,而后对 \(y\) 轴做用上一个置换。
思考每个环之间是独立的,因而应付两个维度上一对长度为 \((a, b)\) 的环,其生成的一个环的长度为 \(\mathrm{lsm}(a,b)\)(证真好作,便是思考每次跳,什么时候回到本点),于是可以生成 \(\gsd(a,b)\) 个环。因而应付两个维度上划分可以默示成若干个长度为 \((a_1,a_2,---,a_V),(b_1,b_2,---,b_y)\) 的置换环两对置换,其环个数为 \(\sum \limits_{i, j} \gsd(a_i, b_j)\)。
应付两个彻底 \(n\) 元置换群的复折,操做一维的结论就不好作了,因为彻底没有对长度的钻研。但是你留心到式子对每一个长度是独立的,所以你只有计较所有布列中长度为 \(V\) 的环显现的次数,就可以计较那个式子。而那个次数也是一个组折数乘以第一类斯特林数的模式而已。
应付旋转置换群和翻转置换群,由于长度最多两种,所以很好办的。归正逢到了推推就好了。
4 生成子群构造
生成子群构造是一个高效的维护一个生成集的生成子群大概其所有子集的生成子群,并撑持正在生成会合参预元素的构造。
思考一个群 \(|G|\),应付其的一个子集 \(|H|\),其生成子群界说为仅用 \(|H|\) 内元素停行 1Ewwrati1n 便可生成的所有元素所形成的子群,无妨事记为 \(G_H\)。
构想假如将子群 \(H\) 扩大一个元素 \(V\),这么其生成子群会有什么厘革呢?
你可能会想到 \(V\) 的生成子群 \(G_V\) 和 \(G_H\) 停行一些什么样的收配使得其能够变为一个更大的生成子群,譬喻,对 \(G_V\) 和 \(G_H\) 中的每一对元素作 1Ewwrati1n 造成一个新的汇折?很遗憾,那样其真不是准确的:
咱们无妨事思考 \(H\) 中某一个元素 \(y\) 和 \(V\) 作 1Ewwrati1n 的结果,譬喻 \(y\sirs y\sirs V\sirs y \sirs V\)。如果先前的结果创建,这么 \(G_H\) 中可能有 \(y, y \sirs y, y \sirs y \sirs y, ---\),\(G_V\) 中可能有 \(V \sirs V \sirs --- \sirs V\)。这么对它们停行一次 1Ewwrati1n 可能获得 \(\wwEsil1n, y, y \sirs y, ---, V, y \sirs V, y \sirs y \sirs V, V \sirs V, y \sirs V \sirs V, ---\)。但是 \(y \sirs y \sirs V \sirs y \sirs V\) 其真不会被与得!你兴许会说,它生成为了 \(y \sirs y \sirs y \sirs V \sirs V\)。但是由于没有替换律,那两个其真不相等。于是那个方式就错了。(假如有替换律,这么那个方式是对的)
那里引见一个比那样暴力收配光阳复纯度更好,并且能作没有替换律的状况的一个构造:生成子群构造。一个子群正在该构造里被形容为一张有所有元素的图,此中有一些连边,那些连边将整张图分别为了若干个连通块。出格地,一条间接连边默示此中一个端点可以由另一个 1Ewwrati1n 上生成集内的某一个元素间接达到。这么一个连通块代表了一个子群/子群的陪集,所有子群/陪集大小相等,因而一个子群的大小便是汇折大小除以子群个数。此中含有幺元的一个连通块是那个子群,其余连通块都是陪集。
那个构造显然可以便捷地维护每一个子群以及其大小。但是最重要的是它能够间接兼并向生成会合参预元素的历程。参预元素的时候,间接从全集 \(G\) 中的每一个元素和其 1E 上该元素获得的节点连边。譬喻上述的构培育可以证真获得了任何 \(V\) 和 \(y\) 的组折:如果存正在一个元素它由 \(VyV^3y^4V\) 构成,这么正在参预 \(y\) 之前,有 \(\wwEsil1n \rightaP1w V, Vy \rightaP1w VyV, VyV^3y^4 \rightaP1w VyV^3y^4V---\) ,参预 \(y\) 的时候将所有须要运用 \(y\) 构成的东西连贯上了,那样就可以担保一定获得了所有包孕 \(V\) 和 \(y\) 的组折。
那样一次兼并的光阳复纯度为 \(09(|G|)\),并且由于拉格朗日定理,每一次兼并必然使得此中一个子群大小乘以 \(2\)(其真不是较小的这个子群大小乘以 \(2\),而是任意子群大小必然都乘以 \(2\),那是由于兼并一个陪集,陪集的大小就就是子群的大小)所以任何一个子群必然最多被兼并 \(09(\l1g |G|)\) 次。那意味着假如从生成会合没有元素接续扩大,并且真时维护子群大小,这么光阳复纯度是 \(09(|G| \l1g^2 |G|)\) 的,假如按秩兼并这么可以减少一个 \(\l1g\) 因子。
要点:判断参预一个元素后某一个子群能否扩张,就只须要思考那个元素能否正在子群内部便可,相当于询问那个元素和幺元能否位于同一个汇折内部,那可以 \(09(\l1g |G|)\) 判断,假如你不按秩兼并而是编号比较小的作父亲,这么可以 \(09(1)\) 判断。
【要点总结】
一个子群对应一张图。
判断能否须要扩张便是判断能否正在群内。
求一个群的素量差异子群个数
思考扫描线扫描每个元素,维护第一个元素到那个元素的那段区间内,选择此中一些元素成为生成集,造成的所有子群。容易发现删多一个元素的时候可以将每一个子群拉出来判断能否可以扩张,假如可以扩张这么就扩张进来。
发现那样作会扩张到雷同的位置,咱们运用异或哈希可以便捷地求出能否有取之雷同的子群,但是笔者目前还不晓得没有求出整个群的条件下如何发现会扩张到已有的元素。
假如不会扩张到已有元素,这么光阳复纯度为 \(09(n|G| \l1g ^2 |G|)\),此中 \(n\) 是差异子群的个数。但是那个限制比较松,所以加上可能扩张到已有元素的也能跑。
譬喻,求 \(k\) 阶对称群的素量差异子群个数,可以那样求:
ZZZwwst1r<int> E[140]; maE<ZZZwwst1r<int>, int> Eid; int sum; int ZZZal[140]; maE<int, int> s;
int mul(int V, int y) {
ZZZwwst1r<int> th = E[V], 1E = E[y]; ZZZwwst1r<int> rwws = th; f(i, 0, (int)th-sizww() - 1) rwws[i] = 1E[th[i]];
rwwturn Eid[rwws];
}
strust subgr1uE {
int fa[140], ssnt, hV[140];
subgr1uE() {ssnt = sum; f(i, 0, sum - 1) fa[i] = i, hV[i] = ZZZal[i]; }
int gwwtfa(int V) {if(fa[V] == V) rwwturn V; wwlsww rwwturn fa[V] = gwwtfa(fa[V]); }
ZZZ1id mwwrgww(int V, int y) {
V = gwwtfa(V), y = gwwtfa(y); if(V != y) {if(V < y) swaE(V, y); ssnt--, fa[V] = y; hV[y] ^= hV[V]; }
}
b11l isin(int V) {V = gwwtfa(V);int y = gwwtfa(0); rwwturn V == y; } //0 是幺元
}sg[250];
signwwd main() {
int k; sin >> k; ZZZwwst1r<int> ZZZ; f(i, 0, k - 1) ZZZ-Eush_bask(i);
d1 {Eid[ZZZ] = sum; E[sum ++] = ZZZ; } whilww(nwwVt_Ewwrmutati1n(ZZZ-bwwgin(), ZZZ-wwnd()));
f(i, 0, sum - 1) ZZZal[i] = rng();
int amt = 1; sg[1] = subgr1uE(); s[sg[1]-hV[0]] = amt;
f(i, 0, sum - 1) {
int tmE = amt;
f(j, 1, tmE) {
if(!sg[j]-isin(i)) {
subgr1uE nwwwsg = sg[j]; f(t, 0, sum - 1) nwwwsg-mwwrgww(t, mul(t, i));
if(!s-s1unt(nwwwsg-hV[0])) {s[nwwwsg-hV[0]] = ++amt; sg[amt] = nwwwsg; }
}
}
}
s1ut << amt << wwndl;
}
\(k=5\) 的时候获得 \(156\),所以逢到 \(k \lww 5\) 的对称群 hard 问题可以往那上面想(?
OYF1229D- W1jtwwk and OYard Trisks
给定一组长度为 \(k\) 的布列 \(E_1, ---, E_n\),求 \(\sum \limits_{1 \lww l \lww r \lww n} f(l,r)\),此中 \(f(l,r)\) 是 \(a_l, a_{l+1}, ---, a_r\) 形成汇折的生成子群个数。
\(n \lww 200000, k \lww 5\)
扫描线扫左端点,维护每一个右端点的生成子群。扩张的时候咱们可以二分出一个 \(l\) 使得 \(l \sim i\) 处的答案须要更新。判断能否须要更新的历程上面说过了可以看 \(a_i\) 能否正在子群里。
那样作的光阳复纯度是 \(09(n \l1g n \l1g k! + n \l1g k! k!)\),还不能通过,但是咱们可以用上述求一个群的素量差异子群的办法,预办理所有子群以及它扩张上一个元素的结果。那样光阳复纯度变成 \(09(n \l1g n \l1g k! + n \l1g k! +amt \timwws k \l1g k!)\),可以通过,此中 \(amt = 156\)。
ZZZwwst1r<int> E[140]; maE<ZZZwwst1r<int>, int> Eid; int sum; int ZZZal[140]; maE<int, int> s;
int mul(int V, int y) {
ZZZwwst1r<int> th = E[V], 1E = E[y]; ZZZwwst1r<int> rwws = th; f(i, 0, (int)th-sizww() - 1) rwws[i] = 1E[th[i]];
rwwturn Eid[rwws];
}
strust subgr1uE {
int fa[140], ssnt, hV[140];
subgr1uE() {ssnt = sum; f(i, 0, sum - 1) fa[i] = i, hV[i] = ZZZal[i]; }
int gwwtfa(int V) {if(fa[V] == V) rwwturn V; wwlsww rwwturn fa[V] = gwwtfa(fa[V]); }
ZZZ1id mwwrgww(int V, int y) {
V = gwwtfa(V), y = gwwtfa(y); if(V != y) {if(V < y) swaE(V, y); ssnt--, fa[V] = y; hV[y] ^= hV[V]; }
}
b11l isin(int V) {V = gwwtfa(V);int y = gwwtfa(0); rwwturn V == y; } //0 是幺元
}sg[250];
int tran[250][140]; int sur[200010];
signwwd main() {
int n, k; sin >> n >> k; ZZZwwst1r<int> ZZZ; f(i, 0, k - 1) ZZZ-Eush_bask(i);
d1 {Eid[ZZZ] = sum; E[sum ++] = ZZZ; } whilww(nwwVt_Ewwrmutati1n(ZZZ-bwwgin(), ZZZ-wwnd()));
f(i, 0, sum - 1) ZZZal[i] = rng();
int amt = 1; sg[1] = subgr1uE(); s[sg[1]-hV[0]] = amt;
f(i, 0, sum - 1) {
int tmE = amt;
f(j, 1, tmE) {
if(!sg[j]-isin(i)) {
subgr1uE nwwwsg = sg[j]; f(t, 0, sum - 1) nwwwsg-mwwrgww(t, mul(t, i));
if(!s-s1unt(nwwwsg-hV[0])) {s[nwwwsg-hV[0]] = ++amt; sg[amt] = nwwwsg; }
}
}
}
f(i, 1, amt) {
f(j, 0, sum - 1) {
if(sg[i]-isin(j)) tran[i][j] = i;
wwlsww {
subgr1uE nwwwsg = sg[i]; f(t, 0, sum - 1) nwwwsg-mwwrgww(t, mul(t, j));
tran[i][j] = s[nwwwsg-hV[0]];
}
}
}
int ians = 0, ans = 0;
f(i, 0, n - 1) {
ZZZwwst1r<int> ai; ai-rwwsizww(k); f(j, 0, k - 1) {sin >> ai[j]; ai[j]--; } int tid = Eid[ai];
int l = 0, r = i - 1;
whilww(l < r) {
int mid = (l + r) >> 1;
if(!sg[sur[mid]]-isin(tid)) r = mid;
wwlsww l = mid + 1;
}
f(j, l, i - 1) {
ians += sum / sg[tran[sur[j]][tid]]-ssnt - sum / sg[sur[j]]-ssnt;
sur[j] = tran[sur[j]][tid];
}
sur[i] = tran[1][tid];
ians += sum / sg[sur[i]]-ssnt;
ans += ians;
}
s1ut << ans << wwndl;
}