Digital Communication World

五子棋人工智能研究与­实践

牛恺泽1,邓 鑫2

- 牛恺泽,邓 鑫

(1.北京交通大学附属中学­分校,北京 100088;2.国家气象信息中心,北京 100081)

摘要:博弈问题是人工智能的­一个重要分支。近年来,人机博弈问题取得了较­大发展,尤其是人工智能程序A­lphago击败著名­围棋世界冠军的事迹,将此问题推向了新的高­潮。五子棋问题是典型的博­弈问题,本文对五子棋人工智能­问题进行了研究,根据缩小搜索范围的思­路对现有搜索算法进行­了改进,并探究了估值函数的设­计方法。实践结果表明,设计的算法在人机博弈­过程中具有较高的博弈­水平。

关键词:人工智能;五子棋;搜索;估值d o I:10.3969/J.ISSN.1672-7274.2019.01.015

中图分类号:TP18,G891 文献标示码:A 文章编码:1672-7274(2019)01-0058-03

1 引言

人工智能是一门研究如­何利用计算机来模拟人­类智能的学科,被认为是21世纪三大­尖端技术之一。

近年来,人工智能技术得到了迅­猛发展,在很多领域都开展了深­入研究,例如:自然语言处理、生物模式识别等。在很多行业,人工智能已经能够替代­人类完成工作,例如:客服聊天机器人、交易员等[1]。

博弈问题是人工智能的­其中一个重要分支,是个零和问题,即决策如果对一方是有­利的,对另一方肯定是不利的。博弈问题涉及人工智能­中的推理技术、搜索方法和决策规划。1997年, IBM公

司研发的“深蓝”国际象棋程序,战胜了著名国际象棋棋­手卡斯帕罗夫;2016年,谷歌旗下的子公司De­epmind研发的a­lphago击败了韩­国围棋世界冠

军李世石;2017年,同样是Alphago,击败了中国的

世界冠军柯洁。这些都是人工智能技术­应用于人机博弈问题的­重要事迹。

2 问题描述

五子棋问题是典型的博­弈问题,其基本规则为:下棋的双方分别执黑白­两色棋子,通过轮流放下本方棋子­于棋盘中来最后决出胜­负,决出胜负的标准是率先­有五个本方棋子连成一­条线的一方胜出

[2] (横着,竖着或者斜着五个同色­的棋子都可以) 。

五子棋问题的基本模型­描述为:在五子棋人机博弈系统­中,构建落子算法,使得计算机具有人的 智能,能够对当前局面进行判­断,并且做出落子判断,直至胜出。五子棋问题中的基本棋­型定义如下:

(1)五子连珠:至少五个同色棋子连在­一起。(2)活四:有两个点可以落子形成­连五点。(3)固四:有一个点可以落子形成­连五点。(4)双固四:落子之后可以形成两个­固四。(5)活三:落子后能形成活四。(6)双活三:落子后能形成2个活三。

在五子棋博弈问题中,下棋方不仅要考虑落子­对当前棋局的影响,而且还有考虑落子对将­来棋局的影响,也就是说,不能只考虑局部最优,而要尽可能地考虑全局­最优。因此,经过分析,五子棋博弈问题主要涉­及到两个关键问题,分别是:下一步最佳落子位置搜­索和估值函数的设计。

(1)下一步最佳落子位置搜­索。对于15×15的棋局,棋盘纵横各有15条线,总共构成225个可落

子的点。对每一个棋局,需要搜索可落子位置,并做出评估以确定下一­步最佳落子位置。

(2)估值函数设计。估值函数F(n)是对棋局的一

个量化评价,针对某一棋局,分析搜索范围内各可落­子点的落子估值,根据该值来进行落子判­断。估值越大代表对己方越­有利,估值越小代表队己方越­不利。

3 算法研究

3.1 下一步最佳落子位置

3.1.1 传统搜索算法

(1)博弈树。遍历所有走法,构成一颗搜索数,

即博弈树。根节点为先手第一步走­法,下面走法构成树的子节­点,直至棋局结束。在博弈树的构建过程中,执棋双方轮流扩展节点,所有能使己方获胜的节­点都是可解节点,所有使对方获胜的节点­为不可解节点。完整的博弈树需要穷举­所有棋局,复杂度非常高,因此通常做法是只生成­一定深度的博弈树。

(2)极大极小算法。该算法是在博弈树上寻­找

最优解的一个过程,即对各个子节点进行取­舍的过程,本质上是博弈树算法的­优化算法,复杂度优于博弈树算法,也称为不完全搜索树。算法中定义一个估值函­数,利用估值函数得到当前­端节点得分,并倒推其父节点的得分,对于己方节点,选择子节点中的最大得­分作为父节点得分;而对于对方节点,选择子节点中的最小得­分作为父节点得分。该算法需要先生成不完­全博弈树,并计算所有节点的得分,当搜索深度较低时将影­响决策的准确性,当搜索深度较高时复杂­度仍然会很高。

(3)α-β剪枝。该算法是对极大极小算­法的优

化,在博弈树生成的过程中,通过计算与比较节点得­分的上下界快速裁剪不­必要的搜索分支,从而提高搜索效率。

3.1.2 改进搜索算法

传统搜索算法的缺陷在­于计算复杂度问题,无法解决搜索深度增加­带来的呈几何级数增加­的计算量问题。因此,根据五子棋的规律和特­点,对传统搜索算法进行改­进,以进一步提高算法的执­行效率和对弈能力。

(1)矩形域搜索。构建棋盘上已有棋子的­点的

最大矩形区域,在矩形区域内部和外围­的邻域范围

内进行搜索,如图1所示。一开始由于棋盘上棋子­数

较少,并且相对比较集中,那么矩形区域及其邻域­都很小,搜索点数相对较少。随着局势的进行,棋盘上的棋子数目不断­增加,矩形区域的范围也会变­大,搜索的点数也会相应的­增加。不过与搜索棋盘上所有­的点相比,该算法确实减少了不少­的搜索工作量,在一定程度上能够提高­搜索效率。

(2)八连通域搜索。构建棋盘上已有棋子的­点

的八连通区域,八连通区域范围内进行­搜索,包括棋子围出的内部空­白区域在内,如图2所示。该算法

思路与矩形域搜索算法­一致,并且能够进一步提高搜­索效率。

(3)路径搜索。搜索路径如图3所示,从棋盘中心出发,沿着图中箭头方向进行­搜索。通过一定的判定规则,确定停止搜索的条件,在适当的时候停止对棋­盘的搜索,同时标记出搜索过程中­所经过的

已有棋子的点的邻域,作为考虑落子的位置。该算法设计的依据为:根据五子棋的特点,棋盘中间部分相比较于­棋盘的四周更适合落子,所以应当优先考虑。一般下棋都是从棋盘中­心开始下,这样棋子大部分都会集­中在棋盘的中心区域。这样从中心向外进行有­规律的扩展,搜索效率会有显著提高。 3.2 估值函数设计

在估值函数中,需要对整个棋盘形势进­行分析,既要考虑此时自己的收­益值,也要考虑对手的收益值,两者加权,从而得到一个相对合理­的评价值。估值函数的设计涉及到­对如下棋局进行参数调­优,分别是:五子连珠、活四、双活三、活三+固四、双固四、冲四、活N和固N。

(1)训练集设计。设定1000组的权值,每一组权值人机对弈5­0次,计算胜率,则训练集中有1000

个样本。 (2)参数调优。利用人工神经网络[3]进行求解,得到最优的一组参数,如表1所示。

4 实现

在Windows 7下开发,对上述算法进行实践,完成五子棋人工对弈程­序。通过实际对弈,该程序在计算机先手、人先手下的情况均能得­到不错的胜率,如图4、图5所示。

5 结束语

五子棋人工智能是人工­智能中博弈问题的经典­问题。本文设计了一个五子棋­人工对弈程序,在该程序中,对下一步最佳落子位置­的搜索算法进行了改进,并研究了各棋局的参数­调优方法。通过实际对弈表明,该算法具有较好的博弈­性;同时,该算法存在的问题为:人先手情况下初始落子­的智能性较差,需要进一步的优化改善。■

参考文献

[1] 蔡自兴,徐光祐.人工智能及其应用(第4版)[M].北京:清华大学

出版社,2010.

[2] 李洪斌.五子棋实战必读[M].成都:成都时代出版社,2010.

[3] Neural networks: A comprehens­ive foundation[j]. Ryszard Tadeusiewi­cz.

Control Engineerin­g Practice. 1995(5)

 ??  ?? 图2八连通域搜索
图2八连通域搜索
 ??  ?? 图1矩形域搜索
图1矩形域搜索
 ??  ??
 ??  ??
 ??  ?? 图4计算机先手
图4计算机先手
 ??  ?? 图3路径搜索
图3路径搜索
 ??  ?? 图5人先手
图5人先手

Newspapers in Chinese (Simplified)

Newspapers from China