【发布时间】:2016-05-31 03:12:09
【问题描述】:
我已经用 Java 构建了自己的树数据类,该类将用于极小极大算法。树中的每个节点都将保存一个 Board 对象(我创建的其他东西),代表一个独特的游戏状态,树中的边(整数代表移动方向——游戏是 Tron)将代表用户到达状态边缘导致。我想制作一个函数,它接收一棵树并递归地将其填充到深度“DEPTH”(在其他地方作为常数,而不是参数),并在给定每个玩家在每个级别。我只是不太确定如何最好地做到这一点......
此外,由于它用于极小值,因此树结构必须如下:
- 代表当前未更改游戏状态的根
- 在给定用户 4 种可能动作的情况下代表改变的游戏状态的 1 级儿童
- 在给定对手 4 种可能动作的情况下,代表改变的游戏状态的 2 级儿童
- 考虑到对手的动作,用户的 4 个动作的 3 级游戏状态,依此类推...延伸到 DEPTH 级数
以下是我必须使用的基本方法:
- Tree 的构造函数采用板和通向板的整数方向
- 一种名为produceChildren() 的方法,该方法采用树和布尔值“userMove”,并将4 个新棋盘添加到树的内部子列表中,这些子列表代表在给定用户或对手的4 个可能动作的情况下改变的游戏状态。 'userMove' 参数指定作为子级生成的棋盘是用户 4 步还是对手 4 步的结果。
- 一个名为 getDepth() 的 Tree 方法返回节点在由其父节点和子节点(如果有的话)组成的较大树中的深度 --> 如果它是根节点,则返回 0
谁能为我提供一些伪代码(使用我提供的方法,除非需要其他方法),以了解如何以这种交替的、极小化的方式填充树?
【问题讨论】:
标签: java recursion tree minimax