广度优先算法(BFS),是一种图形搜索算法,简单的来说,广度优先算法是从根节点开始开始,沿着树的宽度遍历树的节点,当所有节点都被访问过后,算法中止
遍历的方法是:
第一步:首先先从根节点A开始,访问A
第二步:访问A之后,访问A的邻接点,其中C,D,F都是A的邻接点,由于在实现过程中顶点ABCDEFG是按顺序存储的,C在D,F之前,先访问C,接着访问D,F
第三步:接着访问C的邻接点B,之后访问F的邻接点G
第四步:最后再访问G的邻接点E
访问的顺序是 A -> C ->D -> F -> B -> G -> E
BFS小结
- 面临类似于寻找最短路径的问题,可以尝试使用图来建立模型,再使用广度优先算法来解决问题
- BFS的空间复杂度为O(|V| + |E|),其中V为节点的数目,E为图中边的数目。
- 图分为有向图,无向图。其中有向图是带有箭头的,箭头的方向指定了关系的方向。无向图是不带箭头的,关系是双向的。
- 队列的工作原理是先进先出,可用于顺序查找某一符合条件的事物
- 栈的工作原理是后进先出