前言:
当前文章为学习笔记,消化大神的思想笔记,然后按照大神的思路梳理一遍
深度优先 (Depth first search, DFS);
深度优先搜索的步骤分为
1.递归下去
2.回溯上来。
顾名思义,深度优先,则是以深度为准则:
先一条路走到底,直到达到目标。这里称之为递归下去;
否则既没有达到目标又无路可走了,那么则退回到上一步的状态,到上一层后把原本的标记去掉走其他路。这便是回溯上来
广度优先 (Breadth first search, BFS)
深度优先搜索旨在不管有多少条岔路,先一条路走到底,不成功就返回上一个路口然后就选择下一条岔路;
广度优先搜索旨在面临一个路口时,把所有的岔路口都记下来,然后选择其中一个进入,然后将它的分路情况记录下来,然后再返回来进入另外一个岔路,并重复这样的操作;
对比总结
1.数据结构上的运用
DFS用递归的形式,用到了栈结构,先进后出。
BFS选取状态用队列的形式,先进先出。
2.复杂度
DFS的复杂度与BFS的复杂度大体一致,不同之处在于遍历的方式与对于问题的解决出发点不同,DFS适合目标明确,而BFS适合大范围的寻找。
3.思想
思想上来说这两种方法都是穷竭列举所有的情况。