两种三子棋先手必胜证明

目录

第一种三子棋

创作原因

游戏规则

初始状态图

证明过程

先手必胜的证明

失败的博弈树(三个多小时的成果)

第二种三子棋

游戏规则

先手必胜

后手下边

后手下角

提高三子棋游戏公平性的思考

增加斜走可能

改变行子先后手

未来的研究方向

行棋策略


第一种三子棋

创作原因

这个棋不是网上流行的成三棋,我也不知道这个棋叫什么。由于这个棋是(横竖斜)连成三个就获胜,所以我暂时给它起名叫三子棋。至于为什么写这个博客,一是因为这个棋简单,是我见过的第二简单的棋,第一简单的是区字棋,二是这是我小时候赶大集时跟别人学的棋,现在想想也是一个美好的回忆,所以就暂时记录下来,代码实现后面有时间再写。

游戏规则

1、初始状态:棋盘为三乘三的棋盘,双方各三个棋子,分别摆在靠近棋手的一行上。

2、双方交替行子,每次棋子只能上下左右移动一个单位。

3、直至一方棋子连成三个获胜,横竖斜都算,不过不能是自己的初始状态。

初始状态图

表1
XXX
OOO

证明过程

本来我还是想用区字棋的证明方法来证明这个问题,但算了算状态数目,感觉虽然很少,但只是相对于计算机而言,人力列举真的很困难。

状态数eq?C_9%5E3*C_6%5E3%3D84*20%3D1680,即便排除大量等效,状态数也在一百以上。但我代码能力很差,而且也没有学过博弈论相关知识,不知道该怎么解决这类问题。我想既然画状态图不现实,那我可不可以画博弈树呢?但需要代码。而且循环状态怎么解决,我还是不会。所以代码实现这个问题博弈树就算是我挖下的坑吧。

当时在高铁上无聊,就开始手搓博弈树。画了三个多小时,没有结果,状态越花越多,还要检验与之前的状态有没有重复。最后我放弃了,问我旁边的学长。学长说挺简单的,但不要手搓(大哭)。他了解了之后,想了想,说,我根据后手策略,认为这个棋永远和棋,因为可以阻碍对方连成三。先手策略他还没研究。这点倒是提醒了我,为什么不从棋手的角度来考虑问题呢?于是,我放弃了画博弈树,直接以先手的角度代入怎么下棋,结果突然发现原来先手有简单必胜的策略,证明如下。

先手必胜的证明

注:红\Delta为先手,蓝O为后手。先手为必下策略,后手为可能策略,相当于解象棋围棋五子棋的残局。第一和第二个照片是第一步不同。

第一步\Delta走中间:

f9f92eead63b43118ddb21c0c0906d53.png

第一步\Delta走两边:

01c3f3223c75456a9274f456452baab1.png

先手策略总结:前四步连续前冲就可以赢棋。

失败的博弈树(三个多小时的成果)

b0afe74cd77b441e89815b283ae40097.png

第二种三子棋

游戏规则

初始棋盘3X3,棋盘上没有子。

落子阶段:先后手依次落子各三枚,三子连成一条线者胜(横竖斜)。

行子阶段:若落子阶段未决出胜负,先手方先行,双方依次行子,每次行子只能让一枚棋子前后左右行一步,不能斜走。直至三子连成一条线者胜(横竖斜)。

先手必胜

在当前游戏规则下先手必胜,例证如下:

定义先手为X,后手为O。

先手第一步先下中间(边角没试过),后手可下边可下角。

后手下边

表2
5X2O4O
6O1X
3X

第3手X应下在远离第2手O的角上,在表2中左下右下都可以,反正对称。

第4手O只能堵1X、3X形成的连线,在表2中堵在右上角;第5手X只能堵2O、4O形成的连线。

第6手有两种可能,要么堵3X、5X之间的连线,要么堵1X、5X之间的连线,在规则定义下X都会胜利。第一种情况如表2所示,只要将3X往右连走两步就可以胜利,又因为X先走,3X会比4O先到达右下角位置。

第二种情况如表3:

表3
5X2O4O
1X
3X6O

此时无论是否X先走,X终将胜利,只要1X往左走一格就可胜利。

后手下角

表4
5X4O2O
1X
3X6O

3X应下在远离2O的边上,对应表4应是左边或下边。

表4中3X下在了下边,4O只能堵1X、3X连线;5X只能堵2O、4O连线;6X只能堵1X、5X连线。

若X先走,则X赢;若O先走,则O赢。若X先走,1X左移,3X左移,2步胜;若O先走,2O下移,4O右移,2步胜。由于左下角和左边被X包围,O无反制手段,只能与X比谁先赢。同样,若O先走,则2O下移,右上角被O包围,X无反制手段,只能与O比谁先赢。

提高三子棋游戏公平性的思考

一般来讲,可玩性好的棋类游戏都是相对公平的,而先手必胜本身就是一种不公平,那么如何能提高上述三子棋游戏的公平性呢?

可以参考同样是先手必胜的五子棋,人们为了限制先手方的优势,便发明出了禁手、三手交换、五手多打、只能下26种固定开局等等规则,而我们的三子棋又怎么修改规则来保证公平性呢?

增加斜走可能

第一种、第二种五子棋均成立。

可以将田字格棋盘改为米字格棋盘,即角上的棋子可以移动到中间、中间的棋子可以移动到角上。

类似的可以可以将棋子可以在任意位置斜走(上面规则的加强版)。

上面的两种修改方式对第一种和第二种三子棋都有用,主要思想是让劣势方有更多的移动空间,通过斜走的方式堵住即将成连线的优势方。次要思想是加快移动速度,让原先两步才能到位的变成一步到位。

改变行子先后手

主要针对第二种三子棋。在第二种棋子后手下边后手下角的分析中,我们发现,当落子结束后、行子开始时改变先后手(即先落子的后行子),本来必胜的局面,会往和棋的方向发展。事实上,经研究,的确是和棋,因为形成了循环,类似我之前研究的区字棋的循环一样。建议后面的研究思路是画出状态转移图,在和棋条件下证明是先手优势还是后手优势。

未来的研究方向

1、在修改规则之后,两种三子棋是否为和棋?若为和棋,谁优谁劣?如条件允许,可以画出状态转移图。

2、第2种三子棋我证明了先手下中间是必胜的,而且给出了例证(例证即最优解)。若先手下中间是否必胜?

3、用代码(C/C++/python)实现其中一种规则的三子棋棋类游戏,不是井字棋。若能添加AI对战、悔棋模式、打谱模式更好了。

4、可以借助机器学习、深度学习、启发式学习等等实现相关AI的创造。

第3、4条对所有棋类研究都通用。

行棋策略

压缩敌方空间,占领有利位置;通过造攻势来迫使敌方行在我方想要其下的位置。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值