1、Kruskal算法
- 对图的边集E中的边进行从小到大的排序
- 每次从中选择权值最小的边(u,v),判断两个端点u、v是否属于同一棵树(方法是调用一个函数,该函数接收一个顶点,返回包含该顶点的一个代表元素,如果是属于同一个树,则返回的代表元素相同)。如果是,则放弃该边(因为会形成回路,这就是判断是否有回路的方法);否则就把该边加入集合A(最后是一个最小生成树)中,并且合并端点u和v所在的集合(树)
- 当集合A中边的个数达到n-1时,算法结束。(n是图的顶点个数)
2、Prim算法
- 该算法是从一个顶点开始生成树,每次生成的边都是与树相连的边中权值最小的安全边(不会形成回路的边,即边的另一个端点原来不在生成树中),直到生成树包含所有的顶点