我刚开始尝试使用minimax / negamax算法,我想出了一个听起来不错的想法,但是没有人使用它可能是一个有缺陷的逻辑。
为什么我们不这样做:
创建一个深度= x的三个,找出要移动的东西,并等待我们的对手。在他完成移动后,我们可以采用我们已经评估过的移动子树,并在使用旧节点时继续深入构建。我们可以使用已经评估的节点值,并使用来自新的更深节点的新值进行权衡。
尽管新值可能不如通常的方法那么精确,但我们可以更深入地从中获利。
我为我的错误的书面和非结构化问题道歉,但我希望你能理解我的想法。
答案 0 :(得分:1)
我认为你在这里缺少的是 minimax如何运作。 Minimax枚举指定深度D的所有可能性,然后在D处为节点(游戏状态)分配一个分数,然后向上移动树,根据我是否最大化返回每个深度的MAX或MIN节点球员或最小化球员。
你自上而下做的提议意味着你必须在更浅的深度为节点分配一个分数,导致评估较差。
答案 1 :(得分:1)
这个想法正在被使用,但是以不同的方式。而不是保持搜索树周围,这将是内存禁止,评估分数保持在转置表中并重新使用。这可以节省执行iterative deepening时的时间,因为许多职位都会缓存之前搜索的分数。因此,重用旧搜索结果可以帮助进行一些中间搜索并加快移动排序,但仍需要在引擎正在使用的终端搜索深度处评估叶节点。