其他分享
首页 > 其他分享> > dfs之迭代加深

dfs之迭代加深

作者:互联网

为什么要用迭代加深

\(dfs\) 每次会选择搜索树的一个分支,不断深入,直到达到递归边界条件;但这种搜索策略带有一定的缺陷性:

如果搜索树的某一个分支中的节点个数特别多,但是答案并不在这棵子树里面,那么我们就需要花费很多的无用时间去搜索这棵子树。

如图:

在这张图中,假设我们的目标节点是标五角星的节点,我们会首先搜索框框中的子树,然后才会搜到目标节点。这会浪费我们很多时间。

因此,我们需要想出一种思路去优化这种搜索策略。

什么是迭代加深

还是那上面那个图来举例子。如果我们按层搜索,那么只要搜索三层就可以搜索到当前节点了,这样可以节省我们很多时间。

所以,可以规定搜索最大层数\(max\)\(depth\),只要搜索到\(max\)\(depth\)仍然无解,那么我们就扩展\(max\)_\(depth\), 扩大深度继续搜索目标。

误区解释

迭代加深经典例题

Acwing 170. 加成序列 (来源:《算法竞赛进阶指南》

标签:迭代,max,dfs,depth,加深,搜索,maxdepth,节点
来源: https://www.cnblogs.com/LcyRegister/p/15863111.html