1

我刚开始尝试使用 minimax/negamax 算法,我想出了一个对我来说听起来不错的想法,但由于没有人使用它,这可能是一个有缺陷的逻辑。

我们为什么不这样做:

创建一个 depth=x 的三,确定要走哪一步,然后等待我们的对手。在他完成他的动作之后,我们可以只取我们已经评估过的动作的子树,并在使用旧节点的同时继续更深地构建它。我们可以使用已经评估过的节点值,并用来自新的更深节点的新值对它们进行加权。

尽管新值可能不像通常的方法那样精确,但我们可以更深入地从中获利。

我为我的错误书面和非结构化问题道歉,但我希望你能理解我的想法。

4

2 回答 2

1

我认为您在这里缺少的是极小极大的工作方式。Minimax 枚举指定深度 D 的所有可能性,然后为 D 处的节点(游戏状态)分配一个分数,然后向上移动树,根据我是否最大化返回每个深度的 MAX 或 MIN 节点播放器或最小化播放器。

您提出的自上而下的建议意味着您必须为更浅深度的节点分配分数,从而导致评估较差。

于 2010-02-15T17:42:40.903 回答
1

这个想法正在被使用,但以不同的方式。评估分数保留在转置表中并重复使用,而不是保留搜索树,这将是内存限制。这可以在进行迭代深化时节省时间,因为许多位置都会缓存以前搜索的分数。因此重用旧的搜索结果可以帮助进行一些中间搜索并加快移动排序,但是叶节点仍然需要在引擎使用的任何终端搜索深度进行评估。

于 2012-01-16T08:44:30.233 回答