深度优先搜索(DFS)

深度优先搜索(DFS)

首先回顾之前已经介绍过的广度优先搜索。在由状态的转移和扩展构成的解答树中,广度优先搜索按照层次遍历所有的状态,直到找到我们需要的状态。

与其相对的,假如我们改变对解答树的遍历方式,改为优先遍历层次更深的状态,直到遇到一个状态结点,其不再拥有子树,则返回上一层,访问其未被访问过的子树,直至解答树中所有的状态都被遍历完毕。这个过程,类似于树的前序遍历。其遍历顺序如下图所示:
在这里插入图片描述
在搜索过程中为了达到这一目的,我们立即扩展新得到的状态,而更早得到的状态则更迟得到扩展。在广度优先搜索中,我们使用队列来实现较早得到的状态较先得到扩展,这是利用了队列先进先出的特性。

那么这里,为了实现先得到的状态后得到扩展的效果,我们按理将使用堆栈保存和扩展搜索过程得到的状态,但是考虑到我们同样可以利用上节所提到的递归程序来实现这一功能,所以这里给出的深度优先遍历不使用堆栈而是使用递归程序。

由于其缺少了广度搜索中按层次递增顺序遍历的特性。所以当深度优先搜索搜索到我们需要的状态时,其不再具有某种最优的特性。所以,在使用深度优先搜索时,我们更多的求解有或者没有的问题,即对解答树是否有我们需要的答案进行判定,而一般不使用深度优先搜索求解最优解问题。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值