在阅读了国际象棋编程维基和其他资源之后,我一直对迭代深化的确切目的感到困惑。我原来的理解是这样的:
它包括在深度 = 1、深度 = 2 等处执行的极小极大搜索,直到达到所需的深度。在对每个深度进行极小极大搜索之后,根据该搜索的结果对根节点的移动进行排序,以便在下一次搜索中以深度+1 的最佳移动排序,因此在下一次更深的搜索中,搜索 PV 移动,然后是下一个最佳移动,然后是之后的下一个最佳移动,依此类推。
这个对吗?当我读到关于 MVV-LVA 排序,特别是关于排序捕获,以及使用哈希表等时,我产生了疑问。例如,此页面推荐以下移动顺序:
- 最左边路径的迭代深化框架的上一次迭代的主要变化的 PV 移动,通常由 2 隐式完成。
- 从哈希表中移动哈希
- 获奖捕获/促销
- 平等的捕获/促销
- 杀手动作(非捕获),通常首先是伴侣杀手
- 按历史启发式排序的非捕获等
- 丢失捕获
如果是这样,那么如果只需要 PV-move,那么从每个深度对 minimax 进行排序又有什么意义呢?另一方面,如果 ID 的全部点是 PV-move,那么从每个单个 minimax 深度搜索到所需的深度只是为了计算每个深度的 PV-move 不是浪费吗?
ID的具体用途是什么,它节省了多少计算量?