昨天刚刚把prim算法复习了一遍,现在把将自己的理解与总结写出来分享下,prim算法的思想通俗的讲就是:将连通网N={V,E}的顶点分为最小生成树集合U与非最小生成树集合V-U,然后从U中的顶点到V-U中的顶点的边中选出一条权值最小的边,然后把这条边对应的另一个顶点也加入最小生成树集合U中,反复的循环下去。。。
下面就一起看看prim算法的代码
1.用邻接矩阵存储图
public class Mgraph {
int Max = Integer.MAX_VALUE; //代表两个顶点之间直接连通的边
String[] vetxs = {"V0","V1","V2","V3","V4","V5","V6","V7","V8"};
int weight[][]={ //邻接矩阵的权值
{0,10,Max,Max,Max,11,Max,Max,Max},
{10,0,18,Max,Max,Max,16,Max,12},
{Max,Max,0,22,Max,Max,Max,Max,8},
{Max,Max,22,0,20,Max,Max,16,21},
{Max,Max,Max,20,0,26,Max,7,Max},
{11,Max,Max,Max,26,0,17,Max,Max},
{Max,16,Max,Max,Max,17,0,19,Max},
{Max,Max,Max,16,7,Max,19,0,Max},
{Max,12,8,21,Max,Max,Max,Max,0}
};
int numVetxs=9; //顶点个数
int numEdges=15; //边的个数
}