第9部分图36233课程.pptVIP

  • 16
  • 0
  • 约 115页
  • 2016-12-04 发布于江苏
  • 举报
Prim()算法中有两重for循环,所以时间复杂度为O(n2)。 9.4.5 克鲁斯卡尔算法 克鲁斯卡尔(Kruskal)算法是一种按权值的递增次序选择合适的边来构造最小生成树的方法。假设G=(V,E)是一个具有n个顶点的带权连通无向图,T=(U,TE)是G的最小生成树,则构造最小生成树的步骤如下: (1)置U的初值等于V(即包含有G中的全部顶点),TE的初值为空集(即图T中每一个顶点都构成一个分量)。 (2)将图G中的边按权值从小到大的顺序依次选取:若选取的边未使生成树T形成回路,则加入TE;否则舍弃,直到TE中包含(n-1)条边为止。 克鲁斯卡尔算法求解最小生成树的过程 为了简便,在实现克鲁斯卡尔算法Kruskal()时,参数E存放图G中的所有边,假设它们是按权值从小到大的顺序排列的。n为图G的顶点个数,e为图G的边数。 typedef struct { int u; /*边的起始顶点*/ int v; /*边的终止顶点*/ int w; /*边的权值*/ } Edge; Edge E[e]={ { 0,2,1}, {3,5,2}, {1,4,3}, {2,5,4}, {0,3,5}, {2,3,5},

文档评论(0)

1亿VIP精品文档

相关文档