Prime算法——学习笔记

本文是关于Prime算法的学习笔记,该算法在图论中用于寻找最小生成树。通过逐步解析算法流程,结合具体实例,详细阐述了如何从初始节点开始,不断寻找连接新节点的最短边,直至所有节点加入点队列。最后,文章还提供了相关的代码实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Prime算法是图论中的经典算法,用于在图中寻找最小生成树。Prime算法的原理在于:

(0)首先假设有点队列V和边队列E,两个队列初始都为空

(1)任取一点加入点队列V

(2)在满足一端点在点队列V中,一端点(新节点)不在队列中的所有边中寻找最短边

(3)把新节点加入点队列V中,把新边加入边队列E

(4)重新执行(2)直到所有点都加入点队列

以上图(图片搜索自百度图片)为例

(1)首先任选节点,选择A节点,发现最短边AD,加入队列 V=[A,D];E=[AD]

(2)以V为基础继续搜索,找到DF,加入队列V=[A,D,F];E=[AD,DF]

(3)找到AB,加入队列V=[A,D,F,B];E=[AD,DF,AB]

……

(5)找到EG,加入队列V=[A,D,F,B,E,C,G];E=[AD,DF,AB,BE,EC,EG]

 

上代码:

//边
struct Edge{
    int start;
    int end;
    int length;
};

//需要传入图邻接矩阵graph,点的个数length
Edge* Fun(int **graph,int length){
    //length个点,(length-1)条边
    int* V=(int*)calloc(length,sizeof(int));
    Edge* E=(Edge*)malloc((length-1)*sizeof(Edge));
    
    //先设起始点,置1说明入队列
    V[0]=1;
    
    for(int i=0;i<length-1;i++){
        //寻找满足要求的
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值