DSchap7图(授课简).ppt

  1. 1、本文档共109页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
DSchap7图(授课简)

名词和术语 7.1 图的基本术语 图的抽象数据类型 图的基本操作 7.2 图的存储结构 图的特点: 7.3 图的遍历 一. 深度优先搜索遍历图 讨论1:计算机如何实现DFS? 讨论2: DFS算法如何编程? 讨论3:在图的邻接表中如何进行DFS? 讨论4: 邻接表的DFS算法如何编程? 非连通图的深度优先搜索遍历 DFS 算法效率分析: 二. 广度优先搜索遍历图 广度优先搜索( BFS ) 讨论:计算机如何实现BFS? BFS 算法效率分析: 三. 遍历应用举例 1. 求一条从顶点 i 到顶点 s 的简单路径 2. 求两个顶点之间的一条路径长度最短的路径 7.4 (连通网的)最小生成树 普里姆算法的基本思想: 克鲁斯卡尔算法的基本思想: 比较两种算法 7.5 重(双)连通图 和关节点(略) 7.6 两点之间的(带权) 最短路径问题 求从某个源点到其余各点的最短路径 求最短路径 例1: 例2: 求最短路径的迪杰斯特拉算法: 例3: 图7.36 带权有向图G7 有向无环图(DAG)及其应用 7.7 拓扑排序 拓扑排序—— 由某集合上的一个偏序得到一个全序 如何进行拓扑排序? 7.8 关键路径 关键路径--从源点到汇点的最长带权路径 如何求关键活动? 算法的实现要点: 本章小结 问题: 假设以有向网表示一个施工流图,弧上的权值表示完成该项子工程所需时间。 问:哪些子工程项是“关键工程”? 即:哪些子工程项将影响整个工程的完成期限的。 a b c d e g f 19 5 14 18 27 16 8 21 3 a e 12 d c b 7 a a a 19 14 18 14 例如: e 12 e e 8 16 8 d 3 d d 7 21 3 c 5 5 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=1; 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 a e 12 d c b g f 7 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) 稠密图 稀疏图 算法: 适应范围: 若从一个连通图中删去任何一个顶点及其相关联的边,它仍为一个连通图的话,则该连通图被称为重(双)连通图。 问题: 每一对顶点之间的最短路径 一顶点到其余各顶点 两种常见的最短路径问题: 一、 单源最短路径—用Dijkstra(迪杰斯特拉)算法 二、所有顶点间的最短路径—用Floyd(弗洛伊德)算法 典型用途

文档评论(0)

xy88118 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档