第七章 图(一本).pptVIP

  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文档。上传文档
查看更多
数据结构课程的内容 第7章 图 7.1 图的基本术语 证明: 例:判断下列4种图形各属什么类型? 稀疏图: 稠密图: 带权图: 邻接点: 简单路径: 图的抽象数据类型 7.2 图的存储结构 图的特点:非线性结构(m :n ) 一、邻接矩阵(数组)表示法 例2 :有向图的邻接矩阵 特别讨论 :网(即有权图)的邻接矩阵 图的邻接矩阵存储表示(参见教材P161)★ 例:用邻接矩阵生成无向网的算法(参见教材P162) 二、邻接表(链式)表示法 例1:无向图的邻接表 例3:已知某网的邻接(出边)表,请画出该网络。 邻接表存储法的特点: 讨论:邻接表与邻接矩阵有什么异同之处? 图的邻接表存储表示(参见教材P163) 三、十字链表 (适用于有向图) 四、邻接多重表 (适用于无向图) 三、十字链表 十字链表存储结构描述: 例:画出有向图的十字链表。 四、邻接多重表(自学) 例:画出无向图的邻接多重表 7.3 图的遍历 一、深度优先搜索( DFS ) 深度优先搜索(遍历)步骤: 讨论1:计算机如何实现DFS? 讨论2: DFS算法如何编程? 讨论3:在图的邻接表中如何进行DFS? 讨论4: 邻接表的DFS算法如何编程? DFS 算法效率分析: 二、广度优先搜索( BFS ) 广度优先搜索(遍历)步骤: 讨论1:计算机如何实现BFS? 讨论2: BFS算法如何编程? BFS 算法效率分析: 7.4 图的其他运算(应用) 1. 求图的生成树 2. 求最小生成树 Kruskal(克鲁斯卡尔)算法 计算机内怎样实现Kruskal算法? 具体示例:详见殷人昆等,数据结构习题解析,P180-181 普利姆(Prim)算法 例: 计算机内怎样实现Prim(普里姆)算法? 具体示例: Void PRIM_min_span_tree(Mgraph G,Vertextype u) { //u是最小生成树初态的U中起始顶点,V-U={除去u外的所有顶点} ★ //Struct{Vertextype adjvex;VRtype lowcost;}closedge[MAX_NUM]; K=locateVex(G,u);//取得起始点; for(j=0;jG.vexnum;++j)//把除k外的所有顶点j和它到k的边的权值存到closedge[ ] if (!j=k) closedge={u,G.arcs[k][j].adj}; //k在U中其他顶点在V-U中 Closedge[k].lowcost=0; //起点自身到自身的权值写成0(不要if?) for(i=1;iG.vexnum;++i) //逐个把V-U中的所有顶点并入U { k=minimum(closedge); //在现有的边上找一个权值最小的顶点 //closedgw[k]=min{closedge[vi].lowcost |closedge[vi].lowcost0,vi∈V-U } Printf(closedge[k].adjvex,closedge[k].lowcost,G.vexs[k]); //输出新选中点对应的边上所有信息 Closedge[k].lowcost=0;选中并入U的顶点对应边的权值置0作为已被处理的标志 for(j=0;jG.vexnum;++j) //新选中顶点到其他所有顶点的权值如小于先前得到if(G.arcs[k][j].adjclosedge[j].lowcost) //些顶点的closedge[j],用这新顶点及 closedge[j]={G.vexs[k],G.arcs[k][j].adj} //其到对应顶点j边的权值代替原有值 } } 算法流程 3. 求最短路径 一、单源最短路径 (Dijkstra算法) 例2: Dijkstra(迪杰斯特拉)算法 算法描述: //i=1 to G.vexnum-1 求从v0到其余所有n-1个顶点v 的最短路径,并把v逐个并入S for(i=1;iG.vexnum;++i) //求其余的G.vexnum-1个顶点到v0的最短路径 { min=INFINITY; //假设当前所知道V-S中所有顶点到v0的最小距离为无穷大 for (w=0;wG.vexnum;++w) //找到一个从v0到 V-S中的最短路径顶点v if (!final[w]) //顶点w不在 当前的最短路径集合S 中,在 V-S 中 if (D[w]min) //如果w到v0的权值小于当前所找到V-S中某顶点到v0的最小距离 {v=w; min=D[w];} //离v0更近的w 顶点作为当前

文档评论(0)

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

教师资格证持证人

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

领域认证该用户于2024年04月12日上传了教师资格证

1亿VIP精品文档

相关文档