机器学习5

1.1 决策树的定义

  • 决策树是用于分类和回归的机器学习算法。它通过一系列的“是或否”的决策来分类数据。每个决策是基于数据的某个属性进行的,如“色泽是青绿吗?”。
  • 决策树的核心是通过树状结构,将一个复杂的问题逐步拆解为多个简单的二元问题,最终通过一系列决策得出结果。

示例:假设我们要判断一个水果是否是苹果。可能的决策过程包括:

  • 颜色是红色吗?如果是,继续判断;
  • 形状是圆的吗?如果是,继续判断;
  • 它的味道是甜的吗?如果都是,那么我们可以说它是苹果。

1.2 决策树的基本元素

  • 根节点:根节点是决策树的起点,它包含了所有数据。在决策树中,所有的分类判断从根节点开始。
  • 内部节点:每个内部节点代表对某个属性的判断。例如,“颜色是否为红色”可以是一个内部节点。
  • 叶节点:叶节点代表最终的分类结果。例如,经过一系列判断后,叶节点会告诉我们“是苹果”或“不是苹果”。

示例

       颜色
      /    \
  红色    其他
   /         \
 形状       不是苹果
 /   \
圆     其他
  |
味道
  |
甜 -> 苹果

在这个例子中,我们通过颜色、形状和味道的逐步判断,最终得出是否是苹果的结论。

1.3 决策树的生成步骤

决策树生成过程基于“分而治之”的策略,通过不断地划分数据集,逐步建立决策规则。

  1. 输入:给定一个训练数据集 (D = {(X_1, Y_1), (X_2, Y_2), \dots, (X_m, Y_m)}) 和属性集 (A = {a_1, a_2, \dots, a_n})。

    • 训练数据集包含特征和标签,如 (X_1) 是样本的属性,(Y_1) 是它的分类结果。
    • 属性集是可用来划分样本的特征,比如色泽、根蒂等。
  2. 生成节点:从根节点开始,递归创建决策树。如果节点包含的样本都属于同一类别(如都是“好瓜”),那么将该节点标记为叶节点,并终止进一步划分。

  3. 选择划分属性:当节点中的样本不属于同一类别时,需要选择一个最优的属性来划分样本。例如,如果属性“色泽”对样本的分类效果最好,选择它来划分数据。

  4. 递归生成子节点:对于每个子节点,重复步骤2和3,直到所有节点都成为叶节点或无法继续划分为止。

1.4 决策树递归返回的三种情形

  1. 样本同类:如果当前节点中所有样本属于同一类(如全部是好瓜),则该节点直接标记为叶节点,无需继续划分。
  2. 属性无法再划分:如果样本在当前所有属性上的取值相同,则无法继续划分。这种情况下,将该节点标记为样本数最多的类。
  3. 样本集为空:如果某个节点没有样本,则标记为其父节点样本数最多的类别。

示例:假设我们在划分过程中遇到一个节点,包含的所有样本都是“好瓜”,那么这个节点会被标记为“好瓜”,不再进行进一步划分。

递归过程:决策树的生成是一个递归的过程,树会不断地被细化,直到所有节点都无法再进行划分。每次划分时都选择当前最优的属性来进行,这保证了决策树能够尽量准确地分类数据。

1.5 总结与示例

为了更好地理解决策树的流程,我们可以看以下的例子:

  • 问题:判断一个水果是否是苹果。

  • 属性

    1. 颜色:红色、绿色、黄色;
    2. 形状:圆形、椭圆形;
    3. 味道:甜、酸。

    决策过程如下:

       颜色
      /    \
  红色    其他
   /         \
 形状       不是苹果
 /   \
圆     其他
  |
味道
  |
甜 -> 苹果

在这个决策树中,首先判断颜色,如果是红色则继续判断形状;如果形状是圆的,再判断味道;最终,如果味道是甜的,可以判断为苹果。


2. 划分选择

2.1 信息增益

首先,信息增益的目标是通过某个属性对数据集进行划分,使得划分后的数据集更加“纯净”,即每个子集尽可能只包含同一类别的样本。

我们首先来看 信息熵 的定义:
[
Ent(D) = - \sum_{k=1}^{|Y|} p_k \log_2 p_k
]
这个公式的每一个符号解释如下:

  • (Ent(D)):表示数据集 (D) 的 信息熵,是衡量数据集纯度的一个指标。
  • (\sum_{k=1}^{|Y|}):这是一个求和符号,表示对 (k) 从 1 到 (|Y|) 进行求和。 (|Y|) 表示数据集中类别的数量。例如,西瓜数据集中有两类(好瓜和坏瓜),所以 (|Y| = 2)。
  • (p_k):这是数据集中第 (k) 类样本的比例。例如,如果在数据集中好瓜占 60%,坏瓜占 40%,那么 (p_1 = 0.6),(p_2 = 0.4)。
  • (\log_2 p_k):这是 (p_k) 在以 2 为底的对数,表示第 (k) 类的熵值。

公式含义:信息熵是通过计算各个类别在数据集中的占比 (p_k),然后将这些占比进行加权求和,用来衡量整个数据集的不确定性。熵值越大,表示数据集越混乱,类别分布越分散;熵值越小,表示数据集越纯净,样本集中在某一类别。

示例:假设在一个西瓜数据集中,有 60% 是好瓜,40% 是坏瓜,则信息熵计算如下:
[
Ent(D) = -(0.6 \log_2 0.6 + 0.4 \log_2 0.4) \approx 0.971
]
这个值表示当前数据集中的不确定性程度。

信息增益 的公式为:
[
Gain(D, A) = Ent(D) - \sum_{v \in Values(A)} \frac{|D_v|}{|D|} Ent(D_v)
]
每个符号的解释如下:

  • (Gain(D, A)):表示使用属性 (A) 对数据集 (D) 进行划分后,所获得的 信息增益。信息增益是指划分后数据集的熵值减少量。
  • (Ent(D)):表示划分之前整个数据集 (D) 的信息熵。
  • (\sum_{v \in Values(A)}):表示对属性 (A) 的每个可能取值 (v) 进行求和。 (Values(A)) 表示属性 (A) 的所有可能取值,例如“色泽”属性可能有“青绿”、“乌黑”、“浅白”等取值。
  • (\frac{|D_v|}{|D|}):表示子集 (D_v) 的样本数占总样本数 (D) 的比例。即在划分后,每个子集的大小对总信息增益的贡献权重。
  • (Ent(D_v)):表示子集 (D_v) 的信息熵。划分后,每个子集中的样本越“纯净”,这个值就越小。

公式含义:信息增益是衡量使用某个属性 (A) 对数据集 (D) 进行划分时,数据集的纯度提升了多少。信息增益越大,说明使用该属性进行划分能够更有效地减少数据集的不确定性,从而使得子集更加纯净。

示例:如果我们使用“色泽”作为划分属性,将数据集 (D) 分为三个子集 (D_1)(青绿),(D_2)(乌黑),和 (D_3)(浅白)。分别计算每个子集的信息熵和它们在总数据集中的比例,然后计算出信息增益。

2.2 增益率

增益率用于避免信息增益对可取值较多的属性(如编号)产生偏好。它的公式为:
[
Gain_ratio(D, A) = \frac{Gain(D, A)}{IV(A)}
]
其中:

  • (Gain(D, A)):表示属性 (A) 的信息增益。
  • (IV(A)):表示属性 (A) 的 固有值,用于调整信息增益的偏好。

固有值 的计算公式为:
[
IV(A) = - \sum_{v \in Values(A)} \frac{|D_v|}{|D|} \log_2 \frac{|D_v|}{|D|}
]
每个符号的解释如下:

  • (\sum_{v \in Values(A)}):对属性 (A) 的每个取值 (v) 进行求和。
  • (\frac{|D_v|}{|D|}):子集 (D_v) 的样本占总样本数的比例。
  • (\log_2 \frac{|D_v|}{|D|}):子集占比的对数。

公式含义:固有值衡量的是属性 (A) 的取值的分布情况。如果一个属性的取值越多,固有值 (IV(A)) 就会越大。这是为了减少信息增益对取值较多属性的偏好。

示例:例如,编号属性虽然对每个样本的分类都能得到高的信息增益,但它并没有实际意义。增益率通过使用固有值来调整这种偏好,使得划分更加合理。

2.3 基尼指数

基尼指数 是另一种衡量数据集纯度的指标,常用于 CART 决策树。它的公式为:
[
Gini(D) = 1 - \sum_{k=1}^{|Y|} p_k^2
]
每个符号的解释如下:

  • (Gini(D)):表示数据集 (D) 的基尼指数。
  • (\sum_{k=1}^{|Y|}):对类别 (k) 从 1 到 (|Y|) 进行求和,(|Y|) 是类别的总数。
  • (p_k):表示第 (k) 类样本的比例。

公式含义:基尼指数衡量的是从数据集中随机抽取两个样本,它们属于不同类别的概率。基尼指数越小,表示数据集的纯度越高。

示例:假设一个数据集有60%的好瓜和40%的坏瓜,那么基尼指数为:
[
Gini(D) = 1 - (0.6^2 + 0.4^2) = 0.48
]
这个值表示数据集中样本的混合程度。

通过这些公式,我们可以根据数据的特征选择最优属性来划分决策树,从而提高模型的分类效果。


3. 剪枝处理

剪枝是决策树学习中的一个重要步骤,用来防止过拟合。过拟合是指模型对训练数据过度拟合,导致对新数据的泛化能力下降。剪枝可以减少模型的复杂度,从而提高模型的泛化能力。

剪枝策略通常分为两种:

  • 预剪枝:在生成决策树的过程中,提前停止分裂,避免生成过多分支。
  • 后剪枝:先生成一棵完整的决策树,然后从叶节点开始向上回溯,去掉一些分支。
3.1 预剪枝
  • 预剪枝在每次划分前,通过评估划分是否能提高模型的泛化性能,决定是否进行划分。
  • 如果划分不能带来显著的性能提升,算法会停止划分,并将当前节点标记为叶节点。

示例:假设我们正在生成一棵决策树,当前节点的样本集已经通过某个属性划分,但继续划分带来的性能提升很小,甚至可能对新数据的预测准确率下降。在这种情况下,预剪枝策略会停止继续划分,将当前节点标记为叶节点。

3.2 后剪枝
  • 后剪枝是在生成一棵完整的决策树之后,通过逐步删除一些分支来减少过拟合。
  • 后剪枝的基本步骤是:从树的叶节点开始向上回溯,逐一评估是否可以将当前节点的子树替换为一个叶节点。如果替换能提高泛化性能,则进行剪枝。

示例:假设我们有一棵完整的决策树,其中某个分支只对训练数据有作用,但对新数据预测时效果很差。在这种情况下,后剪枝策略会删除这个分支,将其父节点直接标记为叶节点。

总结:剪枝的目的在于减少决策树的复杂度,避免过拟合,从而提高模型的泛化能力。预剪枝和后剪枝各有优缺点,前者可以减少生成树的时间,但可能错过某些有效的划分;后者能够保留更多的信息,但需要更多的计算资源。


4. 连续与缺失值

在现实中的数据集里,很多属性是 连续值,例如一个水果的密度或含糖量。此外,数据集中还可能存在 缺失值,例如某些样本在某个属性上没有取值。决策树算法需要处理这些情况,以确保模型的可靠性。

4.1 连续值处理

对于离散属性,决策树可以直接根据取值划分数据集,但连续属性的取值范围很大,不能简单地枚举所有可能值。因此,决策树通过 二分法 来处理连续属性。

公式:在划分数据集时,决策树选择一个划分点 (t),将数据集分为两部分:
[
Gain(D, A, t) = Ent(D) - \left( \frac{|D_{\leq t}|}{|D|} Ent(D_{\leq t}) + \frac{|D_{> t}|}{|D|} Ent(D_{> t}) \right)
]
解释如下:

  • (Gain(D, A, t)):表示在划分点 (t) 下,使用属性 (A) 进行划分所获得的信息增益。
  • (Ent(D)):划分前数据集 (D) 的信息熵。
  • (\frac{|D_{\leq t}|}{|D|}):表示取值不大于 (t) 的样本在整个数据集中的比例。
  • (Ent(D_{\leq t})):表示取值不大于 (t) 的样本子集的信息熵。
  • (\frac{|D_{> t}|}{|D|}):表示取值大于 (t) 的样本在整个数据集中的比例。
  • (Ent(D_{> t})):表示取值大于 (t) 的样本子集的信息熵。

公式含义:通过选取不同的划分点 (t),决策树可以将连续属性分为两部分,计算划分后的信息增益。最终选择信息增益最大的划分点作为最佳划分。

示例:假设我们有一个水果数据集,属性“密度”的取值范围是 0.1 到 0.9。决策树可以通过划分点 (t = 0.5) 将数据集分为两部分:密度小于等于 0.5 和密度大于 0.5。然后计算每个部分的信息增益,选择最优的划分点。

4.2 缺失值处理

在现实数据集中,常常会遇到某些属性的值缺失,决策树需要处理这些不完整的样本,而不是简单地舍弃它们。处理缺失值的常见方法包括:

  1. 属性值缺失:当某个样本在某个属性上的取值缺失时,可以通过样本权重的调整来处理。具体方法是将样本按比例分配到不同的子节点,并根据样本的权重调整划分结果。

  2. 分类结果缺失:在分类过程中,如果某个样本的某个属性取值缺失,决策树可以同时将样本分配到所有可能的子节点,并根据样本的权重调整最终的分类结果。

公式:处理缺失值时,信息增益的计算公式被修改为:
[
Gain(D, A) = p \times Gain(D, A)
]
其中,(p) 表示没有缺失值样本的比例。

公式含义:在计算信息增益时,仅对没有缺失值的样本集进行计算,同时根据样本集的比例调整最终的信息增益结果。

示例:假设我们有一个数据集,其中某些样本的“色泽”属性缺失。我们可以根据样本权重,将缺失的样本分配到不同的子节点,计算这些子节点的信息增益。


5. 多变量决策树

多变量决策树 是决策树的扩展版本,它允许使用多个属性的线性组合来进行划分,而不仅仅是单个属性。这种方法能够处理复杂的分类问题,特别是当数据的决策边界不是简单的轴平行时。

5.1 多变量决策树的定义
  • 在普通的决策树中,非叶节点对单个属性进行测试(如“色泽是否为青绿?”)。
  • 而在多变量决策树中,每个非叶节点测试的是多个属性的线性组合。也就是说,决策树的节点不是对某个单独的属性进行划分,而是对多个属性组合后的结果进行划分。

线性分类器 的公式为:
[
w_1 x_1 + w_2 x_2 + \dots + w_d x_d \leq t
]
解释如下:

  • (w_1, w_2, \dots, w_d):表示属性 (x_1, x_2, \dots, x_d) 对应的权重。每个权重 (w_i) 代表属性 (x_i) 对分类的重要性。
  • (x_1, x_2, \dots, x_d):表示样本的属性值。例如,样本的密度、含糖量等。
  • (t):是一个阈值,表示通过这个阈值来决定样本属于哪个类别。

公式含义:通过多个属性的线性组合,决策树能够在数据空间中形成一个斜的划分边界,而不是像传统决策树那样形成轴平行的划分边界。

5.2 多变量决策树的划分方式
  • 多变量决策树允许节点使用多个属性的组合进行划分,因此它可以生成“斜决策边界”。这种划分方式能够更好地处理复杂数据,例如当数据的决策边界是斜的,而不是平行于坐标轴时。

示例:在普通决策树中,如果我们使用属性“密度”和“含糖量”分别对数据进行划分,得到的决策边界是平行于这些属性轴的。但在多变量决策树中,我们可以对这两个属性的线性组合进行划分,例如“0.5 * 密度 + 0.3 * 含糖量 \leq 0.7”,从而得到一个斜的决策边界。

图示
在西瓜数据集上,传统决策树的划分可能会形成直角形的决策区域,而多变量决策树可以通过线性组合形成斜线划分,更加灵活。


6. 阅读材料

这一部分列出了与决策树相关的经典算法和文献,它们对决策树的研究和发展起到了重要的作用。

6.1 经典算法
  • ID3:最早的决策树算法之一,它使用信息增益作为划分标准来选择最优属性。
  • C4.5:ID3的改进版本,使用增益率来避免对取值较多的属性产生偏好,并且能够处理连续值和缺失值。
  • CART:分类与回归树(Classification and Regression Tree),它使用基尼指数作为划分标准,适用于分类和回归任务。
6.2 其他相关文献
  • [Murthy, 1998]:提供了决策树相关文献的综述和研究指南。
  • [Quinlan, 1993]:C4.5决策树算法的原始论文,介绍了增益率和剪枝处理等技术。
  • [Breiman et al., 1984]:CART算法的提出者之一,介绍了基于基尼指数的决策树算法。
6.3 决策树的泛化性能
  • 剪枝对决策树的泛化性能有显著影响。过多的分支会导致决策树过拟合,剪枝能够减少过拟合的风险,提高模型对新数据的泛化能力。
  • 实验表明,通过剪枝可以将决策树的泛化性能提高约25%,特别是在数据带有噪声时。
6.4 多变量决策树的研究
  • OC1Brodley and Utgoff 的一系列算法通过贪心搜索和线性分类器来改进多变量决策树的学习过程。
  • 其他算法则结合神经网络的思想,将感知机或神经网络嵌入到决策树的叶节点中,形成混合模型,从而提高学习能力。
6.5 增量学习
  • 决策树学习的另一个方向是 增量学习,即能够在接收到新的样本后对已有的决策树模型进行部分更新,而不是重新训练整个模型。
  • 代表性算法有 ID4ID5RITI,它们通过对分支路径的调整来进行局部更新,降低了每次接收新样本时的训练时间开销。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

uniapp:上拉加载更多、下拉刷新、页面滚动到指定位置

提醒 本文实例是使用uniapp进行开发演示的。 一、需求场景 在开发商品(SKU)列表页面时,通常有三个需求: 页面下拉刷新,第一页展示最新数据;上拉加载更多数据;列表页面可以滚动到指定位置&#x…

如何为工业未来赋能?通过CodeMeter为工业企业开辟工业自动化安全与灵活性之道

在现代工业自动化领域,数字化转型已经成为不可逆的趋势。然而,要将新一代的自动化软件与传统设备集成,企业面临的不仅是技术上的复杂性,更是如何有效保护宝贵的知识产权并实现灵活管理的严峻挑战。菲尼克斯电气(Phoeni…

HTML5教程(一)- 网页与开发工具

1. 什么是网页 网页 基于浏览器阅读的应用程序,是数据(文本、图像、视频、声音、链接等)展示的载体常见的是以 .html 或 .htm 结尾的文件 网站 使用 HTML 等制作的用于展示特定内容相关的网页集合。 2. 网页的组成 浏览器 代替用户向服务…

【云原生】Kubernets1.29部署StorageClass-NFS作为存储类,动态创建pvc(已存在NFS服务端)

文章目录 在写redis集群搭建的时候,有提到过使用nfs做storageclass,那时候kubernetes是1.20版本,https://dongweizhen.blog.csdn.net/article/details/130651727 现在使用的是kubernetes 1.29版本,根据之前的修改方式并未生效,反而提示:Error: invalid argument "Re…

C语言 动态数据结构的C语言实现单向链表-2

建立一个单向链表 在单向链表中查找节点---查找尾节点 在单向链表中查找节点 --- 查找第 n 个节点 向单向链表中插入一个节点 向单向链表的尾部插入一个节点 向单向链表中某节点后插入一个节点 向单向链表中插入一个节点 删除单向链表中的某一节点 链表 vs 数组 动态数据结构

C++核心编程和桌面应用开发 第十五天(deque/stack/queue)

目录 1.deque容器 1.1构造和赋值(同vector类似) 1.2大小操作 1.3插入和删除 1.5数据存取 1.6排序(升序) 2.stack容器 3.queue容器 1.deque容器 1.1构造和赋值(同vector类似) deque内部工作原理&a…

湖北省自闭症全托管:为您推荐湖北省的自闭症服务机构

原文指路:http://www.zibizhengwang.com/page35.html 自闭症,这一复杂而神秘的神经发育障碍,长久以来困扰着无数家庭。它不仅影响着儿童的社交互动、沟通能力,还常常伴随着行为问题和感官过敏。面对这一挑战,湖北省内…

HTML静态网页作业成品(HTML+CSS)——动漫犬夜叉主题网页设计制作(1个页面)

🎉不定期分享源码,关注不丢失哦 文章目录 一、作品介绍二、作品演示三、代码目录四、网站代码1、HTML代码2、CSS部分代码 五、源码获取 一、作品介绍 🏷️本套采用DIVCSS布局,未使用Javacsript代码,共有1个页面。 二…

使用Python来下一场深夜雪

效果图:(真实情况是动态的) 完整代码: import turtle import random# 初始化画布 turtle.bgcolor("#001f3f") # 偏深蓝色的背景 turtle.title("下雪的画面") turtle.speed(0) turtle.hideturtle() turtle.t…

ffmpeg视频滤镜:定向模糊-dblur

滤镜简述 dblur 官网链接 > https://ffmpeg.org/ffmpeg-filters.html#dblur 有一个模糊滤镜&#xff0c;我试了一下&#xff0c;没有感觉到它的特殊之处, 这里简单介绍一下。 滤镜使用 滤镜的参数 angle <float> ..FV.....T. set angle (from 0 t…

基于neo4j的旅游知识图谱维护与问答系统

你还在为毕业设计发愁吗&#xff1f;试试这个基于Neo4j的旅游知识图谱维护与问答系统吧&#xff01;这套系统不仅功能强大&#xff0c;而且几乎涵盖了你需要的一切&#xff0c;完美助力你的毕业项目&#xff01; 系统介绍 该系统是专门针对旅游景点信息的知识图谱工具&#x…

ClickHouse在百度MEG数据中台的落地和优化

导读 百度MEG上一代大数据产品存在平台分散、质量不均和易用性差等问题&#xff0c;导致开发效率低下、学习成本高&#xff0c;业务需求响应迟缓。为了解决这些问题&#xff0c;百度MEG内部开发了图灵3.0生态系统&#xff0c;包括Turing Data Engine(TDE)计算引擎、Turing Dat…

常用排序算法总结

内容目录 1. 选择类排序 1.1 直接选择排序1.2 堆排序 2. 交换类排序 2.1 冒泡排序2.2 快速排序 3. 插入类排序 3.1 直接插入排序3.2 希尔排序 4. 其它排序 4.1 归并排序4.2 基数排序/桶排序 排序 1. 选择类排序 选择类排序的特征是每次从待排序集合中选择出一个最大值或者最…

大数据治理平台建设规划方案(71页WORD)

随着信息化时代的到来&#xff0c;大数据已成为企业管理和决策的重要基础。然而&#xff0c;大数据的快速增长和复杂性给数据的管理和治理带来了巨大挑战。为了有效应对这些挑战&#xff0c;构建一个高效、稳定的大数据治理平台显得尤为重要。 文档介绍&#xff1a; 该平台旨在…

零基础Java第十期:类和对象(一)

目录 一、拜访对象村 1.1. 什么是面向对象 1.2. 面向对象与面向过程 二、类定义和使用 2.1. 类的定义格式 2.2. 类的定义练习 三、类的实例化 3.1. 什么是实例化 3.2. 类和对象的说明 四、this引用 4.1. 什么是this引用 4.2. this引用的特性 一、拜访对象村 在…

基于SSM考研助手系统的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;学生管理&#xff0c;教学秘书管理&#xff0c;考研资讯管理&#xff0c;考研名师管理&#xff0c;考研信息管理&#xff0c;系统管理 教学秘书账号功能包括&#xff1a;系统首页&#xff0c;个人中心…

让你的 IDEA 使用更流畅 | IDEA内存修改

随着idea使用越来越频繁&#xff0c;笔者最近发现使用过程中有时候会出现卡顿现象&#xff0c;例如&#xff0c;启动软件变慢&#xff0c;打开项目的速度变慢等&#xff1a; 因此如果各位朋友觉得最近也遇到了同样的困惑&#xff0c;不妨跟着笔者一起来设置IDEA的内存大小吧~ …

基于Bert+Attention+LSTM智能校园知识图谱问答推荐系统

获取更多完整项目代码数据集&#xff0c;点此加入免费社区群 &#xff1a; 首页-置顶必看 1. 项目简介 本项目旨在实现基于ALBERT模型的命名实体识别&#xff08;NER&#xff09;任务。ALBERT&#xff08;A Lite BERT&#xff09;是谷歌提出的轻量级BERT模型&#xff0c;具有…

贪心算法与盛雨水问题

啥是盛雨水问题&#xff1f;给个图就熟悉了 欸&#xff1f; 这其中的关键在于&#xff1a; 1. 容量2D化就是长 * 宽 2. 木桶效应&#xff1a;宽取决于短板。 那我们来分析&#xff0c;怎么样能达到最佳的结果呢&#xff1f;穷举一下所有可能性不就好了&#xff1f;每两个板子…

ArcGIS001:ArcGIS10.2安装教程

摘要&#xff1a;本文详细介绍arcgis10.2的安装、破解、汉化过程。 一、软件下载 安装包链接&#xff1a;https://pan.baidu.com/s/1T3UJ7t_ELZ73TH2wGOcfpg?pwd08zk 提取码&#xff1a;08zk 二、安装NET Framework 3.5 双击打开控制面板&#xff0c;点击【卸载程序】&…