算法分析与实践-作业1-2 Kruskal算法构造最小生成树

  1. 问题
    在一个给定的无向图G=(V,E)中,(v,u)代表连接顶点v的边,而w(u,v)代表该边的权重,若存在T为子集且为无循环图,使得w(T)最小,则该T为G的最小生成树。

  2. 解析
    Kruskal算法生成最小树的过程
    ![在这里插入图片描述](https://img-blog.csdnimg.cn/2020030200454
    在这里插入图片描述
    过程分析:构造最小代价生成树T的Kruskal算法一次向T中加入一条边。在整个构造过程,一条条边按权值非递减的顺序一次次加入T,而且每次加入的边都不构成环路。由于G是连通图,有n>0个节点,所以最后T 中恰好包括n-1条边。

  3. 设计

T={};
While(T包含小于n-1条边&&E不空)
   从E中选择最短代价边(U,V);
从E中删除(u,v);
If((u,v)不构成环路 int T)
  添加(u,v)到T;
Else
  丢弃(u,v);
If(T包含小于n-1条边)
 Printf(“无生成树\n”);

4.源码
https://github.com/samfsrhv920/algorithm-analysis

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值