0
点赞
收藏
分享

微信扫一扫

12/11每日总结

最小生成树

prim算法

简介

prim算法的核心就是迭代,从一个顶点开始构建生成树,每次讲代价最小的新顶点纳入生成树,直到所有顶点都纳入为止。

实现思想

创建两个数组,一个是标记是否加入的数组isjoin,一个是计算各节点加入最小生成树的最低代价的数组lowcost

在此之前先选取第一个结点,对此结点的相邻边进行遍历,将有权边加入到lowcost中供选择

第一轮循环遍历各个结点,找出lowcost最低的并且未加入树的顶点,将相邻结点加入isjoin数组中并开启下一轮遍历,更新还未加入的各个顶点的lowcost值

不断循环直至所有顶点都纳入为止

因为要进行n-1轮的循环,每次循环2n次

总时间复杂度是O(n^2)即O(|V|^2)

kruskal算法

简介

kruskal算法的核心就是全局里去找,每次选择一条权值最小的边,使这条边的两头连通(若原本已经连通则不选)直到所有顶点都连通

实现思想

初始时先将各条边按照权值进行排序

然后使用并查集方法检查是否已连通,若未连通则将新节点加入,一共要执行e轮,美伦判断两结点是否属于同一集合,需要O(log_2e)

最短路径

BFS求无权图的单源最短路径

直接进行广度优先遍历

使用两个数组,一个记录最短路径值,一个记录到这个顶点的直接前驱


举报

相关推荐

0 条评论