Prim算法思想
假设G=(V,E)是一个具有n个顶点的连通网,T=(U,TE)是G的最小生成树,其中,U是T的顶点集,TE是T的边集。Prim算法的基本思想是:令集合U的初值为U={v0}(v0是从V的任取的一个顶点,也就是说构造最小生成树时从v0开始),集合TE的初值为TE={}。然后只要U是V的真子集(即U∈V),就从哪些其一个端点已在T中,另一个端点仍在T外的所有边中,找一条最短(即权值最小)边,假定为(vi,vj),其中vi∈U,vj∈(V-U),并把该边(vi,vj)和顶点vj分别并入T的边集TE和顶点集U,如此进行下去,每次往生成树里并入一个顶点和一条边,直到n-1次后就把所有n个顶点都并入到生成树T的顶点集中,此时U=V,TE中含有n-1条边,T就是最后得到的最小生成树。
显然,Prim算法的关键之处是:每次如何从生成树T中到T外的所有边中,找出一条最短边。