一、最小生成树算法:
1.Prime(普里姆)算法
对于一个带权图,指定一个顶点(这个顶点可以任意指定),加入集合T(T初始为空)。选择与T相关联的权值最小的边(与T相关联的权值最小的边表示和T中任一顶点关联且权值最小),且不构成回路。选出这条边和边相关联的另一个顶点,将这个顶点加入T之后再次重复上述过程,直到所有顶点都加入T,此时所得到的树就是一颗最小生成树。
2.Kruskal(克鲁斯卡尔)算法
对于一个带权图,将其边按照权值进行排序。选择权值最小的边和相关联的两个顶点,每次选择边和顶点要注意保证所选择的边和顶点不构成回路,直到所有顶点连通构成一颗树为止。此时得到的树就是最小生成树
总结:Prime算法是从一个顶点出发,不断选择权值小的边往外延伸,直到成为一颗树为止;Kruskal算法是从边的角度,每次选择权值最小的边,最终使得所有顶点连通成为一颗树。两种算法有个共同点,就是在选择权值最小的边时都要注意已经选择出的顶点和边不能构成回路。