算法分析与实践-作业1-1Prime构造最小生成树

Prime构造最小生成树

1. 问题

在一给定的无向图G = (V, E) 中,(u, v) 代表连接顶点 u 与顶点 v 的边(即),而 w(u, v) 代表此边的权重,若存在 T 为 E 的子集(即)且为无循环图,使得的 w(T) 最小,则此 T 为 G 的最小生成树。

在这里插入图片描述

2. 解析

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

3. 设计

int Prime()

{

	vis[1] = 1; //将顶点1标记为已连通

  	   for( i from 2 to N){

  		 vis[i] = 0; //其他顶点标记为未连通

  		 dis[i] = mp[i][1]; //将点i与顶点1的权值赋值给dis[i]
	}

	for( i from 1 to N-1){

  	 for(j from 1 to N){

         找到最小权值边且端点未连通,记下pos;

	}

	vis[pos] = 1;//将该点标记为已连通;

	sum+=dis[pos];//累加权值

	for(遍历所有点){

  	 if(!vis[j] && dis[j]> mp[pos][j] && mp[pos][j] != inf){

	//如果该店未连通且与pos位置更近

   		则更新dis

	dis[j] = mp[pos][j];

	}
	}

}

}

4. 源码

源码地址: https://github.com/Bacsonlx/Algorithm-analysis

发布了2 篇原创文章 · 获赞 1 · 访问量 168

猜你喜欢

转载自blog.csdn.net/weixin_43750332/article/details/104521059