- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第十九讲与 图周游
图 — 周游算法,最短路问题 2009/05/12 作业:堆排序 1 3 4 6 8 9 6 2 Make heap: 图的存储结构1 —— 邻接矩阵表示法 设图 G = (V,E) G = (V,E)是一个有 是一个有 n个顶点的图 , 图的邻接矩阵是一个二维数组 edge[n][n],定义: vexs1[]={‘a’, ‘b’, ‘c’, ‘d’} ; vexs2[]={v0,v1,v2,v3,v4} 邻接矩阵表示法的特点 (1)无向图的关系矩阵一定是一对称矩阵。(2)无向图的关系矩阵的第i行(或第i列)非零元素个数为第i个顶点的度D(vi)。(3)?有向图的关系矩阵的第i行非零元素个数为第i个顶点的出度OD(vi),第i列非零元素个数就是第i个顶点的入度ID(vi)。(4) 从图的邻接矩阵表示,很容易确定图中任意两个顶点之间是否有边相连。添加或删除边也很方便。 带权图的邻接矩阵表示 如果G是带权的图,wij是边(vi,vj)或 vi,vj的权,则其关系矩阵定义为∶ 邻接矩阵表示法结构定义 typedef char VexType; typedef float AdjType; typedef struct { int n; /* 图的顶点个数 */ VexType *vexs; /* 顶点信息 */ AdjType *arcs[ ]; /* 边信息,二维数组 */ }GraphMatrix; 邻接表表示法—— 对图中每个顶点建立一个单链表, 第i个单链表中的结点表示依附于该顶点Vi的边(或弧) 矩阵两种存储表示的空间开销比较 设图G有n个顶点,e条边. 图的邻接矩阵表示的空间代价为O(n2); 若图G是无向图, 则图的邻接表表示的空间代价为O(n+2e); 若图G是有向图, 则图的邻接表表示的空间代价为O(n+e); 若图中en2,则用邻接表表示图比较节省空间, 如果e达到n2数量级时,由于邻接表中增加了辅助的链域,采用邻接矩阵表示图更节省空间。 特别对于无权图而言,关系矩阵的每个元素实际上只要一个二进制位就可以表示。 图的操作与抽象数据类型 基于抽象数据类型的图的周游算法 图的周游是一种按某种方式系统地访问图中的所有结点的过程,它使每个结点都被且只被访问一次。图的周游也称图的遍历。 若图是连通(无向)图或强连通(有向)图,则从图中任意一顶点出发,都可以延某一路径找到图中所有顶点。否则就不然。 深度优先:类似于二叉树的深度优先。 广度优先:类似于二叉树的广度优先。 深度优先周游 先访问图中某个(未访问过的)结点V,然后选择一个V邻接到的未被访问过的结点W,再访问W,并按同样方法前进; 当遇到一个所有邻接于它的结点都被访问过了的结点时,退回到已访问结点序列中最后—个拥有相邻结点未被访问过的结点,访问它的一个未被访问过的相邻结点U,再从U出发按同样方法前进。 当所有已被访问过的结点的相邻结点都被访问时,如果图中还有未被访问的顶点,则从另一未被访问过的顶点出发重复上述过程,直到图中所有顶点都被访问过时,周游结束。 深度优先周游算法 深度优先周游算法 从节点v出发,dfs(g , v) void dfs ( Graph g , Vertex v ){ Vertex v1; v.mark = TRUE ; //标记字段mark for ( v1 = firstAdjacent ( g,v ); v1 != NULL; v1= nextAdjacent (g,v,v1)) dfs ( g ,v1 ); /*递归调用*/ } 邻接表表示法的存储结构 广度优先周游算法 从顶点v0出发的一个BFS序列为∶v0, v1, v2, v3, v4, v5, v6, v7 广度优先算法的实现 void bfs ( Graph g , Vertex v ){ Vertex v1, v2; Queue q = createEmptyQueue ( ); /* 队列元素的类型为Vertex */ enQueue ( q ,v ) ; while ( !isEmptyQueue(q) ) { v1 =frontQueue ( q ) ; deQueue ( q ); //get a node from queue v1.mark = TRUE ; //set start from mark v2 = fir
您可能关注的文档
最近下载
- 2025年教学查房——高血压.pptx VIP
- 山西省2026届高三第一次八省联考语文(T8联考)(含答案).pdf VIP
- 2026五个带头发言材料三.docx VIP
- 新能源汽车行业产业人才需求分析报告.docx
- 广西急难型、支出型临时救助审核认定表、申请社会救助家庭经济状况核对授权书、告知书、领取表.docx VIP
- 一年级上册语文期末复习-看拼音写词语4_苏教版.doc VIP
- 2026年成都农商银行软件开发岗(应用架构方向)社会招聘10人备考题库(含答案详解).docx VIP
- 培智生活数学五年级上册教案人民教育出版社.pdf VIP
- 2025北京海淀初一(上)期末生物(含答案).pdf VIP
- 天坛的介绍课件.pptx VIP
原创力文档


文档评论(0)