知识大全 图 - 图的遍历 - 广度优先遍历 (一)

Posted

篇首语:案头见蠹鱼,犹胜凡俦侣。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 图 - 图的遍历 - 广度优先遍历 (一)相关的知识,希望对你有一定的参考价值。

  广度优先遍历(Breadth FirstTraversal)

   广度优先遍历的递归定义

  设图G的初态是所有顶点均未访问过 在G中任选一顶点v为源点 则广度优先遍历可以定义为 首先访问出发点v 接着依次访问

  v的所有邻接点w w … w t 然后再依次访问与w l w … w t 邻接的所有未曾访问过的顶点 依此类推 直至

  图中所有和源点v有路径相通的顶点都已访问到为止 此时从v开始的搜索过程结束

  若G是连通图 则遍历完成;否则 在图C中另选一个尚未访问的顶点作为新源点继续上述的搜索过程 直至G中所有顶点均已被访

  问为止

  广度优先遍历类似于树的按层次遍历 采用的搜索方法的特点是尽可能先对横向进行搜索 故称其为广度优先搜索(Breadth

  FirstSearch) 相应的遍历也就自然地称为广度优先遍历

   广度优先搜索过程

  在广度优先搜索过程中 设x和y是两个相继要被访问的未访问过的顶点 它们的邻接点分别记为x x … x s 和y

  y … y t

  为确保先访问的顶点其邻接点亦先被访问 在搜索过程中使用FIFO队列来保存已访问过的顶点 当访问x和y时 这两个顶点相继

  入队 此后 当x和y相继出队时 我们分别从x和y出发搜索其邻接点x x … x s 和y y … y t 对其中未访

  者进行访问并将其人队 这种方法是将每个已访问的顶点人队 故保证了每个顶点至多只有一次人队

   广度优先搜索算法

  ( )邻接表表示图的广度优先搜索算法

  void BFS(ALGraph*G int k)

  // 以v k 为源点对用邻接表表示的图G进行广度优先搜索

  int i;

  CirQueue Q; //须将队列定义中DataType改为int

  EdgeNode *p;

  InitQueue(&Q);//队列初始化

  //访问源点v k

  printf( visit vertex %e G >adjlist[k] vertex);

  visited[k]=TRUE;

  EnQueue(&Q k);//v k 已访问 将其人队 (实际上是将其序号人队)

  while(!QueueEmpty(&Q))//队非空则执行

  i=DeQueue(&Q); //相当于v i 出队

  p=G >adjlist[i] firstedge; //取v i 的边表头指针

  while(p)//依次搜索v i 的邻接点v j (令p >adjvex=j)

  if(!visited[p >adivex]) //若v j 未访问过

  printf( visitvertex %c C >adjlistlp >adjvex] vertex); //访问v j

  visited[p >adjvex]=TRUE;

  EnQueue(&Q p >adjvex);//访问过的v j 人队

  //endif

  p=p >next;//找v i 的下一邻接点

  //endwhile

  //endwhile

cha138/Article/program/sjjg/201311/23834

相关参考

知识大全 图 - 图的遍历 - 深度优先遍历(一)

  图的遍历概念  图的遍历  和树的遍历类似图的遍历也是从某个顶点出发沿着某条搜索路径对图中每个顶点各做一次且仅做一次访问它是许多图的算  法的基础  深度优先遍历和广度优先遍历是最为重要的两种遍历

知识大全 图 - 图的遍历 - 深度优先遍历(三)

  深度优先遍历序列  对图进行深度优先遍历时按访问顶点的先后次序得到的顶点序列称为该图的深度优先遍历序列或简称为DFS序列  ()一个图的DFS序列不一定惟一  当从某顶点x出发搜索时若x的邻接点有

知识大全 数据结构之深度优先遍历

图的遍历  图的遍历(TraversingGraph)从图中某一顶点出发访遍图中其余顶点且使每一个顶点仅被访问一次  图的遍历有两种方法深度优先搜索和广度优先搜索 深度优先遍历  深度优先遍

知识大全 图 - 图的遍历 - 深度优先遍历(二)

  深度优先遍历的递归算法  ()深度优先遍历算法  typedefenumFALSETRUEBoolean;//FALSE为TRUE为  Booleanvisited[MaxVertexNum];/

知识大全 数据结构 7.4 图的广度优先搜索遍历的过程

  希赛教育计算机专业考研专业课辅导招生  希赛教育计算机专业考研专业课辅导视频  希赛教育计算机考研专业课在线测试系统  将顶点v放在上方中央其余顶点按从v到该顶点的最短路径长度分别放在第和层上则图

知识大全 数据结构 7.3 非连通图的遍历

  希赛教育计算机专业考研专业课辅导招生  希赛教育计算机专业考研专业课辅导视频  希赛教育计算机考研专业课在线测试系统  对演示中非连通图进行深度优先搜索遍历得到顶点的访问序列为  a→c→h→d→

知识大全 数据结构之广度优先遍历

    广度优先遍历(BreadthFirstTraversat)从图中某个顶点v出发在访问了v之后依次访问v的各个未曾访问过的邻接点然后分别从这些邻接点出发依

知识大全 数据结构 7.5 广度优先搜索遍历的过程演示

  希赛教育计算机专业考研专业课辅导招生  希赛教育计算机专业考研专业课辅导视频  希赛教育计算机考研专业课在线测试系统  看这个广度优先搜索遍历的过程就好比一石激起千重浪访问顶点v就好比将一块大石头

知识大全 数据结构考研分类复习真题 第七章 图[49]

  .对有五个结点ABCDE的图的邻接矩阵  ().画出逻辑图  ().画出图的十字链表存储  ().基于邻接矩阵写出图的深度广度优先遍历序列  ().计算图的关键路径【华南师范大学三(分)】  .何

知识大全 数据结构之生成树

    生成树(SpanningTree)从连通图的任何一个顶点出发进行遍历遍历过程中经过的边加上图的所有顶点构成的子图称为图的生成树  深度优先生成树由深度优