我正在为 Android 制作一个 Connect 4 应用程序,现在我正在使用 minimax 算法以及叶节点的 alpha-beta 修剪和启发式评估函数。我还下令采取措施进一步最大化修剪过程。不幸的是,使用这种策略,算法在深度 7 中花费了太多时间,导致我放弃它,转而使用转置表。
现在,我已经阅读了有关转置表的信息,并对它们的工作原理有了大致的了解,但我不确定如何在代码中进行实际的实现。我不是 Java 专家,所以我需要你能给我的任何帮助。
在我的游戏中,我使用 int[42] 数组作为棋盘位置。我想过使用哈希映射并存储某种数据结构对象,其中每个对象都将包括棋盘位置(数组)和一个 int“分数”变量(实际上是由评价函数)。但是,这意味着每次我想在表中放置一个新的棋盘位置时,我都需要执行某种检查以查看该位置是否已经不存在(??)。如果没有,只有插入到表中?
我会很高兴你们能在这个问题上给我任何技术帮助。如果需要,我可以放一些代码示例,但这是一个普遍的问题,我认为此时它们并不是真正必要的。
提前致谢。