图论论文最小生成树算法城市高速公路问题中的应用.docVIP

图论论文最小生成树算法城市高速公路问题中的应用.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
XXXX研究生堂下考试答卷 2012-2013学年第 学期 2012年 月 日 图论是数学的一个分支。它以图为研究对象。图论中的图是由若干给定的点及连接两点的线所构成的图形,这种图形通常用来描述某些事物之间的某种特定关系,用点代表事物,用连接两点的线表示相应两个事物间具有这种关系。1) 开始:选取连通网中的任意一个顶点添加到最小生成树中。 (2) 重复执行以下操作: 1) 连通网的顶点集合分成两个部分:已经添加到最小生成树中的顶点集合和尚未添加到最小生成树中的顶点集合; 2) 找出所有连通这两个集合中顶点的边; 3) 从中选取一条权值最小的边添加到生成树中,同时将与这条边相连的顶点也添加到生成树中。 (3)结束:所有的顶点都被添加到最小生成树中。 2 Kruskal 算法 思想:通过逐个往生成树上添加边来构造连通网的最小生成树。 算法具体步骤: (1) 将连通网中的所有顶点添加到最小生成树中,构造一个森林; (2) 将各边按照权值从小到大排序; (3) 按照排好的顺序向生成树中添加不使森林中产生回路的边 (若构成回路则不添加,继续考察下一条边)。直至该森林变成一棵树为止。 3 简易算法 思想:通过逐个从连通网中删除边来构造最小生成树。 算法具体步骤: (1) 将连通网中各边按照权值从大到小排序; (2) 按照排好的顺序从连通网中删除权值最大的边,条件是使删除该边后的子图仍然保持连通(若删除后子图不连通则改边保留,继续删除下一条边)。直至子图中任何一条边都不能删除 (即删除任意一条边都会造成该子图不连通)为止。 4 三种算法的比较 (1) 普里姆算法:主要是对顶点进行操作;采用邻接矩阵作为存储结构,在行过程中对连通网中的每一个顶点都考察到了,因此普里姆算法的时间复杂度为(n 为连通网中顶点的个数)。普里姆算法适用于求边稠密的连通网的最小生成树。 (2) 克鲁斯卡尔算法:主要是对边进行操作,时间复杂度主要取决于对边按照权值进行排序的时间,边的个数为e,排序的时间复杂度可以做到O (eloge),因此算法的时间复杂度为 O(eloge)。克鲁斯卡尔算法适用于求边稀疏的连通网的最小生成树。 (3) 简易算法:主要是对边进行操作,时间复杂度主要取决于对边按照权值进行排序的时间,边的个数为e,排序的时间复杂度可以做到 O (eloge),因此算法的时间复杂度为 O(eloge)。该算法适用于求边稀疏的连通网的最小生成树。 四 应用 利用最小生成树来解决高速公路问题,将高速公路问题中的城市看做图中的顶点,城市之间修建的道路看做图中顶点之间的边,城市之间所修修建的公路的长度看做是图中个边上的权值。这样我们就把高速公路问题转换成了求一个有向连通网的最小生成树问题。此时假设城市个数为6,分别为a,b,c,d,e,f。并设其对应城市之间的公路距离权值及初始状态的连通无向图如下所示: 边 (a,b) (a,c) (a,d) (b,c) (b,e) (c,d) (c,e) (c,f) (d,f) (e,f) 权值 6 1 5 5 3 5 6 4 2 6 1 简易算法来求解最小生成树 (1) 实现步骤: 从权值最大的边开始进行删除 (e,f),(c,e) ,(a,b),(a,d)被删除后都没有破坏连通性,所以这些边可以从图中删除,得下图: 当删除第五条边(b,c)时,造成了图的连通性的破坏,所以该条边不能被删除必须保留。下图为最终构造好的最小生成树: (2) 算法实现: 1)连通网的存储结构 表示城市高速公路网络的无向连通网采用邻接矩阵的存储方式进行存储。由于需要区分已经存在的公路和需要修建的公路,所以在每条边上增加一个标志位,同时为了给所有的边排序,因此单独建立一个表示边信息的结构体数组结构。具体实现如下: typedef char TownType; typedef float RoadType; typedef struct { int n; /*图的顶点个数 */ int m; /* 图的边个数 */ TownType towns [MAXVEX] ; /* 顶点信息 */ RoadType roads[MAXVEX][MAXVEX] ;/*边信息 */ } GraphMatrix; typedef struct { int start_town, stop_town; /* 边的起点和终点 */ RoadType weight; /* 边的权 */ enum {EXIST,UNEXIST} ex;/*区别已经建好的公路和未修建的公路 */ } Edge; Edge mst [50] ; 2) 判断图的连通性函数 判断无向图的的连通性有很多方法,这里采用的是通过对图进行深度优先搜索,统计遍历过的顶点个数,如果顶点个数比图中顶点

文档评论(0)

文档分享 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档