今天刚学完最小生成树,乘着知识还在脑袋里热乎着,便写下来记录下,也便日后复习回忆。prim算法是用来求解最小生成树的。

总的来说算法步骤就是:

1.将距离集合(即最小生成树)的距离最近的点加入到集合中,如果集合中当前没有点,则可以任意加入某一个点。(该点到集合的距离定义为该点到集合中每个点的距离中最小的那一个距离。)

2.用新加入到集合中的点来更新未被加入到集合中的点到集合的距离。

3.重复1, 2步骤直到所有点都被加入到集合当中。此时集合中的连通路径即为最小生成树。

直观理解:首先对于一个图G(包含多个顶点和多条边),那么最小生成树就是所有边的权之和是所有子集中最小的,并且该子集的边能保证图是连通的。通俗来讲就是可以连接图中所有点的并且没有回环的路径。

起初集合中没有点,那么集合中添加一点后,之后继续添加的点只能是图中与集合内部的点直接相连的点(中间没有其他点),这是因为不存在回环。那么为了使最小生成树的边的权总和最小,我们直观地就想在添加每个点的时候先加入与集合距离最小的点。

证明:采用反证法进行证明:

首先让我们来规定符号:

根据每个点加入生成树的先后顺序不同分别记为        ,并且令来表示,其中小于.接着我们假设Prim算法无法构建出“正确”的最小生成树。

那么假设通过prim算法已经加入到集合中的点为,此时已经构建出来的部分最小生成树与“正确”的最小生成树里面相应的部分相同,但接下来通过prim算法即将加入到集合中的点,或说是边却与“正确的最小生成树”不同,即是发生错误的第一条边。而“正确”的最小生成树到达点是通过其他的路径,并记“正确”的最小生成树接下来要添加的边记为,添加的点记为。我们想象出这样的图形,在完整的“正确的”最小生成树中,加入这条边,那么在这个图形就产生了回环,如下图所示因此需要删掉一条边,那么就要从两边之间进行选择喽,那正常来说肯定是要删掉来恢复为“正确的”最小生成树喽。可是,因为为了保障各边权值和最小,那么所删除的一定比的权要大,,又因为原来”而prim算法在添加的时候就说明了与相比,的权最小,因此就矛盾论了,因此prim算法一定会选对边,即prim算法一定是正确的的。

参考文献:

《数据结构与算法分析(C++版)》(第三版)【美】Clifford A. Shaffer 著  张铭 刘晓丹 译

prim算法直观理解与证明相关推荐

  1. 说点人话的强化学习:TD算法解释,时间差分算法详解,直观理解,一定能看懂的TD算法解释

    说点人话的强化学习,想让强化学习不要那么困难 TD算法直观理解: 在强化学习中,我们一定会遇到TD算法,基本一定会看到纽约到亚特兰大开车的这个例子.但是数据是如何更新的呢?如何理解TD算法进行数据更新 ...

  2. Kruskal与Prim算法生成最小树

    Kruskal算法适用于边稀疏的情形 Prim算法适用于边稠密的情形 点击:Kruskal算法的理解 书上的代码: n:图G上的顶点 e:G上的边数 vest:看是否属于同一连通分量的数组,数值相等则 ...

  3. BP反向传播算法的思考和直观理解 -卷积小白的随机世界

    https://www.toutiao.com/a6690831921246634504/ 2019-05-14 18:47:24 本篇文章,本来计划再进一步完善对CNN卷积神经网络的理解,但在对卷积 ...

  4. 反向传播算法_9.3 反向传播算法的直观理解 Backpropagation Intuition

    在上一节中,我们介绍了反向传播算法,对很多人来说,当第一次看到这种算法时,第一印象通常是,这个算法需要那么多繁杂的步骤,简直是太复杂了,实在不知道这些步骤,到底应该如何合在一起使用.就好像一个黑箱,里 ...

  5. 梯度的直观理解_BP反向传播算法的思考和直观理解 -卷积小白的随机世界

    本篇文章,本来计划再进一步完善对CNN卷积神经网络的理解,但在对卷积层反向传播算法的理解中,越发觉得之前对于BP反向传播算法的理解是不到位的.小白近日觉得,对于深度神经网络,"反向传播&qu ...

  6. 算法直观与对模型的理解(二)

    算法直观与对模型的理解 assumptions 很多机器学习算法以数据的线性可分为基本假设或叫基本前提. Many machine learning algorithms make assumptio ...

  7. Mean-shift算法的直观理解

    Mean-shift算法的直观理解 0 前言 暑假的时候参加移动计算竞赛打了下酱油,接触到了Mean-shift算法,用于做目标跟踪.在那段时间也在网上查阅了不少关于这个算法的资料,可是总感觉它们都比 ...

  8. Dijkstra、RRT两类路径规划算法原理的直观理解

    在路径规划的算法里,有两大类算法是很常用的,一类是基于搜索和图的Dijkstra算法,还有一类是基于采样的RRT算法.本文对其算法原理进行简单的理解,力图生动的展示枯燥的数学公式背后精彩的思想. Di ...

  9. 反向传播的直观理解 (以及为什么反向传播是一种快速的算法)

    解释:公式 46 其实就是微分的定义公式,"W + εej  "代表对于由 j 个 weight 构成的单位向量 W,在其他权重都不变的情况下,使得 Wj 微小的改变 ε(W为单位 ...

最新文章

  1. 2018年人工智能将赋能所有行业,未来市场将超过400亿美元
  2. Silverlight 2 学习笔记之事件的重复绑定问题
  3. 6计算机系统的组成是,计算机系统的组成(范文)(6页)-原创力文档
  4. Eclipse Juno上带有GlassFish的JavaEE 7
  5. Win10 和 Ubuntu 20.04 安装 face_recognition 和 dlib
  6. Java进阶知识点:协变与逆变
  7. SetWindowsHookEx 全局钩子
  8. 2021-4-28 合抱之木,生于毫末,九层之台,起于垒土
  9. 第1章第15节:导出:如何将幻灯片保存为图片格式的文件 [PowerPoint精美幻灯片实战教程]
  10. 2018-2019的裁员风波(程序员要有危机意识,程序员堪比娱乐圈,更新换代快)
  11. APP注册名称的一些问题
  12. 网络安全 (九 缓冲区溢出metasploit)
  13. linux c编译安装,uClinux设置(安装,编译)
  14. 第三章 添加背景音乐与音频剪辑
  15. flex实现在交叉轴上的排列
  16. HTTP状态码206和416
  17. 全国计算机二级十七套Excel,计算机二级MSOffice十七套题.docx
  18. 神经网络机器翻译简单模型参考实现
  19. Android工程中imei和oaid的获取
  20. 定制RLC防孤岛测试负载

热门文章

  1. shortest path 实现
  2. Win7下硬盘安装fedora17
  3. 大数据技术系列:图解【大数据平台开发】
  4. 【教程】【PDF】Python2.7教程
  5. Github上收集微信小程序源码
  6. matlab里mapminmax,Matlab的mapminmax函数说明[转]
  7. TensorFlow2.0 上实现SRCNN
  8. 你所表现的负责可能正是在逃避责任
  9. 【详细】MySQL的卸载与安装(图文教程)
  10. C语言-输出100以内的质数