【问题标题】:negamax algorithm for a 3-in-a-row game on a 3x4 grid (rows x columns)用于 3x4 网格(行 x 列)上的 3-in-a-row 游戏的 negamax 算法
【发布时间】:2011-06-13 17:16:07
【问题描述】:

我正在为 3x4(行 x 列)网格上的 3-in-a-row 游戏的 negamax 算法而苦苦挣扎。它像众所周知的 4-in-a-row 一样播放,即丢掉棋子(不像井字游戏)。让我们称玩家 R 和 B。R 有第一步,B 的动作由 negamax 控制。可能的移动是 1、2、3 或 4。这是在 R:移动 3 --> B:移动 1 --> R:移动 3 之后到达的相关位置:

1 2 3 4
| | | | |
| | |右 | |
|乙| |右 | |

现在,为了防御 R 的第 3 步,B 必须自己下第 3 步,但它拒绝这样做。相反,它下的是第 1 步,在 R 的下一步之后游戏就结束了。

顺便说一句,我花了一整天的时间在我的 negamax 实现中寻找一个错误,该错误非常适用于 3x3 网格,但我找不到任何错误。

然后我开始思考:对于负最大算法行为的另一种解释是,在 R 在 3x4 网格上以第 3 步开始游戏之后,无论如何 B 在所有变体中都会丢失。

任何人都可以反驳这个命题或给我一个证明(我更喜欢;-))吗?

谢谢,RSel

【问题讨论】:

  • 如果将搜索深度限制为向前两步会发生什么?

标签: algorithm minimax


【解决方案1】:

事实上,从一开始就是一场胜利的比赛。并且可以相当容易地用手演奏。我会假设 B 避免了 R 的所有 1 步获胜,并会按颜色标记移动,并在网格中发现游戏发生的位置。

1. R3,1
  ... B1,1  2. R3,2 B3,3  3. R4,1 B2,1  4. R2,2 (and R1,2 or R4,2 wins next)
  ... B2,1  2. R3,2 B3,3  3. R2,2 B2,3  4. R1,1 (and R1,2 or R1,3 wins next)
  ... B3,2  2. R2,1 (and R1,1 or R4,1 wins next)
  ... B4,1  2. R2,1 B1,1  3. R3,2 B3,3  4. R2,2 (and R1,2 or R4,2 wins next)

至于您的算法,我建议您对其进行修改,使其更喜欢获胜而不是失败,并且更喜欢远距离的损失而不是近处的损失。如果您这样做,它将“更加努力”以避免不可避免的损失。

【讨论】:

  • 一般来说你可能是对的,但是对于第二个选项,移动 4,“R1,2”......这是怎么发生的,(1,1)上没有人...... B2,3 这一行发生了 2 次???
  • 另外,在第 4 行,3. 应该是:"R3,2, B3,3" 而不是 R3,2, B3,2
  • @Gerrat:这就是我在纸上播放时会发生的情况,然后尝试快速转录成不同的格式。我会审查建议的游戏并进行修复。
  • 我完全明白你的意思......我给你一个 +1 以获得更通用的解决方案!
【解决方案2】:

B3 也输了的证明:

B3: R(1,2,4)->R1; B(1,2,4)->B2(输),所以 B1; R(2,4)->R2 失败,所以 R4; B(2,4)->B2 输,所以 B4; R现在在任何一个选择上都输了 ...所以 R1 会输给 R - 所以 R 不会选择它。

B3: R(1,2,4)->R2 自 B2 以来就输了,所以 R 不会选择它 B3:R(1,2,4)->R4; B2(强制); R2(强制); B 在 R 的下一步行动中输了

...所以,B3 输给 B 和 B1...所以 B 在这种情况下输了。

编辑:以防万一有人想知道 "B3: R(1,2,4)->R1; B(1) 末尾的其他 B 选项 (2,4) ,2,4)->B2(输),所以 B1"...它们是无关紧要的,因为只要 Red 选择 R1,这种情况表明 B(计算机)可以选择 B1 并获胜. B 的其他选择会发生什么并不重要——这个选择会赢,所以 Red 不能选择 R1,否则他会输。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多