c语言版本的最小生成树(Prim算法)概述
2019-07-22 09:49
232 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_40903237/article/details/96830022
1、Prim算法概述:图论中的一种算法,可在加权连通图里搜索最小生成树。意即由此算法搜索到的边子集所构成的树中,不但包括了连通图里的所有顶点(英语:Vertex (graph theory)),且其所有边的权值之和亦为最小。
2、最小生成树:一个有 n 个结点的连通图的生成树是原图的极小连通子图,且包含原图中的所有 n 个结点,并且有保持图连通的最少的边。最小生成树可以用kruskal(克鲁斯卡尔)算法或prim(普里姆)算法求出。
3、重点部分代码段实现
[code]//prim算法生成最小生成树 void MiniSpanTree_Prim(MGraph G){ int min,i,j,k; int adjvex[MAXVEX]; //保存相关顶点下标 int lowcost[MAXVEX];//保存相关顶点间的权值 lowcost[0] = 0; //v0作为最小生成树的根开始遍历,权值为0 adjvex[0] = 0; //V0第一个加入 //初始化操作 for(int i = 1;i<G.numVertexes;i++){ lowcost[i] = G.arc[0][i]; //将领接矩阵的第0行所有权值先加入数组 adjvex[i] = 0; //将全部初始化为v0的下标 } //真正构造最小生成树的过程 for(int i = 1;i<G.numVertexes;i++){ min = INFINITY; //初始化最小权值为65535等不可能的数值 j = 1; k = 0; //遍历全部顶点 while(j < G.numVertexes){ //找出lowcost数组已经存储的最小权值 if(lowcost[j]!=0 && lowcost[j] < min){ min = lowcost[j]; k = j; //将发现的最小权值的下标存入k,以待使用 } j++; } } }
相关文章推荐
- c++版本的prim算法最小生成树
- 最小生成树之Prim算法 优先队列版本
- 最小生成树问题中Kruskal算法和Prim算法的C语言实现
- C语言——Prim算法实现最小生成树
- 最小生成树Prim算法朴素版 C语言实现
- 最小生成树构造算法--Prim算法,Kruskal算法(C语言)
- c语言:最小生成树之Prim算法
- 最小生成树Prim算法朴素版 C语言实现
- 最小生成树--prim算法的c语言描述
- C语言-数据结构-prim算法求最小生成树
- prim算法---最小生成树
- 最小生成树算法之Prim算法
- JS使用Prim算法和Kruskal算法实现最小生成树
- 最小生成树——Prim算法
- POJ 1258-Agri Net 最小生成树Prim算法
- 贪心算法 - 最小生成树 Prim算法
- POJ 2485-Highways 最小生成树Prim算法
- 最小生成树Prim算法实现(采用邻接表存储)C++实现
- hiho刷题日记——第二十九天最小生成树三·堆优化的Prim算法
- Prim算法构造最小生成树