图的最小生成树算法--普里姆(Prim)算法和克鲁斯克尔(Kruskal)算法

一、图的最小生成树

最小生成树(Minimum spanning tree,MST)是最小权重生成树(Minimum weight spanning tree)的简称,是一个连通加权无向图中一棵权值最小的生成树。

在一给定的无向图 G = ( V , E ) G = (V, E) G=(V,E) ( u , v ) (u,v) (u,v) 代表连接顶点 u 与顶点 v 的边 E = { ( u , v ) ∣ u ∈ V , v ∈ V } E = \{ (u, v) | u \in V, v \in V \} E={(u,v)uV,vV},而 w ( u , v ) ) w(u,v)) w(u,v))代表此边的权重,若存在 T T T E E E 的子集(即 T ⊆ E {\displaystyle T\subseteq E} TE)且 ( V , T ) (V, T) (V,T) 为树,使得:

w ( T ) = ∑ ( u , v ) ∈ T w ( u , v ) {\displaystyle w(T)=\sum _{(u,v)\in T}w(u,v)} w(T)=(u,v)Tw(u,v)

w ( T ) w(T) w(T) 最小,则此 TG 的最小生成树。

一个连通图可能有多个生成树。当图中的边具有权值时,总会有一个生成树的边的权值之和小于或者等于其它生成树的边的权值之和。广义上而言,对于非连通无向图来说,它的每一连通分量同样有最小生成树,它们的并被称为最小生成森林。

  1. 最小生成树在一些情况下可能会有多个。例如,当图的每一条边的权值都相同时,该图的所有生成树都是最小生成树。
  2. 如果图的每一条边的权值都互不相同,那么最小生成树将只有一个。

如下加权无向连通图

在这里插入图片描述
其最小成生树为:
在这里插入图片描述

在这里插入图片描述
求取一张无向图的最小生成树的算法主要有普里姆(Prim)算法个克鲁斯克尔(Kruskal)算法。

二、普里姆(Prim)算法

普里姆算法(Prim Algorithm)是图论中的一种贪心算法,可在一个加权连通图中找到其最小生成树。

1. 算法简介

该算法于1930年由捷克数学家沃伊捷赫·亚尔尼克(Vojtěch Jarník)发现;并在1957年由美国计算机科学家罗伯特·普里姆(Robert C. Prim)独立发现;1959年,艾兹赫尔·韦伯·迪杰斯特拉(Edsger W. Dijkstra)再次发现了该算法。因此,在某些场合,普里姆算法又被称为DJP算法、亚尔尼克算法或普里姆-亚尔尼克算法。

2. 算法思想与步骤

算法思想:从某⼀个顶点开始构建⽣成树;每次将代价最⼩的新顶点纳⼊⽣成树,直到所有顶点都纳⼊为⽌。

算法步骤
输入:一个加权连通图,其中顶点集合为 V {\displaystyle V} V,边集合为 E {\displaystyle E} E
输出:使用集合 V new {\displaystyle V_{\text{new}}} Vnew E new {\displaystyle E_{\text{new}}} Enew 来描述所得到的最小生成树。
初始化 V new = { x } {\displaystyle V_{\text{new}}=\{x\}} Vnew={x},其中 x {\displaystyle x} x 为集合 V {\displaystyle V} V 中的任一节点(起始点), E new = { } {\displaystyle E_{\text{new}}=\{\}} Enew={}

  1. 在集合 E {\displaystyle E} E中选取权值最小的边 ( u , v ) {\displaystyle (u,v)} (u,v),其中 u {\displaystyle u} u为集合 V new {\displaystyle V_{\text{new}}} Vnew中的元素,而 v {\displaystyle v} v则是 V {\displaystyle V} V中没有加入 V new {\displaystyle V_{\text{new}}} Vnew的顶点(如果存在有多条满足前述条件即具有相同权值的边,则可任意选取其中之一);
  2. v {\displaystyle v} v加入集合 V new {\displaystyle V_{\text{new}}} Vnew中,将 ( u , v ) {\displaystyle (u,v)} (u,v)加入集合 E new {\displaystyle E_{\text{new}}} Enew中;
  3. 重复步骤1到步骤2,直到 V new = V {\displaystyle V_{\text{new}}=V} Vnew=V

下图为普里姆(Prim)算法的一个例子:
在这里插入图片描述
上图是一个 V = { v 0 , v 1 , v 2 , v 3 , v 4 , v 5 } V=\{v_0,v_1,v_2,v_3,v_4,v_5\} V={v0,v1,v2,v3,v4,v5} 的无向图,使用Prim算法计算最小生成树。

  1. 首先进行初始化操作,任选一个顶点作为初始顶点,本例子中选择 v 0 v_0 v0,即:将 v 0 {v_0} v0加入到 V n e w V_{new} Vnew,此时 V n e w = { v 0 } {V_{new}=\{v_0\}} Vnew={v0}

  2. 其次以 V n e w = { v 0 } {V_{new}=\{v_0\}} Vnew={v0}为基准,寻找与 v 0 v_0 v0 相邻,边的权值最小的顶点,可以发现边 ( v 0 , v 3 ) (v_0, v_3) (v0,v3) 的权值 w 03 w_{03} w03 为1,是最小的,所以连通 v 0 v_0 v0 v 3 v_3 v3,即:将 v 3 {v_3} v3加入到 V n e w V_{new} Vnew并将 ( v 0 , v 3 ) (v_0, v_3) (v0,v3)加入到 E n e w E_{new} Enew此时 V n e w = { v 0 , v 3 } {V_{new}=\{v_0,v_3\}} Vnew={v0v3} E n e w = { ( v 0 , v 3 ) } {E_{new}=\{(v_0, v_3)\}} Enew={(v0,v3)}

  3. 然后以 V n e w = { v 0 , v 3 } {V_{new}=\{v_0,v_3\}} Vnew={v0v3} 中的两个顶点一起作为基准,发现相邻的顶点中边 ( v 2 , v 3 ) (v_2, v_3) (v2,v3) 的权值 w 23 w_{23} w23为4,是最小的,所以连通 v 2 v_2 v2 v 3 v_3 v3 ,即:将 v 2 {v_2} v2加入到 V n e w V_{new} Vnew并将 ( v 2 , v 3 ) (v_2, v_3) (v2,v3)加入到 E n e w E_{new} Enew,此时 V n e w = { v 0 , v 2 , v 3 } {V_{new}=\{v_0,v_2,v_3\}} Vnew={v0,v2,v3} E n e w = { ( v 0 , v 3 ) , ( v 2 , v 3 ) } {E_{new}=\{(v_0, v_3),(v_2, v_3)\}} Enew={(v0,v3),(v2,v3)}

  4. 接下来以 V n e w = { v 0 , v 2 , v 3 } {V_{new}=\{v_0,v_2,v_3\}} Vnew={v0,v2,v3}作为基准,权值 w 25 w_{25} w25 为2,是最小的一条边,连通边 ( v 2 , v 5 ) (v_2, v_5) (v2,v5) ,即:将 v 5 {v_5} v5 加入到 V n e w V_{new} Vnew 并将 ( v 2 , v 5 ) (v_2, v_5) (v2,v5) 加入到 E n e w E_{new} Enew,此时 V n e w = { v 0 , v 2 , v 3 , v 5 } {V_{new}=\{v_0,v_2,v_3, v_5\}} Vnew={v0,v2,v3,v5} E n e w = { ( v 0 , v 3 ) , ( v 2 , v 3 ) , ( v 2 , v 5 ) } {E_{new}=\{(v_0, v_3), (v_2, v_3),(v_2, v_5)\}} Enew={(v0,v3),(v2,v3),(v2,v5)}

  5. V n e w = { v 0 , v 2 , v 3 , v 5 } {V_{new}=\{v_0,v_2,v_3, v_5\}} Vnew={v0v2,v3,v5} 作为基准, w 13 w_{13} w13为5,连通边 ( v 1 , v 3 ) (v_1, v_3) (v1,v3) ,即:将 v 1 {v_1} v1 加入到 V n e w V_{new} Vnew 并将 ( v 1 , v 3 ) (v_1, v_3) (v1,v3) 加入到 E n e w E_{new} Enew,此时 V n e w = { v 0 , v 1 , v 2 , v 3 , v 5 } {V_{new}=\{v_0,v_1,v_2,v_3, v_5\}} Vnew={v0,v1,v2,v3,v5} E n e w = { ( v 0 , v 3 ) , ( v 2 , v 3 ) , ( v 2 , v 5 ) , ( v 1 , v 3 ) } {E_{new}=\{(v_0, v_3), (v_2, v_3),(v_2, v_5),(v_1, v_3)\}} Enew={(v0,v3),(v2,v3),(v2,v5),(v1,v3)}

  6. 最后连通权值为4的边 ( v 1 , v 4 ) (v_1, v_4) (v1,v4) ,即:将 v 4 {v_4} v4 加入到 V n e w V_{new} Vnew 并将 ( v 1 , v 4 ) (v_1, v_4) (v1,v4) 加入到 E n e w E_{new} Enew,此时 V n e w = { v 0 , v 1 , v 2 , v 3 , v 4 , v 5 } {V_{new}=\{v_0,v_1,v_2,v_3,v_4, v_5\}} Vnew={v0,v1,v2,v3,v4,v5} E n e w = { ( v 0 , v 3 ) , ( v 2 , v 3 ) , ( v 2 , v 5 ) , ( v 1 , v 3 ) , ( v 1 , v 4 ) } {E_{new}=\{(v_0, v_3), (v_2, v_3),(v_2, v_5),(v_1, v_3),(v_1, v_4)\}} Enew={(v0,v3),(v2,v3),(v2,v5),(v1,v3),(v1,v4)}

  7. 对比发现此时 V n e w = V {V_{new}=V} Vnew=V,即说明所有节点都已经连通了,最小生成树计算完毕。

经过以上步骤,通过Prim算法得到了无向图 V = { v 0 , v 1 , v 2 , v 3 , v 4 , v 5 } V=\{v_0,v_1,v_2,v_3,v_4,v_5\} V={v0,v1,v2,v3,v4,v5} 的最小生成树。

三、克鲁斯克尔(Kruskal)算法

克鲁斯克尔算法(英语:Kruskal algorithm)是一种用来查找最小生成树的算法,是贪心算法的应用。

1. 算法简介

克鲁斯克尔算法由美国数学家约瑟夫·克鲁斯克尔(Joseph Bernard Kruskal, Jr.)在1956年发表。贪心算法的应用,克鲁斯克尔算法在图中存在相同权值的边时也有效。

2. 算法思想与步骤

算法思想:每次选择⼀条权值最⼩的边,使这条边的两头连通(原本已经连通的就不选),直到所有结点都连通。

算法步骤

  1. 新建图 G {\displaystyle G} G G {\displaystyle G} G中拥有原图中相同的节点,但没有边;
  2. 将原图中所有的边按权值从小到大排序 ;
  3. 从权值最小的边开始,如果这条边连接的两个节点于图 G {\displaystyle G} G中不在同一个连通分量中,则添加这条边到图 G {\displaystyle G} G中;
  4. 重复3,直至图 G {\displaystyle G} G中所有的节点都在同一个连通分量中。

下图为克鲁斯克尔(Kruskal)算法的一个例子:
在这里插入图片描述
上图是一个 V = { v 0 , v 1 , v 2 , v 3 , v 4 , v 5 } V=\{v_0,v_1,v_2,v_3,v_4,v_5\} V={v0,v1,v2,v3,v4,v5} 的无向图,使用Kruskal算法计算最小生成树。

  1. 首先按照权值将所有的边进行排序,按照顺序的集合 E o r d e r = { ( v 0 , v 3 ) , ( v 2 , v 5 ) , ( v 1 , v 4 ) , ( v 2 , v 3 ) , ( v 3 , v 5 ) , ( v 0 , v 2 ) , ( v 1 , v 3 ) , ( v 0 , v 1 ) , ( v 3 , v 4 ) , ( v 4 , v 5 ) } E_{order} =\{(v_0, v_3),(v_2, v_5),(v_1, v_4),(v_2, v_3),(v_3, v_5),(v_0, v_2),(v_1, v_3),(v_0, v_1),(v_3, v_4),(v_4, v_5)\} Eorder={(v0,v3),(v2,v5),(v1,v4),(v2,v3),(v3,v5),(v0,v2),(v1,v3),(v0,v1),(v3,v4),(v4,v5)},将集合中按照权值排序好点按照顺序一次检查是否符合连通条件。
    在这里插入图片描述

  2. 首先检查发现加入顶点 v 0 v_0 v0 v 3 v_3 v3 的边 ( v 0 , v 3 ) (v_0, v_3) (v0,v3) 后不会构成回路,即当前顶点 v 0 v_0 v0 v 3 v_3 v3 不在同一个连通分量中,则可以将顶点 v 0 v_0 v0 v 3 v_3 v3 连起来,即 E n e w = { ( v 0 , v 3 ) } E_{new} =\{(v_0, v_3)\} Enew={(v0,v3)}

  3. 依次检查发现加入顶点 v 2 v_2 v2 v 3 v_3 v3 的边 ( v 2 , v 3 ) (v_2, v_3) (v2,v3) 后不会构成回路,即当前顶点 v 2 v_2 v2 v 3 v_3 v3 不在同一个连通分量中,则可以将顶点 v 2 v_2 v2 v 3 v_3 v3 连起来,即 E n e w = { ( v 0 , v 3 ) , ( v 2 , v 5 ) } E_{new} =\{(v_0, v_3),(v_2, v_5)\} Enew={(v0,v3),(v2,v5)}

  4. 依次检查发现加入顶点 v 1 v_1 v1 v 4 v_4 v4 的边 ( v 1 , v 4 ) (v_1, v_4) (v1,v4) 后不会构成回路,即当前顶点 v 1 v_1 v1 v 4 v_4 v4 不在同一个连通分量中,则可以将顶点 v 1 v_1 v1 v 4 v_4 v4 连起来,即 E n e w = { ( v 0 , v 3 ) , ( v 2 , v 5 ) , ( v 1 , v 4 ) } E_{new} =\{(v_0, v_3),(v_2, v_5),(v_1, v_4)\} Enew={(v0,v3),(v2,v5),(v1,v4)}

  5. 依次检查发现加入顶点 v 2 v_2 v2 v 3 v_3 v3 的边 ( v 2 , v 3 ) (v_2, v_3) (v2,v3) 后不会构成回路,即当前顶点 v 2 v_2 v2 v 3 v_3 v3 不在同一个连通分量中,则可以将顶点 v 2 v_2 v2 v 3 v_3 v3 连起来,即 E n e w = { ( v 0 , v 3 ) , ( v 2 , v 5 ) , ( v 1 , v 4 ) , ( v 2 , v 3 ) } E_{new} =\{(v_0, v_3),(v_2, v_5),(v_1, v_4),(v_2, v_3)\} Enew={(v0,v3),(v2,v5),(v1,v4),(v2,v3)}

  6. 依次检查发现加入顶点 v 3 v_3 v3 v 5 v_5 v5 的边 ( v 3 , v 5 ) (v_3, v_5) (v3,v5) 后会构成回路,即当前顶点 v 3 v_3 v3 v 5 v_5 v5 在同一个连通分量中,则不能将顶点 v 3 v_3 v3 v 5 v_5 v5 连起来;

  7. 依次检查发现加入顶点 v 0 v_0 v0 v 2 v_2 v2 的边 ( v 0 , v 2 ) (v_0, v_2) (v0,v2) 后会构成回路,即当前顶点 v 0 v_0 v0 v 2 v_2 v2 在同一个连通分量中,则不能将顶点 v 0 v_0 v0 v 2 v_2 v2 连起来;

  8. 依次检查发现加入顶点 v 1 v_1 v1 v 3 v_3 v3 的边 ( v 1 , v 3 ) (v_1, v_3) (v1,v3) 后不会构成回路,即当前顶点 v 1 v_1 v1 v 3 v_3 v3 不在同一个连通分量中,则可以将顶点 v 1 v_1 v1 v 3 v_3 v3 连起来,即 E n e w = { ( v 0 , v 3 ) , ( v 2 , v 5 ) , ( v 1 , v 4 ) , ( v 2 , v 3 ) , ( v 1 , v 3 ) } E_{new} =\{(v_0, v_3),(v_2, v_5),(v_1, v_4),(v_2, v_3),(v_1, v_3)\} Enew={(v0,v3),(v2,v5),(v1,v4),(v2,v3),(v1,v3)}

  9. 此时所有顶点均已处于同一个连通分量中,再连上任意一条边都会形成回路,所以最小生成树计算完毕!

四、普里姆(Prim)算法对比克鲁斯克尔(Kruskal)算法

  • 算法思想:
    • 普里姆(Prim)算法:从某⼀个顶点开始构建⽣成树;每次将代价最⼩的新顶点纳⼊⽣成树,直到所有顶点都纳⼊为⽌。
    • 克鲁斯克尔(Kruskal)算法:每次选择⼀条权值最⼩的边,使这条边的两头连通(原本已经连通的就不选)直到所有结点都连通
  • 时间复杂度:
    • 普里姆(Prim)算法: O ( ∣ V ∣ 2 ) O(|V|^2 ) O(V2)
    • 克鲁斯克尔(Kruskal)算法: O ( ∣ E ∣ l o g 2 ∣ E ∣ ) O( |E|log_2 |E| ) O(Elog2E)
  • 适用范围:
    • 普里姆(Prim)算法:适合⽤于边稠密图
    • 克鲁斯克尔(Kruskal)算法:适合⽤于边稀疏图

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

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

相关文章

探索 Jupyter 笔记本转换的无限可能:nbconvert 库的神秘面纱

文章目录 探索 Jupyter 笔记本转换的无限可能:nbconvert 库的神秘面纱背景:为何选择 nbconvert?库简介:nbconvert 是什么?安装指南:如何安装 nbconvert?函数用法:简单函数示例应用场…

MySQL企业常见架构与调优经验分享

文章目录 一、选择 PerconaServer、MariaDB 还是 MYSQL二、常用的 MYSQL 调优策略三、MYSOL 常见的应用架构分享四、MYSOL 经典应用架构 观看学习课程的笔记,分享于此~ 课程:MySQL企业常见架构与调优经验分享 mysql官方优化文档 一、选择 PerconaServer、…

全方面熟悉Maven项目管理工具(二)坐标、pom.xml文件的解读!

1. 坐标(核心概念) 1.1 数学中的坐标 使用 x、y、z 三个向量作为空间的坐标系,可以在空间中唯一的定位到一个点 1.2 Maven 中的坐标 1.2.1 向量说明: 使用三个向量在 Maven的仓库 中唯一的定位到一个 jar 包 groupId&#xf…

【某农业大学计算机网络实验报告】实验四 路由信息协议RIP

实验目的: 1.深入了解RIP协议的特点和配置方法:通过此次实验,掌握RIP协议作为一种动态路由协议的基本工作原理,了解其距离向量算法的核心概念,以及如何在网络设备上配置RIP协议; 2.验证RIP协议…

AndroidStudio实验报告——实验一、二

目录 实验一: AS安装与安卓环境搭建 一、实验目标 二、实验内容 (一)Android Studio安装 (二)JDK安装与配置 (三)Android SDK安装与配置 三、实验结果:(实…

【Java】正则表达式详解

目录 引言 一、基本概念 1.1 元字符 1.2 预定义字符类 1.3 边界匹配符 1.4 数量标识符 1.5 捕获与非捕获分组 二、Java中的正则表达式支持 三、正则表达式的使用示例 3.1 匹配字符串 3.2 替换字符串 3.3 分割字符串 3.4 使用Pattern和Matcher 3.5 捕获组和后向…

局域网——Prim Kruskal

题目 Prim &#xff08;生成一颗包含起点的最小生成树&#xff0c;所以要多次调用&#xff09; #include <bits/stdc.h>using namespace std;const int N 510; const int inf 0x3f3f3f3f;int n, m; int g[N][N], dis[N]; bool p[N], vis[N];int prim (int u) {memset(…

分布式检测线路、精准定位故障:输电线路故障定位监测系统

分布式检测线路、精准定位故障&#xff1a;输电线路故障定位监测系统 随着电力行业的快速发展和电网规模的不断扩大&#xff0c;输电线路作为电力传输的“生命线”&#xff0c;其安全稳定运行对于保障电力供应、促进经济社会发展具有重要意义。然而&#xff0c;输电线路通常暴…

[云] Deploying Your First Serverless Application

• Goal: • Hands-on lab to get started with Serverless • Agenda: • Deploying Your First Serverless Application • Assignment Introduction Create and test function in AWS Lambda • Lets create an addition function using AWS Lambda. • To create the addi…

HCIP-HarmonyOS Application Developer 习题(十六)

&#xff08;判断&#xff09;1、HiLink通过分布式软总线的方式连接所有设备&#xff0c;强能力设备可对弱能力设备进行设备虚拟化&#xff0c;将弱设备当做本机设备直接调用。 答案&#xff1a;错误 分析&#xff1a;HiLink 主要针对的是应用开发者与第三方设备开发者&#xf…

100种算法【Python版】第1篇——贪心策略

贪心是一种策略 1 策略内核1.1 基本思想1.2 策略步骤1.3 贪心算法举例说明1.3.1 活动选择问题1.3.2 01背包问题1.3.3 最优解分析 2 贪心策略的应用2.1 应用&#xff1a;计算单源最短路径2.2 应用&#xff1a;霍夫曼编码字符串 3 策略优缺点3.1 优点3.2 缺点3.3 总结 1 策略内核…

助力语音技术发展,景联文科技提供语音数据采集服务

语音数据采集是语音识别技术、语音合成技术以及其他语音相关应用的重要基础。采集高质量的语音数据有助于提高语音识别的准确性&#xff0c;同时也能够促进语音技术的发展。 景联文科技作为专业的数据采集标注公司&#xff0c;支持语音数据采集。可通过手机、专业麦克风阵列、专…

快速了解Python流程控制语句基本使用

&#x1f600;前言 在编程中&#xff0c;流程控制语句是用于控制程序执行顺序的关键部分。通过条件判断和循环机制&#xff0c;程序能够根据不同的情况选择执行特定的代码块&#xff0c;或重复执行某段代码。本文将详细介绍 Python 中常见的流程控制语句&#xff0c;包括 if、i…

JS事件和DOM

1. DOM 1.1 基本概念 DOM&#xff0c;全称 Document Object Model&#xff0c;即文档对象模型。它是 Web 上最常用的 API 之一&#xff0c;是加载在浏览器中的文档模型&#xff0c;可以将文档表示为节点树&#xff08;或称 DOM 树&#xff09;&#xff0c;其中每个节点代表文…

缓存常见问题:缓存穿透、雪崩、击穿及解决方案分析

1. 什么是缓存穿透&#xff0c;怎么解决&#xff1f; 缓存穿透是指用户请求的数据在缓存中不存在即没有命中&#xff0c;同时在数据库中也不存在&#xff0c;导致用户每次请求该数据都要去数据库中查询一遍。如果有恶意攻击者不断请求系统中不存在的数据&#xff0c;会导致短时…

Java面试场景题(1)---如何使用redis记录上亿用户连续登陆天数

感谢uu们的观看&#xff0c;话不多说开始~ 对于这个问题&#xff0c;我们需要先来了解一下~ 海量数据都可以用bitmap来存储&#xff0c;因为占得内存小&#xff0c;速度也很快 我大概计算了一下~ 完全够&#xff1a;String类型512M 1byte 8个bit位 8个状态 512M1024byt…

计算机组成原理(笔记7高速缓冲存储器Cache,计算机组成原理的重难点全、直接、组相连)

为什么要设立高速缓冲存储器 &#xff08;Cache&#xff09;&#xff1f; Cache是介于CPU和主存之间的小容量存储器&#xff0c;存取速度比主存快。它能高速地向CPU提供指令和数据&#xff0c;加快程序的执行速度。它是为了解决CPU和主存之间速度不匹配而采用的一项重要技术。…

01 一篇读懂25机械考研复试超全流程讲解|考研面试经验和面试真题快来背诵!

复试面试流程及经验汇总篇 千万不要小瞧出成绩前的准备以及最常见面试问题你提前熟记于心&#xff0c;面试再遇到&#xff0c;能够有逻辑有条理的回答出不是空洞的话&#xff0c;给导师的印象分就肯定高。 考研复试面试最全最完整的实用攻略&#xff0c;从出考研初试成绩前到…

《深度学习》模型的部署、web框架 服务端及客户端案例

目录 一、模型的部署 1、模型部署的定义与目的 1&#xff09;定义 2&#xff09;目的 2、模型部署的步骤 1&#xff09;导出模型 2&#xff09; 部署模型 3&#xff09;测试模型 4&#xff09;监控模型 3、模型部署的方式 1&#xff09;云端部署 2&#xff09;嵌入…

RHCE--at,crontab例行性工作

一&#xff1a;安装at &#xff08;1&#xff09;配置yum仓库&#xff1a;以配置网络源举例&#xff1a; 先在/etc/yum.repos.d/ 目录下创建一个以.repo结尾的文件 vim /etc/yum.repos.d/aliyun.repo 写入可以在阿里云镜像站查找appstream和baseos的地址阿里巴巴开源镜像站…