最小生成树算法讲解ppt课件

上传人:29 文档编号:168507775 上传时间:2022-11-10 格式:PPT 页数:32 大小:505.50KB
返回 下载 相关 举报
最小生成树算法讲解ppt课件_第1页
第1页 / 共32页
最小生成树算法讲解ppt课件_第2页
第2页 / 共32页
最小生成树算法讲解ppt课件_第3页
第3页 / 共32页
点击查看更多>>
资源描述
西安电子科技大学软件学院 -School of Computer Software,Xidian University,China 1采用PP管及配件:根据给水设计图配置好PP管及配件,用管件在管材垂直角切断管材,边剪边旋转,以保证切口面的圆度,保持熔接部位干净无污物单元实验五单元实验五-最小生成树最小生成树西安电子科技大学软件学院 -School of Computer Software,Xidian University,China 2采用PP管及配件:根据给水设计图配置好PP管及配件,用管件在管材垂直角切断管材,边剪边旋转,以保证切口面的圆度,保持熔接部位干净无污物生成树的概念q生成树生成树一个连通图的生成树是一个极小连通子图,它含有图中全一个连通图的生成树是一个极小连通子图,它含有图中全部顶点,但只有足以构成一棵树的部顶点,但只有足以构成一棵树的n-1n-1条边。条边。生成树不唯一生成树不唯一V3V2V4V1V6V5V3V2V4V1V6V5V3V2V4V1V6V5V3V2V4V1V6V5生成树生成树西安电子科技大学软件学院 -School of Computer Software,Xidian University,China 3采用PP管及配件:根据给水设计图配置好PP管及配件,用管件在管材垂直角切断管材,边剪边旋转,以保证切口面的圆度,保持熔接部位干净无污物最小代价生成树q生成树的代价等于其边上的权值之和。生成树的代价等于其边上的权值之和。V4V1V3V2V6V56512665534V4V1V3V2V6V561654V4V1V3V2V6V512534西安电子科技大学软件学院 -School of Computer Software,Xidian University,China 4采用PP管及配件:根据给水设计图配置好PP管及配件,用管件在管材垂直角切断管材,边剪边旋转,以保证切口面的圆度,保持熔接部位干净无污物最小代价生成树F两种常用的构造最小生成树的方法:两种常用的构造最小生成树的方法:普里姆算法普里姆算法克鲁斯卡尔算法克鲁斯卡尔算法西安电子科技大学软件学院 -School of Computer Software,Xidian University,China 5采用PP管及配件:根据给水设计图配置好PP管及配件,用管件在管材垂直角切断管材,边剪边旋转,以保证切口面的圆度,保持熔接部位干净无污物q假设假设N=(VN=(V,E)E)是连通网,是连通网,TETE是是N N上最小生成树中边的集合。上最小生成树中边的集合。q算法从算法从U=uU=u0 0(u(u0 0V)V),TE=TE=开始,重复执行下述操作:开始,重复执行下述操作:F在所有在所有uUuU,vV-UvV-U的边的边(u(u,v)v)中找一条代价最小的边中找一条代价最小的边(u(u0 0,v,v0 0),),将将其并入集合其并入集合TETE,同时将,同时将v v0 0并入并入U U集合。集合。F当当U=VU=V则结束,此时则结束,此时TETE中必有中必有n-1n-1条边,则条边,则T=(VT=(V,TE)TE)为为N的最小的最小生成树。生成树。q普里姆算法构造最小生成树的过程是从一个顶点普里姆算法构造最小生成树的过程是从一个顶点U=uU=u0 0 作作初态,不断寻找与初态,不断寻找与U U中顶点相邻且代价最小的边的另一个顶中顶点相邻且代价最小的边的另一个顶点,扩充到点,扩充到U U集合直至集合直至U=VU=V为止。为止。普里姆(Prim)算法西安电子科技大学软件学院 -School of Computer Software,Xidian University,China 6采用PP管及配件:根据给水设计图配置好PP管及配件,用管件在管材垂直角切断管材,边剪边旋转,以保证切口面的圆度,保持熔接部位干净无污物V4V1V3V2V6V56512665534V4V1V3V2V6V512534UV-UV1 V2,V3,V4,V5,V6 步骤步骤(0)V1,V3 V2 ,V4,V5,V6(1)V1,V3,V6 V2 ,V4,V5(2)V1,V3,V6,V4 V2,V5(3)V1,V3,V6,V4,V2 V5(4)V1,V3,V6,V4,V2,V5 (5)最小代价生成树q普里姆算法求最小生成树:从生成树中只有一个顶点开始,到顶点全部进入生成树为止西安电子科技大学软件学院 -School of Computer Software,Xidian University,China 7采用PP管及配件:根据给水设计图配置好PP管及配件,用管件在管材垂直角切断管材,边剪边旋转,以保证切口面的圆度,保持熔接部位干净无污物V4V1V3V2V6V5165V1V31V1 V2,V3,V4,V5,V6 步骤步骤(0)V1,V3 V2 ,V4,V5,V6(1)UV-Uq普里姆算法求最小生成树:从生成树中只有一个顶点开始,到顶点全部进入生成树为止最小代价生成树西安电子科技大学软件学院 -School of Computer Software,Xidian University,China 8采用PP管及配件:根据给水设计图配置好PP管及配件,用管件在管材垂直角切断管材,边剪边旋转,以保证切口面的圆度,保持熔接部位干净无污物V4V1V3V2V6V565V1V31V1 V2,V3,V4,V5,V6 步骤步骤(0)V1,V3 V2 ,V4,V5,V6(1)V6V1,V3,V6 V2 ,V4,V5(2)46554UV-Uq普里姆算法求最小生成树:从生成树中只有一个顶点开始,到顶点全部进入生成树为止最小代价生成树西安电子科技大学软件学院 -School of Computer Software,Xidian University,China 9采用PP管及配件:根据给水设计图配置好PP管及配件,用管件在管材垂直角切断管材,边剪边旋转,以保证切口面的圆度,保持熔接部位干净无污物V4V1V3V2V6V565V4V1V31V1 V2,V3,V4,V5,V6 步骤步骤(0)V1,V3 V2 ,V4,V5,V6(1)V6V1,V3,V6 V2 ,V4,V5(2)4655V1,V3,V6,V4 V2,V5(3)262UV-Uq普里姆算法求最小生成树:从生成树中只有一个顶点开始,到顶点全部进入生成树为止最小代价生成树西安电子科技大学软件学院 -School of Computer Software,Xidian University,China 10采用PP管及配件:根据给水设计图配置好PP管及配件,用管件在管材垂直角切断管材,边剪边旋转,以保证切口面的圆度,保持熔接部位干净无污物V4V1V3V2V6V56V4V1V31V1 V2,V3,V4,V5,V6 步骤步骤(0)V1,V3 V2 ,V4,V5,V6(1)V2V6V1,V3,V6 V2 ,V4,V5(2)465V1,V3,V6,V4 V2,V5(3)62V1,V3,V6,V4,V2 V5(4)5UV-Uq普里姆算法求最小生成树:从生成树中只有一个顶点开始,到顶点全部进入生成树为止最小代价生成树西安电子科技大学软件学院 -School of Computer Software,Xidian University,China 11采用PP管及配件:根据给水设计图配置好PP管及配件,用管件在管材垂直角切断管材,边剪边旋转,以保证切口面的圆度,保持熔接部位干净无污物V4V1V3V2V6V5V4V1V31V1 V2,V3,V4,V5,V6 步骤步骤(0)V1,V3 V2 ,V4,V5,V6(1)V2V6V5V1,V3,V6 V2 ,V4,V5(2)46V1,V3,V6,V4 V2,V5(3)62V1,V3,V6,V4,V2 V5(4)5V1,V3,V6,V4,V2,V5 (5)33UV-Uq普里姆算法求最小生成树:从生成树中只有一个顶点开始,到顶点全部进入生成树为止最小代价生成树西安电子科技大学软件学院 -School of Computer Software,Xidian University,China 12采用PP管及配件:根据给水设计图配置好PP管及配件,用管件在管材垂直角切断管材,边剪边旋转,以保证切口面的圆度,保持熔接部位干净无污物q普里姆算法求最小生成树:从生成树中只有一个顶点开始,到顶点全部进入生成树为止V4V1V3V2V6V5V4V1V31V1 V2,V3,V4,V5,V6 步骤步骤(0)V1,V3 V2 ,V4,V5,V6(1)V2V6V5V1,V3,V6 V2 ,V4,V5(2)4V1,V3,V6,V4 V2,V5(3)2V1,V3,V6,V4,V2 V5(4)5V1,V3,V6,V4,V2,V5 (5)3UV-U最小代价生成树西安电子科技大学软件学院 -School of Computer Software,Xidian University,China 13采用PP管及配件:根据给水设计图配置好PP管及配件,用管件在管材垂直角切断管材,边剪边旋转,以保证切口面的圆度,保持熔接部位干净无污物普里姆(Prim)算法生成树中只放置一个顶点生成树中只放置一个顶点在关联生成树顶点的边中(即边的在关联生成树顶点的边中(即边的一个顶点在生成树中,另一个顶点不在)一个顶点在生成树中,另一个顶点不在)取权值最小者取权值最小者将选中的边加入生成树,将选中的边加入生成树,同时将该边的关联顶点加入生成树中同时将该边的关联顶点加入生成树中生成树中顶点数小于生成树中顶点数小于n?是否结束结束开始开始西安电子科技大学软件学院 -School of Computer Software,Xidian University,China 14采用PP管及配件:根据给水设计图配置好PP管及配件,用管件在管材垂直角切断管材,边剪边旋转,以保证切口面的圆度,保持熔接部位干净无污物基本要求基本要求l从键盘(或数据文件)输入图的信息,用普里姆算法求解从键盘(或数据文件)输入图的信息,用普里姆算法求解给定无向连通图的最小生成树,最后输出最小生成树中的给定无向连通图的最小生成树,最后输出最小生成树中的权值和所有的边,图的存储结构自行设定。权值和所有的边,图的存储结构自行设定。F例如例如 下图的输出为下图的输出为weight:15(v1,v3)(v3,v6)(v6,v4)(v3,v2)(v2,v5)或者或者(1,3)(3,6)(6,4)(3,2)(2,5)西安电子科技大学软件学院 -School of Computer Software,Xidian University,China 15采用PP管及配件:根据给水设计图配置好PP管及配件,用管件在管材垂直角切断管材,边剪边旋转,以保证切口面的圆度,保持熔接部位干净无污物q顶点集合如何表示?顶点集合如何表示?q最小边如何选择?最小边如何选择?q一个顶点加入一个顶点加入U U集合(生成树中)集合(生成树中)如何表示?如何表示?struct int adjvex;double lowcost;closedgeMAX_VERTEX_NUM;closedgei.adjvex=kclosedgei.lowcost顶点顶点i与顶点与顶点k邻接邻接顶点顶点k已经在已经在U集合中集合中顶点顶点i加入加入U集合时集合时普里姆算法的实现=0adjvexlowcostv16v11v15v1v2,v3,v4,v5,v63v2v3v4v5v6UV-Uk 顶点顶点iclosedgeclosedge2.adjvex=1 .lowcost=6closedge3.adjvex=1 .lowcost=1closedge4.adjvex=1 .lowcost=5V4V1V3V2V6V5165F当当U集合中加入一个新顶点时,集合中加入一个新顶点时,V-U集合中的顶点集合中的顶点到到U的最小代价边可能会更新的最小代价边可能会更新V4V1V3V2V6V56512665534U集合的成员:集合的成员:V-U集合的成员:集合的成员:closedge5.adjvex=1 .lowcost=closedge6.adjvex=1 .lowcost=adjvexlowcostv16v11v15v1v2,v3,v4,v5,v63adjvexlowcostv350v15v36v34v1,v3v2,v4,v5,v66v2v3v4v5v6UV-Uk 顶点顶点iclosedgeV4V1V3V2V6V55564U集合的成员:集合的成员:V-U集合的成员:集合的成员:F当当U集合中加入一个新顶点时,集合中加入一个新顶点时,V-U集合中的顶点集合中的顶点到到U的最小代价边可能会更新的最小代价边可能会更新V4V1V3V2V6V56512665534closedge2.adjvex=3 .lowcost=5closedge4.adjvex=1 .lowcost=5closedge5.adjvex=3 .lowcost=6closedge6.adjvex=3 .lowcost=4adjvexlowcostv16v11v15v1v2,v3,v4,v5,v63adjvexlowcostv350v15v36v34v1,v3v2,v4,v5,v66adjvexlowcostv350v62v360v1,v3,v6v2,v4,v5 4v2v3v4v5v6UV-Uk 顶点顶点iclosedgeV4V1V3V2V6V5562V4V1V3V2V6V56512665534F当当U集合中加入一个新顶点时,集合中加入一个新顶点时,V-U集合中的顶点集合中的顶点到到U的最小代价边可能会更新的最小代价边可能会更新U集合的成员:集合的成员:V-U集合的成员:集合的成员:closedge2.adjvex=3 .lowcost=5closedge4.adjvex=6 .lowcost=2closedge5.adjvex=3 .lowcost=6adjvexlowcostv16v11v15v1v2,v3,v4,v5,v63adjvexlowcostv350v15v36v34v1,v3v2,v4,v5,v66adjvexlowcostv350v62v360v1,v3,v6v2,v4,v5 4adjvexlowcostv3500v360v1,v3,v6,v4v2,v5 v2v3v4v5v6UV-Uk 顶点顶点iclosedge2V4V1V3V2V6V556F当当U集合中加入一个新顶点时,集合中加入一个新顶点时,V-U集合中的顶点集合中的顶点到到U的最小代价边可能会更新的最小代价边可能会更新U集合的成员:集合的成员:V-U集合的成员:集合的成员:V4V1V3V2V6V56512665534closedge2.adjvex=3 .lowcost=5closedge5.adjvex=3 .lowcost=6adjvexlowcostv16v11v15v1v2,v3,v4,v5,v63adjvexlowcostv350v15v36v34v1,v3v2,v4,v5,v66adjvexlowcostv350v62v360v1,v3,v6v2,v4,v5 4adjvexlowcostv3500v360v1,v3,v6,v4v2,v5 2adjvexlowcost000v230v1,v3,v6,v4,v2v5 v2v3v4v5v6UV-Uk 顶点顶点iclosedge5V4V1V3V2V6V53F当当U集合中加入一个新顶点时,集合中加入一个新顶点时,V-U集合中的顶点集合中的顶点到到U的最小代价边可能会更新的最小代价边可能会更新V4V1V3V2V6V56512665534U集合的成员:集合的成员:V-U集合的成员:集合的成员:adjvexlowcostv16v11v15v1v2,v3,v4,v5,v63adjvexlowcostv350v15v36v34v1,v3v2,v4,v5,v66adjvexlowcostv350v62v360v1,v3,v6v2,v4,v5 4adjvexlowcostv3500v360v1,v3,v6,v4v2,v5 2v2v3v4v5v6UV-Uk 顶点顶点iclosedgeV4V1V3V2V6V5adjvexlowcost00000v1,v3,v6,v4,v2,v5adjvexlowcost000v230v1,v3,v6,v4,v2v5 514253U集合的成员:集合的成员:V-U集合的成员:集合的成员:V4V1V3V2V6V56512665534西安电子科技大学软件学院 -School of Computer Software,Xidian University,China 22采用PP管及配件:根据给水设计图配置好PP管及配件,用管件在管材垂直角切断管材,边剪边旋转,以保证切口面的圆度,保持熔接部位干净无污物普里姆算法求最小生成树普里姆算法求最小生成树61565315564552366426123456123456 图采用邻接矩阵表示G.arcs=#define MaxVnum 50typedef int AdjMatrixMaxVnumMaxVnum;/doubletypedef struct int vexnum,arcnum;/顶点数、边数顶点数、边数 AdjMatrix arcs;/邻接矩阵邻接矩阵Graph;Graph G;void MiniSpanTree_PRIM(Graph G,int u)/用普里姆算法从顶点用普里姆算法从顶点u出发构造出发构造G的最小生成树的最小生成树 for(j=0;j G.vexnum;+j)/辅助数组初始化辅助数组初始化 if(j!=u)closedgej=u,G.arcsuj;struct int adjvex;double lowcost;closedgeMAX_VERTEX_NUM;closedgeu.lowcost=0;/初始初始,U=u,U=u for(i=1;i G.vexnum;+i)k=minimum(closedge);/求生成树的下一个顶点求生成树的下一个顶点k k cout closedgek.adjvex G.vexsk;closedgek.lowcost=0;for(j=0;j G.vexnum;+j)if(G.arcskj.adj 0,vi v-u cout (k,closedgek.adjvex );/输出生成树的边输出生成树的边 closedgek.lowcost=0;/顶点顶点k k并入并入U U集合集合 for(j=0;j G.vexnum;+j)if(G.arcskj closedgej.lowcost)closedgej.adjvex=k,closedgej.Lowcost=G.arcskj;算法的时间复杂度为:算法的时间复杂度为:O(n2)closedgej.adjvex=u;closedgej.lowcost=G.arcsuj;西安电子科技大学软件学院 -School of Computer Software,Xidian University,China 24采用PP管及配件:根据给水设计图配置好PP管及配件,用管件在管材垂直角切断管材,边剪边旋转,以保证切口面的圆度,保持熔接部位干净无污物选做内容选做内容l从键盘输入(或从文件读入)图的信息,用克鲁从键盘输入(或从文件读入)图的信息,用克鲁斯卡尔算法求解给定无向连通图的最小生成树,斯卡尔算法求解给定无向连通图的最小生成树,最后输出最小生成树中的权值和所有的边。最后输出最小生成树中的权值和所有的边。西安电子科技大学软件学院 -School of Computer Software,Xidian University,China 25采用PP管及配件:根据给水设计图配置好PP管及配件,用管件在管材垂直角切断管材,边剪边旋转,以保证切口面的圆度,保持熔接部位干净无污物克鲁斯卡尔(Kruskal)算法q假设连通网假设连通网N=(VN=(V,E)E),则令最小生成树的初始状,则令最小生成树的初始状态为只有态为只有n n个顶点而无边的非连通图个顶点而无边的非连通图T=(VT=(V,),图中每个顶点自成一个连通分量。图中每个顶点自成一个连通分量。q在在E E中选择代价最小的边,若该边依附的顶点落在中选择代价最小的边,若该边依附的顶点落在T T中不同的连通分量上,则将此边加入到中不同的连通分量上,则将此边加入到T T中,否中,否则舍去此边而选择下一条代价最小的边。依次类则舍去此边而选择下一条代价最小的边。依次类推,直至推,直至T T中所有顶点都在同一连通分量上为止。中所有顶点都在同一连通分量上为止。西安电子科技大学软件学院 -School of Computer Software,Xidian University,China 26采用PP管及配件:根据给水设计图配置好PP管及配件,用管件在管材垂直角切断管材,边剪边旋转,以保证切口面的圆度,保持熔接部位干净无污物q克鲁斯卡尔算法求最小生成树克鲁斯卡尔算法求最小生成树V4V1V3V2V6V56512665534V4V1V3V2V6V51234最小代价生成树西安电子科技大学软件学院 -School of Computer Software,Xidian University,China 27采用PP管及配件:根据给水设计图配置好PP管及配件,用管件在管材垂直角切断管材,边剪边旋转,以保证切口面的圆度,保持熔接部位干净无污物q克鲁斯卡尔算法求最小生成树克鲁斯卡尔算法求最小生成树V4V1V3V2V6V56512665534V4V1V3V2V6V512345V V3 3、V V4 4依附在同依附在同一个连通分量一个连通分量最小代价生成树西安电子科技大学软件学院 -School of Computer Software,Xidian University,China 28采用PP管及配件:根据给水设计图配置好PP管及配件,用管件在管材垂直角切断管材,边剪边旋转,以保证切口面的圆度,保持熔接部位干净无污物q克鲁斯卡尔算法求最小生成树克鲁斯卡尔算法求最小生成树V4V1V3V2V6V56512665534V4V1V3V2V6V51234V V1 1、V V4 4依附在同依附在同一个连通分量一个连通分量5最小代价生成树西安电子科技大学软件学院 -School of Computer Software,Xidian University,China 29采用PP管及配件:根据给水设计图配置好PP管及配件,用管件在管材垂直角切断管材,边剪边旋转,以保证切口面的圆度,保持熔接部位干净无污物q克鲁斯卡尔算法求最小生成树克鲁斯卡尔算法求最小生成树V4V1V3V2V6V56512665534V4V1V3V2V6V512534最小代价生成树西安电子科技大学软件学院 -School of Computer Software,Xidian University,China 30采用PP管及配件:根据给水设计图配置好PP管及配件,用管件在管材垂直角切断管材,边剪边旋转,以保证切口面的圆度,保持熔接部位干净无污物克鲁斯卡尔(Kruskal)算法否将堆顶的边加入生成树后将堆顶的边加入生成树后是否形成回路是否形成回路?在生成树中放置在生成树中放置n个孤立顶点个孤立顶点根据边上的权值建小顶堆根据边上的权值建小顶堆是将该边加入生成树中将该边加入生成树中去掉堆顶元素,去掉堆顶元素,剩余元素重新建堆剩余元素重新建堆生成树中边数小于生成树中边数小于n-1?是否结束结束开始开始西安电子科技大学软件学院 -School of Computer Software,Xidian University,China 31采用PP管及配件:根据给水设计图配置好PP管及配件,用管件在管材垂直角切断管材,边剪边旋转,以保证切口面的圆度,保持熔接部位干净无污物克鲁斯卡尔(Kruskal)算法q从上述过程可知,实现从上述过程可知,实现克鲁斯卡尔克鲁斯卡尔(Kruskal)算法时,要解决以下两个问题:算法时,要解决以下两个问题:如何选择代价最小的边如何选择代价最小的边(堆排序,或简单选择排序堆排序,或简单选择排序);如何判定边所关联的两个顶点是否在同一个连通如何判定边所关联的两个顶点是否在同一个连通分量中(集合)分量中(集合)西安电子科技大学软件学院 -School of Computer Software,Xidian University,China 32采用PP管及配件:根据给水设计图配置好PP管及配件,用管件在管材垂直角切断管材,边剪边旋转,以保证切口面的圆度,保持熔接部位干净无污物End
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 办公文档 > 教学培训


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!