【算法笔记】贪心法 最小生成树(Prim算法&Kruskal算法)

本文介绍了最小生成树的概念及其重要性质,详细讲解了Prim算法和Kruskal算法的实现过程,包括它们在稠密图和稀疏图中的适用性。Prim算法从一个点开始逐步连接权值最小的边,而Kruskal算法则按边的权值递增顺序选择不形成环的边。同时,文中提到了在实现Kruskal算法时使用并查集和优先队列的优化方法。
摘要由CSDN通过智能技术生成

在算法课的时候老师讲过最小生成树,生成树的原理挺简单来着,可是要用代码实现它还是有一定难度╭(╯^╰)╮,本人学渣,没有逼迫没有学习,所以知道这个算法一直没有实现,直到前几天一道蓝桥杯历届试题拦住了我,这个题网上查了查要两次kruskal,然后翻出了算法书⊙0⊙,emmmm……算了我还是先把最小生成树两个方法先过一遍吧

最小生成树

    性质:n个节点生成的最小生成树有n-1条边 & 最小生成树里多加一条边能生成含该边的一个环

    构造方法:Prim算法 & Kruskal算法

一、Prim算法:逐个点连通的方式构造最小生成树(时间复杂度O(n*n),适合稠密图)

    稀疏图&稠密图:有很少条边或弧(边的条数|E|远小于|V|²)的图称为稀疏图(sparse graph),反之边的条数|E|接近|V|²,称为稠密图(dense graph)。

    Prim算法是从一个点开始,在给的无向图中寻找这个点所连接的权值最小的边,并在树中连接这条边,再寻找树中节点在无向图连接的权值最小的边,找到之后要判断这条边是否会构成一个环,最小生成树中是不能出现环的。

    下图的例子:①从点1开始,权值最小的边是ÿ

  • 14
    点赞
  • 61
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值