图的两种图的遍历方法.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文档。上传文档
查看更多
图的两种图的遍历方法

5.3 图的遍历 和树的遍历类似,在此,我们希望从图中某一顶点出发访遍图中其余顶点,且使每一个顶点仅被访问一次。这一过程就叫做图的遍历(TraversingGraph)。图的遍历算法是求解图的连通性问题、拓扑排序和求关键路径等算法的基础。 然而,图的遍历要比树的遍历复杂得多。因为图的任一顶点都可能和其余的顶点相邻接。所以在访问了某个顶点之后,可能沿着某条路径有哪些信誉好的足球投注网站之后,又回到该顶点上。[例如]图7.1(b)中的G2,由于图中存在回路,因此在访问了v1,v2,v3,v4之后,沿着边(v4 , v1)又可访问到v1。为了避免同一顶点被访问多次,在遍历图的过程中,必须记下每个已访问过的顶点。为此,我们可以设一个辅助数组visited[0..n-1],它的初始值置为“假”或者零,一旦访问了顶点vi,便置visited[i]为“真”或者为被访问时的次序号。 ??? 通常有两条遍历图的路径:深度优先有哪些信誉好的足球投注网站和广度优先有哪些信誉好的足球投注网站。它们对无向图和有向图都适用。 .3.1 深度优先有哪些信誉好的足球投注网站 深度优先有哪些信誉好的足球投注网站(Depth-First Search)遍历类似于树的先根遍历,是树的先根遍历的推广。 现以图5-3-1中G为例说明深度优先有哪些信誉好的足球投注网站过程。假定v0是出发点,首先访问v0。因v0有两个邻接点v1、v2均末被访问过,可以选择v1作为新的出发点,访问v1之后,再找v1的末访问过的邻接点。同v1邻接的有v0、v3和v4,其中v0已被访问过,而v3、v4尚未被访问过,可以选择v3作为新的出发点。重复上述有哪些信誉好的足球投注网站过程,继续依次访问v7、v4 。访问v4之后,由于与v4相邻的顶点均已被访问过,有哪些信誉好的足球投注网站退回到v7。由于v7、v3和v1都是没有末被访问的邻接点,所以有哪些信誉好的足球投注网站过程连续地从v7退回到v3,再退回v1,最后退回到v0。这时再选择v0的末被访问过的邻接点v2,继续往下有哪些信誉好的足球投注网站,依次访问v2、v5和v6,止此图中全部顶点均被访问过。遍历过程见图5-3-1(b),得到的顶点的访问序列为:v0 → v1 → v3 → v7 → v4 → v2 → v5 → v7。 (a)无向图G (b) G的深度优先有哪些信誉好的足球投注网站过程 图5-3-1 深度优先有哪些信誉好的足球投注网站遍历过程示例 因为深度优先有哪些信誉好的足球投注网站遍历是递归定义的,故容易写出其递归算法。下面的算法5.3是以邻接矩阵作为图的存储结构下的深度优先有哪些信誉好的足球投注网站遍历算法;算法5.4是以邻接表作为图的存储结构下的深度优先有哪些信誉好的足球投注网站遍历算法。 算法5.3 int visited[NAX_VEX]={0}; void Dfs_m( Mgraph *G,int i){ /* 从第i个顶点出发深度优先遍历图G,G以邻接矩阵表示*/ printf(%3c,G-vexs[i]); visited[i]=1; for (j=0;jVEX_NUM;j++) if((G-arcs[i][j]==1) (!visited[j])) Dfs_m(G,j); } /*Dfs_m */ 算法5.4 int visited[VEX_NUM]={0}; void Dfs_L(ALgraph G,int i){ /* 从第i个顶点出发深度优先遍历图G,G以邻接表表示 */ printf(%3c,G[i].data); visited[i]=1; p=G[i].firstarc; while (p!=NULL) { if(visited[p-adjvex]==0) Dfs_L(G,p-adjvex); p=p-nextarc; } } /*dfs_L*/ 分析上述算法得知,遍历图的过程实质上是对每个顶点有哪些信誉好的足球投注网站其邻接点的过程。其耗费的时间取决于所采用的存储结构。假设图有n个顶点,那么,当用邻接矩阵表示图时,有哪些信誉好的足球投注网站一个顶点的所有邻接点需花费的时间为O(n),则从n个顶点出发有哪些信誉好的足球投注网站的时间应为O(n2),所以算法5.1的时间复杂度是O(n2);如果使用邻接表来表示图时,需花费时间为O(n+e), 其中e为无向图中边的数目或有向图中弧的数目。算法5.4的时间复杂度为O(n+e)。 5.3.2 广度优先有哪些信誉好的足球投注网站广度优先有哪些信誉好的足球投注网站(Breadth_FirstSearch)遍历……,并均标记为已访问过,然后再按照Vj、Vk……的次序,访问每一个顶点的所有未被访问过的邻接顶点,并均标记为已访问过,下一步再从这些顶点出发访问与它们相邻接的尚未被访问的顶点,如此做下去,直到所有的顶点均被访问过为止。 ????在广度优先有哪些信誉好的足球投注网站中,若对顶点V1的访问先于顶点V2的访问,则对V1邻接顶点的访问也先于V2邻接顶点的访问。就是说广度优先有哪些信誉好的足球投注网站中对邻接点的寻找具有“先进先出”的特性。因此,为了保证访问顶点的这种先后关系,需借助一个队列暂存那些刚访问过的顶点。 [例如], v0→v1→v2→v

文档评论(0)

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

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

版权声明书
用户编号:7014141164000003

1亿VIP精品文档

相关文档