dfs之迭代加深
为什么要用迭代加深
\(dfs\) 每次会选择搜索树的一个分支,不断深入,直到达到递归边界条件;但这种搜索策略带有一定的缺陷性:
如果搜索树的某一个分支中的节点个数特别多,但是答案并不在这棵子树里面,那么我们就需要花费很多的无用时间去搜索这棵子树。
如图:

在这张图中,假设我们的目标节点是标五角星的节点,我们会首先搜索框框中的子树,然后才会搜到目标节点。这会浪费我们很多时间。
因此,我们需要想出一种思路去优化这种搜索策略。
什么是迭代加深
还是那上面那个图来举例子。如果我们按层搜索,那么只要搜索三层就可以搜索到当前节点了,这样可以节省我们很多时间。
所以,可以规定搜索最大层数\(max\)\(depth\),只要搜索到\(max\)\(depth\)仍然无解,那么我们就扩展\(max\)_\(depth\), 扩大深度继续搜索目标。
误区解释
Q : 我们每次扩展深度的时候,会重复搜索\(maxdepth - 1\) 到 \(1\) 层之间的节点,这样就不会浪费时间了吗??
A : 虽然深度限制为 \(maxdepth\) 时,会重复搜索 \(1\) - \(maxdepth - 1\)之间的节点,但是当搜索树节点分支数目较多时,随着层数的深入,每层的节点个数会呈指数级增长,这点搜索重复和深层节点的搜索冗余相比实在是太少了。
迭代加深经典例题
Acwing 170. 加成序列 (来源:《算法竞赛进阶指南》
dfs之迭代加深的更多相关文章
- poj2286The Rotation Game(迭代加深dfs)
链接 把迭代加深理解错了 自己写了半天也没写对 所谓迭代加深,就是在深度无上限的情况下,先预估一个深度(尽量小)进行搜索,如果没有找到解,再逐步放大深度搜索.这种方法虽然会导致重复的遍历 某些结点,但 ...
- poj 3134 Power Calculus(迭代加深dfs+强剪枝)
Description Starting with x and repeatedly multiplying by x, we can compute x31 with thirty multipli ...
- Addition Chains POJ - 2248 (bfs / dfs / 迭代加深)
An addition chain for n is an integer sequence <a0, a1,a2,...,am=""> with the follow ...
- POJ 2248 - Addition Chains - [迭代加深DFS]
题目链接:http://bailian.openjudge.cn/practice/2248 题解: 迭代加深DFS. DFS思路:从目前 $x[1 \sim p]$ 中选取两个,作为一个新的值尝试放 ...
- POJ-3134-Power Calculus(迭代加深DFS)
Description Starting with x and repeatedly multiplying by x, we can compute x31 with thirty multipli ...
- [poj 2331] Water pipe ID A*迭代加深搜索(dfs)
Water pipe Time Limit: 3000MS Memory Limit: 65536K Total Submissions: 2265 Accepted: 602 Description ...
- POJ1129Channel Allocation[迭代加深搜索 四色定理]
Channel Allocation Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 14601 Accepted: 74 ...
- BZOJ1085: [SCOI2005]骑士精神 [迭代加深搜索 IDA*]
1085: [SCOI2005]骑士精神 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 1800 Solved: 984[Submit][Statu ...
- 迭代加深搜索 POJ 1129 Channel Allocation
POJ 1129 Channel Allocation Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 14191 Acc ...
- 迭代加深搜索 codevs 2541 幂运算
codevs 2541 幂运算 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题目描述 Description 从m开始,我们只需要6次运算就可以计算出 ...
随机推荐
- DevOps|破除壁垒,重塑协作-业务闭环释放产研运协作巨大效能
- 会议太多了,员工开会效率降低了50%! 上篇文章<研发效能组织架构:职能独立vs业务闭环>介绍了职能独立型组织架构和业务闭环型组织架构的特点,优劣势.也许有的小伙伴可能对这两种组织架构 ...
- 如何在云服务上快速拥有洛甲WAF(Web防火墙)
如何在云服务上快速拥有洛甲WAF(Web防火墙) 洛甲WAF是基于openresty的web防火墙,通过配合后台保护您的数据安全,详情参考节点服务器 luojiawaf_lua(nginx+lua) ...
- Redis主从复制部署小结
Redis主从 搭建主从架构 单节点Redis的并发能力是有上限的,要进一步提高Redis的并发能力,就需要搭建主从集群,实现读写分离. 主从数据同步原理 全量同步 主从第一次建立连接时,会执行全量同 ...
- 最新 2023.2 版本 WebStorm 永久破解教程,WebStorm 破解补丁永久激活(亲测有效)
最近 jetbrains 官方发布了 2023.2 版本的 IDEA,之前的激活方法并不支持这个新的版本. 下面是最新的激活教程,激活步骤和之前是类似的,只是换用了不同的补丁文件. 本教程支持 Jet ...
- 「面试题」20+Vue面试题整理
「面试题」20+Vue面试题整理 转载地址:https://juejin.cn/post/6844904084374290446 「观感度:」 「口味:红烧猪蹄」 「烹饪时间:15min」 本文已收录 ...
- 神经网络入门篇:激活函数(Activation functions)
激活函数 使用一个神经网络时,需要决定使用哪种激活函数用隐藏层上,哪种用在输出节点上.到目前为止,之前的博客只用过sigmoid激活函数,但是,有时其他的激活函数效果会更好. 在神经网路的前向传播中, ...
- Hibench对大数据平台CDH/HDP基准性能测试
一.部署方式 1.1.源码/包:https://github.com/Intel-bigdata/HiBench 部署方法: https://github.com/Intel-bigdata/HiBe ...
- 普冉PY32系列(十二) 基于PY32F002A的6+1通道遥控小车III - 驱动篇
目录 普冉PY32系列(一) PY32F0系列32位Cortex M0+ MCU简介 普冉PY32系列(二) Ubuntu GCC Toolchain和VSCode开发环境 普冉PY32系列(三) P ...
- 本地训练,开箱可用,Bert-VITS2 V2.0.2版本本地基于现有数据集训练(原神刻晴)
按照固有思维方式,深度学习的训练环节应该在云端,毕竟本地硬件条件有限.但事实上,在语音识别和自然语言处理层面,即使相对较少的数据量也可以训练出高性能的模型,对于预算有限的同学们来说,也没必要花冤枉钱上 ...
- Spring配置文件的魔法炼金术:如何制造容器化时代的完美配方
前言 基于现代服务的云原生十二要素理论,我们在采用容器化部署时,要保证同一个镜像可以满足不同环境的部署要求,而不是不同环境打包不同的镜像.本文档主要介绍一种基于spring框架的满足不同环境配置的编译 ...