最小生成树算法详解.pptxVIP

  • 0
  • 0
  • 约1.29千字
  • 约 35页
  • 2019-08-24 发布于福建
  • 举报
最小生成树算法 ------prim Kruskal;生成树的概念;最小代价生成树;最小代价生成树;普里姆(Prim)算法;V4 ;V4 ;V4 ;V4 ;V4 ;V4 ;普里姆算法求最小生成树:从生成树中只有一个顶点开始,到顶点全部进入生成树为止;普里姆(Prim)算法;从键盘(或数据文件)输入图的信息,用普里姆算法求解给定无向连通图的最小生成树,最后输出最小生成树中的权值和所有的边,图的存储结构自行设定。;普里姆算法的实现;adjvex lowcost;adjvex lowcost;adjvex lowcost;? ;? ;? ;图采用邻接矩阵表示;#includeiostream #includealgorithm #includecstdlib #define INIT 63355 #define NUM 20 using namespace std; typedef int Elemtype; typedef struct Tnode{ Elemtype vex[NUM]; int arac[NUM][NUM]; int v,e; }graph; void Init_Graph(graph g){ for(int i = 1;i=g.v;i++){ for(int j = 1;j=g.v;j++){ g.arac[i][j] = INIT; } } } ;void Prim(graph g){ int min_cost = 0; int lowcost[NUM]; //当前最短距离 int closest[NUM]; //顶点的相邻顶点(closest[i]则为i的邻接点) int s[NUM]; //标志访问节点 for(int i = 1;i=g.v;i++){ closest[i] = 1; //初始置各顶点得邻接点为1 lowcost[i] = g.arac[1][i]; //初始置各顶点的最短距离为1到顶点的距离 s[i] = 0; } for(int i = 1;ig.v;i++){ int min = INIT; //min初始化无穷大 int j = 1; for(int k = 2;k=g.v;k++){ if(lowcost[k]min!s[k]){ //找出与源点相连,且权值最小的顶点 min = lowcost[k]; j = k; } };Kruskal——最小生成树;1;1;1;1;1;1;1;1;克鲁斯卡尔(Kruskal)算法;代码参考

文档评论(0)

1亿VIP精品文档

相关文档