当前位置:   article > 正文

算法复习(一) 最小生成树相关问题_最小生成树需要解决的问题

最小生成树需要解决的问题

很长一段时间内,zhn_666每周会更一些之前的学过的算法,也会把曾经因为懒惰之类的原因没学的算法重新学一遍,这次会好好写博客,希望有缘人看到也能学到点东西

这周俺要复习的算法是有关最小生成树
首先介绍一些关于图的定义

- 连通图:在一张无向图中,任意两点都联通,则称此无向图为连通图
- 强连通图:在一张有向图中,任意两点都联通,则称此有向图为强连通图
- 生成树:在有n个点连通图中,选n-1条边构成的连通子图,则为一棵生成树。
- 最小生成树:在生成树中,使得这n-1条边权值和最小,为最小生成树。

解决最小生成树类的问题有主要两种方法,第一种为Kruskal算法,第二种为prim算法

  1. Kruskal 算法
    此算法可以称为“加边法”,初始最小生成树边数为0,每次就选择一条满足条件的最小代价边,加入到最小生成树的边集合里。
    (1) 把图中的所有边按代价从小到大排序,把每个点看成一棵树;
    (2) 按权值从小到大选择边,所选的边连接的两个顶点u,v,u,v,应属于两颗不同的树,则成为最小生成树的一条边,并将这两颗树合并作为一颗树。(前置技能:并查集)
    (3)重复(2),直到构成了一棵n-1条边的树。

  2. prim 算法
    此算法可以称为“加点法”,我们随便选择一个不在图中的点,选择它与这张图能相连的最小权值的边,直到构成一棵树。
    (1) 在一个加权连通图中,顶点集合V,边集合为E
    (2) 任意选出一个点作为初始顶点,标记为visit,计算所有与之相连接的点的距离,选择距离最短的,标记visit.
    (3) 重复以下操作,直到所有点都被标记为visit:

题单(先写一发水的,代码日后会更新 咕咕咕警告在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/凡人多烦事01/article/detail/585100
推荐阅读
相关标签
  

闽ICP备14008679号