- 1、本文档共112页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据结四构《第七章、图》ppt课件
7.6 两点之间的 最短路径问题 求从某个源点到其余各点的最短路径 a b c d e g f 19 5 14 18 27 16 8 21 3 12 7 例如: a e d c b g f 14 8 5 3 16 21 所得生成树权值和 = 14+8+3+5+16+21 = 67 在生成树的构造过程中,图中 n 个顶点分属两个集合:已落在生成树上的顶点集 U 和尚未落在生成树上的顶点集V-U ,则应在所有连通U中顶点和V-U中顶点的边中选取权值最小的边。 一般情况下所添加的顶点应满足下列条件: U V-U 设置一个辅助数组,对当前V-U集中的每个顶点,记录和顶点集U中顶点相连接的代价最小的边: struct { VertexType adjvex; // U集中的顶点序号 VRType lowcost; // 边的权值 } closedge[MAX_VERTEX_NUM]; a b c d e g f 19 5 14 18 27 16 8 21 3 12 7 a e d c b a a a 19 14 18 14 例如: e 12 e e 8 16 8 d 3 d d 7 21 3 c 5 5 19 m m 14 m 18 19 5 7 12 m m m 5 3 m m m m 7 3 8 21 m 14 12 m 8 m 16 m m m 21 m 27 18 m m m 16 27 void MiniSpanTree_P(MGraph G, VertexType u) { //用普里姆算法从顶点u出发构造网G的最小生成树 k = LocateVex ( G, u ); for ( j=0; jG.vexnum; ++j ) // 辅助数组初始化 if (j!=k) closedge[j] = { u, G.arcs[k][j].adj }; closedge[k].lowcost = 0; // 初始,U={u} for (i=0; iG.vexnum; ++i) { } 继续向生成树上添加顶点; k = minimum(closedge); // 求出加入生成树的下一个顶点(k) printf(closedge[k].adjvex, G.vexs[k]); // 输出生成树上一条边 closedge[k].lowcost = 0; // 第k顶点并入U集 for (j=0; jG.vexnum; ++j) //修改其它顶点的最小边 if (G.arcs[k][j].adj closedge[j].lowcost) closedge[j] = { G.vexs[k], G.arcs[k][j].adj }; 具体做法: 先构造一个只含 n 个顶点的子图 SG,然后从权值最小的边开始,若它的添加不使SG 中产生回路,则在 SG 上加上这条边,如此重复,直至加上 n-1 条边为止。 考虑问题的出发点: 为使生成树上边的权值之和达到最小,则应使生成树中每一条边的权值尽可能地小。 克鲁斯卡尔算法的基本思想: a b c d e g f 19 5 14 18 27 16 8 21 3 12 7 a e d c b g f 14 8 5 3 16 21 例如: 7 12 18 19 算法描述: 构造非连通图 ST=( V,{ } ); k = i = 0; // k 计选中的边数 while (kn-1) { ++i; 检查边集 E 中第 i 条权值最小的边(u,v); 若(u,v)加入ST后不使ST中产生回路, 则 输出边(u,v); 且 k++; } 普里姆算法 克鲁斯卡尔算法 时间复杂度 O(n2) O(eloge) 稠密图 稀疏图 算法名 适应范围 比较两种算法 7.5 重(双)连通图 和关节点 若从一个连通图中删去任何一个顶点及其相关联的边,它仍为一个连通图的话,则该连通图被称为重(双)连通图。 问题: 若连通图中的某个顶点和其相关 联的边被删去之后,该连通图被分割 成两个或两个以上的连通分量,则称 此顶点为关节点。 没有关节点的连通图为双连通图。 如何判别给定的连通图是
您可能关注的文档
- 售楼处现场销售氛围你营造包装方案.ppt
- 售楼信息阳管理系统课程设计57644038.doc
- 售楼处物发业服务规范培训资料.ppt
- 书法发展史6分02明中期书法.ppt
- 售楼部圣诞节包等装方案.ppt
- 梳齿板三-伸缩缝资料.doc
- 梳齿板-伸缩缝资料到[新版].doc
- 书装设计-书点籍封面设计.ppt
- 疏浚工程质量检验评定标阳准(全套).doc
- 售楼部关包装方案.ppt
- 数据库程发序设计—— sql server 2000 数据库程序设计 第1章 sql server 概述第2章 创建和管理数据库第3章 创建数据类型和表第4章 实现数据完整性第5章 transact-sql介绍第6章 使用 transact-sql查询工具第7章 检索数据第8章 数据分组与汇总第9章 多表联接第10章 子查询第11章 修改数据.ppt
- 数据结构条课程设计-利用栈求表达式的值.doc
- 数据结构课程设计之利用栈中求表达式的值.docx
- 数据库设计与开发 刘连忠信息与计算机学院qq28但6434625.ppt
- 数据结构与算法 图的遍历上与连通性.ppt
- 数据与计算机通信网 第 5-0 章 初识关网络层崔世耀ise_cuisy@ujn.edu.cn2011-8-1.ppt
- 数据中义心机房施工设计的规范要求.doc
- 数控车床六角旋说转刀架三维设计毕业设计.doc
- 数据展现与分析平都台建设方案.doc
- 数据结构ppt教学课是件-第六章 树和二叉树.ppt
文档评论(0)