深度优先搜索与广度优先搜索

有两种经常使用的方法可用来搜索图:即深度优先搜索和广度优先搜索。它们最终都会到达全部连通的顶点。深度优先搜索经过栈来实现,而广度优先搜索经过队列来实现。算法

深度优先搜索:.net

为了实现深度优先搜索,首先选择一个起始顶点并须要遵照三个规则:
(1) 若是可能,访问一个邻接的未访问顶点,标记它,并把它放入栈中。
(2) 当不能执行规则1时,若是栈不空,就从栈中弹出一个顶点。
(3) 若是不能执行规则1和规则2,就完成了整个搜索过程。blog

广度优先搜索:
在深度优先搜索中,算法表现得好像要尽快地远离起始点似的。相反,在广度优先搜索中,算法好像要尽量地靠近起始点。它首先访问起始顶点的全部邻接点,而后再访问较远的区域。它是用队列来实现的。队列

实现广度优先搜索,也要遵照三个规则:
(1) 访问下一个将来访问的邻接点,这个顶点必须是当前顶点的邻接点,标记它,并把它插入到队列中。
(2) 若是由于已经没有未访问顶点而不能执行规则1时,那么从队列头取一个顶点,并使其成为当前顶点。
(3) 若是由于队列为空而不能执行规则2,则搜索结束。搜索

 

参考:方法

http://blog.csdn.net/andyelvis/article/details/1728378vi

相关文章
相关标签/搜索