首先应该理解kruskal算法思想:在连通图N=(V,{E})上,先建立一个初始状态为包含n个顶点而无边的非连通分图T=(V,{}),在边集E中找到权值最小的边,若此边的两个顶点落在T的不同的连通分量上,则将边加入T中,否则舍弃它而选择下一条代价小的边。以此类推,直到所有的顶点都落在同一连通分量上即可。给出源码: 1 #include"iostream" 2 using namespace std; 3 4 #define MAX 1000 5 6 typedef struct ArcCell 7 { 8 double adj; 9 int *info; ... Read More
posted @ 2012-12-09 17:21
paradise in hell
Views(249)
Comments(0)
Diggs(0)
数据结构上机要求用prim算法求最小生成树。 首先应该明白prim算法思想,即在一个网状图N=(V,{E})中,假设M是图N最小生成树边的集合。再设有U和V两个点集合,从U={u0}(u0∈V),M={}开始,进入循环操作:找出从点集U到点集V-U代价最小的边(u0,v0)u0∈U,v0∈V-U.并把边并入边集M中,v0也并入点集U中,直到U=V为止。此时M一定要有n-1条边(假设有n个顶点),Min=(U,{M})即为N的最小生成树。 该算法用到了最小生成树的一个MST性质:假设N=(V,{E})是一个连通网,U是点集V的一个非空子集。若(u,v)是一条最小权值边,其中u∈U,v∈V,则必. Read More
posted @ 2012-12-09 16:31
paradise in hell
Views(466)
Comments(0)
Diggs(0)

浙公网安备 33010602011771号