游戏算法解析:从井字棋到策略游戏
1. 学习井字棋相关拓展
1.1 额外练习
在学习井字棋的过程中,有以下几个额外的练习方向:
1. 实现 MinimaxPlayer。
2. 利用旋转和镜像来缩减位置列表。
3. 调整 MENACE 使其在不同运行之间保留知识。
4. 让 MENACE 能够显示何时掌握了游戏。
2. 倒计时游戏求解
2.1 搜索空间优化
倒计时游戏的搜索空间乍一看非常大,因为六个源数字有多种排列方式,不一定需要使用所有数字,每对数字间有四种运算符,且运算顺序不同结果也不同。不过,我们可以通过以下方法显著缩减搜索空间:
| 优化点 | 说明 |
| ---- | ---- |
| 加法和乘法交换律 | 如 1 + 2 = 2 + 1,1 * 2 = 2 * 1,只需处理一种情况。 |
| 相同数字 | 若源数字中有相同的数字,它们是可互换的,如两个 5,加 2 的结果相同。 |
| 数字 1 | 任何数乘 1 或除以 1 都等于其本身,无需进行此类运算。 |
| 数字 0 | 加、减 0 无意义,乘 0 结果为 0,不符合目标范围(100 - 999),除 0 非法,可忽略结果为 0 的运算。 |
| 负数 | 目标范围是 100 - 999,负数不符合要求,可忽略产生负数的运算。 |
| 结果重复 | 如 (5 + 5) / 2 = 5,已有 5 则无需进行此类运算。 |
2.2 剪枝代码实现
以下是 Dennis Ranke 提交的剪枝代码示例:
超级会员免费看
订阅专栏 解锁全文
54

被折叠的 条评论
为什么被折叠?



