广度优先搜索BFS
2015-05-08 17:50
302 查看
广度优先搜索可以形成一个广度优先搜索树
算法时间为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)
算法时间为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)
- 【数据结构】深度优先搜索BFS和广度优先搜索DFS
- 数据结构和算法总结(一):广度优先搜索BFS和深度优先搜索DFS
- 【算法入门】广度/宽度优先搜索(BFS)
- javascript实现的图数据结构的广度优先 搜索(Breadth-First Search,BFS)和深度优先搜索(Depth-First Search,DFS)
- 广度优先搜索(BFS)算法
- 广度/宽度优先搜索(BFS)
- 广度优先搜索练习之神奇的电梯----BFS
- POJ 3126-Prime Path-广度优先搜索bfs
- 图的广度优先搜索BFS
- BFS(广度优先遍历搜索解析)
- 【算法入门】广度/宽度优先搜索(BFS)
- POJ 3278-Catch That Cow 广度优先搜索BFS
- 数据结构之 图论---基于邻接矩阵的广度优先搜索遍历(输出bfs遍历序列)
- 22.基于 邻接表 表示的 深度优先搜索dfs 和 广度优先搜索bfs
- 图搜索算法之广度优先搜索(Breadth First Search,BFS)
- BFS-迷宫问题-用宽度(广度)优先搜索解决最优路径问题
- 【算法入门】广度/宽度优先搜索(BFS)
- 广度优先搜索(bfs)
- 广度/宽度优先搜索(BFS)