最小生成树,Kruskal
首先看这个东西,最小生成树,重点自然在
- 最小
- 树
这两个东西上了,那么最小生成树的定义是怎么样的?
最小生成树是图论的东西,那它根图自然是密不可分的了
图有边权,最小生成树则是生成把所有点连起构成的图的边权最小.
而还得注意它是树所以其无环,而Kruskal的重心就在这;
首先随便搞一个图吧
PS:树无向!只不过顺手画上了
抱歉,有点草了…
数据:点1 点2 权值
1 3 2
2 1 1
2 4 5
(3无描述)
4 1 3
4 3 6
5 2 7//图上忘画了-_-!
上面就是我们伟大的测试数据了,而Kruskal算法根据权值最小排列就是这样了
2 1 1
1 3 2
4 1 3
2 4 5
4 3 6
5 2 7
然后依照当前顺序重新构图,当成环时跳过即可,而连接所有点就是n-1条边(n:点数)即搞计数器如果计数器与n相同退出就好了。
演示:原图1:
2:
2-1
1-3
4-1
2-4!!!成环排掉,这时计数器不加
然后下一步
4-3同上
5-2
然后就够了,这样就好了,总权值:13
就这样了,,