用于3x4网格上的3-in-row游戏的negamax算法(行x列)

时间:2011-06-13 17:16:07

标签: algorithm minimax

我正在为3x4(行x列)网格中的3-in-a-row游戏中的negamax算法进行挣扎。它像众所周知的四排一样播放,即片断掉落(不像TicTacToe)。让我们给球员R和B.做第一步,B的动作由negamax控制。可能的移动是1,2,3或4.这是在R:移动3之后到达的所讨论的位置 - > B:移动1 - > R:移动3:

  1   2   3   4
| | | | |
| | | R | |
| B | | R | |

现在,为了防止R的移动3,B必须自己进行移动3,但它拒绝这样做。相反,它会移动1,并且在R的下一步移动后游戏结束。

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

然后我开始思考:对于negamax算法的行为的另一个解释是,在R以3x4网格上的移动3开始游戏后,无论如何B都会丢失。

任何人都可以反驳这个命题或者指出一个证据(我更喜欢;-))?

谢谢,RSel

2 个答案:

答案 0 :(得分:1)

事实上,它从一开始就是一场胜利的比赛。并且可以通过手工轻松播放。我将假设B避免R的所有1-move胜利,并将按颜色标记移动,并在发生比赛的网格中找到。

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)

至于你的算法,我建议你修改它以优先选择胜过亏损,并且喜欢远远超过损失的损失。如果你这样做,它将“更加努力”以避免不可避免的损失。

答案 1 :(得分:0)

证明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都输了......所以B在这种情况下输了。

编辑:以防万一有人想知道“B3:R(1,2,4) - > R1; B”结尾处的其他B选项(2,4) 1,2,4) - > B2(丢失),所以 B1 “......它们无关紧要,因为只要Red选择R1,这个场景就表明B(计算机)可以选择B1赢了。 B的其他选择会发生什么并不重要 - 这个选择会赢,所以Red不能选择R1,否则他将失败。