广度优先BFS与深度优先DFS的区别

    科技2022-07-15  145

    BFS

    广度优先搜索算法(Breadth-First-Search,缩写为 BFS) 在IT生活圈人称它的搜索过程类似水面丢进一块石头激起层层涟漪 是一种利用队列实现的搜索算法,因为BFS在搜索过程中需要保存搜索过的状态, 而且一般情况需要一个队列来记录,队列的数据结构还可以按照 下标字典序列最小之类的排序要求规定进入的队列的顺序 按照上面的形象比如,BFS在搜索的时候就是先将它身边可以遍历的节点都遍历进入队列中 然后再从身边的节点里面再遍历所有的身边的节点的身边的节点 这样子就像从一点向四周扩散, 最后找到最优的解 BFS适合用于: 比如最短路径呀 还有最小生成树的问题呀 最少步数呀 最少交换次数呀 就是这种要找到最优解就行了的的问题 BFS搜索过程中遇到的解一定是离根最近的,遇到一个解,一定就是最优解,此时搜索算法可以终止。 而DFS搜索到的解不一定是离根最近的,只有全局搜索完毕,才能从所有解中找出离根的最近的解。 所以使用DFS解决这些问题,一般需要剪枝

    DFS

    深度优先搜索算法(Depth-First-Search,缩写为 DFS) 它的搜索过程IT界称之为牛角尖要钻到底才回头 是一种利用递归实现的搜索算法。 DFS适合搜索全部的解: 比如印象最深刻的就是全排列的问题, 它就是将一种可能遍历到底,然后再会去走其他的路 就类似于遍历树的时候,首先从根节点遍历到底 然后再从下面返回回来,遍历其他的节点
    Processed: 0.011, SQL: 8