Java 极小极大阿尔法-贝塔算法
我想我终于了解了minimax和Alpha-beta修剪,但实现它完全是另一回事 根据我的理解,基本要素包括: 您为某些动作指定了一个启发式函数分数(以Gomoku为例)Java 极小极大阿尔法-贝塔算法,java,algorithm,minimax,alpha-beta-pruning,Java,Algorithm,Minimax,Alpha Beta Pruning,我想我终于了解了minimax和Alpha-beta修剪,但实现它完全是另一回事 根据我的理解,基本要素包括: 您为某些动作指定了一个启发式函数分数(以Gomoku为例) 如果一行中有5个,我们应该指定一个高值,如9999,因为 这是一个胜利的举动 如果我们有4个在一排,我们有两个开放的结束 我们应该再次指定一个高值,因为无法阻止 这一举动等等 我的问题是,我们实际上必须用Java实现它 我有一个彩色[][]板(8x8),其中黑色是播放器1,白色是播放器2,null表示空白,我不知道我们应该
- 如果一行中有5个,我们应该指定一个高值,如9999,因为 这是一个胜利的举动李>
- 如果我们有4个在一排,我们有两个开放的结束 我们应该再次指定一个高值,因为无法阻止 这一举动等等
有了这个你就有了极大极小树 搜索棋盘以找到对手的移动并为其赋值 要分配每个电路板配置的值,请将其存储在类本身中。此外,你不必搜索董事会来寻找反对者的行动,因为它是由你的孩子代表的。[请注意,电路板与每个类一起存储] 搜索棋盘以查找我的移动并为其赋值 同样,如果给定的类代表玩家1的移动,那么子类代表玩家2的移动 然后选择可能的最佳动作 这是由算法定义的。如果处于“最大”节点,则选择与“最大值”对应的移动。i、 e您可以选择价值最高的子项。
对于最小节点,选择最小值的子节点 PS:您不必事先定义整个极小极大树。它可以在执行dfs时动态创建。这将大大减少内存
PPS:有关更多详细信息,请参阅。当您说存储游戏配置时,您的意思是存储棋盘上的棋子吗?是的,您可以存储棋盘上的棋子。我所说的游戏配置,是指在任何时候都可以描述游戏状态的东西。您可以存储每个玩家的分数、特征值(如第5行等)。