MST(Minimum Spanning Tree,最小生成树)
2015-04-15 21:29
531 查看
今天从志权师兄那里学会了最小生成树。所谓生成树,就是n个点之间连成n-1条边的图形。
而最小生成树,就是权值(两点间直线的值)之和的最小值!
首先,要用二维数组记录点和权值。如上图所示无向图:
nt
map[7][7];
map[1][2]=map[2][1]=4;
map[1][3]=map[3][1]=2;
......
然后再求最小生成树。具体方法是:
1.先选取一个点作起始点,然后选择它邻近的权值最小的点(如果有多个与其相连的
相同最小权值的点,随便选取一个)。如1作为起点。
visited[1]=1;
pos=1;
//用low[]数组不断刷新最小权值,low[i](0<i<=点数)的值为:i点到邻近点(未被标
记)的最小距离。
low[1]=0; //起始点i到邻近点的最小距离为0
low[2]=map[pos][2]=4;
low[3]=map[pos][3]=2;
low[4]==map[pos][4]=3;
low[5]=map[pos][5]=MaxInt; //无法直达
low[6]=map[pos][6]=MaxInt;
2.再在伸延的点找与它邻近的两者权值最小的点。
//low[]以3作当前位置进行更新
visited[3]=1;
pos=3;
low[1]=0; //已标记,不更新
low[2]=map[1][2]=4; //比5小,不更新
low[3]=2; //已标记,不更新
low[4]=map[1][4]=3; //比1大,更新后为:low[4]=map[3][4]=1;
low[5]=map[1][5]=MaxInt;//无法直达,不更新
low[6]=map[1][6]=MaxInt;//比2大,更新后为:low[6]=map[3][6]=2;
相关文章推荐
- 5.4.1 最小生成树(Minimum-Spanning-Tree,MST)
- 最小生成树 (Minimum Spanning Tree,MST) --- Prim算法
- 最小生成树(MST,minimum spanning tree)
- 最小生成树 (Minimum Spanning Tree,MST) --- Kruskal算法
- 最小生成树(Minimum Spanning Tree)
- HDU 4408 - Minimum Spanning Tree(最小生成树计数)
- 【Educational Codeforces Round 3 E】【树链剖分】Minimum spanning tree for each edge 图构最小生成树,生成树必须包含第i条边
- LA 3662 Another Minimum Spanning Tree (曼哈顿距离最小生成树 模板)
- 【HDU 4408】Minimum Spanning Tree(最小生成树计数)
- UVALive 3662 Another Minimum Spanning Tree 曼哈顿最小距离生成树
- hdoj 4408 Minimum Spanning Tree 求最小生成树的数目
- 最小生成树(minimum spanning tree)问题的两种解法
- Union Find 在 最小生成树(Minimum Spanning Tree)中的实现
- Geeks : Kruskal’s Minimum Spanning Tree Algorithm 最小生成树
- 最小生成树(Minimum Spanning Tree)
- 最小生成树(minimum spanning tree)
- 分布式系统下的最小生成树算法(Distributed Minimum Spanning Tree)
- Another Minimum Spanning Tree - UVaLive 3662 曼哈顿最小生成树
- HDU 4408 Minimum Spanning Tree 最小生成树计数
- 第十三章 ALDS1_12_A:Minimum Spanning Tree 最小生成树