迭代加深搜索是什么?
如图一般的dfs是按照红线的搜索方式,迭代加深搜索是搜到一定的深度就停止搜索如黑线所示,并不断的调整搜索深度
迭代加深搜索有什么用?
先看一道题UVA529
一般来说会用bfs来求最小值,但bfs所需空间比较大,但迭代加深可以通过调整深度来求出最小值且所需空间较小。有人可能会怀疑迭代加深的效率很低,因为重复搜索了前面的层,但其实一般情况状态数是随着搜索层数指数增加的,所以这点可以忽略。
迭代加深的搜索方式比较类似于人类的思考方式
代码实现
while(!dfs(maxdep))
maxdep++;