第十九讲图周游.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文档。上传文档
查看更多
第十九讲图周游,复盘与看盘第十九讲,英语语法入门第十九讲,逻辑十九讲,中国哲学十九讲,党校十九讲,中国哲学十九讲pdf,逻辑十九讲pdf,逻辑十九讲百度云,逻辑十九讲pdf下载

图 — 周游算法,最短路问题 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

文档评论(0)

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

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

1亿VIP精品文档

相关文档