广度优先搜索(Breadth-First Search)

Posted 五指拈花

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了广度优先搜索(Breadth-First Search)相关的知识,希望对你有一定的参考价值。

关键词:广度优先搜索,最短路径,图论

广度优先搜索算法(BFS),是一个基础的寻找连通图最短路径的方法。


基本思路:从根节点出发,每次标记可到达的节点,记录在open集,并将已经遍历过的节点放置在close集,遍历树的每一层,直至得到最优解。


由于该算法是先遍历完每一层的节点后,再检查子节点,因此称之为广度优先。


代码结构:

    1. 初始化open,close,path

    2. 当open不为空时:

        a. 将open中第一个节点取出,移到close

        b. 对于该节点,找到其有效的子节点,如果不在open或close中,则放置在open

        c. 当目的节点出现在open中,停止

   

优劣:

该算法本质还是穷举,所以对于小规模问题,效果良好,得到的也是全局最优解。但是对于稍大规模,算法会变得非常的慢! 并不适用于大规模或实际问题。


reference:

https://blog.csdn.net/raphealguo/article/details/7523411

https://en.wikipedia.org/wiki/Breadth-first_search

https://www.hackerearth.com/practice/algorithms/graphs/breadth-first-search/tutorial/


以上是关于广度优先搜索(Breadth-First Search)的主要内容,如果未能解决你的问题,请参考以下文章

深度优先搜索法和广度优先搜索法

基本算法——深度优先搜索(DFS)和广度优先搜索(BFS)

20162308 2017-2018-2 《程序设计与数据结构》第11周学习总结

图的广度、深度优先搜索和拓扑排序

图的遍历之 深度优先搜索和广度优先搜索

广度优先搜索算法