当前位置:  开发笔记 > 编程语言 > 正文

如何使用alpha beta修剪实现迭代加深

如何解决《如何使用alphabeta修剪实现迭代加深》经验,为你挑选了1个好方法。

我正在编写一个程序来玩点和框,我想通过在迭代深化方案中基于启发式值对alphaBeta中考虑的移动进行排序来提高我的时间效率。本质上,我想进入搜索树,在每次迭代中增加深度,并使用alphaBeta评估每个节点。在每个后续迭代中,我认为节点的顺序将由上一次迭代中节点的启发式值决定。但是,我在理解如何实现方面有困难。有人可以提供伪代码来说明如何将标准alphaBeta程序修改为使用迭代加深进行搜索吗?谢谢!



1> Philipp Claß..:

好吧,迭代加深并不是很难实现。如果您已经具有执行搜索的功能,可以将其称为alphaBetaAtRoot,它执行固定距离的搜索,您只需从距离1开始重复调用即可:

for(int distance = 1; distance < MAX_DISTANCE && !outOfTime(); distance++) {
  bestmove = alphaBetaAtRoot(position, distance);
}
play(bestmove);

不过,重要的是要实现转置表。否则,您将不会从更好的移动顺序中受益,因为每次搜索都将以零知识开始。

推荐阅读
赛亚兔备_393
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有