五子棋的人工智能算法

转载 2006年05月28日 21:16:00
        以前曾研究过五子棋的人工智能算法,这篇文章就是讲的实现与原理。当然也只是做了最简单的研究,人工智能是个高深的学问,我基本上不懂,这里的实现也只是凭自己的感觉来写的,程序也不是我写的,但是原理就是这样。我相信还有高手,我的文章也只能提供给一些初学者看看了。

        电脑下子实际上是分两个步骤的,第一个步骤是尽可能的收集棋盘格局的信息,并且使这些信息以一定的格式存放再内存中,以便于第二步的处理。第二个步骤就是,对收集到的信息进行分析处理,即要给出一个规则,用穷举搜索的办法遍历所有收集到的信息,搜索的过程实际上是用所定下的规则去衡量每一点的权值,搜索的目的是为了找到一个权值最大的点,这个点就是当前的最优解,也就是应该下的子。

 

        具体的说来,在第一步中,可以用一个13×13的二维数组来存放棋盘上每一个点的信息。每下一步棋,就用一个13×13的二重循环去遍历棋盘上的每一个点,可以参照如下的方法,即对于每一个点,我们假定这个点放上黑子,这时候就判断这个黑子放上去后,会形成多少个活2、活3、活4和五,然后把对应的数值填入上面所说的二维数组里面,然后再假定这个点放白棋,又会形成多少个活2、活3、活4和五,也填入二维数组里面。当然你也可以用两个二维数组分别存储黑子和白子的情况,而且最好采用结构体数组。这样遍历完棋盘后,再数组里面就保存了有用的棋盘格局信息。如下:
typedef struct tagNodeInfo
{
    int numof2;
    int numof3;
    int numof4;
    int numof5;
}NodeInfo,*PNodeInfo;

NodeInfo WHITE_CHESS[13][13];
NodeInfo BLACK_CHESS[13][13];


        下面就是如何利用所得到的信息去下棋了。这个过程也是遍历分析所得的信息的过程。对上面的信息,我们可以很好的处理。比如,假定四三是必胜的,则我们给他的权值就很大比如100吧,而活二给的权值应该比较小,就给1吧。然后你可以得到一个权值的计算公式,比如: 权值=活二的个数×1+活三的个数×5+活四的个数×10+四三的个数×100,就是类似这样的公式,当然我上面是随便举的。

        下棋是就是遍历每一个点的信息,对每一个点计算权值,找到权值最大的就是要下的点了。上面说了用两个数组分别保存黑子和白子的信息也是有必要的,因为可以计算出某一点对黑白双方的重要程度。就是说如果轮到你下白子了,你光看哪一点对白子有利也不行呀,还要看那些点对黑子有利,并且要比较这种有利的程度。如果你放某一点能成活3,而别人放另一点就是四三了,你就要抢先吧那一点占了。

        当然这样的算法也仅仅是考虑了当前的最优解,如果要进一步提高人工智能,就要用更高级的搜索法,对未来的几步进行搜索了。一般都是将搜索空间组织成二叉树的结构。这个我学的也不是很好,所以就不讲了。

         实际上,上面讲的办法还具有一般意义,不光是可以用到五子棋,再其他的棋类里面也是这样的,先搜索信息,再分析。

关于做人工智能—五子棋的总结

前言:     略... 正文:     首先,对于每一盘棋都有很多种下法,当黑方落下第一颗棋子的时候,白方有254种下法,白方在这254种下法中选择其一后,黑方又有253中下法。如此,将所有的下法都...
  • ji_yun
  • ji_yun
  • 2015年05月28日 15:38
  • 1864

五子棋AI图形界面人机对战(JAVA实现)

前言 改了又改,查了又查,想了又想,我真的不知道怎样让它再聪明了,大多时候走的都是正确的,但偶尔会蹦出那么一步臭棋,全盘皆输。希望有相关经验的道友看到后可以指出原因和不足。 效果图 按钮什么的...
  • to_be_better
  • to_be_better
  • 2016年03月17日 13:52
  • 5847

人机版五子棋两种算法概述

人机版五子棋是很有挑战性的。至今好像没有保证可以取胜的算法,但已经有不少写的很专业的五子棋程序了。我在编写五子棋的过程中参考了不少资料,发现人机五子棋大致有两种策略。在这儿总结一下,与大家共享。先说两...
  • u011587401
  • u011587401
  • 2016年03月13日 14:46
  • 2540

基于搜索算法的人工智能在五子棋博弈中的应用研究,中国石油大学

  • 2010年11月15日 14:34
  • 500KB
  • 下载

人工智能基于贪婪算法的五子棋

  • 2017年12月03日 15:33
  • 75.73MB
  • 下载

五子棋带人工智能算法VS2010 WindowsSDK源代码

  • 2017年08月02日 15:11
  • 1.34MB
  • 下载

五子棋的人工智能的算法描述

  • 2011年07月14日 16:10
  • 22KB
  • 下载

人工智能小游戏-基于alpha-beta剪枝算法实现的五子棋源码

  • 2017年11月14日 19:15
  • 6.57MB
  • 下载

人工智能-五子棋算法研究

  • 2012年06月02日 17:12
  • 532KB
  • 下载

Android Gomoku五子棋简析(AI 人工智能 GirdView实现,浅显易懂)

Android Gomoku五子棋简析开发游戏,首先需要执行力,所以今天我们来简单说一下五子棋,开发思路。 思路有了,做在任何一种平台上,只是语言问题。最后会公布注释详细的可直接运行的项目源代码。(...
  • z279868688
  • z279868688
  • 2016年11月01日 14:33
  • 1104
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:五子棋的人工智能算法
举报原因:
原因补充:

(最多只允许输入30个字)