有限阿贝尔群的自同构

news/2024/9/18 17:07:13/文章来源:https://www.cnblogs.com/Martin-MHT/p/18414864

\[\def\Aut{\operatorname{Aut}} \]

\[\def\End{\operatorname{End}} \]

\[\def\diag{\operatorname{diag}} \]

\[\def\GL{\text{GL}} \]

\[\def\id{\operatorname{id}} \]

有限阿贝尔群的自同构

1. 介绍

在抽象代数的入门课程中,我们通常会学到有限 Abel 群的分类:

Theorem 1.1. \(G\) 是一个有限 Abel 群,那么 \(G\) 同构于如下一系列群的直积:

\[H_p = \mathbb{Z}/p^{e_1}\mathbb{Z}\times\cdots\times\mathbb{Z}/p^{e_n}\mathbb{Z}, \]

其中 \(p\) 是一个质数且 \(1 \leq e_1 \leq \cdots \leq e_n\) 是正整数。

然而,关于 \(G\) 的自同构群 \(\text{Aut}(G)\) 却还不为人熟知。这篇文章将填补这一空白。我们将分三步考虑对 \(\text{Aut}(G)\) 的刻画。第一步是观察到我们可以把问题简化为对更简单的群 \(H_p\) 的刻画,这是因为阶数互质的群的自同构可以分开考虑(Lemma 2.1);第二步,我们用 Theorem 3.3 来通过矩阵环 \(\mathbb{Z}^{n \times n}\) 的一个商环来描述 \(H_p\) 的自同态环;最后,在这个构造中找出 \(\text{Aut}(H_p) \subset \text{End}(H_p)\)

在我们研究的最后,我们能够对于任意的有限 Abel 群 \(G\) 的自同构群的阶数 \(|\text{Aut}(G)|\) 获得一个明确的计算公式。

2. 自同构的直积

\(G = H \times K\),其中 \(H\)\(K\) 的阶互质,很自然地我们想问:\(G\) 的自同构如何与 \(H\) 的和 \(K\) 的联系起来。

Lemma 2.1.\(H\)\(K\) 是阶数互质的有限阿贝尔群,那么

\[\Aut(H) \times \Aut(K) = \Aut(H \times K) \]

Proof. 我想说这个是显然的,但还是写一下吧。
证明的思路大概是: 自同构一定保持单位元不变,那么 \(H\) 的自同态不能打到 \(K\),否则由于阶数互质,左边循环完一圈回到单位元的时候右边不可能同时回到。

我们按照如下方法构造这个同态 \(\phi \colon \Aut(H) \times \Aut(K) \rightarrow \Aut(H \times K)\)

\(\alpha \in \Aut(H), \beta \in \Aut(K)\),易见可以如下构造一个 \(H \times K\) 的自同态 \(\phi (\alpha, \beta)\)

\[\phi (\alpha, \beta) (h, k) := (\alpha(h), \beta(k)) \]

\(\id_H \in \Aut (H), \id_K \in \Aut(K)\) 分别是 \(H\)\(K\) 的恒等自同构。要证明 \(\phi\) 是一个同态,可以注意到 \(\phi(\id_H, \id_K) = \id_{H\times K}\),且

\[\phi(\alpha_1\alpha_2, \beta_1\beta_2)(h,k) = (\alpha_1\alpha_2(h), \beta_1\beta_2(k)) = \phi(\alpha_1,\beta_1)\phi(\alpha_2,\beta_2)(h,k) \]

对于所有的 \(\alpha_1, \alpha_2 \in \Aut(H), \beta_1, \beta_2 \in \Aut(K), h\in H, k\in K\)都成立。

我们下一步验证 \(\phi\) 是一个同构。显然 \(\phi\) 是单的,我们只需要证明它是满的。令 \(n = |H|, m = |K|\),并写出 \(H, K\) 的标准投影同态 \(\pi_H~\colon~H \times K \rightarrow H, \pi_H~\colon~H \times K \rightarrow H\)。固定一个 \(\omega \in \Aut(H \times K)\),我们希望找到它的原像。考虑同态 \(\gamma\colon K \rightarrow H\)\(\gamma(k) = \pi_H(\omega(1_H, k))\),其中 \(1_H\)\(H\) 的单位元。注意到 \({k^n~\colon~k\in K}\subseteq \ker \gamma\),这是因为

\[1_H = \pi_H(\omega(1_H, k))^n = \pi_H(\omega(1_H, k) ^ n) = \pi_H(\omega(1_H, k^n)) = \gamma(k^n). \]

同时,因为 \(m\)\(n\) 互质,集合 \(\{k^n~\colon~k \in K\}\) 包含所有 \(m\) 个元素。因此,我们得到 \(\ker \gamma = K\) ,即 \(\gamma\) 是平凡同态。相似地,\(\delta~\colon~H \rightarrow K\)(定义为 \(\delta(h) = \pi_K(\omega(h, 1_K))\))也是平凡的。

最后,如下定义 \(H\)\(K\) 的自同态:

\[\omega_H(h) = \pi_H(\omega(h,1_K)), \omega_K(k) = \pi_K(\omega(1_H, k)) \]

,从这个构造和上面的讨论,我们得到,对于任意的 \(h \in H, k \in K\), 有:

\[\omega(h, k) = \omega(h, 1_K) \cdot \omega(1_H, k) = (\omega_H(h), \omega_K(k)) = \phi(\omega_H, \omega_K)(h, k). \]

最后要证的就是 \(\omega_H \in \Aut(H), \omega_K \in \Aut(K)\),由于 \(H, K\) 均有限,只需要证明 \(\omega_H, \omega_K\) 是单的就行了。为此,假定对于某个 \(h \in H\)\(\omega_H(h) = 1_H\),那么 \(\omega(h, 1_K) = (\omega_H(h), \omega_K(1_K)) = (1_H, 1_K)\),因此根据 \(\omega\) 的单性,\(h = 1_H\)。同理可证 \(\omega_K \in \Aut(K)\),这就完成了证明。\(\square\)

3. \(H_p\) 的自同态

为了完成我们对自同构的描述,有必要阐述 \(E_p = \End(H_p)\),即 \(H_p\) 的自同态环。\(E_p\) 中的元素是 \(H_p\) 的自同态,自然地,以复合定义环上的乘法,并如下定义环上的加法: \((A+B)(h)~\colon= A(h)+B(h)\),对于 \(A, B \in \End(H_p), h \in H_p\) 。这样的环与矩阵环有相似的表现,下面我们将讨论它们之间一些重要的不同点。

循环群 \(C_{p^{e_i}}\) 和以 \(p_{e_i}\) 为模的加群是同构的,下面我们令 \(g_i\) 表示 \(C_{p^{e_i}}\) 的平凡生成元,特别地,这些元素 \(g_i\) 可以被看做如下一类模 \(p^{e_i}\)\(1\) 的整数:

\[\overline{1}=\{x\in \mathbb{Z}~\colon~ x \equiv 1 \pmod {p^{e_i}}\} \]

在这样的表示方法下,一个 \(H_p\) 中的元素可以用这样一个向量来表示: \((\overline{h}_1, \dots, \overline{h}_n)^T\),其中任一 \(\overline{h}_i \in \mathbb{Z} / p^{e_i}\mathbb{Z}\),且 \(h_i \in \mathbb{Z}\)。约定好这些记号之后,我们定义下面这个矩阵的集合:

Definition 3.1.

\[R_p := \{(a_{ij}) \in \mathbb{Z}^{n \times n}~\colon~ p^{e_i-e_j}\mid a_{ij}, \forall~1\leq j \leq i \leq n\}. \]

举个例子,当 \(n = 3\)\(e_1=1,e_2=2,e_3=5\) 的时候,有

\[R_p=\left\{\left[\begin{array}{}b_{11}&b_{12}&b_{13}\\b_{21}p&b_{22}&b_{23}\\b_{31}p^4&b_{32}p^3&b_{33}\end{array}\right]:b_{ij}\in\mathbb{Z}\right\}. \]

显然 \(R_p\) 在加法下封闭,且包含单位矩阵 \(I\)。下面我们证明它在矩阵乘法下封闭,从而证明它是一个矩阵环。

Lemma 3.2. \(R_p\) 在矩阵乘法下构成一个环。

证明:取 \(A = (a_{ij}) \in R_p\) 。条件 \(p^{e_i-e_j}\mid a_{ij}, \forall~1\leq j \leq i \leq n\) 等价于存在如下分解:

\[A = PA'P^{-1} \]

其中 \(A' \in \mathbb{Z}^{n\times n}\)\(P = \diag(p^{e_1}, \dots, p^{e_n})\) ,后者是对角矩阵(这里左乘 \(P\) 就是给 \(A\) 的每一行乘上一个 \(p^{e_i}\),手写一下会好理解很多)。于是如果 \(A, B \in R_p\),那么 \(AB=(PAP'^{-1})(PB'P^{-1})=PA'B'P^{-1} \in R_p\)\(\square\)

\(\pi_i~\colon~ \mathbb{Z} \rightarrow \mathbb{Z} / p^{e_i}\mathbb{Z}\) 是标准商映射使得 \(\pi_i(h) = \overline{h}\),并令 \(\pi~\colon~\mathbb{Z} \rightarrow H_p\) 是如下定义的同态:

\[\pi(h_1,\dots,h_n)^T=(\pi_1(h_1),\dots,\pi_n(h_n))^T=(\overline{h}_1,\dots,\overline{h}_n)^T. \]

我们现在可以指出,\(E_p\) 可以看作矩阵环 \(R_p\) 的一个商环。用自然语言来说,下面的结果就是在讲,一个 \(H_p\) 的自同态相当于先用 \(R_p\) 中的一个矩阵 \(A\) 乘上一个整数代表元的向量,再用 \(\pi\) 作用在上面。

Theorem 3.3. 如下定义的映射 \(\psi~\colon~R_p \rightarrow \End(H_p)\)

\[\psi(A)(\overline{h}_1,\dots,\overline{h}_n)^T=\pi(A(h_1,\dots,h_n)^T) \]

是一个环上的满同态。

证明:我们先验证 \(\psi(A)\) 是一个良定义的\(H_p\) 到自身的映射。取 \(A = (a_{ij}) \in R_p\),并假定 \((\overline{r}_1,\dots,\overline{r}_n)^T=(\overline{s}_1,\dots,\overline{s}_n)^T\) 对于整数 \(r_i, s_i\) 成立。(这就是在说 \(p^{e_i} | (r_i-s_i)~, \forall i = 1,2,\dots,n\).)差值 \(\pi(A(r_1,\dots,r_n)^T)-\pi(A(s_1,\dots,s_n)^T)\) 的第 \(k\) 项是:

\[\begin{aligned}\pi_k\left(\sum_{i=1}^na_{ki}r_i\right)-\pi_k\left(\sum_{i=1}^na_{ki}s_i\right)&=\pi_k\left(\sum_{i=1}^na_{ki}r_i-\sum_{i=1}^na_{ki}s_i\right)\\&=\sum_{i=1}^n\pi_k\left(\frac{a_{ki}}{p^{e_k-e_i}}\cdot p^{e_k-e_i}(r_i-s_i)\right)\\&=\overline{0},\end{aligned} \]

这是因为 \(k \geq i\) 时有 \(p^{e_k}\mid p^{e_k-e_i}\),而 \(k < i\) 时有 \(p^{e_k}\mid (r_i-s_i)\)。接下来,因为 \(\pi\)\(A\) 都是线性的,所以 \(\psi(A)\) 作为它们的复合也是线性的。因此, \(\psi(A) \in \End(H_p)\) 对于所有 \(A \in R_p\) 均成立。

下一步我们证明映射 \(\psi\)的。取 \(w_i=(0,\dots,g_i,\dots,0)^T\),一个自同态 \(M \in \End(H_p)\) 被它在每一个 \(w_i\) 处的作用所限定。然而,这些元素的映射并不是完全自由的。假定对于整数 \(h_{ij}\)\(M(w_j)=(\overline{h}_{1j},\dots,\overline{h}_{nj})^T=\pi(h_{1j},\dots,h_{nj})^T\),那么就需要有:

\[0=M\left(0\right)=M\left(p^{e_j}w_j\right)=\underbrace{Mw_j+\cdots+Mw_j}_{p^{e_j}}=\left(\overline{p^{e_j}h_{1j}},\ldots,\overline{p^{e_j}h_{nj}}\right)^T. \]

所以对于所有的 \(i, j\)\(p^{e_i}\mid p^{e_j}h_{ij}\)成立,也就是对于 \(i \ge j\)\(p^{e_i-e_j}\mid h_{ij}\) 成立。因此得以用这样的 \(h_{ij}\) 组装成一个矩阵 \(H=(h_{ij}) \in R_p\),我们得到 \(\psi(H) = M\),这样就证明了 \(\psi\) 是满的。

最后我们证明 \(\psi\) 是一个环同态。显然依定义有 \(\psi(I) = \id_{E_p}\),且 \(\psi(A+B) = \psi(A) + \psi(B)\)。如果 \(A,B\in R_p\),那么直接验证可得 \(\psi(AB) = \psi(A) \circ\psi(B)\)。这样就完成了证明。\(\square\)

有了这样的一个对于 \(\End(H_p)\) 的描述,我们得以通过这些自同态来产生自同构 \(\Aut(H_p)\)。在进行这个讨论之前,我们先计算一下 \(\psi\) 的核。

Lemma 3.4. \(\psi\) 的核由所有满足任意 \(i,j\)\(p^{e_i}\mid a_{ij}\) 的矩阵 \(A=(a_{ij}) \in R_p\) 构成。

证明:像之前那样取 \(w_i=(0,\dots,g_i,\dots,0)^T \in H_p\),如果 \(A\) 有如上性质,那么直接代入可得:

\[\psi(A)w_j=(\pi_1(a_{1j}), \dots, \pi_n(a_{nj}))=0. \]

而任一 \(h \in H_p\) 都是 \(w_j\) 的线性组合,于是 \(\psi(A)h=0\) 对于任意 \(h \in H_p\) 均成立。这就证明了 \(A \in \ker \psi\)

反方向的证明基本一致,在此略去。\(\square\)

3.3 和 3.4 一起,让我们对环 \(\End(H_p)\) 有了一个明确的刻画,即它是商环 \(R_p / \ker \psi\)。接下来我们就可以刻画 \(\Aut(H_p)\) 了。我们唯一需要的额外工具是如下这个很基本的定理。

Lemma 3.5.\(A \in \mathbb{Z}^{n\times n}\) 是一个可逆矩阵(\(\det A \neq 0\)),那么存在一个唯一的矩阵 \(B \in \mathbb{Z}^{n\times n}\)(称为 \(A\) 的伴随矩阵),使得 \(AB=BA=\det(A)I\)

\(\mathbb{F}_p\) 为域 \(\mathbb{Z} / p\mathbb{Z}\),如下定理给出了 \(\Aut(H_p)\) 的完整描述。

Theorem 3.6. 一个自同态 \(M = \psi(A)\) 是一个自同构当且仅当 \(A \pmod p \in \GL_n(\mathbb{F}_p)\)

证明的原理是一个同态是同构当且仅当它左右都有逆。

证明:我们从一个小插曲开始。对于 \(A\) 的伴随矩阵 \(B\),我们将说明 \(B\) 事实上也是 \(R_p\) 的一个元素。为了证明如上论断,像 Lemma 3.2 一样展开 \(A = PA'P^{-1}\),其中 \(A' \in \mathbb{Z}^{n\times n}\),显然 \(A'\) 依然可逆,令 \(B'\)\(A'\) 的伴随矩阵使得 \(A'B'=B'A'=\det(A')I\)(再一次运用 Lemma 3.5)。接下来注意到 \(\det(A) = \det(A')\)。令 \(C=PB'P^{-1}\) 并注意到如下事实:

\[AC=PA'B'P^{-1}=\det(A)I=PB'A'P^{-1}=CA. \]

从引理中 \(B\) 的唯一性,得到 \(B=C=PB'P^{-1}\),于是 \(B\) 依我们所愿在 \(R_p\) 中。

回到我们对这个定理的证明,先证 \(\Leftarrow\):假定 \(p \nmid \det(A)\)(也即 \(A \pmod p \in \GL_n(\mathbb{F}_p)\)),令 \(s \in Z\)\(\det(A)\)\(\text{mod}~p\) 意义下的逆元(逆元一定存在,因为 \(\gcd(\det(A), p^{e_n})=1\))。注意到我们同时也对于所有的 \(j = 1,2,\dots,n\)\(\det(A) \cdot s \equiv 1 \pmod {p^{e_j}}\)。如 Lemma 3.5 那样,令 \(B\)\(A\) 的伴随,我们现在定义 \(R_p\) 中的一个元素:

\[A^{(-1)}:= s \cdot B, \]

它的在 \(\psi\) 作用下的像恰好是 \(A\) 所代表的同态的逆:

\[\psi(A^{(-1)}A)=\psi(AA^{(-1)})=\psi(s\cdot\det(A)I)=\id_{E_p}. \]

这就证明了 \(\psi(A) \in \Aut(H_p).\)

相反(\(\Rightarrow\)),如果 \(\psi(A) = M\)\(\psi(C) = M^{-1} \in \End(H_p)\) 存在,那么

\[\psi(AC - I) = \psi(AC) - \id_{E_p} = 0. \]

因此,\(AC-I \in \ker \psi\)。据此,再从 Lemma 3.4 可以得到 \(p \mid AC-I\)(对于每一个元素而言),因此 \(AC\equiv I \pmod p\),也即

\[1 \equiv \det(AC) \equiv \det(A)\det(C) \pmod p \]

从而 \(p \nmid \det(A)\),于是 \(A\) 有逆,定理成立。\(\square\)

4. 计算 \(H_p\) 的自同构

为了进一步向读者展示 Theorem 3.6 的用处,我们来简略地说明如何通过它来计算 \(\left|\Aut(H_p)\right|\)。加上 Lemma 2.1可以对于任意有限阿贝尔群计算其自同构群的阶数。计算分为两步:

  1. 找到所有 \(\GL_n(\mathbb{F}_p)\) 中所有能够被拓展成一个能代表自同态的矩阵 \(A \in R_p\) 的元素
  2. 计算所有把如上元素拓展成自同态的不同方法数。

定义如下 \(2n\) 个数:

\[d_k = \max\{l : e_l=e_k\}, c_k = \min\{l : e_l = e_k\} \]

由于 \(e_k=e_k\),显然有 \(d_k \ge k, c_k\le k\)。我们要找的所有 \(M \in \GL_n(\mathbb{F}_p)\) 有着如下形式:

\[M=\left[\begin{array}{cccc}m_{11}&m_{12}&\cdots&m_{1n}\\\vdots&&&\\m_{d_11}&&&\\&m_{d_22}&&\\&&\ddots&\\0&&&m_{d_nn}\end{array}\right]=\left[\begin{array}{ccccc}m_{1c_1}&&&&*\\&m_{2c_2}&&&\\&&\ddots&&\\0&&&m_{nc_n}&\cdots&m_{nn}\end{array}\right]. \]

在 1. 中填出这样的一个矩阵且保持可逆的数目可以这样逐列计算:

\[\prod_{k=1}^n\left(p^{d_k}-p^{k-1}\right) \]

减去的部分是为了保证每一列都与之前的线性不相关(由于 \(d_k \ge k\),这总是可以做到的)。接下来就是 2. 我们来将它拓展成一个同态,也即对于每一个 \(\overline{m}_{ij} \in \mathbb{Z}/p\mathbb{Z}\),我们将它拓展为 \(\overline{a}_{ij} \in p^{e_i-e_j}\mathbb{Z} / p^{e_i}\mathbb{Z}\),使得

\[a_{ij} \equiv m_{ij} \pmod p \]

依然成立。

对于那些原矩阵中的 \(0\) 元素,有 \(p^{e_j}\) 种方法来拓展;对于那些非 \(0\) 元素,有 \(p^{e_i-1}\) 种,因为我们可以对它加上任何一个 \(p\mathbb{Z} / p^{e_i}\mathbb{Z}\) 中的元素。这就给出了最后的结果。

Theorem 4.1. 阿贝尔群 \(H_p = \mathbb{Z}/p^{e_1}\mathbb{Z}\times\cdots\times\mathbb{Z}/p^{e_n}\mathbb{Z}\) 的自同构群的阶数为:

\[\left|\Aut(H_p)\right|=\prod_{k=1}^n\left(p^{d_k}-p^{k-1}\right)\prod_{j=1}^n\left(p^{e_j}\right)^{n-d_j}\prod_{i=1}^n\left(p^{e_i-1}\right)^{n-c_i+1} \]

现在我们对任意有限阿贝尔群的自同构群给出了一个回答。

参考文献:Automorphisms of finite Abelian groups [https://arxiv.org/abs/math/0605185v1]

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

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

相关文章

软件工程导论——个人项目之论文查重

软件工程导论——个人项目之论文查重这个作业属于哪个课程 https://edu.cnblogs.com/campus/gdgy/CSGrade22-12/这个作业要求在哪里 https://edu.cnblogs.com/campus/gdgy/CSGrade22-12/homework/13220这个作业的目标 设计一个论文查重算法并实现;学会 Git 版本控制Github仓库…

主从库与切片集群机制

主从库与切片集群机制 主从复制源码剖析 redis的主从复制主要包括全量复制RDB文件,增量复制,长连接同步,使用了基于状态机的设计思想,来实现不同状态和状态间的跳转 基于状态机实现的话,在开发程序时只需要考虑不同状态下具体要执行的操作,以及状态之间的跳转条件即可 四…

数据类型与底层原理

数据类型与底层原理 数据结构 哈希表 redis使用链式哈希来解决哈希冲突,其Hash表实质上是一个二维数组,其中每一项就是一个指向哈希项(dictEntry)的指针 typedef struct dictht {dictEntry **table; //二维数组unsigned long size; //Hash表大小unsigned long sizemask;uns…

软工作业2:个人项目-论文查重

一、github链接这个作业属于哪个课程 首页 - 计科22级12班 - 广东工业大学 - 班级博客 - 博客园 (cnblogs.com)这个作业要求在哪里 个人项目 - 作业 - 计科22级12班 - 班级博客 - 博客园 (cnblogs.com)这个作业的目标 规范代码编写;学习模块化管理程序功能;学会写单元测试二、…

软工第一次编程作业:论文查重

github地址:https://github.com/yingnothing/first.git 个人项目-论文查重这个作业属于哪个课程 https://edu.cnblogs.com/campus/gdgy/CSGrade22-34/这个作业要求在哪里 https://edu.cnblogs.com/campus/gdgy/CSGrade22-34/homework/13229GitHub链接 https://github.com/ying…

个人项目——论文查重

这个作业属于哪个课程 https://edu.cnblogs.com/campus/gdgy/CSGrade22-34这个作业要求在哪里 https://edu.cnblogs.com/campus/gdgy/CSGrade22-34/homework/13229这个作业的目标 个人项目——论文查重一:我的github仓库地址 https://github.com/kelin-KL/kelin-KL 二:PSP表格…

OI海海

在pyq里看到了殿禾Wrose的“X的随波逐流”,附文是“我与OI的365天”,我才想到,我打OI也整整一年了 有人或许不理解我这样的一个蒟蒻为什么这么喜欢喜欢写怀念类的东西,即使到现在我还没有取得任何的奖项以及未来也并没有概率拿牌 因为我只觉得一步步走来,不记得的话,是很…

GIS可视化软件:地理信息与遥感领域中的洞察之眼

在地理信息与遥感技术的广阔天地中,可视化软件如同一双洞察世界的明眸,将复杂的数据编织成生动、直观的画卷,为我们揭示地球的奥秘与城市的律动。本文将深入挖掘其技术核心、应用实例、未来趋势,探讨可视化软件如何为地理信息与遥感技术带来深刻洞见。 可视化软件的核心与技…

USB分析仪USB3.2日志分析

1.简介 USB2.0总线采用轮询模式,即总线事务开始时,都要先发送IN或者OUT令牌包,以通知端点或者查询端点是否准备好。而USB3.2采用了异步通知模式,若端点没有准备好,则主机无需轮询,端点准备好后会通知主机,而对于OUT端点,主机会直接发送DP数据包,相当于将USB2.0中的OUT…

[第一章 web入门]SQL注入-1

启动靶机很明显注入点为id值,单引号闭合影响语句,说明为单引号闭合构造注入语句 ?id=1 and 1 =1 --+ 发现没报错,说明没有其他过滤 ,开始sql注入 ?id=1 order by 4 --+ 直到=4报错说明有3个字节段测试回显位2,3 ?id=1 and 1 = 2 union select 1,2,3 --+ 测试当…

数据结构 —堆

今天学习算法了没,你小子瞅啥呢!一:堆 1、一种二叉树的结构(完全二叉树) 2、完全二叉树:从上到下;从左到右;填满 3、最大堆:根节点的权值大于孩子节点 4、最小堆:根节点的权值依次小于孩子节点 5、常用操作 import heapq# 创建最小堆和最大堆 min_heap = [] max_heap…