介绍
广度优先搜索算法(英语:Breadth-First-Search,缩写为BFS),又译作宽度优先搜索,或横向优先搜索,是一种图形搜索算法。简单的说,BFS是从根节点开始,沿着树的宽度遍历树的节点。如果所有节点均被访问,则算法中止。广度优先搜索的实现一般采用open-closed表。
示例,依赖的树
就拿你早上活动的事情来举例吧:
(权重在《算法图解》日志四讲解)
特性
空间复杂度
因为所有节点都必须被存储,因此BFS的空间复杂度为,其中是节点的数目,而是图中边的数目。注:另一种说法称BFS的空间复杂度为,其中B是最大分支系数,而M是树的最长路径长度。由于对空间的大量需求,因此BFS并不适合解非常大的问题,对于类似的问题,应用IDDFS已达节省空间的效果。
时间复杂度
最差情形下,BFS必须查找所有到可能节点的所有路径,因此其时间复杂度为,其中是节点的数目,而是图中边的数目。
完全的性质
广度优先搜索算法具有完全性。这意指无论图形的种类如何,只要目标存在,则BFS一定会找到。然而,若目标不存在,且图为无限大,则BFS将不收敛(不会结束)。(权重在《算法图解》日志四讲解)
特性
空间复杂度
因为所有节点都必须被存储,因此BFS的空间复杂度为,其中是节点的数目,而是图中边的数目。注:另一种说法称BFS的空间复杂度为,其中B是最大分支系数,而M是树的最长路径长度。由于对空间的大量需求,因此BFS并不适合解非常大的问题,对于类似的问题,应用IDDFS已达节省空间的效果。
时间复杂度
最差情形下,BFS必须查找所有到可能节点的所有路径,因此其时间复杂度为,其中是节点的数目,而是图中边的数目。
完全的性质
广度优先搜索算法具有完全性。这意指无论图形的种类如何,只要目标存在,则BFS一定会找到。然而,若目标不存在,且图为无限大,则BFS将不收敛(不会结束)。