当前位置: 首页 > news >正文

算法导论 总结索引 | 第五部分 第二十一章:用于不相交集合的数据结构

一些应用涉及 将n个不同的元素分成一组不相交的集合。寻找包含给定元素的唯一集合 和 合并两个集合

1、不相交集合的操作

1、一个不相交集合 数据结构 维持了 一个不相交动态集的集合 S = {S_1, S_2,…, S_n}。用一个代表 来标识每个集合,它是这个集合的某个成员。在一些应用中,不关心 哪个成员被用来作为代表,仅仅关心的是 重复两次查询动态集合的代表中,如果 这两次查询 没有修改动态集合,则两次查询 应该得到相同的结果。其他一些应用 可能会需要一个预先说好的规则 来选择代表,比如 选择这个集合中最小的成员

2、用一个对象 表示一个集合的每个元素。设 x 表示一个对象,希望支持以下三个操作:

  1. MAKE-SET(x): 建立 一个新的集合,它的唯一成员 (因而为代表) 是 x。因为各个集合是不相交的,故 x 不会出现在 别的某个集合中
  2. UNION(x, y): 将包含 x 和 y 的两个动态集合 (分别表示为S_x和S_y) 合成一个新的集合,即这两个集合的并集。虽然 UNION 的很多实现中 特别地选择 S_x 或 S_y 的代表作为新的代表,然而结果集的代表 可以是S_x∪S_y 的任何成员。由于 要求各个集合不相交,故要 “消除” 原有的集合 S_x 和 S_y,即 将它们从 S 中删除。实际上,经常把 其中一个集合的元素 并入另一个集合中,来代替删除操作
  3. FIND-SET(x): 返回一个指针,这个指针 指向包含 x 的(唯一)集合的代表

使用两个参数 来分析 不相交集合数据结构的运行时间: 一个参数是 n,表示 MAKES-SET 操作的次数;另一个是m,表示 MAKE-SET、UNION 和 FIND-SET 操作的总次数

每个 UNION 操作减少一个集合,因此,n - 1 次 UNION 操作后,只有一个集合留了下来。也就是说,UNION 操作的次数 至多是 n - 1。由于 MAKE-SET 操作 被包含在总操作次数 m 中,因此有 m ≥ n。假定 n 个 MAKE-SET 操作总是最先执行

1.1 不相交集合数据结构的一个应用

确定无向图的连通分量

下面的 CONNECTED-COMPONENTS 过程使用 不相交集合操作 计算一个图的连通分量。一旦 SAME-COMPONENTS 预处理了该图,过程 SAME-COMPONENT 就回答两个顶点是否在 同一个连通分量的询问(图G的顶点集用 G.V 表示,边集用 G.E 表示)

图21-1(b)展示了 CONNECTED-COMPONENTS 如何计算不相交集合
在这里插入图片描述

CONNECTED-COMPONENTS(G)
1 for each vertex v ∈ G.V
2 	MAKE-SET(v)
3 for each edge (u, v) ∈ G.E
4 	if FIND-SET(u) ≠ FIND-SET(v)
5 		UNION(u, v)SAME-COMPONENT(u,v)
1 if FIND-SET(u) == FIND-SET(v)
2 	return TRUE
3 else return FALSE

处理完所有的边之后,两个顶点在相同的连通分量 当且仅当 与之对应的对象在相同的集合中
一个表示顶点的对象会包含一个指向与之对应的不相交集合对象的指针

在这里插入图片描述

2、不相交集合的链表表示

实现 不相交集合数据结构 的简单方法:每个集合 用一个自己的链表来表示。每个集合的对象 包含 head 属性和 tail 属性;head 属性 指向链表的第一个对象,tail 属性 指向链表的最后一个对象。链表中的每个对象 都包含一个集合成员,一个指向链表中 下一个对象的指针 和 一个指回到集合对象的指针。在每个链表中,对象可以 以任意的次序出现。代表是 链表中第一个对象的集合成员

MAKE-SET 操作 和 FIND-SET 操作 是非常方便的,只需 O(1) 的时间

要执行 MAKE-SET(x) 操作,需要创建一个 只有 x 对象的新链表。对于 FIND-SET(x),仅沿着指针 x 对象的返回指针 返回到集合对象,然后返回 head 指向对象的成员
在这里插入图片描述

2.1 合并的一个简单实现

UNION 操作 通过把 y 所在的链表 拼接到 x 所在的链表 实现了 UNION (x, y)。x 所在的链表的代表 成为结果集的代表。利用 x 所在链表的 tail 指针,可以迅速地找到 拼接 y 所在的链表的位置

对于 y 所在链表的每个对象,必须更新 指向集合对象的指针,这将花费的时间 与 y 所在链表长度 呈线性关系

构建一个在 n 个对象上需要 Θ(n2) 时间的 m 个操作序列。假设 有对象 x1, x2, …, xm,执行 n 个 MAKE-SET 操作,后面跟着 n-1 个 UNION 操作。因而有 m = 2n - 1。执行 n 个 MAKE-SET 操作 需要 Θ(n) 时间。由于第 i 个 UNION 操作更新 i 个对象(参数中 右侧 插在 左侧的集合后面)
在这里插入图片描述

因此所有的 n-1 个 UNION 操作更新的对象的总数为:
在这里插入图片描述
总的操作数为 2n-1,这样每个操作 平均需要 Θ(n) 的时间。也就是说,一个操作的摊还时间为 Θ(n)

2.2 一种加权合并的启发式策略

1、在最坏情况下,上面给出的 UNION 过程的每次调用 平均需要 Θ(n) 的时间,这是因为 需要把一个较长的表 接到 一个较短的表上,此时 必须对较长表的每个成员 更新其指向集合对象的指针

加权合并启发式策略:假使 表中包含了 表的长度(易于维护)以及 拼接次序 可以任意的话,总是 把较短的链表 拼接到较长的表中

2、使用不相交集合的链表表示 加权合并启发式策略,一个具有 m 个 MAKE-SET, UNION 和 FIND-SET 操作的序列(其中有 n 个是 MAKE-SET 操作)需要的时间为 O(m + nlg n)

证明:由于每个UNION操作 合并两个不相交集,因此总共至多执行 n-1 个UNION操作。现在来确定 由这些 UNION 操作所花费时间的上界。首先 确定每个对象指向它的集合对象的指针 被更新次数的上界。每次 x 的指针被更新,x 一定先在一个规模较小的集合中。因此,第一次 x 的指针被更新时,结果集 一定至少有 2 个成员,类似地,下次 x 的指针 被更新时 结果集至少有4个成员。一直继续下去,注意到 对于任意的 k ≤ n,在 x 的指针被更新 ⌈lg k⌉ 次后,结果集 一定至少有 k 个成员。因为 最大集合 至多包含 n 个成员,所以 每个对象的指针在所有的 UNION 操作中最多被更新 ⌈lg n⌉ 次。当然,也必须考虑 tail 指针 和 表长度的更新,而它们在每个 UNION 操作中只花费 Θ(1) 时间。所以 总共花在 UNION 操作上的时间为 O(nlg n)

每个 MAKE-SET 和 FIND-SET 操作需要 O(1) 时间,它们的总数为 O(m)。所以整个序列的总时间是 O(m+nlg n)

3、使用链表表示 和 加权合并启发式策略,写出 MAKE-SET、FIND-SET 和 UNION 操作的伪代码,并指定 在集合对象和表对象中所使用的属性

MAKE-SET(x)
// Assume x is a pointer to a node contains .key .set .nextCreate a node S contains .head .tail .sizex.set = Sx.next = NILS.head = xS.tail = xS.size = 1return S
FIND-SET(x)return x.set.head
UNION(x, y)S1 = x.setS2 = y.setif S1.size >= S2.sizeS1.tail.next = S2.headz = S2.headwhile z != NIL // 把S2中所有元素都改成S1的z.set = S1z = z.nextS1.tail = S2.tailS1.size = S1.size + S2.size // Update the size of setreturn S1elsesame procedure as abovechange x to ychange S1 to S2

在这里插入图片描述

3、不相交集合森林

在一个 不相交集合 更快的实现中,使用有根树 来表示集合,树中的每个节点 包含一个成员,每棵树 代表一个集合。在一个 不相交集合森林中(如图所示),每个成员仅指向它的父结点,每棵树的根节点 包含集合的代表。每个树中的每个成员都是它所在集合的成员,同时其根节点表示该集合的代表,并且是指向代表的根节点。我们可以在树根节点中做任何操作来执行FIND-SET,虽然树根节点可能处于集合森林的不同位置,但是结果总是同样的成员代表。随着进一步的优化和策略“按秩合并”(union by rank),我们能得到一个渐近更优的不相交集合数据结构

MAKE-SET 操作 简单地创建一棵 只有一个结点的树,FIND-SET 操作 通过沿着指向父结点的指针 找到树的根。这一通向 根结点的简单路径上所访问的结点 构成了 查找路径。UNION 操作 使得一棵树的根 指向另外一棵树的根
在这里插入图片描述

3.1 改进运行时间的启发式策略

第一种启发式策略是 按秩合并,它类似于 链表表示中 使用的 加权合并启发式策略。使具有较少节点的树的根 指向具有较多的树的根。不显式地记录 每个结点为根的子树的大小,而是采用 一种易于分析的方法。对于每个结点,维护一个秩,该秩表示 该结点高度的一上界。使用按秩合并策略的 UNION 操作中,可以让 具有较小秩的根指向具有较大秩的根

第二种启发式策略是 路径压缩,在 FIND-SET 操作中,使用这种策略 可以使查找路径中的每个结点 直接指向根。路径压缩 并不改变任何结点的秩

注意三角形是一棵树,而不是 结点
在这里插入图片描述

3.2 实现不相交集合森林的伪代码

为了使用 按秩合并的启发式策略 实现一个不相交集合森林,必须记录下 的变化情况。对于每个结点 x,维护一个整数值 x.rank,它代表 x 的高度 (从 x 到某一后代叶结点的 最长简单路径上 边的数量) 的一个上界。当 MAKE-SET 创建 一个单元素集合时,这个树上的单结点 有一个为0的初始秩。每一个 FIND-SET 操作 不改变任何秩

UNION 操作有 两种情况,取决于 两棵树的根是否有相同的秩。如果 根没有相同的秩,就 让较大秩的根 成为较小秩的根的父结点(因为 FIND-SET 复杂度是高度),但秩本身保持不变。另一种情况是 两个根有相同的秩时,任意选择两个根中的一个 作为父结点,并使它的秩加1

用 x.p 代表结点 x 的父结点

MAKESET(x)
1	x.p = x
2	x.rank = 0UNION(x, y)
1   LINK(FIND-SET(x), FIND-SET(y))LINK(x, y)
1   if x.rank > y.rank
2      y.p = x
3   else x.p = y
4      if x.rank == y.rank
5         y.rank = y.rank + 1

带有路径压缩的 FIND-SET 过程

FIND-SET(x)
1   if x != x.p
2      x.p = FIND-SET(x.p) // 使 x 到根路径上的所有结点的父结点 为根结点
3   return x.p

FIND-SET 过程是一种两趟方法:当它递归时,第一趟 沿着查找路径向上 直到找到根,当递归回溯时,第二趟沿着搜索树向下 更新到 结点 x 路径中的每个结点,使其直接指向根。FIND-SET(x) 的每次调用 在第3行返回 x.p

如果 x 是根,那么 FIND-SET 跳过第2行并返回 x.p,也就是x,这是递归到原点的情形。否则,第2行执行,并且参数为 x.p 的递归调用 返回一个指向根的指针。第2行 更新结点 x 并让其直接指向根结点,然后第3行 返回这个指针

3.3 启发式策略对运行时间的影响

单独使用按秩合并 或 路径压缩,每个都能改善 不相交集合森林上 操作的运行时间,而两者结合在一起 效果更好。单独来看,路径压缩产生的运行时间上限为 O(m lg n),并且这是个界是紧确的

对于一个具有 n 个 MAKE-SET 操作(因此最多有 n-1 个UNION操作)和 f 个 FIND-SET 操作的操作序列,单独使用 路径压缩启发式策略的 最坏情况下的 运行时间为 Θ(n+ f*(1 + log(2+f/n)n))

当同时使用 按秩合并与路径压缩时,最坏情况下的运行时间为 O(mα(n)),这里 α(n) 是一个增长非常慢的函数,在任何一个 可以想到的 不相交集合数据结构的应用中,α(n) 都 ≤ 4

21.3-1 用按秩合并 与 路径压缩启发式策略 的不相交集合森林 完成

1 for i = 1 to 16
2 	MAKE-SET(x_i)
3 for i = 1 to 15 by 2
4 	UNION(x_i, x_{i+1})
5 for i = 1 to 13 by 4
6 	UNION(x_i, x_{i+2})
7 UNION(x_1, x_5)
8 UNION(x_9, x_13)
9 UNION(x_1, x_9)

假定如果集合x_i 和x_j 的集合有相同的大小,则 UNION(x_i, x_j) 表示将x_j 所在的表链接到x_i 所在的表后
在这里插入图片描述
21.3-2 将递归版本的 FIND-SET(带路径压缩)改为非递归版本。

为了实现非递归的 FIND-SET,假设我们在元素 x 上调用该函数。创建一个链表 A,其中包含指向 x 的指针。每次我们 向树的上层移动一个元素时,将指向该元素的指针 插入链表 A 中。一旦找到根节点 r,使用该链表找到从根节点到 x 的路径上的每个节点,并将这些节点的父节点更新为 r

21.3-3 给出一个包含n个 MAKE-SET、UNION 和 FIND-SET 操作的序列(其中有 n 个是 MAKE-SET 操作),当仅使用按秩合并时,需要 Ω(m lg n) 的时间
在这里插入图片描述
在这里插入图片描述

相关文章:

算法导论 总结索引 | 第五部分 第二十一章:用于不相交集合的数据结构

一些应用涉及 将n个不同的元素分成一组不相交的集合。寻找包含给定元素的唯一集合 和 合并两个集合 1、不相交集合的操作 1、一个不相交集合 数据结构 维持了 一个不相交动态集的集合 S {S_1, S_2,…, S_n}。用一个代表 来标识每个集合,它是这个集合的某个成员。…...

【单例设计模式】揭秘单例模式:从原理到实战的全方位解析(开发者必读)

文章目录 深入理解单例设计模式:原理、实现与最佳实践引言第一部分:设计模式简介第二部分:单例模式定义第三部分:单例模式的优点和缺点第四部分:单例模式的实现方式懒汉式非线程安全的实现线程安全的实现(双…...

VTK8.2.0编译(Qt 5.14.2+VS2017)

VTK8.2.0编译(Qt 5.14.2VS2017) 关于Qt和MSVC的安装,可以参考文章(QtMSVC2017)。 本篇VTK在QtMSVC的配置下的编译。VTK 以8.2.0为例。 一、环境变量的配置 我们打开电脑的环境变量,可以看到没有Qt相关的…...

武汉流星汇聚:亚马逊跨境电商龙头,市场份额稳固,服务品质卓越

在全球跨境电商的版图上,亚马逊无疑是一颗璀璨的明星,以其庞大的市场规模、卓越的用户体验和强大的品牌影响力,稳居行业龙头地位。即便在诸多新兴跨境平台竞相崛起的背景下,亚马逊依然以其独特的优势,保持着难以撼动的…...

我出一道面试题,看看你能拿 3k 还是 30k!

大家好,我是程序员鱼皮。欢迎屏幕前的各位来到今天的模拟面试现场,接下来我会出一道经典的后端面试题,你只需要进行 4 个简单的选择,就能判断出来你的水平是新手(3k)、初级(10k)、中…...

opecv c++计算图像的曲率

公式 κ z x x ⋅ z y 2 − 2 ⋅ z x ⋅ z y ⋅ z x y z y y ⋅ z x 2 ( z x 2 z y 2 1 ) 3 / 2 \kappa \frac{z_{xx} \cdot z_y^2 - 2 \cdot z_x \cdot z_y \cdot z_{xy} z_{yy} \cdot z_x^2}{(z_x^2 z_y^2 1)^{3/2}}\newline κ(zx2​zy2​1)3/2zxx​⋅zy2​−2⋅zx​…...

鸿蒙 IM 即时通讯开发实践,融云 IM HarmonyOS NEXT 版

融云完成针对“纯血鸿蒙”操作系统的 SDK 研发,HarmonyOS NEXT 版融云 IM SDK 已上线,开发者可在“鸿蒙生态伙伴 SDK 市场”查询使用。 发挥 20 年通信行业技术积累和领创品牌效应,融云为社交、娱乐、游戏、电商、出行、医疗等各行业提供专业…...

【全国大学生电子设计竞赛】2022年D题

🥰🥰全国大学生电子设计大赛学习资料专栏已开启,限时免费,速速收藏~...

【优秀python案例】基于python爬虫的深圳房价数据分析与可视化实现

现如今,房价问题一直处于风口浪尖,房价的上涨抑或下跌都牵动着整个社会的利益,即便是政府出台各种政策方针也只能是暂时抑制楼市的涨势,对于需要买房的人来说,除了关注这些变化和政策外,还有一个非常头疼的…...

vscode安装与配置本地c/c++编译调试环境

目录 (1)安装vscode和常用插件 1.下载安装vscode 2.安装常用插件 (2)本地安装和配置编译器 1.安装编译器 2.vscode配置编译器 第1种:全局配置 第2种:为当前项目个性化配置 (3&#xff…...

PCIe学习笔记(15)

设备就绪状态 (Device Readiness Status,DRS)消息 (Device Readiness Status (DRS) 是PCIe规范中引入的一种机制,旨在改进设备初始化和就绪状态的检测与报告。 在以往的PCIe版本中,系统通常依赖于固定的超时机制来判断设备是否已…...

Rust中的特殊类型所占的内存大小

可以使用std::mem:size_of获取类型大小&#xff1a; use std::mem::size_of;struct Journal(String, u32); trait Summary {} impl Summary for Journal {}fn main() {println!("普通结构体相关&#xff1a;");println!("{}", size_of::<&Journal&…...

【深度学习】变分自编码器 VAE,什么是变分?(1)

文章目录 1. 变分自编码器 VAEVAE的基本概念VAE的数学原理编码器解码器目标函数训练过程代码示例未来发展2. 变分推断变分推断(Variational Inference)变分推断的基本概念变分推断的目标变分下界(Evidence Lower Bound, ELBO)最大化变分下界变分推断的步骤3. 必读内容1. 变…...

宏编程:C++宏、Rust宏和Lisp宏比较

根据simondobson两篇文章&#xff08;1、2&#xff09;&#xff0c;总结比较一下C宏 Rust宏和Lisp宏&#xff1a; Rust 宏&#xff1a;Rust 有两种类型的宏&#xff1a; 声明性宏&#xff1a;这些模式匹配参数来生成代码。 过程宏&#xff1a;这些宏执行从代码到代码的更一般…...

ChatGPT协助撰写研究论文的11种方法【全集】

学境思源&#xff0c;一键生成论文初稿&#xff1a; AcademicIdeas - 学境思源AI论文写作 当我们使用 ChatGPT 时&#xff0c;原本那些需要花费数小时、数天、有时甚至更长时间的任务现在只需几分钟甚至更短时间。 今天的分享&#xff0c;我们将谈谈 ChatGPT 在研究论文方面可…...

PEP 8 – Python 代码风格指南中文版(四)

何时使用尾随逗号 尾随逗号通常是可选的&#xff0c;但在创建一个只有一个元素的元组时是必须的。为了清晰起见&#xff0c;建议使用&#xff08;技术上多余的&#xff09;括号将其包围起来&#xff1a; # 正确的: FILES (setup.cfg,)# 错误的: FILES setup.cfg, 当尾随逗号…...

基于深度学习的适应硬件的神经网络

基于深度学习的适应硬件的神经网络设计旨在最大限度地利用特定硬件平台的计算和存储能力&#xff0c;提高模型的执行效率和性能。这些硬件包括图形处理单元&#xff08;GPU&#xff09;、张量处理单元&#xff08;TPU&#xff09;、现场可编程门阵列&#xff08;FPGA&#xff0…...

上传音频文件

思路 1、自定义Upload 重点&#xff1a;<input ref{inputRef} type"file" accept{accept} onClick{e > e.stopPropagation()} onChange{uploadFile} multiple{multiple}/> 使用input标签设置type是file&#xff0c;将input元素通过forwardRef暴露给父组件&…...

Linux之jdk离线安装

下载地址 一、linux安装jdk8 1、上传&#xff0c;解压 cd /usr/local/java tar -zxvf jdk-10.0.2_linux-x64_bin.tar.gz2、修改配置 vim /etc/profile #在/etc/profile文件后面加上如下配置 export JAVA_HOME/usr/local/java/jdk-10.0.2 export JRE_HOME/usr/local/java/jd…...

JVM结构、架构与生命周期总结

【1】JVM结构 不同厂商的JVM产品 &#xff1a; 厂商JVMOracle-SUNHotspotOracleJRocketIBMJ9 JVM阿里Taobao JVM HotSpot VM是目前市面上高性能虚拟机的代表作之一。它采用解释器与即时编译器并存的架构。 在今天&#xff0c;Java程序的运行性能早已脱胎换骨&#xff0c;已…...

Flink-StarRocks详解:第四部分StarRocks分区管理,数据压缩(第54天)

文章目录 前言2.3.3 管理分区2.3.3.1 增加分区2.3.3.2 删除分区2.3.3.3 恢复分区2.3.3.4 查看分区 2.3.4 设置分桶2.3.4.1 随机分桶&#xff08;自 v3.1&#xff09;2.3.4.2 哈希分桶2.3.4.2.1 优点2.3.4.2.2 如何选择分桶键2.3.4.2.3 注意事项 2.3.4.3 确定分桶数量 2.3.5 最佳…...

为什么有时候银行贷款审核会查大数据信用?

在申请银行贷款时&#xff0c;不少人会疑惑为何银行会深入审查申请人的大数据信用信息。这背后&#xff0c;其实是银行风险控制与精准决策的体现。 首先&#xff0c;大数据信用信用能全面反映申请人的信用状况 它不仅仅局限于传统的征信报告&#xff0c;还涵盖了消费行为、社交…...

LoRa无线通讯,让光伏机器人实现无“线”管理

光伏清洁机器人&#xff0c;作为光伏电站运维的新兴关键设备&#xff0c;已跃升为继组件、支架、光伏逆变器之后的第四大核心组件&#xff0c;正逐步成为光伏电站的标准配置。鉴于光伏电站普遍坐落于偏远无人区或地形复杂之地&#xff0c;光伏清洁机器人必须具备远程操控能力、…...

买流量卡要注意什么,这些冷知识你一定要懂!

买流量卡要注意什么&#xff1f;别总盯着价格看&#xff0c;还有一些隐形的冷知识得了解一下&#xff0c;今天这篇文章就是要告诉你一些流量卡中隐藏的冷知识。 ​一、首先&#xff0c;那些月租9元、19元的流量卡&#xff0c;大概率都是短期卡&#xff0c;虽然他们的资费便宜&a…...

【嵌入式】STM3212864点阵屏使用SimpleGUI单色屏接口库——(2)精简字库

一 开源库简介与移植 最近一个项目需要用12864屏幕呈现一组较为复杂的菜单界面&#xff0c;本着不重复造轮子的原则找到了SimpleGUI开源库。 开源地址&#xff1a;SimpleGUI: 一个面向单色显示屏的开源GUI接口库。 SimpleGUI是一款针对单色显示屏设计的接口库。相比于传统的GUI…...

《计算机网络》(第8版)第1章 概述 复习笔记

第 1 章 概述 一、计算机网络在信息时代中的作用 计算机网络的两个重要功能&#xff1a; 1 &#xff0e;连通性 指互联网上的用户之间是相互连通的。 2 &#xff0e;共享&#xff08;资源共享&#xff09; 资源共享可以是信息共享、软件共享&#xff0c;也可以是硬件共享。此…...

银行数据质量保障体系建设实践

引言 在数字化转型浪潮中&#xff0c;数据中台成为企业实现数据驱动决策的关键支撑。它不仅整合了企业内外部的数据资源&#xff0c;还通过数据共享与复用&#xff0c;提升了运营效率和业务创新能力。然而&#xff0c;随着数据量的激增和数据来源的多样化&#xff0c;如何确保…...

笔记小结:《利用Python进行数据分析》二进制数据格式存储与web交互

提示&#xff1a;此节内容仅作了解即可 目录 二进制数据格式 使用HDF5 读取Microsoft Excel文件 二进制数据格式 实现数据的高效二进制格式存储最简单的办法之一是使用Python内置的pickle序列化。 Python 的 pickle 模块是一个用于序列化和反序列化 Python 对象结构的模块…...

电脑桌面图标变白了?3个方法20秒钟轻松解

电脑桌面图标变白了&#xff1f;3个方法20秒钟轻松解 ⚠️电脑桌面图标变白了&#xff0c;3种方法轻松解决 &#x1f6b8;方法一和方法二属于治标不治本的解决方法&#xff0c;但操作较为简单&#xff0c;在不同情况下有不成功的可能&#xff0c;方法三相对复杂一些&#xff0c…...

数据治理,管什么?

元数据&#xff08;Metadata&#xff09;&#xff1a;通俗地说就是描述数据的数据&#xff0c;比如数据的名称、属性、分类、字段信息、大小、标签等等。要做好数据的管理&#xff0c;元数据起到了举足轻重的作用。 参考数据&#xff08;Reference Data&#xff09;&#xff1…...

手机网页游戏排行榜2021前十名/杭州优化公司多少钱

参加过校招的同学,应该对外包有一定的了解了。基本上我们听过的企业都有外包岗,很多同学也在校招的过程中拿到过外包offer。 现在很多大型公司为了节省成本,将一些偏重劳动量,而非技术量的工作,都选择外包给第三方公司来做,这就导致了现在外包公司发展越来越兴。如果接到…...

淄博网站建设电话/找客户资源的网站

准备材料&#xff1a;一台装有Ubuntu系统的电脑&#xff0c;联网的路由器&#xff0c;网线&#xff08;这里用了两根&#xff09;&#xff0c;一根普通安卓手机充电线 我的电脑系统是Ubuntu16.04&#xff0c;尝试了在Ubuntu18.01上面运行下面的命令&#xff0c;不能运行&#x…...

沂水网站设计/深圳小程序建设公司

文本缩略问题 有的要求是单行文本末尾有省略符号有的要求是多行文本有省略符号有的要求是单行文本中间有省略符号有的要求是多行文本可展开伸缩的末尾省略符号下面代码在react下可直接使用(class -> className) 单行省略末尾 css{/* 单行省略末尾 css */} <p classNam…...

英文二手汽车网站建设/潍坊网站建设咨询

织梦500内部服务器错误一般是iis环境的小伙伴才会遇到&#xff0c;织梦的500错误一般是因为这2个原因引起的 第一个500错误原因&#xff1a;你网站织梦程序版本太低而你主机PHP版本过高 1、先查看你网站程序是织梦什么版本的 打开 /data/admin/ver.txt 文件查看&#xff0c;例…...

如何为wordpress添加音乐播放器/大连网络推广

上周听了tt大神作分享&#xff0c;获益良多。之前一直不知道Windows的域是怎么回事&#xff0c;有点被点拨开悟了一些。趁现在还有记忆&#xff0c;把当时的记录回忆一下。活动目录&#xff0c;即Active Directory&#xff0c;是Windows服务器环境的一个核心服务&#xff0c;对…...

织梦 网站版权信息/网络推广员为什么做不长

使用Python和支持向量回归在本文中&#xff0c;我将向您展示如何使用称为支持向量回归&#xff08;SVR&#xff09;的机器学习算法创建自己的股票预测Python程序。在这个程序中&#xff0c;我将使用Facebook&#xff08;FB&#xff09;股票数据&#xff0c;并根据数据预测某天的…...