1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据结构-

在Prime算法中,图采用邻接矩阵存储,所构造的最小生成树用一维数组存储其n-1条边,每条边的存储结构描述: typedef struct MSTEdge { int vex1, vex2 ; /* 边所依附的图中两个顶点 */ WeightType weight ; /* 边的权值 */ }MSTEdge ; 算法实现 #define INFINITY MAX_VAL /* 最大值 */ MSTEdge *Prim_MST(AdjGraph *G , int u) /* 从第u个顶点开始构造图G的最小生成树 */ { MSTEdge TE[] ; // 存放最小生成树n-1条边的数组指针 嫩抡钳穿佩特艘疫菜尉钓皿告沁晦狂忆枉匝予乾品句傲鹿缄烃官地抉撬恤数据结构-图数据结构-图 int j , k , v , min ; for (j=0; jG-vexnum; j++) { closedge[j].adjvex=u ; closedge[j].lowcost=G-adj[j][u] ; } /* 初始化数组closedge[n] */ closedge[u].lowcost=0 ; /* 初始时置U={u} */ TE=(MSTEdge *)malloc((G-vexnum-1)*sizeof(MSTEdge)) ; for (j=0; jG-vexnum-1; j++) { min= INFINITY ; for (v=0; vG-vexnum; v++) if (closedge[v].lowcost!=0 closedge[v].Lowcostmin) 抉厅嚣斡掐獭焦南头福劫刁铆暇钉翻监友驻叛藐镐悍后绸戳龟盆田棉端疽数据结构-图数据结构-图 { min=closedge[v].lowcost ; k=v ; } TE[j].vex1=closedge[k].adjvex ; TE[j].vex2=k ; TE[j].weight=closedge[k].lowcost ; closedge[k].lowcost=0 ; /* 将顶点k并入U中 */ for (v=0; vG-vexnum; v++) if (G-adj[v][k]closedge[v]. lowcost) { closedge[v].lowcost= G-adj[v][k] ; closedge[v].adjvex=k ; } /* 修改数组closedge[n]的各个元素的值 */ } return(TE) ; } /* 求最小生成树的Prime算法 */ 胸诉峻免蒜恼救确遇附责佑淡习鹏茎棱葬抛莫旧收糊考构胃功赛睡欧防峨数据结构-图数据结构-图 i closedge adjvex lwcost adjvex lwcost adjvex lwcost adjvex lwcost adjvex lwcost 0 v2 8 v4 4 v4 4 v4 0 v4 0 1 2 v2 7 v2 7 v5 6 v5 6 v5 0 3 v2 5 v2 0 v2 0 v2 0 v2 0 4 v2 12 v4 3 v4 0 v4 0 v4 0 U {v2} {v2, v4} {v2, v4 , v5} {v2, v4 , v5 , v1} {v2, v4, v5 , v1 , v3} V-U {v1, v3, v4, v5} {v1, v3, v5} {v1, v3} {v3} {} K 3 4 0 2 表7-1 构造过程中辅组数组closedge中各分量的值的变化情况 酵多镍私垃瘴防函托栈传辛躇啄惫裕厚戈锈谓仆血喘厦优冕荔硕薯亲占函数据结构-图数据结构-图 算法分析:设带权连通图有n个顶点,则算法的主要执行是二重循环: 求closedge中权值最小的边,频度为n-1; 修改closedge数组,频度为n 。因此,整个算法的时间复杂度是O(n2),与边的数目无关。 各缚聪讥蛙梯轰国钝霓味善服耽闯竞羔映运号菜珠叮著寝量腺傀混惮揪沼数据结构-图数据结构-图 7.5.2 克鲁斯卡尔(Kruskal)算法 1 算法思想 设G=(V, E)是具有n个顶点的连通网,T=(U, TE)是其最小生成树。初值:U=V,TE={} 。 对G中的边按权值大小从小到大依次选取。 ⑴ 选取权值最小的边(vi,vj),若边(vi,vj)加入到TE后形成回路,则舍弃该边(边(vi,vj) ;否则,将该边并入到TE中,

文档评论(0)

dd545454 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档