最小生成树

来源:互联网 发布:ida pro mac 破解版 编辑:程序博客网 时间:2024/06/02 06:51

最小生成树:我们把构造连通网的最小代价生成树称为最小生成树。


普里姆算法:

假设N = {V, E}是连通网,TE是N上最小生成树中边的集合。算法从U={u0}(u0∈V),TE={}开始。重复执行下述操作:在所有u∈U,v∈V-U的边(u, v)∈E中找代价最小的边(u0, v0)并入集合TE,同时v0并入U,直至U=V为止。此时TE中必有n-1条边,则T={V, TE}为N的最小生成树。此算法的时间复杂度是O(NxN)。

void MiniSpanTree_Prim(MGraph G){int min, i, j, k;int adjvex[MAXVEX];int lowcost[MAXVEX];lowcost[0] = 0;adjvex[0] = 0;for (i = 1; i < G.numVertexes; i++){lowcost[i] = G.arc[0][i];adjvex[i] = 0;}for (i = 1; i < G.numVertexes; i++){min = INFINITY;j = 1;k = 0;while (j < G.numVertexes){if (lowcost[j] != 0 && lowcost[j] < min){min = lowcost[j];k = j;}   j++;}printf("(%d, %d) ", adjvex[k], k);lowcost[k] = 0;for (j = 1; j < G.numVertexes; j++){if (lowcost[j] != 0 && G.arc[k][j] < lowcost[j]){lowcost[j] = G.arc[k][j] ;adjvex[j] = k;}}}}



克鲁斯卡尔算法:

假设N={V, E}是连通网,则令最小生成树的初始状态为只有n个顶点而无边的非连通图T={V, {}},图中每个顶点自成一个连通分量。在E中选择代价最小的边,若该边依附的顶点落在T中不同的连通分量上,则将此边加入到T中,否则舍去该边而选择下一条代价最小的边。依次类推,直至T中所以顶点都在同一连通分量为止。此算法的时间复杂度是O(eloge)。

typedef struct {int begin;int end;int weight;} Edge;int Find(int *parent, int f){while (parent[f] > 0)f = parent[f];return f;}void MiniSpanTree_Kruskal(MGraph G){int i, n, m;Edge edges[MAXEDGE];int *parent[MAXVEX];//此次省略将邻接矩阵G转化为边集数组edges并按权由小到大排序的代码for (i = 0; i < G.numVertexes; i++)parent[i] = 0;for (i = 0; i < G.numEdges; i++){n = Find(parent, edges[i].begin);m = Find(parent, edges[i].end);if (n != m){parent[n] = m;printf ("(%d, %d) %d ", edges[i].begin, edges[i].end, edges[i].weight);}}}


0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 被竹叶青蛇咬了怎么办 被眼镜王蛇咬了怎么办 被黄蜂蛰了怎么办消肿 被黑色黄蜂蜇了怎么办 手指被黄蜂蛰了怎么办 被马蜂蛰了肿了怎么办 给青竹蛇咬了怎么办 被青竹蛇咬了怎么办 孕早期吃了桂皮怎么办? 怀孕后吃了八角怎么办 孕妇吃了点八角怎么办 煮粥老是溢出来怎么办 6个月的小孩咳嗽怎么办 10个月婴儿咳嗽怎么办 6个月婴儿感冒了怎么办 六个月宝宝有痰怎么办 9月婴儿牛奶过敏怎么办 一用粉底就过敏怎么办 7个月婴儿过敏怎么办 9个月宝宝腹泻怎么办 9个月宝宝拉肚子怎么办 5个月宝宝拉肚子怎么办 九个月大宝宝拉肚子怎么办 九个半月的宝宝拉肚子怎么办 9个月婴儿拉稀怎么办 九个月的宝宝拉肚子怎么办 9个月宝宝拉稀水怎么办 2岁宝宝腹泻拉水怎么办 18个月宝宝拉水怎么办 2个月宝宝拉稀水怎么办 2个月的宝宝腹泻怎么办 2个月的宝宝拉稀怎么办 宝宝不喝补液盐怎么办 4个月宝宝腹泻怎么办 6个月宝宝腹泻怎么办 四个月的宝宝拉肚子怎么办 7个月婴儿便秘怎么办 宝宝9个月拉肚子怎么办 2个月宝宝拉肚子怎么办 4个月宝宝没奶怎么办 宝宝又吐又拉怎么办