- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
NEXT Neusoft 基本内容 1.图的定义和基本术语 第7章 图 2.图的存储结构 3.图的遍历 4.图的最小生成树 5.最短路径? 1.图的定义 Graph 图是由顶点集合和边集合组成的。Vertex、edge 顶点集合通常使用V表示,边集合通常使用E表示,图通常使用G符号表示,所以G=(V,E)。 一.图的定义和基本术语 1.图的定义 集合V和集合E分别为: V(G)={A,D,T,G,S,W,Q} E(G)={(A,D),(T,G),(D,T),(G,W),(D,S),(W,S),(A,S),(A,Q)} 一.图的定义和基本术语 A G S T Q W D 2.图的基本术语 1)有向图和无向图 有向图是指图的边是有方向的,即在图的每条边都带有箭头 一.图的定义和基本术语 A S T D 2.图的基本术语 2)完全图 -------最大边:n(n-1)/2,,,,有向图最多:n(n-1) 完全图是指图的边数达到最大值,即图中每两个点之间都有边。 完全无向图 一.图的定义和基本术语 A S T D 2.图的基本术语 3)带权图 带权图是指图中的每条边具有一个权值。 一.图的定义和基本术语 A S T K F D 5 1 9 3 8 2.图的基本术语 4)顶点的度 degree 对于无向图,顶点的度是指与该顶点连接的边的数目。顶点A的度可以表示为deg(A) 。 对于有向图,顶点的度分为出度与入度。在有向图中,顶点的出度是指由该顶点出发的边的数目,用outdeg()表示;顶点的入度是指指向该顶点边的数目,用indeg()表示。 一.图的定义和基本术语 2.图的基本术语 5)路径、简单路径和回路 路径是从一个顶点到另一个顶点所经过的顶点序列。 简单路径是指一条路径上,除起点与终点外,其余顶点均不相同的路径。 若路径的起点与终点相同,则该路径称为回路。 一.图的定义和基本术语 2.图的基本术语 6)连通图 在图中,从任意一个顶点出发有路径可以到达该图中的其他任意一个顶点,则该图为连通图,否则该图为非连通图。 一.图的定义和基本术语 1.邻接矩阵表存储 邻接矩阵存储是用一维数组存储图中顶点的信息,用矩阵表示图中各顶点之间的邻接关系。若图G=(V,E)有n个顶点,则A={v0,v1,…,vn-1}表示G中各顶点相邻关系为一个n×n的矩阵,矩阵中元素的值为: 二.图的存储结构 1.邻接矩阵表存储 二.图的存储结构 A S T D 1.邻接矩阵表存储 二.图的存储结构 2.邻接表存储 邻接表存储是将顺序存储与链式存储结合的存储方法。 邻接表表示法类似于树的孩子链表表示法。 对于图G中的每一个顶点vi,将所有与顶点vi有连线的顶点vj连成一个单链表,这个单链表就称为顶点vi的邻接表,再将所有顶点的邻接表表头放到数组中,就构成了图的邻接表。 二.图的存储结构 2.邻接表存储 二.图的存储结构 1.深度优先遍历 图的深度优先遍历是以图的某一顶点V0作为出发点,首先访问该点,然后依次从V0的各个未被访问的邻接点出发,进行深度优先遍历,直至图中所有和V0相通的顶点都被访问到。若此时图中还有顶点未被访问,则以该顶点为起点重复上述访问过程,直至图中所有顶点都被访问到为止。 三.图的遍历 1.深度优先遍历 遍历结果为A,F,W,T,D,S 三.图的遍历 A S T F D W 1.深度优先遍历 void dsf(int index) { //未找到指定结点,退出 if(vertexs[index] == null) return; //创建栈,用于记录已访问结点 Stack s = new Stack(vertexs.length); vertexs[index].visit(); s.push(index); 三.图的遍历 1.深度优先遍历 //如果栈不为空,继续 while(!s.isEmpty()) { index = fNeighbor(s.peek()); if(index != -1) { //访问结点 vertexs[index].visit(); s.push(index); } else s.pop(); } //清空所有访问标志 clean(); } 三.图的遍历 2.广度优先遍历 广度优先遍历从图的某一顶
文档评论(0)