直观理解:最小生成树算法Prime和Kruskal

 我来答
舒适还明净的海鸥i
2022-07-22 · TA获得超过1.7万个赞
知道小有建树答主
回答量:380
采纳率:0%
帮助的人:67万
展开全部

  在正式讲解Prime和Kruskal算法之前,我们需要先搞明白什么是最小生成树,而搞明白最小生成树的概念之前,我们先介绍几个名词。
联通图: 在一个无向图 中,若任意两个顶点 与 之间都有最少一条路径相通,则称该无向图 为连通图。
生成树: 如果一个联通图 联通子图 包含图中所有的顶点,且任意任意两顶点之间有且仅有一条路径,则称该联通子图为联通图 的生成树;
最小生成树: 连通图 的所有生成树中,边的权重之和最小的生成树称为最小生成树。
解释完上述名词之和,接下来我们重点介绍两种经典的最小生成树算法Prime算法和Kruskal算法。

  假设存在联通图 ,图中所有的顶点集合为 ,集合 表示已经加入到生成树中的顶点集合,集合 表示未加入到生成树中的顶点集合。一开始,随机指定一个顶点 加入到集合 中,则 ,每次从集合 与集合 的顶点所构成的所有边中选取权值最小的一条边 作为生成树的边,并将边 在集合 的那个顶点加入到集合 中,如此下去直到集合 中的全部顶点都加入到集合集合 中,得到最小生成树。算法的执行过程如下图所示:

  将联通图 中所有的边按其权值由小到大的次序进行排序,对边的权值按从小到大的顺序进行选取,若该边选取后与已选择的边无法形成回路,则保留当前边,否则跳过当前边,选择下一条。依次选够 条边即可得到最小生成树,其中 为连通图 中的顶点个数。算法的执行过程如下图所示:

   1. 执行Kruskal算法的 图存储结构 一般采用边集数组的方式进行存储,且权值相等的边在数组中排列的排列先后顺序并不影响最终最小生成树的权值总和,但可能会影响最小生成树的形状。由于需要对边进行排序和选择,因此该方法对于边相对比较多的图,运行时间较长;
   2. 执行普里姆算法的图存储结构一般采用邻接矩阵的方式。该方法以某个顶点为出发点,每次选择两个集合之间权值最小的边进行最小生成树生成,较适合边较多的图的最小生成树生成,且性能较好。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
AiPPT
2024-09-19 广告
随着AI技术的飞速发展,如今市面上涌现了许多实用易操作的AI生成工具1、简介:AiPPT: 这款AI工具智能理解用户输入的主题,提供“AI智能生成”和“导入本地大纲”的选项,生成的PPT内容丰富多样,可自由编辑和添加元素,图表类型包括柱状图... 点击进入详情页
本回答由AiPPT提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式