首页 > 其他 > 详细

广度优先搜索BFS

时间:2015-05-08 19:47:25      阅读:141      评论:0      收藏:0      [点我收藏+]

广度优先搜索可以形成一个广度优先搜索树

算法时间为O(V+E),两重循环

输入:图g,起点start(int)

需要的数据结构:队列Q、color数组(存放每个顶点的颜色)

算法过程:

1. 预处理:1)color数组的每个值都赋为white(表示没被访问过);2)队列Q为空队列

2. 处理起点: 1)color[start]=gray,gray表示顶点已被访问,但其子节点未被处理(指的是入队列);2)Q.enQueue(start)

3. 循环以下操作,直到Q为空

1)int u=Q.deQueue()

2)对u进行访问处理,比如打印之类的

3)循环,对于和u相邻的每个顶点v,如果v是white的,则(1)color[v]=gray;(2)Q.enQueue(v);

4)循环结束后,(1)color[u]=black,表示u节点的子节点也被处理过了;(2)还可以在这里对u进行终结时的访问处理,比如打印之类的

注意:对节点的处理,在节点出队列时进行(2)或是循环结束时进行(4)

广度优先搜索BFS

原文:http://www.cnblogs.com/james6176/p/4488426.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!