我正在为3x4(行x列)网格上的3排游戏的negamax算法而苦苦挣扎。它的演奏方式就像众所周知的四合一演奏,即将乐段丢掉(不像TicTacToe)。我们将玩家R和B称为玩家。R拥有第一个举动,B的举动由negamax控制。可能的移动是1、2、3或4。这是R:移动3-> B:移动1-> R:移动3:之后到达的相关位置 通用标签

现在,为了抵御R的第3步,B必须自己打第3步,但它拒绝这样做。取而代之的是打第1步,在R的下一个步之后游戏结束。

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

然后我开始思考:关于negamax算法的行为的另一种解释是,在R的3x4网格上以第3步开始游戏之后,无论什么变化,B都会失去所有变化。

有人可以反驳这个主张,还是可以给我指出一个证明(我希望使用它;-))?

谢谢,RSel

有帮助吗?

解决方案

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

编辑:以防万一有人在“ B3:R(1,2,4)-> R1; B(1,2,4)-> B2(失败),所以 B1 “ ...它们无关紧要,因为只要Red选择R1,此情况就表明B(计算机)可以选择B1并赢。B的其他选择到底发生什么并不重要-此选择将获胜,因此Red无法选择R1或他会输。

其他提示

事实上,它从一开始就是赢了。而且可以很容易地通过手工演奏。我将假设B避免了R的所有1步获胜,并且将按颜色标记移动,并在比赛发生的网格处确定位置。 通用标签

关于您的算法,我将建议您对其进行修改,以偏爱获胜而不是损失,并且偏爱远处的损失而不是近处的损失。如果这样做,它将“加倍努力”以避免不可避免的损失。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top