Alpha Beta / minimax是否要求每个节点都是游戏板的完整副本?

问题描述 投票:1回答:1

这不是特定于语言的问题,但是为了便于讨论,我目前使用C#7。

[多年来,我已经成功实现了Alpha Beta修剪算法(即使在35年前的PASCAL中也是如此:]

[每次,我都创建了游戏状态的半深副本(在下面讨论),该副本针对每个节点重复出现。我经常想知道这是否必要,或者也许我不是真正了解算法。

互联网上到处都有关于TicTacToe的帮助请求,这使我认为这必须是一个常见的学校作业问题-有点阻塞了这个相当基本的主题的搜索。

半深副本 ...在我看来,每个节点都应该知道:

  • 董事会的完整状态
  • 轮到的玩家
  • 比赛状态-即:{比赛中,Player1获胜,Player2获胜,平局}

我的问题是:每个节点是否需要自己的电路板副本? ……例如国际象棋(Chess)具有8x8网格……该算法是否还有一些细微之处,还是这些节点各自需要自己的电路板状态快照?节点可以使用一些很酷的方法(除了copy和apply-possible-move之外)从其父级获取其状态吗?

[也许有人可以解释或指向“读这篇,虚拟的”帖子,或者只是确认我需要创建这些实例,正如我试图描述的那样,每个递归调用都具有自己的内存副本游戏板。

我意识到在过去的几十年中,内存变得便宜了,但是组合爆炸仍然是主要话题。干杯。

artificial-intelligence alpha minimax beta
1个回答
0
投票

我不确定这是否能回答您的问题。但是,您能代替轮流制作副本,进行递归调用然后撤消该动作吗?类似于:

© www.soinside.com 2019 - 2024. All rights reserved.