利用prim算法构造最小生成树

本文介绍了如何利用Prim算法构造最小生成树。该算法通过每次选择代价最小的边连接不同集合的顶点,逐步构建不含回路的最小生成树。文章详细阐述了算法的基本步骤,并提供了相关代码和注释。
摘要由CSDN通过智能技术生成

一.构造最小生成树必须满足以下条件
①只能使用图中的边;
②只能使用图中的n-1条边;
③添加的边不能产生回路;
Prim算法是通过每次选择提条代价最小的边辑器相应 的顶点加入到最小生成树中,因此来构造最小生成树。
二.基本步骤
设基本图为G=(V,E),最小生成树Tmst=(Vt,Et)。
①从图G中的任意顶点Vm(Vm属于V)开始,将Vm加入最小生成树中;
②选择代价最小的边(Vk,Vj)加入最小生成书中,并将顶点Vj加入最小生成树中,要求两个顶点属于不同的集合,Vk属于Vt,Vj属于V-Vt;
③重复这个过程,直到Tmst中有n-1条边为止,即Vt=V;
代码既及注释如下

#include <stdio.h>
#include <stdlib.h>
#define MAX 1000
typedef struct GRAPHMATRIX_STRU
{
   
    int size;
    int **graph;
}GraphMatrix;

GraphMatrix* InitGraph(int num)
{
   
    int i,j;
    GraphMatrix *graphMatrix=(GraphMatrix*)malloc(sizeof(GraphMatrix));
    graphMatrix->size=num;
    graphMatrix->graph=(int**)malloc(sizeof(int*)*graphMatrix->size);
    for(i=0;i<graphMatrix->size;i++)
        graphMatrix->graph[i]=(int*)malloc(sizeof(int)*graphMatrix->size);
    for(i=0;i<graphMatrix->size;i++)
    {
   
        for(j=0;j<graphMatrix
  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值