五子棋AI算法和开局定式( 斜指13式 )破解
先前发了几篇五子棋游戏程序设计的博文,设计了游戏程序,也设计了AI智能奕棋的算法,运行程序检测算法的可行性,完成人机模式游戏功能的设置。这还不够,还要提高算法的实战水平。
对于人机对战的电脑智能应子算法,参阅很多五子棋书籍棋谱和五子棋竞赛的对抗棋谱。我感到白棋的后手防御算法很难取胜,棋界有黑棋高手先手必胜一说。算法么想了很多,既然是人工智能下棋就得按人的思路来算计。棋书阐述有许多思路和棋局解说。如活四冲四,嵌五,活三嵌四,活二嵌三。这些是高级棋手的总结。我就按此思路用加权计权方法来表现此类各种情况。
我对算法的思路是:黑棋的进攻点就是白棋的防守点,反之,白棋的进攻点就是黑棋的防守点。我采用一次遍历棋盘各点位的方法,凡有黑子和白子就判断其四周的空白点,即可下子位,评估棋势加权计分。棋势就是单子、活二活三、嵌三嵌四、活四冲四嵌五。各个棋势的交点就叠加计分,高分点就是双方博弈的必争点。算法的要点是:独子成二是起点,连二到连三是重点,关键的要点是三连子到四连五连。这三点就分出权重的棋势。活三0022200两边的点位是,先手是绝杀点,后手是防守逢三必堵。眠三122200棋势,空位下子成冲四嵌五,这是抢先手改势扩势来进攻。若抓到冲四嵌五加活三或双活三等叠加进攻点,权分叠加计权,就能绝杀对方。我的算法思路就这样。
算法想白棋后手取胜,就在白棋的棋势上加小分,这样利于白棋在同等情况下能争得先手,反战进攻取胜。黑棋先手要取胜,从第7手开始和9手11手要保持先手,争外势抢先做活三进攻,之后要保先手,做活三冲四,进攻是决胜的法宝。想法很简单,写算法也不难,而对于棋势的加权分的估量较难。
此算法经许多次此类测试,还没能做到AI必胜。然而人机对战时,AI执白棋防守和反攻还是较出色的。
图例:
人机模式例:
五子棋博弈要算杀,算杀就是计算必杀之局。必杀局有双活三,双冲四,冲四加活三,嵌五加活三,嵌五加冲四,这些必杀局就是必胜法宝。此算法的要点就是如何加权必杀局棋势的加权分。文后附源码中的testAIq( )测试代码,算法至要可见一斑,自己体会一下。游戏程序代码可参阅我本站的其他博文。
算杀的最高境界是做杀,预判算出必杀点提前几子做出必杀局。此谓奕道高手中的高手,乃高高手也。此种算法也就是编程界的高手,是谓大咖也。我望之有些高仰,自感境界还没到。叠加计权计分有趋向于此类。
还有一个方法是大数据,现在一些人工智能就是大数据堆砌,所谓算法就是数据处理。搞一个数据文件包,按26开局定式加不定式开局来定文件目录,给游戏程序喂招,黑棋的胜局就保存为数据文件。对奕时就提取数据来对比,从数据中找同样走法来定落子。就这是必胜法,就是数据量较大。数据处理的计算速度一般PC是可以的。搞个几万个数据的文件包,也不要一个G的。这些开销PC是能行的,运行速度也不会慢。
据传五子棋程序“挑战者”AI算法很好,能黑先手必胜。我试了一下,程序执黑先手AI的算力是可以的。不知道五子棋高手试过否。程序执白的AI算力一般。下图是我执黑VS挑战者程序AI,我执黑先手胜。
五子棋竞赛规定了开局定式,直指开局13式和斜指开局13式。
之前已发博文五子棋开局定式(直指13式)破解。
原附录的AI 算法testAIq ( )可参阅开局定式(直指13式)破解的附录。
下面再列出斜指开局13式黑先手胜的破解,虽仅几个图例,感兴趣的可用我的程序和AI算法深入研究。
14、长星局:展示AI算法对战演示,黑先手胜。
15、峡月局:展示AI算法对战演示,黑先手胜。9手I 8是关键点位。
16、恒星局:黑11手H7,13手H6布局进攻,15手K6嵌四,17手H5冲四,19手G5冲四进攻,21手23手连攻,25手 I 5是双活三杀棋,黑胜。
17、水月局:黑17手H6抢先手,19手J4活三,21手K3冲四进攻,23手J5冲四,25手K5活三连攻,27手K6嵌五,29手L5双冲四绝杀获胜。
18、流星局:黑7手9手抢先手,11手K6冲四进攻,13手K7连,15手I 5活三,19手H4冲四进攻,21手K5活三,23手K4冲四连攻,25手J5活三,27手I 4活三嵌四杀棋获胜。
19、云月局:黑9手G9尖,11手F10活三,13手E11冲四抢攻,15手G10活三,17手E10冲四连攻,19手E9活三攻,21手G11双活三杀棋获胜。
20、浦月局:黑9手I 8活三11手K8冲四进攻,13手J7活三加双连二再进攻,19手J9活三嵌四杀着获胜。
21、岚月局:展示AI算法对战演示,黑先手胜。关键点是11手H7活三和13手G6冲四抢攻。
22、银月局:黑33手G5嵌五挡白冲四点,35手D8冲四进攻,37手D7嵌五活三,也可绝杀获胜。
23、明星局:黑25手H5活三,27手G4冲四抢攻,29手G5活三,31手F4冲四连攻,35手I 4活三嵌四杀局获胜。
24、斜月局:黑7手J8,9手I 7布局,11手G9活三,13手J6冲四进攻,15手H6活三,17手G5冲四进攻,19手G6嵌五,23手G4冲四,25手J7活三嵌四杀局取胜。
25、明月局:黑7手F6抢攻,9手H6攻,17手E6冲四,19手F8嵌四活三杀局取胜。
26、彗星局:黑11手J6活三,13手k5冲四进攻,21手E7活三,23手H4冲四进攻,25手I 5活三,27手J 5嵌五嵌四绝杀取胜。
另外:我在研究查找冲四活三,嵌五活三,双活三点位的算法。上图100分为双活三或活三嵌四的棋势,若150分则有三个棋势叠加,250分以上是冲四活三,冲四嵌四,嵌五活三,嵌五嵌四等各类棋势。
//**** End ****