我用Java构建了自己的树数据类,用于minimax算法。树中的每个节点都将保存一个Board对象(我创建的其他东西)代表一个独特的游戏状态,并且树中的边(整数代表移动方向 - 游戏是Tron)将表示由用户达到边缘所导致的状态。我想创建一个函数,它接收一个树并递归填充到深度' DEPTH' (在其他地方保持不变,而不是参数)具有修改的游戏状态,给出每个玩家在每个级别进行的四个可能的整数移动中的每一个。我不太确定如何做到最好......
此外,由于它用于minimax,树结构必须如下:
以下是我必须使用的基本方法:
有没有人可能会为我提供一些伪代码(使用我提供的方法,除非需要其他方法),我将如何以这种交替的,最小化的方式填充树?
答案 0 :(得分:1)
在继续实施逻辑之前,我对您的数据结构有一些评论。
没有必要在树的每个节点中存储完整的电路板副本。鉴于它被用于极小极大,你在每个点上唯一需要知道的是到达那里的动作以及该位置的价值。您需要知道叶子中的板的状态以计算值,但即使这样,一旦计算完成,也不需要保留它的副本。
为了更进一步,minimax甚至不要求你保留树的永久副本。如果使用递归完成,则每个节点的最大值或最小值可以保存在局部变量中并返回 - 不需要在树中保留永久副本。
关于minimax的维基百科文章有一些伪代码可以帮助你入门。