数据结构(C++语言版).pptVIP

  1. 1、本文档共551页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

Prim算法的符号表示(1)U={u0},T={};(2)while(U≠V)do(u,v)=min{wuv;u∈U,v∈V-U}T=T+{(u,v)}U=U+{v}(3)结束具体的操作示意图Prim算法的操作示意图动态过程Prim算法实现动态过程lowcostClosevertex从V0出发用Prim算法求最小生成树的过程i=1i=2i=3i=4i=5i=60123456kmincost05060∞∞∞∞00000000060∞∞65400001100150440006070∞500000414035000523042000034133005204200530003413364200450000006413324500000000064133#defineINFINITY30000//定义一个权值的最大值#defineMaxVertexNum30//最大顶点数为30typedefstruct{intadjvertex;//某顶点与已构造好的部分生成树的顶点之间权值最小的顶点intlowcost;//某顶点与已构造好的部分生成树的顶点之间的最小权值}ClosEdge;//定义普里姆算法求最小生成树时的辅助数组元素类型ClassMGragh{public:MGragh(){}//缺省构造函数voidCreatGraph();//建立图的存储矩阵成员函数voidMGragh::BFStraverse();//广度遍历图voidMGragh::BFS(intv);//从顶点v开始广度遍历图voidMiniSpanTree_PRIM(intu);Prim算法的C++实现:private:VertexTypevertexs[MaxVertexNum];//顶点表Edgetypearcs[MaxVertexNum][MaxVertexNum];//邻接矩阵,即边表intvertexNum,edgeNum;//顶点数和边数ClosEdgeclose_edge[MaxVertexNum];//存放最小生成树数组intvisited[MaxVertexNum];//访问标志数组};Prim算法的C++实现://MGragh是以邻接矩阵存储的图类voidMGragh::MiniSpanTree_PRIM(intu){//从第u个顶点出发构造图G的最小生成树,最小生成树顶点信息存放在数组close_edge中inti,j,w,k;for(i=0;ivertexNum;i++)//辅助数组初始化if(i!=u){close_edge[i].adjvertex=u;close_edge[i].lowcost=arcs[u][i];}close_edge[u].lowcost=0;//初始,U={u}for(i=0;ivertexNum-1;i++)//选择其余的G.vertexNum-1个顶点{w=INFINITY;for(j=0;jvertexNum;j++)//在辅助数组close_edge中选择权值最小的顶点if(close_edge[j].lowcost!=0close_edge[j].lowcostw){w=close_edge[j].lowcost;k=j;}//求出生成树的下一个顶点kclose_edge[k].lowcost=0;//第k个顶点并入U集for(j=0;jvertexNum;j++)//新顶点并入U后,修改辅助数组if(arcs[k][j]close_edge[j].lowcost){close_edge[j].adjvertex=k;close_edge[j].lowcost=arcs[k][j];

文档评论(0)

139****1983 + 关注
实名认证
文档贡献者

副教授、一级建造师持证人

一线教师。

领域认证该用户于2023年06月21日上传了副教授、一级建造师

1亿VIP精品文档

相关文档