算法设计与基础实验1 prime算法和Kruskal算法构造最小生成树

本文介绍了两种构造最小生成树的算法:Prime算法和Kruskal算法。Prime算法通过逐步选择权重最小的边,确保所有顶点最终连接成树;Kruskal算法则是每次选取最短边,避免形成环,直至所有顶点连通。文中包含算法的基本思想、图解及伪代码。
摘要由CSDN通过智能技术生成

prime算法

基本思想

  1. 任取一个点加入生成树
  2. 从一个顶点在生成树中另一个点不在的边中选出权重最小的边并将另一个顶点加入生成树
  3. 重复步骤2直到所有点都加入了生成树,此时的生成树即为最小生成树

图解

在这里插入图片描述

伪代码

int prime(int shoujiedian)//首个节点
{
   
	1.标记数组,全部为未访问
	2.
	for(i=0;i<N;i++)
	将与i点边相连 的边存入数组dist[i];
	3.遍历每个节点
	找到未访问的点中,距离当前最小生成树距离最小的点
	不断更新与点cur的相连点的最短距离
	标记距离最短的刚刚被拿走的那个节点,已经被访问过
	已经进入最小树的点的可及范围,与刚进入最小树的点相比较,比之前点可到达某点的距离较小,更新当前最小生成树的可及范围的最小值
	执行更新,如果点距离当前点的距离更近,就更新dist
	返回最小生成树的总路径值

}

源代码

//prime算法
#include <bits/stdc++.h>
#define INF 10000
using namespace std;
const int N = 7;
bool visit[N];
int dist[N] = {
   0, };
int G[N][N] = {
    {
   INF,92,INF,INF,INF,INF},
		{
   9,INF,4,7,INF,INF,1},
		{
   2,4,INF,INF,5,INF,INF},
		{
   INF,7,INF,INF,3,INF,6},
		{
   INF,INF,5,3,INF,8,10},
		{
   INF,INF,INF,INF,8,INF,7},
		{
   INF,1,INF,6,10
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值