最小生成二叉树-prim算法

1.prim算法:一种计算生成最小生成树的方法,它的每一步都会为一棵生长中的树添加一条边.

2.时间复杂度:

    通过邻接矩阵图表示的简易实现中,找到所有最小权边共需O(V)的运行时间。使用简单的二叉堆与邻接表来表示的话,普里姆算法的运行时间则可缩减为 O(ElogV),其中E为连通图的边数,V为顶点数。如果使用较为复杂的斐波那契堆,则可将运行时间进一步缩短为O(E+VlogV),这在连通图足够 密集时(当E满足Ω(VlogV)条件时),可较显著地提高运行速度。

3.代码实现:

 1 #include <stdio.h>
 2 #define    MAXV 100  //最大顶点个数
 3 #define INF 32767 //INF表示∞
 4 typedef struct                  
 5 {      int edges[MAXV][MAXV];//邻接矩阵
 6        int vexnum,arcnum;   //顶点数,弧数
 7 } MGraph;//图的邻接矩阵类型
 8 
 9 void init(MGraph &g);//初始化邻接矩阵
10 void DispMat(MGraph g);//输出邻接矩阵g
11 void prim(MGraph g,int v);
12 int main()
13 {
14     int u=3;
15     MGraph g;//图的邻接矩阵
16     init(g);
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值