DFS深度优先搜索
深度优先搜索分为2步:
1.递归下去
2.回溯上来
深度优先,以深度为准则,先一条路走到底,直到到达目标,也就是递归下去,若没有到达目标且又无路可走,那么退回到上一步的状态,在另一条路,这便是回溯上来
如上图从x走到o,先向右走,走到底发现无路可走.
回溯到上一个位置
然后再向下走
走到最下边时,可以发现在向右走一步就可以到达终点.
BFS广度优先搜索
广度优先搜索和深度优先搜索的不同在于,深度优先搜索不管有多少条岔路先一条路走到底,不成功就返回上一个路口然后就选择下一条岔路,而广度优先搜索在面临一个路口时,把所有的岔路口都记下来,然后选择其中一个进入,然后将他的分路情况记录下来,然后再返回来进入另一个岔路,并重复这样的操作.
还是从x出发到达o
记录可以触发的岔路口,并标记一步可以到达
然后第一次标记路口的可走路口标记为2步可以到达.
再依次进行标记.
我们便成功寻找到了路径,并且把所可行的路径都求出来,在广度优先搜索中,可以看出是逐步求解的,反复的进入与退出,将当前的所有可行解都记录下来,然后逐个去查看.
在DFS中我们关键点是递归和回溯,而BFS中我们的关机键点则是状态的选取和标记