关于搜索

 关于搜索。

 

这几天着重练习了搜索。从深度/广度搜索到回溯。虽然感觉对处理该类型里中等难度题依然有些力不从心,但好歹有了想法与大体框架。下面就按层次分别总结下搜索。

 

深搜:(dfs

       主要思想:“一条路走到黑”,按搜索的思想出发找到扩展点便一直扩展下去。

主要注意对搜过点的标记以及剪枝。

       然后没啥了。

 

 

宽搜:(bfs

       主要思想:利用队列,不但保证了在求解问题搜索过程中的层次性,同时因为搜索过点需要进一次队列的原因省掉了判重的过程。适合求解需要最小拓展类问题

但一定要注意剪枝,因为将每层都完全拓展开来,这个树会非常庞大。

 

 

回溯:*重点*

       主要思想:在处理某类拓展方式相同的问题时,可采用类似dfs的方法,对每一次拓展出来的点做相同操作向下拓展,并在当发现该拓展点无法求得最终解后返回上层的拓展点按下种方式拓展。

 

 

       回溯一般步骤(官方版)

  1. 定义一个解空间,它包含问题的解;(建立回溯模型)
  2. 用适于搜索的方式组织该空间;(定义回溯“增量数组”)
  3. 用深度优先法搜索该空间,利用限界函数避免移动到不可能产生解的子空间。直到找到问题的解(加边界控制范围,还可以再加上特判用来剪枝)

 

注意:如果不回溯,效率会很高,但是不能把所有的方案都搜索出来,如果回溯,效率会很低。时间复杂度能达到阶乘级别。

 

1)递归参数 

2)边界 

3 搜索范围 

4)状态修改和回溯。

 

 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值