图的设计作业.docVIP

  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文档。上传文档
查看更多
图的设计作业.doc

课程设计题目和内容 图的基本操作的实现 1)自选存储结构,输入含n个顶点(用字符表示顶点)和e 条边的图G; (2)求每个顶点的度,输出结果; (3)指定任意顶点x为初始顶点,对图G作DFS遍历,输出DFS 顶点序列(提示:使用一个栈实现DFS); (4)指定任意顶点x为初始顶点,对图G作BFS遍历,输出BFS 顶点序列(提示:使用一个队列实现BFS); (5)输入顶点x,查找图G:若存在含x的顶点,则删除该结点及 与之相关连的边,并作DFS遍历(执行操作3);否则输出信 息“无x”; (6)判断图G是否是连通图,输出信息“YES”/“NO”; (7)如果选用的存储结构是邻接矩阵,则用邻接矩阵的信息生 成图G的邻接表,即复制图G,然再执行操作(2);反之亦然二. 程序中所采用的数据结构及存储结构的说明 ??????? 1? 邻接矩阵?:适用于图中边或弧的数目比较多的情况,压缩存储方式结构。 邻接矩阵是表示顶点之间相邻关系的矩阵。若图有n个顶点,则邻接矩阵是一个n*n阶的方阵,结构唯一。邻接矩阵A的元素规定为:用邻接矩阵存储网时只需要将矩阵中的1换为相应的权值,将0用一个不可能存在的权值代替即可。当图用邻接矩阵表示后图的某些操作的实现是很方便的,如求某一顶点vi的第一邻接点,只需在第i行找到第1个非零元即可。若求某一顶点vi的度,对于无向图来说,只须统计第i行的非零元个数或第i列的非零元个数(无向图的邻接矩阵是对称的);当图中顶点数确定,插入一条边(vi,vj)只须将矩阵中第i行j列和第j行i列的元素分别改为1或相应的权值;插入一条弧i,vj只须将矩阵中第i行j列的元素改为1或相应的权值即可。 ?????? 2? 邻接表?:一种链式存储结构 在邻接表中对图的每个顶点建立一个单链表,第i个单链表中包含第i个顶点的所有邻接点,每一个单链表包含两种结点,头结点和表结点。 在图的邻接表中,可以比较方便地查找一个顶点的边(出边)或邻接点(出边邻接点),这只要首先从表头向量中取出对应的表头指针,然后从表头指针出发进行查找即可。 邻接表则是以一数组(结构体数组)的元素作为头指针,后面链接和它相邻的结点. ??????? 3 邻接矩阵表示法与邻接表表示法的比较: ? 1)邻接矩阵是唯一的,邻接表不唯一; ? 2)存储稀疏图用邻接表,存储稠密图用邻接矩阵; ? 3)求无向图顶点的度都容易,求有向图顶点的度邻接矩阵较方便; ? 4)判断是否是图中的边,邻接矩阵容易,邻接表最坏时间为O(n); ? 5)求边数e,邻接矩阵耗时为O(n^2),与e无关,邻接表的耗时三. 算法的设计思想 1 邻接矩阵存储图的基本思路: 图用邻接矩阵表示后图的某些操作的实现是很方便的,如求某一顶点vi的第一邻接点,只需在第i行找到第1个非零元即可。若求某一顶点vi的度,对于无向图来说,只须统计第i行的非零元个数或第i列的非零元个数(无向图的邻接矩阵是对称的);对于有向图来说,第i行的非零元个数为该顶点的出度,第i列的非零元个数为该顶点的入度,两者相加为该顶点的度。当图中顶点数确定,插入一条边(vi,vj)只须将矩阵中第i行j列和第j行i列的元素分别改为1或相应的权值;插入一条弧i,vj只须将矩阵中第i行j列的元素改为1或相应的权值即可。 ? 2? 邻接表存储图的基本思路: 若无向图中有n个顶点e条边,则邻接表需要n个头结点和2e个表结点。在边稀疏的情况下,采用邻接表比采用邻接矩阵节省存储空间。 在无向图的邻接表中,顶点vi的度恰好为第i个链表中的表结点数。 若有向图中有n个顶点e条弧,则邻接表需要n个头结点和e个表结点。在有向图的邻接表中,第i个链表中的结点数为顶点vi的出度。为求顶点vi的入度,需要遍历整个邻接表,在所有链表中其邻接点域的值为i的结点个数为顶点vi的入度。在邻接表中,容易找到任意一顶点的第一邻接点和下一个邻接点,但要判断任意两个顶点vi和vj之间是否有边相连,则须搜索第i或j个链表,因此,不及邻接矩阵方便。 ? 3? 深度优先遍历图的基本思路是: ????(1)访问图中的指定起始点v0; ????(2)从v0出发,访问一个与v0邻接的顶点w1后,再从w1出发,访问与w1邻接的且未访问的顶点w2。然后从w2出发,重复上述过程,直到找不到未被访问的顶点为止。 ????(3)回退到尚有未被访问过的邻接点的顶点,从该顶点出发,重复上面的步???? 骤,直到所有被访问过的顶点的邻接点都已访问为止。 ? 4?? 广度优先遍历是图的实现思路是: ???(1)访问图中的指定起始点v0; ????(2)从v0出发,依次访问v0的未被访问的邻接点w1,w2,w3,…,wn。然后依次访问w1,w2,w3,…,wn的未被访问的邻接点。 ???? (3)重复上面的第二步,直到所有顶

文档评论(0)

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

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

1亿VIP精品文档

相关文档