解释
迭代加深让先用较小界限搜索,然后用逐步增大的界限重复分析。在国际象棋中,深度通常以ply计量,一个ply就是单方走一步。
这种方法起初看似浪费,因为靠近起点的局面会被重复访问。然而,较早迭代会产生有价值的信息:暂定最佳着法、主变例,也就是当前被视为最佳的路线、已保存的结果,以及用于的依据。下一轮先搜索有希望的选择,往往能让更多分支提早停止,从而抵消大部分重复工作。
它最明显的实用优势是时间控制。若棋钟迫使引擎在一次更深迭代中停止,它仍保留上一次迭代的完整结果,不必把一切押在可能无法完成的搜索上。
迭代加深并不意味着只延伸一条偏爱的路线。每次迭代都会以更大界限重新考察初始局面,尽管选择性技术可能在树内为不同位置分配不同局部深度。它也会把向外推移,却不能将其消除。
用法与背景
界面经常显示当前迭代达到的深度,但单凭更大的数字不能证明两个不同引擎完成了可比的工作。
常见混淆
毫无意义的重复
前一次工作提供着法顺序、主变例和已保存的搜索信息,所以下一次迭代并非真正从零开始。
加深与选择性延伸
迭代加深在多次搜索之间提高整体界限,延伸则只为特定路线增加局部搜索。
来源
- 1.Depth-first iterative-deepening: An optimal admissible tree search, Artificial Intelligence / Elsevier
- 2.Iterative Deepening, Chess Programming Wiki
- 3.search.cpp, Stockfish
