最小生成树算法讲解

上传人:wuyo****995 文档编号:245054815 上传时间:2024-10-07 格式:PPT 页数:32 大小:493.50KB
返回 下载 相关 举报
最小生成树算法讲解_第1页
第1页 / 共32页
最小生成树算法讲解_第2页
第2页 / 共32页
最小生成树算法讲解_第3页
第3页 / 共32页
点击查看更多>>
资源描述
,西安电子科技大学软件学院,-School of Computer Software,Xidian University,China,*,单元实验五,-最小生成树,生成树的概念,生成树,一个连通图的生成树是一个极小连通子图,它含有图中全部顶点,但只有足以构成一棵树的n-1条边。,生成树不唯一,V,3,V,2,V,4,V,1,V,6,V,5,V,3,V,2,V,4,V,1,V,6,V,5,V,3,V,2,V,4,V,1,V,6,V,5,V,3,V,2,V,4,V,1,V,6,V,5,生成树,最小代价生成树,生成树的代价等于其边上的权值之和。,V,4,V,1,V,3,V,2,V,6,V,5,6,5,1,2,6,6,5,5,3,4,V,4,V,1,V,3,V,2,V,6,V,5,6,1,6,5,4,V,4,V,1,V,3,V,2,V,6,V,5,1,2,5,3,4,最小代价生成树,两种常用的构造最小生成树的方法:,普里姆算法,克鲁斯卡尔算法,假设N=(V,E)是连通网,TE是N上最小生成树中边的集合。,算法从U=u,0,(u,0,V),TE=开始,重复执行下述操作:,在所有uU,vV-U的边(u,v)中找一条代价最小的边(u,0,v,0,),将其并入集合TE,同时将v,0,并入U集合。,当U=V则结束,此时TE中必有n-1条边,则T=(V,TE)为,N,的最小生成树。,普里姆算法构造最小生成树的过程是从一个顶点U=u,0,作初态,不断寻找与U中顶点相邻且代价最小的边的另一个顶点,扩充到U集合直至U=V为止。,普里姆(Prim)算法,V,4,V,1,V,3,V,2,V,6,V,5,6,5,1,2,6,6,5,5,3,4,V,4,V,1,V,3,V,2,V,6,V,5,1,2,5,3,4,U,V-U,V,1,V,2,V,3,V,4,V,5,V,6,步骤,(0),V,1,V,3,V,2,V,4,V,5,V,6,(1),V,1,V,3,V,6,V,2,V,4,V,5,(2),V,1,V,3,V,6,V,4,V,2,V,5,(3),V,1,V,3,V,6,V,4,V,2,V,5,(4),V,1,V,3,V,6,V,4,V,2,V,5,(5),最小代价生成树,普里姆算法求最小生成树:从生成树中只有一个顶点开始,到顶点全部进入生成树为止,V,4,V,1,V,3,V,2,V,6,V,5,1,6,5,V,1,V,3,1,V,1,V,2,V,3,V,4,V,5,V,6,步骤,(0),V,1,V,3,V,2,V,4,V,5,V,6,(1),U,V-U,普里姆算法求最小生成树:从生成树中只有一个顶点开始,到顶点全部进入生成树为止,最小代价生成树,V,4,V,1,V,3,V,2,V,6,V,5,6,5,V,1,V,3,1,V,1,V,2,V,3,V,4,V,5,V,6,步骤,(0),V,1,V,3,V,2,V,4,V,5,V,6,(1),V,6,V,1,V,3,V,6,V,2,V,4,V,5,(2),4,6,5,5,4,U,V-U,普里姆算法求最小生成树:从生成树中只有一个顶点开始,到顶点全部进入生成树为止,最小代价生成树,V,4,V,1,V,3,V,2,V,6,V,5,6,5,V,4,V,1,V,3,1,V,1,V,2,V,3,V,4,V,5,V,6,步骤,(0),V,1,V,3,V,2,V,4,V,5,V,6,(1),V,6,V,1,V,3,V,6,V,2,V,4,V,5,(2),4,6,5,5,V,1,V,3,V,6,V,4,V,2,V,5,(3),2,6,2,U,V-U,普里姆算法求最小生成树:从生成树中只有一个顶点开始,到顶点全部进入生成树为止,最小代价生成树,V,4,V,1,V,3,V,2,V,6,V,5,6,V,4,V,1,V,3,1,V,1,V,2,V,3,V,4,V,5,V,6,步骤,(0),V,1,V,3,V,2,V,4,V,5,V,6,(1),V,2,V,6,V,1,V,3,V,6,V,2,V,4,V,5,(2),4,6,5,V,1,V,3,V,6,V,4,V,2,V,5,(3),6,2,V,1,V,3,V,6,V,4,V,2,V,5,(4),5,U,V-U,普里姆算法求最小生成树:从生成树中只有一个顶点开始,到顶点全部进入生成树为止,最小代价生成树,V,4,V,1,V,3,V,2,V,6,V,5,V,4,V,1,V,3,1,V,1,V,2,V,3,V,4,V,5,V,6,步骤,(0),V,1,V,3,V,2,V,4,V,5,V,6,(1),V,2,V,6,V,5,V,1,V,3,V,6,V,2,V,4,V,5,(2),4,6,V,1,V,3,V,6,V,4,V,2,V,5,(3),6,2,V,1,V,3,V,6,V,4,V,2,V,5,(4),5,V,1,V,3,V,6,V,4,V,2,V,5,(5),3,3,U,V-U,普里姆算法求最小生成树:从生成树中只有一个顶点开始,到顶点全部进入生成树为止,最小代价生成树,普里姆算法求最小生成树:从生成树中只有一个顶点开始,到顶点全部进入生成树为止,V,4,V,1,V,3,V,2,V,6,V,5,V,4,V,1,V,3,1,V,1,V,2,V,3,V,4,V,5,V,6,步骤,(0),V,1,V,3,V,2,V,4,V,5,V,6,(1),V,2,V,6,V,5,V,1,V,3,V,6,V,2,V,4,V,5,(2),4,V,1,V,3,V,6,V,4,V,2,V,5,(3),2,V,1,V,3,V,6,V,4,V,2,V,5,(4),5,V,1,V,3,V,6,V,4,V,2,V,5,(5),3,U,V-U,最小代价生成树,普里姆,(Prim)算法,生成树中只放置一个顶点,在关联生成树顶点的边中(即边的,一个顶点在生成树中,另一个顶点不在),取权值最小者,将选中的边加入生成树,,同时将该边的关联顶点加入生成树中,生成树中顶点数小于n?,是,否,结束,开始,基本要求,从键盘(或数据文件)输入图的信息,用普里姆算法求解给定无向连通图的最小生成树,最后输出最小生成树中的权值和所有的边,图的存储结构自行设定。,例如 下图的输出为,weight:15,(v1,v3)(v3,v6)(v6,v4)(v3,v2)(v2,v5),或者,(1,3,)(3,6,)(6,4)(3,2)(2,5),顶点集合如何表示?,最小边如何选择?,一个顶点加入U集合(生成树中),如何表示?,struct,int adjvex;,double lowcost;,closedgeMAX_VERTEX_NUM;,closedgei.adjvex=k,closedgei.lowcost,顶点i与顶点k邻接,顶点k已经在U集合中,顶点i加入U集合时,普里姆算法的实现,=0,adjvex,lowcost,v1,6,v1,1,v1,5,v1,v2,v3,v4,v5,v6,3,v,2,v,3,v,4,v,5,v,6,U,V-U,k,顶点,i,closedge,closedge2.adjvex=1,.lowcost=6,closedge3.adjvex=1,.lowcost=1,closedge4.adjvex=1,.lowcost=5,V,4,V,1,V,3,V,2,V,6,V,5,1,6,5,当U集合中加入一个新顶点时,V-U集合中的顶点到U的最小代价边可能会更新,V,4,V,1,V,3,V,2,V,6,V,5,6,5,1,2,6,6,5,5,3,4,U集合的成员:,V-U集合的成员:,closedge,5,.adjvex=1,.lowcost=,closedge,6,.adjvex=1,.lowcost=,adjvex,lowcost,v1,6,v1,1,v1,5,v1,v2,v3,v4,v5,v6,3,adjvex,lowcost,v3,5,0,v1,5,v3,6,v3,4,v1,v3,v2,v4,v5,v6,6,v,2,v,3,v,4,v,5,v,6,U,V-U,k,顶点,i,closedge,V,4,V,1,V,3,V,2,V,6,V,5,5,5,6,4,U集合的成员:,V-U集合的成员:,当U集合中加入一个新顶点时,V-U集合中的顶点到U的最小代价边可能会更新,V,4,V,1,V,3,V,2,V,6,V,5,6,5,1,2,6,6,5,5,3,4,closedge,2,.adjvex=,3,.lowcost=,5,closedge4.adjvex=1,.lowcost=5,closedge,5,.adjvex=,3,.lowcost=,6,closedge,6,.adjvex=,3,.lowcost=,4,adjvex,lowcost,v1,6,v1,1,v1,5,v1,v2,v3,v4,v5,v6,3,adjvex,lowcost,v3,5,0,v1,5,v3,6,v3,4,v1,v3,v2,v4,v5,v6,6,adjvex,lowcost,v3,5,0,v6,2,v3,6,0,v1,v3,v6,v2,v4,v5,4,v,2,v,3,v,4,v,5,v,6,U,V-U,k,顶点,i,closedge,V,4,V,1,V,3,V,2,V,6,V,5,5,6,2,V,4,V,1,V,3,V,2,V,6,V,5,6,5,1,2,6,6,5,5,3,4,当U集合中加入一个新顶点时,V-U集合中的顶点到U的最小代价边可能会更新,U集合的成员:,V-U集合的成员:,closedge,2,.adjvex=,3,.lowcost=,5,closedge,4,.adjvex=,6,.lowcost=,2,closedge,5,.adjvex=,3,.lowcost=,6,adjvex,lowcost,v1,6,v1,1,v1,5,v1,v2,v3,v4,v5,v6,3,adjvex,lowcost,v3,5,0,v1,5,v3,6,v3,4,v1,v3,v2,v4,v5,v6,6,adjvex,lowcost,v3,5,0,v6,2,v3,6,0,v1,v3,v6,v2,v4,v5,4,adjvex,lowcost,v3,5,0,0,v3,6,0,v1,v3,v6,v4,v2,v5,v,2,v,3,v,4,v,5,v,6,U,V-U,k,顶点,i,closedge,2,V,4,V,1,V,3,V,2,V,6,V,5,5,6,当U集合中加入一个新顶点时,V-U集合中的顶点到U的最小代价边可能会更新,U集合的成员:,V-U集合的成员:,V,4,V,1,V,3,V,2,V,6,V,5,6,5,1,2,6,6,5,5,3,4,closedge,2,.adjvex=,3,.lowcost=,5,closedge,5,.adjvex=,3,.lowcost=,6,adjvex,lowcost,v1,6,v1,1,v1,5,v1,v2,v3,v4,v5,v6,3,adjvex,lowcost,v3,5,0,v1,5,v3,6,v3,4,v1,v3,v2,v4,v5,v6,6,adjvex,lowcost,v3,5,0,v6,2,v3,6,0,v1,v3,v6,v2,v4,v5,4,adjvex,lowcost,v3,5,0,0,v3,6,0,v1,v3,v6,v4,v2,v5,2,adjvex,lowcost,0,0,0,v2,3,0,v1,v3,v6,v4,v2,v5,v,2,v,3,v,4,v,5,v,6,U,V-U,k,顶点,i,closedge,5,V,4,V,1,V,3,V,2,V,6,V,5,3,当U集合中加入一个新顶点时,V-U集合中的顶点到U的最小代价边可能会更新,V,4,V,1,V,3,V,2,V,6,V,5,6,5,1,2,6,6,5,5,3,4,U集合的成员:,V-U集合的成员:,adjvex,lowcost,v1,6,v1,1,v1,5,v1,v2,v3,v4,v5,v6,3,adjvex,lowcost,v3,5,0
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


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

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


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