前言:
学习算法时,一个关键的问题是什么时候来使用它。在一些搜索问题中,使用普通的DFS可能会让你把时间浪费在深度非常大而且答案不是最优的搜索过程上,甚至有的时候DFS搜索的深度是无穷的,而BFS虽说理论上可以避免这种情况,却又无法满足题目的某些需求,或者无法实现。仔细思考一下这个例子,它有着两个特征:一是它是个最优解问题,二是最优的答案深度最小,如右图:
但是我们的答案有三个,若我们要ans3这个答案,那么DFS和BFS都是不满足的,so我们引入迭代加深搜索来解决这个问题。
概念:
1.迭代加深搜索,实质上就是限定下界的深度优先搜索。即首先允许深度优先搜索K层搜索树,若没有发现可行解,再将K+1后重复以上步骤搜索,直到搜索到可行解。
2.在迭代加深搜索的算法中,连续的深度优先搜索被引入,每一个深度约束逐次加