- 1、本文档共17页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
[2018年最新整理]PRIM算法求最小生成树
一、问题分析和任务定义
在该部分中主要包括两个方面:问题分析和任务定义;
1 问题分析
本次课程设计是通过PRIM(普里姆)算法,实现通过任意给定网和起点,将该网所对应的所有生成树求解出来。
在实现该本设计功能之前,必须弄清以下三个问题:
1.1 关于图、网的一些基本概念
1.1.1 图 图G由两个集合V和E组成,记为G=(V,E),其中V是顶点的有穷非空集合,E是V中顶点偶对的有穷集,这些顶点偶对称为边。通常,V(G)和E(G)分别表示图G的顶点集合和边集合。E(G)也可以为空集。则图G只有顶点而没有边。
1.1.2 无向图 对于一个图G,若边集E(G)为无向边的集合,则称该图为无向图。
1.1.3 子图 设有两个图G=(V,E)G’=(V’,),若V’是V的子集,即V’V ,且E’是E的子集,即E’E ,称G’是G的子图。
1.1.4 连通图 若图G中任意两个顶点都连通,则称G为连通图。
1.1.5 权和网 在一个图中,每条边可以标上具有某种含义的数值,该数值称为该边的权。把边上带权的图称为网。如图1所示。
1.2 理解生成树和最小生成树之间的区别和联系
1.2.1 生成树 在一个连通图G中,如果取它的全部顶点和一部分边构成一个子图G’,即:V(G’)= V(G)和E(G’)E(G),若边集E(G’)中的边既将图中的所有顶点连通又不形成回路,则称子图G’是原图G的一棵生成树。
1.2.2 最小生成树 图的生成树不是唯一的,把具有权最小的生成树称为图G的最小生成树,即生成树中每条边上的权值之和达到最小。如图1所示。
图1.网转化为最小生成树
1.3 理解PRIM(普里姆)算法的基本思想
1.3.1 PRIM算法(普里姆算法)的基本思想 假设G =(V,E)是一个具有n个顶点的连通网,T=(U,TE)是G的最小生成树,其中U是T的顶点集,TE是T的边集,U和TE的初值均为空集。算法开始时,首先从V中任取一个顶点(假定取V0),将它并入U中,此时U={V0},然后只要U是V的真子集,就从那些其一个端点已在T中,另一个端点仍在T外的所有边中,找一条最短(即权值最小)边,假定为(i,j),其中Vi∈U,Vj∈(V-U),并把该边(i,j)和顶点j分别并入T的边集TE和顶点集U,如此进行下去,每次往生成树里并入一个顶点和一条边,直到n-1次后就把所有n个顶点都并入到生成树T的顶点集中,此时U=V,TE中含有n-1条边,T就是最后得到的最小生成树。可以看出,在普利姆算法中,是采用逐步增加U中的顶点,常称为“加点法”。为了实现这个算法在本设计中需要设置一个辅助数组closedge[ ],以记录从U到V-U具有最小代价的边。当辅助数组中存在两个或两个以上的最小代价的边时,此时最小生成树的形态就不唯一,此时可以在程序中采用递归的算法思想求出每个最小生成树。
1.3.2 在PRIM算法中需要解决的两个问题
①在无向网中,当出现从一个顶点到其它顶点时,若其边上的权值相等,则可能从某一起点出发时会得出不同的最小生成树,但最小生成树的权必定都相等,此时我们应该怎样将所有的最小生成树求解出来;
②每次如何从生成树T中到T外的所有边中,找出一条最短边。例如,在第k次(1≤k≤n-1)前,生成树T中已有k个顶点和k-1条边,此时T中到T外的所有边数为k(n-k),当然它也包括两顶点间没有直接边相联,其权值被看做常量INFINIT的边在内,从如此多的边中查找最短边,其时间复杂度为O(k(n-k)),显然是很费时的,是否有一种好的方法能够降低查找最短边的时间复杂度。
1.3.3 上述问题的解决方法
针对①中出现的问题可以通过在算法中实现,详情请看PRIM算法的基本思想;
针对②中出现的问题,通过对PRIM算法的分析,可以使查找最短边的时间复杂度降低到O(n-k)。具体方法是假定在进行第k次前已经保留着从T中到T外的每一顶点(共n-k个顶点)的各一条最短边,进行第k次时,首先从这n-k条最短边中,找出一条最最短的边,它就是从T中到T外的所有边中的最短边,假设为(i,j),此步需进行n-k次比较;然后把边(i,j)和顶点j分别并入T中的边集TE和顶点集U中,此时T外只有n-(k+1)个顶点,对于其中的每个顶点t,若(j,t)边上的权值小于已保留的从原T中到顶点t的最短边的权值,则用(j,t)修改之,使从T中到T外顶点t的最短边为(j,t),否则原有最短边保持不变,这样,就把第k次后从T中到T外每一顶点t的各一条最短边都保留下来了,为进行第k+1次运算做好了准备,此步需进行n-k-1次比较。所以,利用此方法求第k次的最短边共需比较2(n-k)-1次,即时间复杂度为O(n-k)。
2 任务定义
通过
您可能关注的文档
- [2018年最新整理]OpenGL之坐标变换.docx
- [2018年最新整理]OPENGL基础教程.doc
- [2018年最新整理]OpenGL游戏编程.ppt
- [2018年最新整理]OPENKM系统培训手册.ppt
- [2018年最新整理]OpenMP程序的编译与运行-实验报告二.doc
- [2018年最新整理]OPGW基础培训资料.doc
- [2018年最新整理]OpenShortestPathFirstOSPF协议(链路状态.ppt
- [2018年最新整理]OPL(单点教育训练).ppt
- [2018年最新整理]OPL培训教材.ppt
- [2018年最新整理]oppo建大社团节闭幕式.doc
- [2018年最新整理]premiere中视频素材的处理.ppt
- [2018年最新整理]Prim算法求解过程离散数学.doc
- [2018年最新整理]princ-ch02经济学家思考.ppt
- [2018年最新整理]Pro-E使用秘诀.doc
- [2018年最新整理]Princetonuniversitylibrary(普林斯顿大学图书馆).ppt
- [2018年最新整理]Pro-E工程图培训.ppt
- [2018年最新整理]PROE(第14章)高级曲面设计(新).ppt
- [2018年最新整理]PROE(软件特点,基本流程,界面介绍).ppt
- [2018年最新整理]proe-2参数化草图绘制.ppt
- [2018年最新整理]proe-G1-G2连接.doc
文档评论(0)