数据结构-图试卷.ppt

  1. 1、本文档共127页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Firstout代表邻接表中的firstarc, Firstin代表逆邻接表中的firstarc, * * * 这里边在邻接表里的结点不是指所依附的顶点,而是指在边表的单链表里代表该边的结点。如边ad在边表里有两个结点与之对应。 * 访问的含义可以是输出个顶点的值,查询顶点,修改顶点等等。 不同于树只能从根结点开始遍历,图可以从任何一点顶点开始遍历。 遍历算法是求解图的连通性问题、拓扑排序和求关键路径等算法的基础。 * 类似于树的先根遍历,是树的先根遍历的推广。 * 类似于树的层次遍历。 在图上看这个广度优先搜索遍历的过程就好比一石激起千重浪,访问顶点 v 就好比将一块大石头扔进池塘的中央,必然激起浪花,这个浪花从中央向外四周扩散开来,渐渐波及池塘中从近到远的其它石块。 * 由于广度优先搜索遍历要求先被访问的顶点的邻接点也先于后被访问的顶点的邻接点进行访问,因此在遍历过程中需要一个队列保存被访问顶点的次序,以便按照已被访问过的顶点的访问次序先后访问它们的未曾被访问过的邻接点。 * 以这个为例,跑一下广度优先遍历的程序。 * 图遍历是图的基本操作,也是一些图的应用问题求解算法的基础,以此为框架可以派生出许多应用算法。 例如在遍历过程中可以求得非连通图的连通分量或强连通分量, 可以利用深度优先搜索遍历求得图中两个顶点之间一条简单路径, 或利用广度优先搜索遍历求得两个顶点之间的最短路径等等。 在此仅以求生成树或生成森林为例说明图遍历的应用。   * 因为图中可以有多个连图子图,也就有多个生成树。每个连通子图的顶点又有多种连接方式,因此每个连通子图又有不同的生成树。那怎么得到一个图的生成树呢? 根据遍历的要求,每个顶点只允许访问一次。因此不能存在环,否则一定有一个顶点被访问了两次。所以一定是一颗树。而且树根一定是遍历的起始顶点。 为什么不能是森林呢?因为每个节点只能访问了一次,如果有两个父节点,意味着从两条路径上分别访问了该节点,也不符合遍历的定义。 * 171页的生成深度优先森林的算法,请学生课下自己学习。算法7.7和7.8。 加上权信息后,到底哪一棵生成树的权的和最小呢?这在架设铁路和电线时非常有用。 * * E为边集。也称为选边法 * 因为最小成生树有n个结点,n-1条边 * 称为选点法 取adjvex中对应的顶点序号k意思是什么?在lowcost中选取最短边意味着去lowcost[5]对应的顶点,即F。这里对应不是 * * 25 12 34 19 26 46 38 17 25 A B E D C F U={A, F} V-U={B, C, D, E} cost={(A, B)34, (A, C)46, (F, C)25, (F, D)25,(F, E)26} * 25 12 34 19 26 46 38 17 25 A B E D C F U={A, F, C} V-U={B, D, E} cost={(A, B)34, (F,D)25, (C, D)17,(F, E)26} * 25 12 34 19 26 46 38 17 25 A B E D C F U={A, F, C, D} V-U={B, E} cost={(A, B)34, (F, E)26, (D,E)38} * 25 12 34 19 26 46 38 17 25 A B E D C F U={A, F, C, D, E} V-U={B} cost={(A, B)34,(E, B)12} * 25 12 34 19 26 46 38 17 25 A B E D C F U={A, F, C, D, E, B} V-U={ } * 关键:是如何找到连接U和V-U的最短边。 对应V-U中的每个顶点,保留从该顶点到U中的各顶点的最短边。 数组lowcost[n]:用来保存集合V-U中各顶点与集合U中顶点最短边的权值,lowcost[v]=0表示顶点v已加入最小生成树中; 数组adjvex[n]:用来保存依附于该边(集合V-U中各顶点与集合U中顶点的最短边)在集合U中的顶点。 表示顶点vi和顶点vk之间的权值为w,其中:vi∈ V-U 且vk ∈U lowcost[i]=w adjvex[i]=k i 数组 B(i=1) C(i=2) D(i=3) E(i=4) F(i=5) U V-U 输出 adjvex lowcost A 34 A 46 A ∞ A ∞ A 19 {A} {B, C, D, E, F} (A F)19 adjvex lowcost A 34 F 25 F 25 F 26 ? {A, F} {B, C, D, E} (F C)25 adjvex lowcost A 34 ? C 17 F 2

文档评论(0)

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

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

1亿VIP精品文档

相关文档