新数学学习笔记

线性代数

学习的笔记

行列式

非常感谢大佬的题解

定义

行列式,是矩阵的一种运算。对于矩阵 \(A\)\(\det A\) 表示方阵 \(A\) 的行列式。所以说,行列式是一个数

行列式存在当且仅当行数列数相等

对于一个 \(n\) 阶行列式

\[A_{n \times n}= \begin{vmatrix} a_{11}& a_{12}& \cdots & a_{1n} \\ a_{21}& a_{22}& \cdots & a_{2n} \\ \vdots & \vdots & \ddots & \vdots \\ a_{n1}& a_{n2}& \cdots & a_{nn} \end{vmatrix}\]

其结果为所有不同行不同列的元素乘积的代数和。用数学语言写为:

\[\sum_{j_1j_2 \cdots j_n} (-1) ^ {\tau(j_1j_2\cdots j_n)} a_{1j_1}a_{2j_2}\cdots a_{nj_n} \]

其中 \(j_1j_2 \cdots j_n\)\(1 \sim n\) 的一个排列。\(\tau(j_1j_2 \cdots j_n)\) 表示排列 \(j\) 的逆序数的个数。

很清晰,没啥好说的

行列式性质

  • 性质一:\(\det A=\det A^{T}\)

\[\begin{vmatrix} a_{11}& a_{12}& \cdots & a_{1n} \\ a_{21}& a_{22}& \cdots & a_{2n} \\ \vdots & \vdots & \ddots & \vdots \\ a_{n1}& a_{n2}& \cdots & a_{nn} \end{vmatrix} = \begin{vmatrix} a_{11}& a_{21}& \cdots & a_{n1} \\ a_{12}& a_{22}& \cdots & a_{n2} \\ \vdots & \vdots & \ddots & \vdots \\ a_{1n}& a_{2n}& \cdots & a_{nn} \end{vmatrix} \]

现在考虑证明:

我们发现我们行和列的地位是完全一样的(by xuzishuai),也就是当我们枚举了所有列的排列的时候,我们会得到 \(n\) 个二元组,我们现在是按行排序的,也就是 \(a_{1j_1}a_{2j_2}\cdots a_{nj_n}\)。那么我们按列排序我们的行也会枚举到所有排列。

  • 性质二:行列式内某一行的公因子可以提出。

\[\begin{vmatrix} a_{11}& a_{12}& \cdots & a_{1n} \\ a_{21}& a_{22}& \cdots & a_{2n} \\ \vdots & \vdots & & \vdots \\ ka_{i1} & ka_{i2} & \cdots & ka_{in}\\ a_{n1}& a_{n2}& \cdots & a_{nn} \end{vmatrix} = k \begin{vmatrix} a_{11}& a_{12}& \cdots & a_{1n} \\ a_{21}& a_{22}& \cdots & a_{2n} \\ \vdots & \vdots & & \vdots \\ a_{i1} & a_{i2} & \cdots & a_{in}\\ a_{n1}& a_{n2}& \cdots & a_{nn} \end{vmatrix} \]

考虑计算贡献。从定义出发,我们每一项中间都会遍历到一个元素在第 \(i\) 行(也就是\(\times K\) 的这一行),所以答案就乘 \(K\)

  • 性质三:

\[\begin{vmatrix} a_{11}& a_{12}& \cdots & a_{1n} \\ a_{21}& a_{22}& \cdots & a_{2n} \\ \vdots & \vdots & & \vdots \\ b_1 + c_1 & b_2 + c_2 & \cdots & b_n + c_n \\ a_{n1}& a_{n2}& \cdots & a_{nn} \end{vmatrix} \]

\[= \begin{vmatrix} a_{11}& a_{12}& \cdots & a_{1n} \\ a_{21}& a_{22}& \cdots & a_{2n} \\ \vdots & \vdots & & \vdots \\ b_1 & b_2 & \cdots & b_n \\ a_{n1}& a_{n2}& \cdots & a_{nn} \end{vmatrix} + \begin{vmatrix} a_{11}& a_{12}& \cdots & a_{1n} \\ a_{21}& a_{22}& \cdots & a_{2n} \\ \vdots & \vdots & & \vdots \\ c_1 & c_2 & \cdots & c_n \\ a_{n1}& a_{n2}& \cdots & a_{nn} \end{vmatrix} \]

从定义出发,我们把左式和右式都按照定义展开,然后比对系数。我们把 \(a\) 看作系数,然后一个分配律就好了

  • 性质四:把第 \(k\) 行的倍数加到第 \(i\) 行,行列式不变。

这个哪里容易了!我们还是从定义考虑,我们从上一个性质开始考虑。
\( \det(B) = \det \begin{pmatrix} \mathbf{R}_1 \\ \vdots \\ \mathbf{R}_i \\ \vdots \\ \mathbf{R}_j + k\mathbf{R}_i \\ \vdots \\ \mathbf{R}_n \end{pmatrix} = \det \begin{pmatrix} \mathbf{R}_1 \\ \vdots \\ \mathbf{R}_i \\ \vdots \\ \mathbf{R}_j \\ \vdots \\ \mathbf{R}_n \end{pmatrix} + k \cdot \det \begin{pmatrix} \mathbf{R}_1 \\ \vdots \\ \mathbf{R}_i \\ \vdots \\ \mathbf{R}_i \\ \vdots \\ \mathbf{R}_n \end{pmatrix}. \)
考虑证明后面那个是0。如果行列式有两行相同,那么我们每一个排列 \(j_{1}j_{2}\dots j_{n}\)交换那相同两行的位置,前面的系数 \(a\) 不变,并且逆序对数奇偶变了,所以每个排列都对应一个抵消的排列,然后就证完了。

  • 性质五:对调行列式的两行,行列式反号。

代数证太低级了,发挥感性。我们从定义出发,我们把左右式都展开,然后比对系数。同样,我们比对 \(a\),我们发现系数相同的时候我们那个排列的值会改变,具体而言,我们 \(p_{1},p_{2}\) 行交换,那么我们排列 \(j_{p_{1}},j_{p_{2}}\) 也会交换,那么所有逆序对数奇偶就变了,然后就证完了。

特殊的行列式

  1. 对角行列式

形如
\(\begin{vmatrix} a_{11} & 0 & \cdots & 0 \\ 0 & a_{22} & \cdots & 0 \\ \vdots & \vdots & \ddots & \vdots \\ 0 & 0 & \cdots & a_{nn} \end{vmatrix}\)
的行列式称为对角行列式。其结果为 \(a_{11} \times a_{22} \cdots a_{nn}\)

从定义出发,只有排列 \(1\dots n\) 才能满足要求,这个排列逆序对数是 0。

  1. 三角行列式

形如 \(\begin{vmatrix} a_{11} & a_{12} & \cdots & a_{1n} \\ 0 & a_{22} & \cdots & a_{2n} \\ \vdots & \vdots & & \vdots \\ 0 & 0 & 0 & a_{nn} \\ \end{vmatrix}\) 的行列式被称为三角行列式,其结果与对角行列式相同。

从定义出发。如果相对答案产生贡献,那么我们 \(a\) 每一项都必须不是 0。所以我们 \(j_{n}=n\) 然后因为我们 \(n\) 已经取完了,那么 \(j_{n-1}=n-1\) 然后以此类推

行列式计算

显然,如果按照定义,我们需要 \(O(n \times n!)\) 的复杂度。显然无法接受。

由于存在一些特殊的行列式,可以考虑将原行列式转化为三角行列式后求值。思路就是将原行列式利用性质一到四进行转化。

你想到什么了,对,伟大的高斯消元

可以看出,这个方法的时间复杂度是 \(O(n ^ 3)\) 的,完全可以接受。

具体实现?就是根据性质4就好了

带模数行列式计算

如果带模数怎么算行列式的值呢?如果用高斯+逆元处理这个问题会怎样。其实会特别慢吧,还有问题,就是求逆元的时候可能会挂掉

有一种方法叫做辗转相减法,可以完美的解决这个问题。

还是按照高斯消元来,我们从 \(i\) 开始,然后先消 \(i+1\) 行,然后现在 \(i<i+1\) 了,然后就交换继续然后我们就把 \(a_{i+1,i}\) 消完了,然后继续消下去就好了。

分析一下复杂度。易证辗转相减的复杂度与欧几里得算法类似,为 \(O(\log n)\) 级别(因为我们每两次都会让其中的一个数至少除以4)。然后我们的每一行就最多被减少 \(O(\log n)\) 次,然后就做完了

矩阵特征方程

特征向量

1. 定义

对于一个 \(n \times n\) 的方阵 \(A\),如果存在一个非零向量 \(\mathbf{v}\) 和一个标量 \(\lambda\),使得:
\(A \mathbf{v} = \lambda \mathbf{v}\)
那么 \(\mathbf{v}\) 称为矩阵 \(A\)特征向量\(\lambda\) 称为对应的特征值

在这里,我们可以把向量理解为矩阵,所以向量和矩阵的乘法也就好理解了。

特征方程求序列通项

又名矩阵特征方程

基本概念

  • 该方法适用于形如 \(a_n = c_1 a_{n-1} + c_2 a_{n-2} + \cdots + c_k a_{n-k}\) 的递推关系,其中 \(c_i\) 是常数,且 \(k\) 是递推的阶数(即依赖于前 \(k\) 项)。递推关系必须是线性齐次的(无常数项)。
  • 特征方程:由递推关系导出的代数方程,形式为:
    \(r^k - c_1 r^{k-1} - c_2 r^{k-2} - \cdots - c_k = 0\)
    其中 \(r\) 是特征根。
  • 通项结构:根据特征根的类型(单根或重根),通项公式有不同的形式:
    • 单根:如果特征根 \(r_1, r_2, \ldots, r_m\) 互不相同(\(m = k\),无重根),则通项为:
      \(a_n = A_1 r_1^n + A_2 r_2^n + \cdots + A_k r_k^n\)
    • 重根:如果特征根 \(r\) 的重数为 \(m\)(即 \(m\) 重根),则通项中对应部分为:
      \((A_1 + A_2 n + \cdots + A_m n^{m-1}) r^n\)
  • 常数确定:通项中的系数 \(A_1, A_2, \ldots\) 需要通过初始条件( \(a_0, a_1, \ldots, a_{k-1}\))求解线性方程组得到。

很清晰啊!

例子

P3307

详见下面的 \(\rm P\acute{o}lya\)

P5110

向量

基本都学过了

  • 文化课的向量:有长度和方向的箭头
  • OI的向量:\(vector\)(这个更接近本质)

内、外、叉积

内积

内积对任意向量都使用

几何定义:
在欧氏几何中,这个就是文化课里学过的

代数定义:
\(\mathbf{a}=(a_{1},a_{2},\dots,a_{n}),\mathbf{b}=(b_{1},b_{2},\dots,b_{n})\)

\[\mathbf{a}·\mathbf{b}=\sum_{i=1}^{n} a_{i}b_{i} \]

外积

矩阵乘法,你甚至可以将向量理解为一维的矩阵

叉积

外积是三维向量特有的运算

这里注意和外积的区别

  1. \(|\mathbf{a}\times \mathbf{b}|=|\mathbf{a}||\mathbf{b}|sin \langle \mathbf{a},\mathbf{b}\rangle\)

也就是平行四边形的面积

  1. \(\mathbf{a}\times \mathbf{b}\)\(\mathbf{a},\mathbf{b}\) 垂直,模长上面说过了,方向的话使用右手法则。(所以不满足交换律)

我们四指指向 \(\mathbf{a}\),然后保持手掌不动,然后四指伸向 \(\mathbf{b}\),注意这里伸需要角度 \(\le \pi\)

代数定义:

\(\mathbf{a}=(x_{1},x_{2},x_{3}),\mathbf{b}=(y_{1},y_{2},y_{3})\)

\[\mathbf{c}=\begin{vmatrix}\mathbf{i}&\mathbf{j}&\mathbf{k}\\x_{1}&x_{2}&x_{3}\\y_{1}&y_{2}&y_{3}\end{vmatrix} \]

利用单位容易理解

矩阵

大部分都会,什么概念和运算貌似都不知不觉学掉了,然后发现学的都是啥啊,系统专业补一下

矩阵乘法

其实一直不太理解“左行右列”这个东西,今天我们从向量的角度解释这个。

\[c_{i,j}=\sum_{k=1}^{n} a_{i,k}b_{k,j} \]

我们发现中间有点像向量内积(点乘),然后就是“左行的向量和右列的向量的内积”

黑科技:

  • Strassen 算法 \(O(n^{2.81})\)
  • Coppersmith-Winograd算法 \(O(n^{2.376})\)

初等变换

一共有 \(3\) 种,就是高斯消元里面的所有操作

  • 倍乘:一行乘一个系数 \(k\)
  • 对换:交换两行
  • 倍加:将一行乘 \(k\) 倍加到另一行上

这三种情况可以用矩阵乘法的形式来表示

  • 假设我们对于 \(i\) 行乘 \(k\),那么我们矩阵 \(i\times i\) 的位置就是 \(k\),其它是 \(1\)
  • 假设我们交换 \(i,j\),那么我们就在单位矩阵的基础上交换 \(i,j\)
  • 假设我们把 \(i\)\(k\) 倍加到 \(j\) 行上,那么我们就将 \(a[i][j]\) 设为 \(k\) 正确性容易理解,因为矩阵没有交换律,我们这个矩阵是在乘法时是在左边的

余子式

余子式:\(M_{i,j}\)\(A\) 删去 \(i\) 行,\(j\) 列的矩阵

代数余子式:\(M\) 的行列式

矩阵求逆

P4783

\(A\times A^{-1}=I\)

矩阵的逆是唯一的,反证法容易证明

判定一个矩阵是否有逆

\(A\) 可逆的充要条件为 \(|A| \neq 0\)

下面是对矩阵存在逆充要性的证明:

我们对这个矩阵进行对换和倍加操作,显然对行列式的绝对值没有影响,那么我们如果最终的行列式是 \(0\),那么就必然有一行被消没了,也就是这每行并非线性无关。然后对于这个矩阵我们显然是无法找到一个它的逆元的,因为根据矩阵乘法的定义,我们要乘出来个 \(1\),但是因为 \(0\) 没有逆元,那么这个行列式为 \(0\) 的矩阵也就没有逆了。由前面可知,初等变换可以用矩阵乘法的形式表示,那么我们可以写出式子

\[A*I_{1}*I_{2}*\dots*I_{n}=A^{'} \]

假设存在逆元 \(A*A^{-1}=I\) 那么

\[I*I_{1}*I_{2}*\dots*I_{n}=A^{'}*A^{-1} \]

\[A^{'}*A^{-1}*I_{1}^{-1}*I_{2}^{-1}*\dots*I_{n}^{-1}=I \]

矛盾!所以根据最后一个式子充要性显然

具体算法

先来个东西

\((A_{1}A_{2}\dots A_{k})^{-1}=A_{k}^{-1}\dots A_{2}^{-1}A_{1}^{-1}\)

证明在左右同乘 \(A_{1}A_{2}\dots A_{k}\) 即可,然后对于右边像括号匹配一样做即可,注意没有交换律啊!

然后就是我们这里要用到的公式 \(A^{-1}[A\ I]=[I A^{-1}]\)

使用分块矩阵理解,相当于我们给 \(A\) 乘上 \(A^{-1}\),那么我们的 \(I\) 也进行了同样的操作,利用矩阵乘法的定义容易理解

所以我们用高斯约旦即可,之前是不是说过再也不写高斯约旦了。

线性空间

看 OIwiki 吧,用群论解释的,但是想想这个很重要,所以还是写在这里吧。

这个域的二元操作就是数乘和加法,这个的那个“操作集合”,就是实数。

所以线性空间的意思就是这么多操作,这么多向量,这么多运算法则的一个空间

线性组合

下面 \(w,v\) 都是向量:

\[w=c_{1}v_{1}+c_{2}v_{2}+\dots+c_{n}v_{n} \]

线性空间:线性组合得到的所有向量的集合

基向量

定义:向量空间中的一组基是张成该空间的一个线性无关向量集

平面直角坐标系和空间直角坐标系

然后里面还有基向量

线性基

这边是数学解释了,就是一个线性空间中一组线性无关的基

性质

  1. 如果线性空间的维数为 \(n\),那么任意 \(n+1\) 个向量线性相关。
  2. 任意 \(n\) 个线性无关的向量可以作为一组基

特征多项式

不会

抽象代数

咋学个LGV要学这么多东西

确实抽象,但是努力一下还是入门了!

感谢认真写题解专栏的大佬!

群的定义

定义集合 \(\rm G\) 和作用与集合 \(\rm G\) 的二元运算 \(\times\)

若其满足以下 \(4\) 个性质,则称其为一个群\((\sf Group)\),记为 \((~G,\times~)\)

\(1.\) 封闭性 \((\sf Closure)\)

若存在 \(a\)\(b\) 满足 \(a\in G,b\in G\) ,则有 \(a\times b\in G\)

\(2.\) 结合律 \((\sf Associativity )\)

对于任意 \(a,b,c\)\((a\times b)\times c = a\times (b\times c)\)

\(3.\) 单位元 \((\sf Identity)\)

存在 \(e\in G\),满足对于任意 \(a\in G\) 有: \(a\times e = e\times a = a\)

这样的 \(e\) 被称为单位元。容易证明单位元唯一(你假设有多个可以马上推出矛盾)

\(\rm e.g:\) 实数的乘法运算就是一个群,模意义下的乘法运算(不包括 \(0\))同样是一个群。这些例子中的单位元均为 \(1\)

\(4.\) 逆元 \((\sf Inverse)\)

对于任意 \(a\in G\) 存在 \(a'\in G\) 满足 \(a\times a' = a'\times a = e\)

值得注意的是这个 \(a'\) 是唯一的。读者可以尝试自行证明。

性质的实际应用:

\(Q:\) 为什么不能使用传统的树状数组实现区间最值查询。

\(A:\) 树状数组在于运算上存在一个差分的过程,换而言之需要"逆元"的存在,然而最值函数与数集\(\rm S\)不构成群。(好像在扯淡)

具体而言,我们对 \(a\)\(max\),无法找到一个逆元使得结果更小。也就是我们无法抵消贡献

一些概念:

\(1.\) 循环群:仅由一个元素生成的群

也就是说每个元素都可以通过群里面的操作变换到群里的任意一个元素。

\(2.\) 阶:群的元素个数

\(3.\) 半群:对于非空集合 \(G\) 和其上的二元运算 \(\times\),如果该运算满足结合律,则称 \((G,\times)\) 是一个 半群

\(4.\) 幺半群:一个半群有单位元

\(5.\) Abel群:有交换律的群

\(6.\) 一个元素的阶:该元素通过群运算重复作用自身直至单位元的最小正整数次数。若不存在这样的次数,则该元素为无限阶

\(7.\) 生成元:类似种子一样的东西

子群:

如果 \(H\)\(G\) 的一个子集,且有 \((~H,\times ~)\) 构成一个群,那么称 \((H,\times )\)\((G,\times)\) 的一个子群。简记为 \(H\le G\)

如果 \(G\) 是一个群,\(H\) 为其一个子群,且有 \(g\in G\),那么:

\(gH={g\times h,h\in H}\),称其为 \(H\)\(G\) 内的关于 \(g\) 的左陪集。

\(Hg={h\times g,h\in H}\),称其为 \(H\)\(G\) 内的关于 \(g\) 的右陪集。

注意,这里的 \(gH\)\(Hg\) 都是集合

陪集的一些性质:

下面只讨论右陪集:(左陪集同理)

\(1.\) \(\forall g\in G\)\(|H|=|Hg|\)

证明:意思就是集合的大小相同。大小相同,那么我们就证明可以构建一一映射的关系。那么因为 \(H\) 中元素两两不同,然后 \(\times g\) 也两两不同(使用反证,如果两个元素相同,那么同除 \(g\) 也就相同了,逆元性质)

\(2.\) \(\forall g\in G\)\(g\in Hg\)

证明:注意到 \(H\) 是一个群,所以 \(H\) 必然包括了单位元 \(e\)。我们可以这么理解。就是 \(Hg\)\(g\) 生成出来的。所以因为 \(G\) 里面有 \(e\),所以 \(e\times g\in Hg\),所以 \(g\in Hg\)

\(3.\) \(Hg = H\iff g\in H\)

充分性:因为 \(g\in Hg\),那么因为 \(Hg = H\),所以\(g\in H\)

必要性:根据性质 \(1\) 易证

\(4.\) \(Ha=Hb\iff a\times b^{-1}\in H\)

充分性:因为陪集相同,两边又都有逆元和单位元,所以我们在两边都取单位元,那么\(a,b\in Ha,Hb\) 既然 \(a\in Hb\) 了,那么就存在 \(g\times b =a\)了,也就是 \(a\times b^{-1}\in H\)

必要性:反着推一遍

\(5.\) \(Ha\cap Hb\ne \varnothing \to Ha=Hb\)

这个性质非常有用,其意味着一个子群 \(H\) 的陪集的交集要么是空要么两个相等。

考虑使用反证法,如果 \(Ha \ne Hb\) 那么我们取一个在 \(Hb\) 而不在 \(Ha\) 中的数 \(p\),那么 \(p*b^{-1}\) 就在 \(H\) 中。因为 \(a,b\in H\),那么我们首先 \(p*b^{-1}*a \in Ha\),其次 \(b*a^{-1}*a\in Ha\),所以 \(p\in Ha\),矛盾。可能证的不是特别优美,但是思路很对啊。

\(6.\) \(H\) 的全体右陪集的并为 \(G\)

证明:因为 \(H\) 存在单位元,\(g\) 取遍 \(G\) 中每一个元素。

较为常见的表述:

\(H\le G\),则 \(G/H\) 代表 \(G\) 中所有的 \(H\) 的左陪集即 \(\{gH,g\in G\}\)

有点移项的感觉,集合的集合

\(H\le G\),则 \([G:H]\) 表示 \(G\)\(H\) 的不同的陪集的数量。

大概就是很多个封闭的东西,这些封闭的东西构成了一个群。然后我们的 \(g\) 有可能让一个封闭的东西转移到另一个封闭的东西。我们的 \(H\) 也可能是有这些封闭的东西组成的,然后这个代表的就是 \(H\) 能转移到多少个这种东西。大概这个意思

拉格朗日定理:

对于有限群 \(G\) 与有限群 \(H\) ,若 \(H\)\(G\) 的子群,那么有:

\[|H| \text{整除} |G| \]

\(H\) 的阶整除 \(G\) 的阶。

更具体点:

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

证明:

由于陪集的性质\(1,5,6\),所有本质不同的陪集互不相交且大小均为 \(|H|\) 且并的大小为\(|G|\),可以得到不同的陪集数量乘以陪集大小\((|H|)\)\(G\) 。你会发现有了陪集的性质之后这些都特别自然了。

写得很好,完全懂了。
下面是另外的理解。就是我们 \(H\) 是一个子群,也就是一个封闭的东西,然后我们通过一个群中的元素 \(g\) 变成陪集,然后可以转移到其它陪集。注意我们的陪集不一定是群,就比如 \(\{1,12\}\) 通过 13 转移到 \(\{13,132\}\) 那么就不是群了。我们这个 \(g\) 取遍 \(G\),那么根据群的逆元和单位元性质,我们本质不同的群就取遍了 \(G\)。因为本质不同的

商群

到时候补,要补掉正规子群和商群

对于一个 \(G\)

置换

备注:一个充满魔法的科技。

一些定义:


\(\sf Two-line notation\)

双行表示法,大概就是用两个括号括起来,然后令 "元素/置换" 表示一个从【上列】 到 【下列】 的置换。

比如:

\(\sigma=\begin{pmatrix}1&2&3&4&5\\2&5&4&3&1\end{pmatrix}\)

其表示的置换为将排列 \(1~2~3~4~5\) 变为 \(2~5~4~3~1\) 的一个置换,可以理解为用原本第二个元素代替第一个元素,用原本的第 \(5\) 个元素代替第 \(2\) 个元素...依次类推。

不过我更喜欢强行规定第一列是 \((1,2,...n)\)

然后第二列就是:

\(\sigma =(a_1,a_2...a_n)\) 表示一个置换。

每个置换都是一个这样的排列,一个长度为 \(n\) 的不同的置换的数量为 \(n!\)

运算:

可以写为 \(\sigma \times a\) 不过更习惯被表示为 \(\sigma(a)\)

其运算规则为:\(\sigma(a)= (a_{\sigma_1},a_{\sigma_2}...a_{\sigma_n})\)

没错,这是一个运算,通常可以称呼其为置换的「魔法」/「乘法」,如上例可以用文字描述为:\(\sigma\)\(a\)「魔法」起来。(这里是我个人认为它非常神奇而称呼其为「魔法」诸位笑笑便好)

更正式的,我们称呼其为置换的 「合成」

置换群:

不妨令集合 \(N = \{1,2,3...n\}\) ,令集合 \(M\)\(N\) 的若干个排列构成的集合,我们令群 \(G=(M,\times )\),其中 \(\times\) 这个运算为「魔法」/「合成」,若再此基础上,其满足群的性质。则我们称 \(G\) 是一个置换群。

我们现在来验证一个例子,\(N\) 的所有可能的排列与运算「合成」构成的 "二元组?"(这里不太清楚如何称呼) 是一个合法的置换群:

\(1.\) 封闭性,显然,注意上面定义的是所有可能的排列。

\(2.\) 单位元\(~:e=(1,2,...n)\)

容易发现 \(\sigma\)「合成」\(e= e\)「合成」\(\sigma=\sigma\)

\(3.\) 结合律:容易验证「合成」满足结合律。

我觉得有点难理解。最近网络流学上头了,考虑用网络流来解释。我们理解为一个二分图,每边都有n个点,显然,一个置换就是一次完美匹配的连边。我们最终都是一个匹配,也就是\(begin->end\)只有一条路径,所以我们无论怎么压缩都不会改变结果

\(4.\) 逆元:容易验证「合成」运算存在逆元。

「群作用」

分为 左群作用 和 右群作用。核心区别在于群乘法与作用结合的先后顺序。

定义:

对于一个集合 \(M\) 和群 \(G\)

若给定了一个二元函数 \(\varphi(v,k)\) 其中 \(v\) 为群中的元素,\(k\) 为集合元素,且有:

\[\varphi(e,k)=k\quad (e~\text{是单位元}) \]

\[\varphi(g,\varphi(s,k))=\varphi(g\times s,k) \]

则称呼群 \(G\) 作用于集合 \(M\)

用人话来说,也就是这个集合可以扔到群里面去计算

轨道-稳定子定理:


轨道

考虑一个作用在 \(X\) 上的群 \(G\)\(X\) 中的一个元素 \(x\) 的「轨道」则是 \(x\) 通过 \(G\) 中的元素可以转移到的元素的集合。\(x\) 的轨道被记为 \(G(x)\),方便起见,我们用 \(g(x)\) 表示群 \(G\) 变换操作 \(g\) 变换 \(x\) 的结果,即 \(g(x)=\varphi(g,x)\)

稳定子

稳定子被定义为:\(G^x = \{g|g\in G,g(x)=x\}\)

使用语言描述,便是群 \(G\) 中满足 \(g(x)=x\) 的所有元素 \(g\) 所构成的集合。

注意,稳定子是对于轨道上的一个元素而言的,那么同一条轨道上的元素稳定子可能不一样,但是大小相同是吗。

我来说人话!稳定子就是那些不会改变 \(x\) 的操作集合。这个操作集合和群中的元素不一样,这个操作集合是群中的元素加上群的运算的结果

同时注意,我们群作用,群内部的那些操作内部有运算,也就是“循环 \(1\) 位”对于“循环 \(2\) 位”有群的一个运算,而群作用于集合则是另一种运算

轨道-稳定子定理:

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

另外一种形式,后面也会证

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

一些理解:后面这个比较好理解,然后结合拉格朗日定理,也就是 \(|G^x|\times [G:G^x] = |G|\) 来证明,但是这并不可以理解为有 \(|G^x|\) 条轨道,每条轨道长度为 \(|G(x)|\)。理解结合拉格朗日定理之后就基本理解完了。

首先可以证明:\(G^x\)\(G\) 的一个子群。

首先根据群作用的定义,我们得知:\(e\in G^x\),结合律显然满足,因为就是原来的元素,我们接下来考虑证明逆元和封闭性。

封闭性:取 \(f\in G^x, g\in G^x\),满足 \(f(x)=x,g(x)=x\),那么我们这两个变换操作叠加在一起会有什么效果呢?也就是说我们变换操作叠加在一起 \(x\) 还是变换成了 \(x\),所以封闭性显然。

逆元:若 \(g\in G^x\)\(g(x)=x\) 又因为 \((g\times g^{-1})(x)=e(x)=x\) 所以 \(g^{-1}(x)=x\) 所以 \(g^{-1}\in G^x\)

所以按照拉格朗日定理有: \(|G^x|\times [G:G^x] = |G|\)

于是只需要证明 \([G:G^x]=|G(x)|\)

翻译成人话就可以感性了!左边是稳定子的陪集数量,右边是 \(x\) 能转移到的不同元素的数量,就是能感受到这两个东西之间的双射关系

下面是严谨的证明:

我们只需要证明,每一个 \(g(x)\) 都能对应 \([G:G^x]\) 中的一个左陪集/右陪集即可。

每一个 \(x\) 变换的结果对应着一个封闭的子群,这两个都是不重复的。

不妨这样构造一个一一对应的关系:

\(f(x)=g(x)\) 则可得:\(f\times g^{-1}=x=e(x)\in G^x\),由于陪集的性质\(f\times G^x=g\times G^x\) ,这意味着我们证明了相同的 \(f(x)\) 都可以对应相同的陪集。

\(x\) 进行操作使得 \(x\) 变换结果相同的那些操作就构成了一个陪集

反之亦然 \(fG^x=gG^x\iff f(x)=g(x)\)

于是每一个 \(g(x)\) 我们令 \(gG^x\) 表示它对应的陪集即可,正确性由上述性质保证不会重复,相同的 \(g(x)\) 总是对应着相同的陪集。

陪集最重要的性质:陪集的交集要么是空要么两个相等。

共轭作用

\(G\) 是一个群,\(g, a, b\)\(G\) 中的元素。

  • 元素的共轭
    如果存在一个元素 \(g \in G\),使得 \(b = g a g^{-1}\),那么我们说:

    • \(b\)\(a\) 的一个共轭元
    • \(a\)\(b\) 彼此共轭
  • 子群的共轭
    \(H\)\(G\) 的一个子群。集合 \(g H g^{-1} = \{ g h g^{-1} \mid h \in H \}\) 也是 \(G\) 的一个子群,称为 \(H\)共轭子群


3. 关键性质和意义

  1. 等价关系
    “共轭”是一种等价关系。它满足:

    • 自反性:任何元素 \(a\) 都与自己共轭(取 \(g = e\))。
    • 对称性:如果 \(a\)\(b\) 共轭(\(b = g a g^{-1}\)),那么 \(b\) 也与 \(a\) 共轭(\(a = g^{-1} b g\))。

      对于这里我们取 \(g=g^{-1}\) 即可

    • 传递性:如果 \(a\)\(b\) 共轭,\(b\)\(c\) 共轭,那么 \(a\) 也与 \(c\) 共轭。
      因此,群 \(G\) 可以被划分成若干个共轭类。同一个共轭类中的元素在某种意义上是“相同的”。
  2. “结构相同”
    共轭元在群结构中起着完全相同的作用。例如:

    • 如果 \(a\) 的阶是 \(n\),那么它的任何共轭元 \(g a g^{-1}\) 的阶也是 \(n\)

      式子写出来是 \(gag^{-1} gag^{-1} gag^{-1} \dots gag^{-1}=ga^{n}g^{-1}\)。因为 \(a^{n}=a\),那么自然就相等了

    • 如果 \(a\)\(b\) 满足某个关系(如 \(ab = ba\)),那么它们的共轭元也满足同样的关系。

      左边 \(=gag^{-1}gbg^{-1}=gabg^{-1}\),右边 \(=gbg^{-1}gag^{-1}=gbag^{-1}\)

  3. 共轭作用
    \(G\) 可以通过共轭作用在其自身或其子群集合上。这个作用的轨道就是共轭类,而稳定子就是中心化子

    群的共轭作用就是是一个群作用于这个群集合或者这个群集合的子集吗。这个作用的效果就是搞出所有这个群的共轭群,那么这样就会有轨道和稳定子。轨道就是那些共轭相同的子群,稳定子就是那些让一部分子群共轭不变的 \(G\) 中的元素集合,然后根据轨道稳定子定理会有一些优美的结论。

直积

也被叫做笛卡尔积

\((G, \cdot)\)\((H, \circ)\) 是两个群。它们的直积 \(G \times H\) 定义为:

  • 元素集合:所有有序对 \((g, h)\),其中 \(g \in G\)\(h \in H\)
  • 群运算:对于任意 \((g_1, h_1), (g_2, h_2) \in G \times H\),运算为
    \( (g_1, h_1) * (g_2, h_2) = (g_1 \cdot g_2, h_1 \circ h_2). \)
  • 单位元\((e_G, e_H)\),其中 \(e_G\)\(e_H\) 分别是 \(G\)\(H\) 的单位元。
  • 逆元:任意元素 \((g, h)\) 的逆元为 \((g^{-1}, h^{-1})\)

就是二元组搞起来

Burnside 定理

当然是人名了!

公式:

定义 \(G\) 为一个群,定义其作用于 \(X\),如果 \(x,y\in X\)\(G\) 作用下可以相等即存在 \(f\in G\) 使得 \(f(x)=y\) 则定义\(x,y\) 属于一个等价类,则不同的等价类的数量为:

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

其中, \(X^g\)\(X\)\(g\) 作用下的不动点的数量。即满足 \(g(x)=x\) 这样的 \(x\) 的数量。

文字描述:\(X\) 在群 \(G\) 作用下的等价类总数等于每一个 \(g\) 作用于 \(X\) 的不动点的算数平均值。

更加人话:等价类就是一个轨道。集合 \(X\) 在群 \(G\) 中的变换操作作用下的等价类总数等于每一个变换操作 \(g\) 作用于 \(X\) 中的元素使得元素不变的数量的算数平均值。

证明:

由于每个元素属于仅属于一个轨道,轨道内部在群 \(G\) 作用下互达,(陪集性质) 所以我们可以得到:

\[|X/G|=\sum_{x\in X} \dfrac{1}{G(x)}=\sum_{x\in X} \dfrac{1}{[G:G^x]} \]

人话:等价类等于 \(x\) 的轨道元素数量的倒数之和。我们考虑贡献,我们希望的是每个轨道上的 \(x\) 总和是 1,那么这样每个轨道都贡献 1,也就自然对了。我们此时的陪集数量是轨道上元素的个数,也就是每个元素都会贡献一次了。所以我们得到了第一个式子,第二个式子就根据映射关系就可以得到了。

根据轨道-稳定子定理,得到:

\[[G:G^x]=\dfrac{G}{|G^x|} \]

\[|X/G|=\sum_{x\in X}\dfrac{G^x}{G} \]

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

后面那一坨,反过来,就是对于每一个群作用 \(g\) ,其作用下不动点的数量。

综上,我们得到 \(\text{Burnside}\) 定理。

战胜了!

\(\rm P\acute{o}lya\) 定理


——車神

P4980引入

设集合 \(M\)\(n\) 个位置每个位置 \(n\) 种颜色随便填方案 \(\{1\rightarrow n\}\) 的集合。

容易想到我们要求排列在群 \(\{\)移 0 位,移 1 位,\(\dots\)\(n-1\)\(\}\) 下的等价类个数。

\(ans=\dfrac{1}{|G|}\sum_{x\in X} G^x\)

然后解释一下变量的意思 \(G\) 就是这个操作群,然后后面就是每个排列的不动点数量。如果换一种形式的话后面那个就是每个操作管辖的不动点数量,嗯。

然后我们依次考虑每个置换(也就是每种移位操作)管辖的不动点数量。

然后就应该是OI的东西了。我们现在要计算有多少排列在移 \(x\) 位后还是原来的。这个就是循环节能被 \(x\) 整除。那么一个串只要存在循环节为 \(gcd(x,n)\) 的串,那么就可以产生贡献,那么这个就是 \(n^{gcd(x,n)}\),然后当 \(x=0\) 时不动点个数为 \(n^{n}\)。为了方便,我们把 \(x=0\) 当作 \(x=n\)

考虑放到里面去理解,我们只要求不动点个数即可,根本不用考虑啥算重什么的。

那么式子变成了 \(\dfrac{1}{n}\sum\limits_{i=1}^{n-1} n^{\gcd(i,n)}\)

莫反!

\(\dfrac{1}{n}\sum\limits_{i=1}^{n}\sum\limits_{j=1}^{n} n^{\gcd(j,n)}\)

随便推一下即可,这点水平还是有的,就是注意下我们能根号处理一个很简单的东西。

\(\dfrac{1}{n}\sum\limits_{d|n} n^{d}\phi(\frac{n}{d})\)

我们枚举的是 \(d\) 这个根号,然后 \(\phi\) 也暴力算,然后就做完了。

然后下面正式介绍 \(\rm P\acute{o}lya\) 定理

我们可以注意到在一般的染色问题/类似的问题求本质不同的xxx的问题当中(即 \(\text{Burnside}\) 派上用场的时候)我们一般都是要求不动点的数量。

对于一个置换 \((a_1,a_2...a_n)\) 按照前文,我们规定上列为 \((1,2...n)\) 则其描述的是第一个位置变成 \(a_1\)...诸如此类的轮换。

在使用 \(\text{Burnside}\) 解决染色问题的时候,我们需要求的是不动点的数量,而对于上述的置换,假设我们令每个 \(i\)\(a_i\) 连一条边容易发现会得到若干个环,也就是我们上题中字符串比对的过程。只不过我们现在变得更抽象了,变成了映射关系里面的连边,但还是好理解的。

我们定义这个环的数量为 \(c(g)\) 即置换 \(g\) 里面的等价类的个数。在这题里就是下面的分析了

那么我们现在可以改写 \(\text{Burnside}\) 定理为:

\[\dfrac{1}{|G|}\sum_{g\in G}m^{c(g)} \]

\(m\) 表示可用的颜色数。

\(\rm P\acute{o}lya\) 定理继续思考,然后就是求环数

假设我们令每个 \(i\)\(a_i\) 连一条边容易发现会得到若干个环

考虑证明这个和 \(\gcd (i,n)\) 等价

我们取从 \(1\sim \gcd(i,n)\) 这些数,然后这些数分别在不同的环里,然后就证完了

这就是 \(\rm P\acute{o}lya\) 定理了!

不容易啊!

关于 \(\text{Burnside}\)\(\rm P\acute{o}lya\) 的应用

\(\rm P\acute{o}lya\)\(\text{Burnside}\) 在染色同构问题上的特化形式,也就是改进了不动点计算的方式。

但是正因为特化,所以有些地方不能用 \(\rm P\acute{o}lya\)。我们 \(\rm P\acute{o}lya\) 上面的 \(c(g)\) 是等价类的个数,而非是环的个数,这个会根据题目变化而变化。

  1. \(\rm P\acute{o}lya\) 定理的适用条件
  • 可以用群论中的置换群来描述。例如正方形的旋转对称性
  • 染色无限制
  1. \(\rm P\acute{o}lya\) 定理不适用的情况
  • 染色存在额外限制
  • 置换群很难计算
  • 染色对象本身不满足对称性假设

例题

P8633

因为数据范围特别小,考虑直接枚举排列来计算。

\[\dfrac{1}{|G|}\sum_{g\in G}m^{c(g)} \]

首先我们要知道群的大小,然后我们要求每个置换对应多少种染色方案使其不变。

\(\rm P\acute{o}lya\) 太强了,我们的染色方案直接不用看了,直接看环的个数即可。所以说我们枚举了置换,后面那个可以自动求出。我们首先有一个 \(n^{k}\) 的集合,我们的置换操作也就是通过变换编号使整个图是和原来还是同构的,这样变换图还是对的。然后就做完了啊,我们这个置换的环的个数随便做一下就行了。其实现在已经把 \(\rm P\acute{o}lya\) 完全抽象出来了,这就是 OIer吗?如何判断图重构呢?

参考一下树的同构,我们可不可以从邻接矩阵的角度考虑。我们的图同构就是我们重编号之后每条边仍然存在吧?我们邻接矩阵相同就可以了吧?对的,我们构建一个边到边的映射,那么我们重新染颜色就变成了先编号,再染颜色

总结一下,我们先用 \(\rm P\acute{o}lya\),然后枚举置换,我们置换后的图要求和和原图同构,然后统计这里面有多少染色方案使得这个置换能让染色方案不同。然后就把 \(\rm P\acute{o}lya\) 解释完了。然后各个部分就好求了。

P4727

但是这题可以使用 \(\rm P\acute{o}lya\) 吧。

注意到我们这次没有染色了,但是 \(N\) 变大了很多。

就是求有n个点的图的等价类数量。考虑怎么和染色扯上关系。看看hint,我们考虑邻接矩阵,也就是说在邻接矩阵里,我们给边黑白染色。然后判断有多少个黑白染色的方案等价类。同样的,我们的置换还是 \(1\sim n\) 的排列,合法肯定合法,但是我们不知道对应多少个染色方案使得不变。群的大小应该是每种置换都是合法的,比如说我们没有边的图就很合法。

从上一题继承下来,怎么求等价类的数量呢?我们的图是完全图,现在我们染色。我们对于一个置换,考虑怎么染才能让图成为一个不动点。我们发现如果一个置换是编号左移一位(意会吧),那么那种环一样的东西就是等价类,那么这些等价类的数量的 2 次幂,好理解的。

我们的等价类并不是指边结构或者什么是的等价的,而是染颜色是等价的

那么对于一个置换,我们怎么求边的等价类的数量呢?我们每一个置换都会由一些环组成。我们环之间点是独立的,那么我们的边就会分为两类。

  • 边的两个端点在同一个环的点内
    观察完全图发现边是否等价和端点之间的距离有关,那么显而易见有 \(\lfloor\frac{n}{2}\rfloor\) 个等价类。

  • 边连接了两个环
    好好利用完全图的性质。我们一个大小 \(s_{1}\) 就可以代表一个环了。里面有 \(s_{1}·s_{2}\) 条边。我们把两边的点排成一个类似二分图的东西,考虑哪些是等价的。我们置换在这里我们按照一定顺序排列点把它变成移位,因为完全图,所以我们边的连接情况是不会变的。于是我们从第一条边(连接 1,1)然后经过一次移位变成(2,2)然后一直继续下去,等到我们再一次循环到这个边的时候,经过了 \(\rm lcm(s_{1},s_{2})\) 条边。所以这个等价类大小为 \(\rm lcm(s_{1},s_{2})\)

说点理解。我们要想使图置换之后同构,因为我们图上的每条边都会置换成这里的下一条边,所以我们不能出现中间断掉的情况,也就是中间有边没有的情况了。所以我们就得到了上面“这些边要么都有要么都没有的结论”
式子是好写的,至此,我们知道了对于一个置换,如何求它管辖的不动点的数量了,设 \(K\) 为环的个数

\[ans=\sum\limits_{i=1}^{K} \lfloor\frac{siz_{i}}{2}\rfloor+\sum\limits_{i=1}^{K}\sum\limits_{j=i+1}^{K} \gcd(siz_{i},siz_{j}) \]

然后外面群的大小就是 \(n!\)

真的太好了,我们到现在获得了 0 分的高分!下面就是推式子了。

首先我们肯定不能枚举所有排列,我们发现贡献只和环的大小有关。考虑算贡献拆式子。我们首先可以知道这里面是一个整数拆分问题。我们 \(\sum siz=n\)。然后我们考虑有每个整数拆分对应多少个置换。我们的置换形成的图只要只是一个 \(n\) 个点 \(n\) 条边的无向图就是合法的。现在我们已经知道图的形态了,我们要往上面填数,显然有 \(n!\) 种方案,一个环因为圆排列那个东西被算了 \(siz\) 次!但是长度相同之间的循环还是会算重。然后式子就出来了。我们先整数拆分,然后算一下每种置换的贡献和这种置换有多少种。

考虑实现,dfs!假如我们已经知道了我们每个状态是否可达,那么我们 dfs 就不用剪枝了。

P3307

有点 \(\rm P\acute{o}lya\)\(\rm P\acute{o}lya\) 的感觉。

但其实并不然,我们是三棱柱,那么我们上面的数就自动排序了。

\[\dfrac{1}{|G|}\sum_{g\in G}m^{c(g)} \]

我们的群显然还是移位,大小为 \(n\)。但是我们发现颜色之间有限制了。

但无所谓,我们先求出颜色数量,也就是

\[\sum\limits_{i=1}^{n}\sum\limits_{j=i}^{n}\sum\limits_{k=j}^{n} [\gcd(i,j,k)=1] \]

正常莫反

简单(真的)推导可得

\[\sum\limits_{d=1}^{n}\mu(d)\sum\limits_{i=1}^{\lfloor\frac{n}{d}\rfloor}\sum\limits_{j=i}^{\lfloor\frac{n}{d}\rfloor}\sum\limits_{k=j}^{\lfloor\frac{n}{d}\rfloor} 1 \]

后面这个东西随便做,答案是 \(\frac{n(n+1)(n+2)}{6}\),然后再搞个 \(\mu\) 的前缀和,数论分块下即可。

假设我们求出来颜色种类为 \(m\)。然后我们现在就是给长度为 \(n\) 的环用 \(m\) 种颜色染色,要求相邻不能相同

现在要求一个置换对应多少个合法的方案使得其不动。我们方案不动有一个限制,合法有一个限制,这样不好做,但是!我们枚举了循环节

\[\dfrac{1}{n}\sum\limits_{d=1}^{n} f(\frac{n}{\gcd(d,n)})^{\gcd(d,n)} \]

我们每个循环节前后会限制是吧,那么我们每个循环节的头和末尾就不能相同,这样我们也保证了环上不同。\(f(len)\) 代表首尾不同且中间也不同的方案数,那么中间乘法原理一下就好了。推式子

\[\dfrac{1}{n}\sum\limits_{i=1}^{n} f(\frac{n}{\gcd(i,n)})^{\gcd(i,n)} \]

\[\dfrac{1}{n}\sum\limits_{d|n}\sum\limits_{i=1}^{n} f(d)^{\frac{n}{d}}[\gcd(i,n)==d] \]

\[\dfrac{1}{n}\sum\limits_{d|n}f(d)^{\frac{n}{d}}\phi(\frac{n}{d}) \]

现在要求 \(f(d)\)

回到定义,我们 OI 里求这个是怎么求的呢?

考虑递推,但是我们发现首尾限制不好刻画。考虑小力容斥一下。我们求不限制的减去首尾相同的。

  • 不限制的:显然就是 \(m(m-1)^{n-1}\)

  • 首尾相同

那么就相当于 \(n-1\) 只的情况,但是我们发现有点难搞啊,我们可能还要继续分讨。所以我们考虑设 \(dp\) 递推。

\(dp[i]=\begin{cases} m \quad i=1 \\ m*(m-1) \quad i-2 \\ dp[i-1]*(m-2) \quad otherwise \end{cases}\)

最后一种情况的意思是我们直接在中间插入(咋理解都行)

考虑求通项公式,此时我们祭出生成函数。

【省略】

全部假了!其实如果要求上面的式子我们直接一个幂就好了

首先看上面为什么似了,我们中间插入之后我们原来相邻的两项就可以相同了。考虑把后面的那项算上。因为颜色相同且相邻,我们可以把它看作从 \(n-2\) 转移过来,然后其中切一刀,然后在中间插入

\[dp[0]=0,dp[1]=m*(m-1) \]

\[dp[i]=(m-2)dp[i-1]+(m-1)dp[i-2] \]

【省略】

死都推不出来。特征方程,学一下

我们发现是

\[A_{1}(-1)^{n}+A_{2}(m-1)^{n} \]

\[\begin{cases} A_{1}+A_{2}=0\\ -A_{1}+(m-1)A_{2}=m^2-m \end{cases}\]

解出来

\[\begin{cases} A_{1}=-(m-1)\\ A_{2}=m-1 \end{cases}\]

\(dp[n]=-(m-1)*(-1)^{n}+(m-1)*(m-1)^{n}\)

然后我们 dp 移一下位就可以了 \(dp[n]=(m-1)*(-1)^{n}+(m-1)^{n}\)

这就是特征方程解决问题了。有一些比较容易挂的点:

  1. 我们的递推要从 0 开始
  2. 注意边界,然后如果根有重复要另外考虑

所以我们的式子就是

\[\dfrac{1}{n}\sum\limits_{d|n}((m-1)*(-1)^{\frac{n}{d}}+(m-1)^{\frac{n}{d}})^{d}\phi(d) \]

但是我们的 \(n\le 10^{14}\)。然后考虑奇怪的逆元,里面的求和是不用的,考虑外面,如果 \(n|mod\),那么我们就无法求逆元了。这时候考虑 \(\mod mod^{2}\) 这样我们的答案一定是 \(mod\) 的倍数(因为我们里面的式子是 \(n\) 的倍数),然后我们把答案除 \(mod\),然后乘 \(\frac{n}{mod}\)\(mod\) 意义下的逆元即可。

还要考虑奇怪的东西,我们如何求 \(\phi\) 呢?显然不能筛,能直接根号求吗?我们枚举 \(n\) 的因数,这样我们就可以求了。\(\phi(p^{k})=p^{k}-p^{k-1}\)

Cauchy 定理

如果 \(G\) 是一个有限群,\(p\) 是一个质数,且 \(p\) 整除 \(G\) 的阶 \(|G|\),那么 \(G\) 中一定存在一个阶为 \(p\) 的元素。

证明

  1. 构造集合 \(S\)
    定义集合 \(S = \{(g_1, g_2, \dots, g_p) \in G^p \mid g_1 g_2 \cdots g_p = e\}\),即所有满足乘积为单位元 \(e\)\(p\) 元组的集合。

    这里的 \(G^{p}\) 代表 \(G\)\(p\) 次笛卡尔积,这个东西是集合,然后里面装的都是 \(p\) 元组

    由于对于前 \(p-1\) 个元素,第 \(p\) 个元素被唯一确定(即 \(g_p = (g_1 g_2 \cdots g_{p-1})^{-1}\)),因此 \(|S| = |G|^{p-1} = n^{p-1}\),其中 \(n = |G|\)。由于 \(p \mid n\),有 \(p \mid |S|\).

    时刻注意我们 Cauchy 定理的前提,也就是 \(p \mid |G|\)

  2. 定义群作用
    让循环群 \(\mathbb{Z}_p\)(阶为 \(p\))作用于 \(S\) 上。设 \(\sigma\)\(\mathbb{Z}_p\) 的生成元,定义作用为:
    \( \sigma \cdot (g_1, g_2, \dots, g_p) = (g_2, g_3, \dots, g_p, g_1). \)

    所以我们相当于新定义了一个运算,也就是群的运算 \(\times\),其没有什么意义,就是“作用”。然后群中的元素就是“移 \(1\) 位”等等

    由于 \(g_1 g_2 \cdots g_p = e\),容易验证 \(g_2 g_3 \cdots g_p g_1 = e\)(例如,从左乘 \(g_1^{-1}\) 和右乘 \(g_1\) 可得),因此这个作用是良定义的。

  3. 分析轨道
    \(\mathbb{Z}_p\) 的作用将 \(S\) 划分为轨道。根据轨道-稳定子定理,每个轨道的大小整除 \(|\mathbb{Z}_p| = p\),因此轨道的大小只能是 1 或 \(p\)

  4. 识别固定点
    一个元组属于大小为 1 的轨道当且仅当它在循环移位下不变,即 \(g_1 = g_2 = \cdots = g_p\)。这样的元组形如 \((g, g, \dots, g)\),且满足 \(g^p = e\)。单位元元组 \((e, e, \dots, e)\) 是一个固定点。

  5. 计算固定点数量
    根据群作用的基本引理,固定点的数量模 \(p\) 等于 \(|S|\)\(p\)。即:
    \( \text{固定点数量} \equiv |S| \pmod{p}. \)

    我们相当于一个长度为 \(p\) 的字符串,然后不断移位,画图可知如果其不是所有字符都相同的,那么移位过后必然会产生新的字符串,具体详见 polya。那么我们对于那些有不同字符的字符串,必然是 \(p\)\(p\) 个出现的,然后就证完了。

    由于 \(p \mid |S|\),有 \(\text{固定点数量} \equiv 0 \pmod{p}\)。因此,固定点的数量是 \(p\) 的倍数。已知单位元元组是一个固定点,所以必须存在至少 \(p-1\) 个其他固定点。这些固定点对应非单位元 \(g \in G\) 满足 \(g^p = e\)。由于 \(p\) 是质数,这样的 \(g\) 的阶恰好为 \(p\)

  6. 结论
    因此,\(G\) 中存在一个阶为 \(p\) 的元素。

Sylow 定理

\(G\) 是一个阶为 \(|G| = p^n \cdot m\) 的有限群,其中 \(p\) 是质数,\(n \geq 1\),且 \(p \nmid m\)(即 \(p\)\(m\) 互质)。

  1. 存在性\(G\) 包含 \(p\)-子群,即存在所有阶为 \(p^k(k\le n)\) 的子群。
  2. 共轭性:任意两个 \(Sylow p\) 子群共轭
  3. 计数性:Sylow \(p\)-子群的数量 \(n_p\) 满足:
    • \(n_p \equiv 1 \pmod{p}\)
    • \(n_p \mid m\)

引理1

\(n=p^{l}*m\),那么 \(\forall k\le l\),其中 \(p\) 为质数,那么 \(p^{l-k}|{n\choose p^{k}}\)

我们考虑计数。对于一个数,我们要求 \(1\sim x\) 有多少个因子 \(p\),那么 \(ans=\sum_{i=1} \lfloor{\frac{x}{p^{i}}}\rfloor\),这个拆一下贡献即可

\[\frac{n!}{p^{k}!(n-p^{k})!} \]

\[sum=\sum_{i=1} \frac{x}{p^{i}}-\sum_{i=1} \frac{p^{k}}{p^{i}}-\sum_{i=1} \lfloor{\frac{n-p^{k}}{p^{i}}}\rfloor \]

\[sum=m\sum_{i=0}^{l-1} p^{i}-\sum_{i=0}^{k-1} p^{i}-\sum_{i=1} \lfloor{\frac{n-p^{k}}{p^{i}}}\rfloor \]

后面那个式子分讨是否整除

\[sum=m\sum_{i=0}^{l-1} p^{i}-\sum_{i=0}^{k-1} p^{i}-\sum_{i=k+1}^{l} p^{l-i}*m-1-\sum_{i=1}^{k} p^{l-i}*m-p^{k-i} \]

开个指数桶,发现是 \([0,l-1]+m\ ,\ [0,k-1]-1\ ,\ [0,l-k-1]-m\ ,\ [l-k,l-1]-m\ ,\ [0,k-1]+1\)

刚好抵消,剩下的是 \(l-k\)

引理2(p-群作用原理)

一个 \(p-\) 群作用于集合 \(X\),那么 \(|X|\equiv \text{固定点数量} \pmod p\)

由于轨道稳定子定理,每个轨道的大小整除 \(p^{n}\),那么轨道的长度只能是 \(1\) 或者 \(p\) 的幂。考虑哪些长度为 \(1\) 的轨道,群的元素作用于这个元素都无法改变这个元素,那么这个元素就是固定点。因为其他轨道长度都是 \(p\) 的幂,自然无法贡献。

定理1

对于 \(k\le n\) 我们都可以证明存在这么一个子群其阶为 \(p^{k}\)

那么我们考虑从 \(|G|\) 中选出 \(p^{k}\) 个元素,然后这些元素会构成一个集合,我们记集合 \(X=\{A\subseteq G,|A|=p^{k} \}\),那么我们搞一个群,群作用是一个类似映射的东西,这个不用特别清楚,然后效果是将 \(A\) 映射到另一个 \(A^{'}\) 上。

因为 \(|X|={n\choose p^{k}}\),并且 \(p^{l-k+1}\nmid {n\choose p^{k}}\)

那么我们 \(X\) 可以分解为一些轨道的并,那么必然有一条轨道,也就是一些元素的集合 \(p^{l-k+1}\nmid siz\)

那么考虑这个东西的稳定子 \(G_{A}\),注意到轨道稳定子定理 \(|G_{A}||A^{G}|=|X|\)。那么 \(|G_{A}|\ge p^{k}\)

又因为 \(G_{A}\) 是稳定子,那么 \(G_{A}A=A\)。我们取 \(a\in A\),那么 \(G_{A}a\in A\)。所以 \(|G_{A}|=|G_{A}a|\le |A|=p^{k}\)。所以这个稳定子就是阶为 \(p^{k}\) 的子群了。

定理2和定理3

\(S={P_{1},P_{2},\dots,P_{r}}\) 为所有 \(Sylow p\) 子群的集合。我们挑出其中的一个群 \(P_{ans}\)(简便称为 \(P\)) 作用于这个集合。这个作用就是挑选 \(P\) 中的元素 \(g\),然后将 \(P_{i}\) 变成 \(gP_{i}g^{-1}\)。那么这样就会有轨道和稳定子了。

由于轨道稳定子定理,每个轨道的大小整除 \(p^{n}\),那么轨道的长度只能是 \(1\) 或者 \(p\) 的幂。考虑 \(P\) 所在的轨道,也就是 \(gPg^{-1}\) 因为 \(g\)\(P\) 中的元素,那么 \(P\) 所在的轨道上的元素共轭都是 \(P\) 本身。

会不会有其它元素轨道长度也为 \(1\) 呢?这样我们就可以很轻易建立映射关系证明这两个元素相等了。

因为其他轨道长度都是 \(p\) 的倍数,所以我们就证完了定理3的前半部分。

现在考虑证明共轭性

我们直接让 \(G\) 共轭作用在这个集合 \(S\) 上,那么根据轨道稳定子定理。对于集合中的一个群 \(P\),其稳定子必然包含 \(P\)。因为同一轨道上的稳定子大小相同,那么稳定子就包含 \(P\) 了。那么轨道长度就整除 \(m\) 了(轨道稳定子定理)。

还是固定一个子群 \(P\) 考虑其左陪集的集合,集合大小为 \(m\)(拉格朗日定理)。然后让另一个子群 \(Q\) 作用于这个陪集集合上。那么这个集合里面肯定会有一个固定点。也就是说群里的每个元素作用于上面的时候,肯定会有一个陪集使得其作用之后不改变数值。因为 \(p\)-群作用原理,集合大小为 \(m\),群的大小为 \(p^{n}\)\(gcd\)\(1\)。那个考虑那个不动点。设那个集合为 \(gP\),其中对于群每个元素作用于它,它都不会变。也就是 \(q\in Q,qgP=gP\)。也就是 \(g^{-1}qgP=P\),那么 \(g^{-1}qg\in P\)。如果 \(g^{-1}qg\) 不属于 \(P\),然后作用于 \(P\) 中的元素还在 \(P\) 中,那么我们直接逆元回来,就直接产生了矛盾。所以 \(q\) 就是共轭了!得证!

推论,任意一个 \(p^{k}(k\le n)\) 都是一个 sylow \(p-\) 群的子群,这个用上面的证法就可以理解了

因为所有都共轭,所以只有一条轨道,那么 \(n_{p}|m\) 也很显然了。

例题

有两道例题!

1

已知 \(p < q\) 为素数,\(p\nmid q-1\),证明 \(pq\) 阶群 \(G\) 是循环群。

循环群,也就是说所有的元素都由一个元素生成而来。

应用sylow定理

  1. 存在 \(p-\) 子群和 \(q-\) 子群

  2. 共轭没有想好怎么用

  3. \(p-\) 子群的数量 \(n_{p}| q\)\(q-\) 子群的数量 \(n_{q}|p\)\(n_{p}\equiv 1\pmod p\)\(n_{q}\equiv 1\pmod q\)

考虑从 \(q\) 的角度入手,也就是说设 \(n_{q}=\frac{p}{r}\)

那么 \(\frac{p}{r}\equiv 1\pmod q\)

\(p\equiv r\pmod q\)

因为 \(r\)\(p\) 的因子,并且 \(p<q\),那么 \(p=r,n_{q}=1\)

对于 \(p\) 考虑。注意到素数这个条件,我们发现 \(n_{p}\) 等于 \(1\)\(q\)

如果 \(n_{p}=q\),那么 \(q\equiv 1\pmod p\) 矛盾,所以 \(n_{p}=n_{q}=1\)

对于这两个子群,因为这两个群的阶都为质数,所以这两个群就是循环群。

如果不是循环群,那么每个子群的阶必定是这个群的阶因数。如果子群的阶为 \(1\),那么每个群必然都是单位元,矛盾。

既然是子群,又都是循环群,那么我们考虑把这两个群合在一起,然后我们就得到了一个新的可重集合。

\(p^{0}q^{0},\dots,p^{p-1}q^{q-1}\)

首先这两个集合的交只有单位元。如果有两个元素相同,因为两个的阶为质数,那么我们一定可以推出所有元素都是相同的,显然矛盾。

然后我们证这里面的元素两两不同,假如 \(p_{i_{1}}\times q_{j_{1}}=p_{i_{2}}\times q_{j_{2}}\)。我们移项即可推出矛盾

逆元、单位元、结合律、封闭性显然。所以这个东西搞出来是原来那个群。考虑证明它是循环群。我们搞出来这个式子的一个解 \(g_{1}p_{1}+g_{2}p_{2}\equiv 1\pmod pq\) 然后我们搞出来这个值(能搞出来是因为裴蜀定理),可以证明集合里的每一个元素都可以把这个当作起始元素然后搞出来。然后就证完了!

这个东西好像是直积,学一下

2

证明:30阶群不是单群

\(30=5\times 6\),因为 \(p|q-1\) 那么在上面我们的结论会变成 \(n_{q}=1\) \(n_{q}=1\)\(n_{q}=6\)

那么当 \(n_{q}=1\) 并且 \(n_{q}=6\) 的时候,直积起来显然不是单群。

对于一个非空集合和定义其上的两个二元运算,\(R\)\(+\) 构成 \(Abel\) 群(交换律那个),\(R\)\(·\) 构成半群(结合律)。然后这两种运算满足结合律。

注意,因为这里有群,这个加法的单位元是 \(0\),然后逆元也就是 \(-a\) 了。

幺环

有乘法单位元(ex:1)的环

除环

每个元素都有关于 \(·\) 的逆元

有人就要问了,\(0\) 呢?我们在考虑里面的乘法操作时,我们会排除这个东西

交换环

乘法满足交换律

对于一个非空集合和定义其上的两个二元运算,\(R\)\(+\) 构成 \(Abel\) 群,\(R/\{0\}\)\(·\) 构成 \(Abel\) 群。

举个例子也就是加减乘除的四则运算

容斥专场

一些约定

\(A^{c}\):集合 \(A\) 的补集

\(2^{A}\):幂集,也就是 \(A\) 的所有子集组成的集合(有时候也写成)

简单容斥

证明【省略】

容斥定理的补集形式

感性理解,把所有在 \(A\) 里面的都减掉了

子集变换

首先让我们学习那些高大上的专业术语吧!

\(FWT\):包含 \(or,and,xor\) 三种,其中 \(xor\) 不包含于子集变换

子集和变换:\(zeta\) 变换,是加法

子集和逆变换:莫比乌斯逆变换,是减法,就是吧 \(zeta\) 变换逆过来做。

\(FMT\):莫比乌斯变换,包含了子集和和超集和

高维前缀和就是子集和变换了。

  • 子集和变换:一个集合所有子集的元素和

  • 子集 \(or\) 变换:同理

  • 子集 \(and\) 变换:超集

\(FMT\)

子集和变换

很简单,做 \(n\) 遍前缀和即可

for1(i,1,n){
    for2(j,0,1<<n){
        if((j>>i)&1){
            f[j]+=f[j^(1 << i)]
        }      
    }
}

子集 \(or\) 变换

子集

子集 \(and\) 变换

超集

for1(i,1,n){
    for2(j,0,1<<n){
        if(!((j>>i)&1)){
            f[j]+=f[j^(1 << i)]
        }      
    }
}

\(FWT\)

按位运算卷积,学多项式的时候补一下。

具体而言,我们 \(FWT\) 可以类比 \(FFT\),在算子集卷积中,我们需要先做 \(FWT\),然后再做 \(IFWT\)

\(h(S) = \sum_{A | B = S} f(A)g(B)\)

\(h(S) = \sum_{A \& B = S} f(A)g(B)\)

\(h(S) = \sum_{A \oplus B = S} f(A)g(B)\)

例题

P7670

分讨

  • 如果整个只有 \(1\)\(?\),那么就是一个超集和
  • 如果整个只有 \(0\)\(?\),那么就是一个子集和
  • 如果整个只有 \(0\)\(1\),这就是数组取一个数

考虑拓展

第一类是 \(0\) 特别少,第二类是 \(1\) 特别少,第三类是 \(?\) 特别小。

  • 容斥 \(0\),那么我们把 \(?\) 设成 \(0\),然后做超集,有 \(0\) 怎么办?容斥。
  • 容斥 \(1\),那么我们把 \(?\) 设成 \(1\),然后做子集,有 \(1\) 怎么办?容斥
  • 直接枚举

LGV 引理(Lindstrom-Gessel-Viennot lemma)

参考1

参考2

由于 LGV 的限制真的太多了(特别是边权的那些限制),以至于在 OI 中大部分时候这个都是用来路径计数,所以这里大部分理解都是用路径计数来理解了。

LGV 引理 内容

  • \(G\) 是一个有限的带权有向无环图。每个顶点的度是有限的,不存在有向环(所以路径数量是有限的)。
  • 起点 \(A=\{a_1,\cdots,a_n\}\),终点 \(B=\{b_1,\cdots,b_n\}\)
  • 每条边 \(e\) 有权 \(w_e\),并假定值属于某 交换环
  • 对于一个有向路径 \(P\),定义 \(\omega(P)\) 为路径上所有边权的积。
  • 对任意顶点 \(a\)\(b\),定义 \(e(a,b)=\sum\limits_{P:a \to b}{\omega(P)}\)

在网格计数问题中,我们的边权就是 1,那么 \(w(P)=1\),然后 \(e(a,b)=\) 路径条数

用人话解释数学符号,我们的 \(e(a,b)\) 就是 \(a\)\(b\) 的路径条数,正常解释就是路径的带权和

设矩阵

\[M= \begin{pmatrix} e(a_1,b_1) & e(a_1,b_2) & \cdots & e(a_1,b_n) \\ e(a_2,b_1) & e(a_2,b_2) & \cdots & e(a_2,b_n) \\ \vdots & \vdots & \ddots & \vdots \\ e(a_n,b_1) & e(a_n,b_2) & \cdots & e(a_n,b_n) \\ \end{pmatrix} \]

\(A\)\(B\) 的不相交路径 \(P=(P_1,P_2,\cdots,P_n)\)\(P_i\) 表示从 \(a_i\)\(b_{\sigma(i)}\) 的一条路径,其中 \(\sigma\) 是一个排列(置换),并且满足对任意 \(i\not=j\)\(P_i\)\(P_j\) 没有公共点。记 \(\sigma(P)\) 表示 \(P\) 对应的排列。

引理说明,\(M\) 的行列式是所有从 \(A\)\(B\) 的不相交路径 \(P=(P_1,\cdots,P_n)\) 的带符号和。

所以我们可以这么理解,我们的 \(A\) 整个看作起点,然后它要匹配 \(B\) 也就是终点,然后每个点到每个点之间任意匹配,路径不交,好理解的。

证明

对一组路径 \(P\),若对任意 \(i\not=j\)\(P_i\)\(P_j\) 无公共点,则称 \(P\) 是一组不相交路径,否则为一组相交路径。为了简便,在下面相交路径记作 \(P^c\),不相交路径记作 \(P^u\)。不做特殊说明时,\(P\) 为一组平凡的路径。当带下标时,指一条路径。定义 \(\omega(P)=\omega(P_1)\omega(P_2)\cdots\omega(P_n)\)

网格图里 \(\omega(P)\) 就是 1

根据定义,

\[\begin{aligned} \mathrm{det}(M) &=\sum_{\sigma \in S_n}\mathrm{sign}(\sigma)\prod_{i=1}^{n}e(a_i,b_{\sigma(i)}) \\ &=\sum_{\sigma \in S_n}\mathrm{sign}(\sigma)\prod_{i=1}^{n}\sum_{P_i:a_i \to b_{\sigma(i)}}\omega(P_i) \end{aligned} \]

行列式的全排列计算

\(\prod_{i=1}^{n}\sum_{P_i:a_i \to b_{\sigma(i)}}\omega(P_i)\) 展开后对应所有排列为 \(\sigma\) 的路径组 \(P\)

这个展开也就是应用乘法原理,所有起点 \(A\) 到终点 \(B\) 的路径组的种数数出来,由于这里并没有限制相不相交,所以各部分独立,也就是说可以应用乘法原理。

\[\begin{aligned} \mathrm{det}(M) &=\sum_{\sigma \in S_n}\mathrm{sign}(\sigma)\sum_{P}\omega(P),P:(a_1,\cdots,a_n)\to(b_{\sigma(1)},\cdots,b_{\sigma(n)}) \\ &= \sum_{P:A \to B}\mathrm{sign}(\sigma(P))\omega(P) \end{aligned} \]

现在等式的形式已与定理相像,但是 \(P\) 的含义不同。

\[\mathrm{det}(M)= \sum_{P^u:A \to B}\mathrm{sign}(\sigma(P^u))\omega(P^u)+\sum_{P^c:A \to B}\mathrm{sign}(\sigma(P^c))\omega(P^c) \]

故若引理成立,必有 \(\sum_{P^c:A \to B}\mathrm{sign}(\sigma(P^c))\omega(P^c)=0\)

\(C\) 为所有 \(P^c\) 构成的集合。如果我们能构造一个双射关系 \(f:C \to C\),满足对任意 \(P^c\in C\)\(\omega(f(P^c))=\omega(P^c)\)\(\mathrm{sign}(\sigma(f(P^c)))=-\mathrm{sign}(\sigma(P^c))\),那么我们就直接可以抵消了,因为排列的性质,我们能很好匹配各个数让他们抵消。

考虑构造

让我们先尝试用这篇题解的方式构造:

  1. 选择最小的二元组 \((i,j)\) 满足 \(P_i\)\(P_j\) 相交。

  2. \(P_i,P_j\) 交换首个交点到末尾的这部分路径,得到 \(P'\)

  3. 此时 \(\pi(P')\) 相当于 \(\pi(P)\) 进行了一次对换,逆序对个数奇偶性改变。

  4. \(P'\) 中再选择最小二元组,仍是 \((i,j)\),交换回来得到 \(P\)

这样,就构造出了双射……吗?

让我们看看下面的例子:

例1

选择到最小二元组 \((1,3)\)

交换后得到下图:

例2

此时再次选择,得到的是 \((1,2)\) 而非 \((1,3)\)

也就是说,这样无法构造出双射!

我们应该换一种方法选择二元组。

因为 \(j\) 和实际的顺序没有关系,这只是一个编号而已。我们选择最小的 \(i\) 使 \(p_i\) 与别的路径有交点,再选择 \(j\) 使得其交点离出发点 \(a_i\) 最近,若有多个再选最小的 \(j\),这样得到的 \((i,j)\) 就可以成为双射。

证毕!

LuoguP6657

网格图,不重复,直接启动!

注意到题目保证了 \(a,b\) 升序,那么我们不是 \(i,i\) 匹配的路径必然相交,然后我们题目就和 \(LGV\) 一样了。

那么构造矩阵,如何求路径条数呢?我们有 \(n-1\) 个下,\(b_{i}-a_{i}\) 个右。使用插板法,就是 \(b_{i}-a_{i}+n-1 \choose b_{i}-a_{i}\) 高斯消元求行列式即可。

P7736

怎么不是网格图啊。

首先我们肯定要求从一个点到另一个点路径数,这个我们 DP 一下即可

现在我们要求的东西有点奇怪啊,其实不太会。

但是!我们隐隐约约感觉到这个偶数交点和奇数交点和 \((-1)^{\tau(p)}\) 有关。考虑有什么联系啊。欸!我们给每个点编号重排就行了吧。然后我们注意到,我们如果一个排列有一个逆序对,那么就代表有两个相交了,那么我们中间也有可能相交啊,我们发现,这些相交的点必然都两两出现,并不会对答案产生影响。

所以这就是 LGV 的板子了,NOI 出这种题也是没谁了

posted @ 2025-07-09 10:12  wuhupai  阅读(8)  评论(0)    收藏  举报