最小生成树-Prim算法与Kruskal算法

本文介绍了最小生成树的概念,它是一个连通图的极小连通子图,包含所有结点且边数最少。接着详细讲解了Prim算法和Kruskal算法,Prim算法适用于稠密图,时间复杂度为O(n²),而Kruskal算法则适合稀疏图,其时间复杂度为O(nlogn)。这两种算法是解决最小生成树问题的常见方法。
摘要由CSDN通过智能技术生成

最小生成树:

求一个有 n 个结点的连通图的生成树是原图的极小连通子图,且包含原图中的所有 n 个结点,并且有保持图连通的最少的边.

1:Prim算法(适合稠密图)`Prim(G){ //G为图

   int addnow[maxen];//记录当前有多少点被纳入集合;

   int lowcost[maxen]; //记录当前集合中的点到其他点的最小距离的边集合;

   init();//初始化点集合与边集合;

   addnow[start]=true; //将起点纳入点集合

   for(i=1;i<G.vertex;i++){  //还剩下n-1个点需要归并

       Min=99999;

       for(j=1;j<=G.vertex;j++){ 

            if(!addnow[j]&&lowcost[j]<minn) {    //寻找权值最小并且点未被归并的边

             minn=addnow[j];

index=j; }

       }

    addnow[index]=1; //将该点加入集合

    updateV();//因为点集合新入点,故需要更新该集合到其他点的距离

  }

}`
时间复杂度:O(n²)

Kruskal算法(适合稀疏图)

伪代码:(n为顶点数)``

Kruskal(
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值