图论专项菜鸡入门(三):树的初步入门+最小生成树

今天是集训第二部分的第二天,继续搞图论,树理解多少写多少==然后一直补充吧==原谅我毕竟我是个菜鸡

一.树

树,简单来讲,树就是任意两个顶点间有且只有一条路径(只要没有回路连通图就是树).不同于现实中的树的地方就是,它是倒着来的,也就是说,它的根节点在上,而叶什么的依次向下展开.

二.无向图的最小生成树

最小生成树实现有两种算法:Prim算法和Kruskal算法
个人感觉,Prim算法难理解但是好实现,Kruskal算法利用贪心的思想很容易理解但是写代码的时候需要用到并查集.看个人还有结合具体题目进行选择
1.Prim算法
简单一点来说算法步骤就是
a.在一个图中,我们先任意选择一点作为起始点
b.通过这个点,找到与她相邻的边,选择一条最小的边进行相连,将两点相连
c.再次以两点为基础,找到他俩距离最短的边,再将这个点相连
d.重复此步骤,直到所有的点都连在了一起,将所有的权值相加则为最小生成树
2.Kruskal算法
这个算法则是利用了贪心的思想
我们现将所有的权值按从小到大排序
然后我们从小的边开始遍历,如果将这条边加入进去,不会连成一个环,则就能生成树
然后 一个一个来直到所有的点都连起来还不成一个环,就能得到最小生成树 

猜你喜欢

转载自blog.csdn.net/AC_Meiko/article/details/76744941