二次复习——DFS剪枝

DFS,深度优先搜索,从一个起始节点开始,沿着一条路径尽可能远地访问节点,直到到达不能继续前进的节点,然后返回上一层继续探索其他路径。这个过程是递归的,通过不断地深入进入节点的子节点,直到遍历完整个图。

而DFS中的剪枝,是非常重要的一个部分,可以优化DFS中多余无效的查找,其中有五种比较常见且重要的剪枝方法。

一、可行性剪枝

如其名,指的是DFS的过程中对于不可行或已经达成目标的递归的剔除。通常是递归超出了搜索边界或者满足了递归结束的条件,要进行可行性剪枝,回溯。

二、最优性剪枝

如其名,指的是进行最值查找DFS的过程中,当前递归的值超过/小于最值,继续搜索下去对求最值没有作用时,要进行最优性剪枝,停止此次递归。

三、优化搜索顺序

这种方法要贴合题意判断,主要来确定递归的方向与涉及方面,以更快捷便利地递归。

四、记忆化搜索

其通过存储已经遍历过的状态信息,从而避免对同一状态重复遍历。需要DFS的过程中检查是否已经计算过该子问题。如果已经计算过,则直接返回已经存储的结果;否则,计算该问题,并将结果存储下来以备将来使用。可以减少“走回头路”的次数。

五、排除等效冗余

当DFS搜索时遇见两个及以上等价的搜索方向,就只用执行其中的一条搜索路线,效果相当。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值